Свободное общение | SQL инъекция
функции упростят работу а вот код сейчас попробую переписать твой который скинул ))

А именно, подготовленные запросы
________
посл. ред. 25.01.2025 в 23:40; всего 1 раз(а); by Лара

<?php
// не забудь про подключение к базе данных через pdo
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$login = escape($_POST['login']);
$password = escape($_POST['password']);
if (!empty($login) && !empty($password)) {
$statement = $pdo->prepare('SELECT password FROM users WHERE login LIKE :login LIMIT 1');
$statement->bindParam(':login', $login, PDO::PARAM_STR);
$statement->execute();
if ($statement->rowCount() == 1) {
$result = $statement->fetch();
if (password_verify($password, $result['password'])) {
$_SESSION['login'] = $login;
$_SESSION['key'] = generate_key(16);
response('/?ok');
}
} else {
response('/?err');
}
} else {
response('/?err');
}
}
function response($location) {
header("Location: $location");
}
function escape($data) {
return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
}
function generate_key($length) {
return bin2hex(random_bytes($length));
}
должно работать, писал чисто по угад без тестирования ))

define('DB_HOST', 'localhost'); // сервер
define('DB_NAME', ''); // имя базы
define('DB_USER', ''); // пользователь
define('DB_PASS', ''); // пароль
try {
// Устанавливаем соединение
$pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8mb4", DB_USER, DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Оптимизация таблиц
function db_optimize($pdo)
{
set_time_limit(20); // Ограничение по времени
$stmt = $pdo->query('SHOW TABLES');
while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
$tableName = $row[0];
$pdo->exec("OPTIMIZE TABLE `$tableName`");
}
}
// Обработка GET
foreach ($_GET as $key => $value) {
if (is_numeric($value)) {
$value = abs((int) $value);
} else {
$value = htmlspecialchars($value);
}
$_GET[$key] = $value;
}
// Обработка POST
foreach ($_POST as $key => $value) {
if (is_numeric($value)) {
$value = abs((int) $value);
} else {
$value = htmlspecialchars($value);
}
$_POST[$key] = $value;
}
} catch (PDOException $e) {
echo "Ошибка подключения: " . $e->getMessage();
}
даже использовал такое pdo подключение, и всеровно


define('DB_HOST', 'localhost'); // сервер
define('DB_NAME', ''); // имя базы
define('DB_USER', ''); // пользователь
define('DB_PASS', ''); // пароль
try {
// Устанавливаем соединение
$pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8mb4", DB_USER, DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Оптимизация таблиц
function db_optimize($pdo)
{
set_time_limit(20); // Ограничение по времени
$stmt = $pdo->query('SHOW TABLES');
while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
$tableName = $row[0];
$pdo->exec("OPTIMIZE TABLE `$tableName`");
}
}
// Обработка GET
foreach ($_GET as $key => $value) {
if (is_numeric($value)) {
$value = abs((int) $value);
} else {
$value = htmlspecialchars($value);
}
$_GET[$key] = $value;
}
// Обработка POST
foreach ($_POST as $key => $value) {
if (is_numeric($value)) {
$value = abs((int) $value);
} else {
$value = htmlspecialchars($value);
}
$_POST[$key] = $value;
}
} catch (PDOException $e) {
echo "Ошибка подключения: " . $e->getMessage();
}
даже использовал такое pdo подключение, и всеровно
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
// не забудь про подключение к базе данных через pdo
// также default fetch FETCH ASSOC
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$login = escape($_POST['login']);
$password = escape($_POST['password']);
if (!empty($login) && !empty($password)) {
$statement = $pdo->prepare('SELECT password FROM users WHERE login LIKE :login LIMIT 1');
$statement->bindParam(':login', $login, PDO::PARAM_STR);
$statement->execute();
if ($statement->rowCount() == 1) {
$result = $statement->fetch();
if (password_verify($password, $result['password'])) {
$_SESSION['token'] = generate_key(16);
response('/?ok');
} else {
response('/?err');
}
} else {
response('/?err');
}
} else {
response('/?err');
}
} else {
// form authorization
echo 'hi ))';
}
function response($location) {
header("Location: $location");
exit;
}
function escape($data) {
return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
}
function generate_key($length) {
return bin2hex(random_bytes($length));
}
________
посл. ред. 26.01.2025 в 00:10; всего 1 раз(а); by STUDIO


Включи вывод ошибок