Сообщество - Программирование на PHP
Добавить пост

Программирование на PHP

59 постов 1 964 подписчика

Популярные теги в сообществе:

Создание сайта с базой данных

Здравствуйте, пикабушники! Если среди Вас есть программисты, то хотел бы попросить совета. Хочу создать сайт для своей работы, где будут таблицы с данными, куда зарегистрированные аккаунты смогут вносить изменения. И такой, что я сам смогу вносить изменения, но у меня будет больше прав и возможностей. На каком языке лучше написать? Я посмотрел, что именно для работы с базой данных подходит phpmyadmin. Пробовал немного написать на html, css, js, но судя по постам в интернете и по личному опыту эта группа не сильно подойдет для базы данных, так сказать вызовет больше трудностей кажется.
Какими будут Ваши советы?

Моя PHP песочница с поддержкой SQL и ChatGPT

Привет коллеги, хочу вынести на ваш суд свой проект PHPize.online

Онлайн песочница для всех актуальных версий PHP и баз данных на одном экране.

Также есть возможность исправления ошибок при помощи ChatGPT бесплатно и без регистрации

Свое мнение пишите в комментариях

Моя PHP песочница с поддержкой SQL и ChatGpt

Смотрю тут не очень оживленная группа, тем не менее опубликую здесь свой проект.

https://PHPize.online песочница с последними версиями PHP и поддержкой PDO и MYSQLi для работы с SQL

Веб консоль для работы с базами данных PDO Console

В ClickHouse есть встроенная веб-консоль для работы с базой данных, позволяет лишь выполнять SQL-запросы, штука быстрая, удобная, просто открываешь в браузере сайт по адресу http://localhost:8123/ и можешь работать с базой данных.

Решил сделать аналогичную, для работы с другими базами данных, для реализации выбрал язык PHP, можно запустить где угодно, хоть на калькуляторе, даже если нет веб-сервера (php -S localhost:8089 pdoconsole.php). Можно закинуть скрипт на любой хостинг, где есть поддержка PHP, и работать на удалённом сервере. Получилась эдакий простой phpmyadmin, или pgadmin, для тех, кто предпочитает работать с базами данных через SQL. Поддерживаются все базы данных, что работают через библиотеку PDO.

Веб консоль для работы с базами данных PDO Console Программирование, База данных, PHP, SQL

Всё находится в одном файле pdoconsole.php, браузер загружает страницу одним HTTP-запросом, в дальнейшем SQL-запросы отправляются через AJAX (библиотека htmx.js), результат выводится в таблицу, в которой можно разворачивать столбцы одной строки, и смотреть их в виде строк. Оформление сделано на bootstrap5, поддерживается тёмная тема, можно работать даже со смартфона, вёрстка адаптивная.

В начале файла pdoconsole.php можно заменить ключ шифрования на случайную длинную фразу, ей шифруются данные подключения к базе данных, которые хранятся в cookie долгое время. История запросов хранится в sessionStorage браузера, стирается после закрытия вкладки. Можно работать одновременно с разными базами данных через параметр ?prefix=dbname

Исходный код и полное описание: https://github.com/ibnteo/pdoconsole

Показать полностью

Какие индексы существуют в PostgreSQL

Какие индексы существуют в PostgreSQL Технологии, Разработка, Postgresql

Индекс B-дерева: это тип индекса по умолчанию в PostgreSQL, который используется для большинства типов данных. Он эффективен как для маленьких, так и для больших таблиц, а также для запросов на равенство и диапазона.

Хэш-индекс: этот тип индекса используется для запросов на равенство для типов данных, которые имеют небольшое количество различных значений. Не рекомендуется использовать с большими таблицами.

Индекс GiST (обобщенное дерево поиска): этот тип индекса используется для сложных типов данных, таких как геометрические или текстовые данные, а также для сложных запросов, включающих операции включения, перекрытия или расстояния.

Индекс SP-GiST (обобщенное дерево поиска с пространственным разделением): аналогичен индексу GiST, но его можно использовать для более сложных типов данных и более сложных запросов.

Индекс GIN (обобщенный инвертированный индекс): этот тип индекса используется для полнотекстового поиска и для типов данных, которые имеют большое количество различных значений.

Индекс BRIN (Block Range INdex): этот тип индекса используется для больших таблиц, которые физически упорядочены по индексированным столбцам, например данные временных рядов.

Индекс фильтра Блума: этот тип индекса используется для быстрой проверки того, присутствует ли значение в столбце или нет.

Битовый индекс: этот тип индекса используется для объединения нескольких индексов в один индекс и может использоваться для ускорения сложных запросов, включающих несколько условий.

Показать полностью

Поиск в файлах CSV через базу данных

Имеется папка с большим количеством файлов формата CSV, все они одной структуры(столбцы одинаковы)

Поиск в файлах CSV через базу данных PHP, Csv, Mysql, Обработка данных, Vin, Длиннопост

Файлы CSV являются текстовыми и имеют структуру через разделение символом ;

Сделаем обработку файлов и сохранение в базу данных

В общем виде, открываем файл на чтение, читаем каждую строку, получаем данные столбцов и сохраняем в таблицу:

$DIR = 'data/';
$files = scandir($DIR);
foreach($files as $k => $file)if($file!='.'&&$file!='..'){
$cfile = $DIR.$file;
$pi=pathinfo($cfile);
$open = fopen($cfile, "r");
$strnum=0;
while (($data = fgetcsv($open, 10000, ";")) !== FALSE){
$data = array_map( "convert", $data );
if($strnum>$proc['pos']){
DB_insert($DB,$data,$file);//записываем в таблицу
}
}
fclose($open);
}
function convert( $str ) {//преобразуем кодировку для базу данных
return iconv( "Windows-1251", "UTF-8", $str );
}

Код обходит указанную папку, открывает каждый файл и заносит данные в базу данных. Процесс долгий и его необходимо выполнять в консоли или реализовывать процесс сохранения этапа работы в отдельный файл и при новом вызове брать параметры.

function DB_insert($DB,$data,$file){
$values = array();
$kol=0; $i=0; foreach($polya as $k => $v){
if(isset($data[$i])&&$data[$i]!='') $values[] = '"'.$DB->rescape($data[$i]).'"';
else { $values[] = '""'; $kol++; }
$i++;
}
if(count($polya)!=$kol){
$sql = 'INSERT INTO tablevins VALUES(0,"'.$DB->rescape($file).'",'.implode(',',$values).');';
$rez = $DB->QUR($sql);
}
}

Реализация WEB интерфейса для поиска данных

Поиск в файлах CSV через базу данных PHP, Csv, Mysql, Обработка данных, Vin, Длиннопост

Поиск происходит по двум полям VIN и номеру кузова. Опция «тип поиска» позволяет объединять искомые по условию «И» или «ИЛИ»

Функция для поиска в таблице данных, универсальная и получает опции поиска через переменную $data

function DB_search($DB,$data){
$out = array(); $usl = array();
foreach($data['where'] as $k => $v){ if($v!=''){
$usl[] = $k.' LIKE "%'.$DB->rescape($v).'%"';
}
}
if(count($usl)){
$tip = ' OR '; if($data['tipsearch']==1) $tip = ' AND ';
$sql = 'SELECT * FROM tablevins WHERE '.implode($tip,$usl);
$rez = $DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){ $out = $rez['rez']; }
}
return $out;
}

Более подробно можно посмотреть на https://alneo.ru/2022/12/poisk-v-fajlah-csv/

Показать полностью 1

Авторизация по AD в PHP

Добрый день, я хочу сделать небольшую страницу, которая будет проверять состоит ли пользоватль в группе , и если да, тогда загружать страницу дальше. Столкнулся с проблемой - не загружаются даже список пользователей, просто возвращается пустое значение в $result. Подскажите с чем может связано быть?

<?php

//ip адрес или название сервера ldap(AD)

//Порт подключения

$ldapport = "389";

//Полный путь к группе которой должен принадлежать человек,

//что бы пройти аутентификацию.

$memberof = "CN=ОТДЕЛ 1,OU=Security,OU=GROUPS,OU=GTN, DC=g,DC=group,DC=local";

//Откуда начинаем искать

$base = "OU=Work,OU=USERS,OU=GTN,DC=g,DC=group, DC=local";

//Собственно говоря фильтр по которому будем аутентифицировать пользователя

$filter = "sAMAccountName=";

//Если прилетели данные пользователя, то проверить его используя LDAP

$password = $_POST['password'];

$username = $_POST['username'];

//подсоединяемся к LDAP серверу

$ldap = ldap_connect("g.group.local") or die("Cant connect to LDAP Server");

//Включаем LDAP протокол версии 3

echo "connect to LDAP". "<br />";;

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3) or die("Cant SELECTION LDAP Server");

if ($ldap)

{

// Пытаемся войти в LDAP при помощи введенных логина и пароля

$bind = ldap_bind($ldap,$username,$password);

if ($bind) //логин

{

echo "Autorize as : ". $_SERVER['AUTH_USER']. "<br />";;

// Проверим, является ли пользователь членом указанной группы.

$result = ldap_search($ldap,$base,"(&(memberOf=".$memberof.")(".$filter.$username."))") or die ("NO object"); //поиск по группе

$result = ldap_search($ldap,$memberof ,"member=*") or die ("NO object"); //вывести всех пользователей

echo "searching";

// Получаем количество результатов предыдущей проверки

$result_ent = ldap_get_entries($ldap,$result) or die("Error1");

echo "Res <".$result. "<br />";

}

else

{

die('Login failed');

}

}

// Если пользователь найден, т.е. результатов больше 0 (1 должен быть)

if ($result_ent['count'] != 0)

{

// тут код для запоминания авторизаЦии

echo "1";

}

else

{

echo "0";

}

?>

Авторизация по AD в PHP Помощь, IT, Консультация, PHP, Нужен совет
Показать полностью 1

Что означает хорошее знание SQL в вакансиях?

Постоянно вижу такое требование в вакансиях на джуна на бэкенд, можете кто нибудь объяснить что это означает(по меркам новичка) ? Понятно что нужно знать что такое CRUD а дальше что?

Отличная работа, все прочитано!