Приветствую. Самопальная простенькая веб-обвязка с личным кабинетом адаптированная под люцеру. Верстка на основе bootstrap (адаптивная), добавить что-то свое не составит труда. Тестировалось на Php 8.1.
Посмотреть вложение 52191
Посмотреть вложение 52192
Посмотреть вложение 52194
Скачать:Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
*P.S. Слеплено из шарных файлов. На...
$user = $_POST["user"];
$pass = $_POST["pass"];
$encryp = base64_encode(hash('whirlpool', $pass, true));
$consultaruser = mysqli_query($conexao, "SELECT * FROM accounts WHERE login = '$user'");
Для повышения безопасности приложения необходимо соблюдать следующие меры:не рекомендую ставить...
Вообще не защищена...
PHP:$user = $_POST["user"]; $pass = $_POST["pass"]; $encryp = base64_encode(hash('whirlpool', $pass, true)); $consultaruser = mysqli_query($conexao, "SELECT * FROM accounts WHERE login = '$user'");
$stmt = mysqli_prepare($conexao, "SELECT * FROM accounts WHERE login = ? AND password = ?");
mysqli_stmt_bind_param($stmt, "ss", $user, $encryp);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
4. Использовать HTTPS для шифрования передаваемых данных между клиентом и сервером.session_start();
$_SESSION["user"] = $user;
Написано же, слеплено из шарне рекомендую ставить...
Вообще не защищена...
PHP:$user = $_POST["user"]; $pass = $_POST["pass"]; $encryp = base64_encode(hash('whirlpool', $pass, true)); $consultaruser = mysqli_query($conexao, "SELECT * FROM accounts WHERE login = '$user'");
function listacharacters($conexao, $login){
$characters = array();
$query = "SELECT * FROM characters WHERE account_name = '$login'";
$resultado = mysqli_query($conexao, $query);
while($character = mysqli_fetch_assoc($resultado)){
array_push($characters, $character);
}
return $characters;
}
function desbugachar($conexao, $id){
$query = "UPDATE characters SET x=82551,y=147943,z=-3404 WHERE obj_Id = '$id'";
return mysqli_query($conexao, $query);
}
function trocarsenha($conexao, $login, $newpass){
$query = "UPDATE accounts SET password = '$newpass' WHERE login = '$login'";
return mysqli_query($conexao, $query);
}
// Функция для получения списка персонажей из gameserver БД
function listCharacters($login) {
global $gameServerConfig;
try {
$connectGameServer = new PDO($gameServerConfig['dsn'], $gameServerConfig['username'], $gameServerConfig['password']);
$connectGameServer->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$characters = array();
$query = "SELECT * FROM characters WHERE account_name = :login";
$statement = $connectGameServer->prepare($query);
$statement->bindParam(':login', $login, PDO::PARAM_STR);
$statement->execute();
while ($character = $statement->fetch(PDO::FETCH_ASSOC)) {
$characters[] = $character;
}
return $characters;
} catch (PDOException $e) {
echo "Ошибка подключения к gameserver БД: " . $e->getMessage();
return array(); // Возвращаем пустой массив в случае ошибки
}
}
// Функция для исправления координат персонажа в gameserver БД
function desbugChar($id) {
global $gameServerConfig;
$query = "UPDATE characters SET x = 82551, y = 147943, z = -3404 WHERE obj_Id = :id";
$statement = $gameServerConfig->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
return $statement->execute();
}
// Функция для изменения пароля в loginserver БД
function changePassword($login, $newpass) {
global $connectLoginServer;
// Валидация логина и нового пароля
if (!isValidLogin($login) || !isValidPassword($newpass)) {
return false; // Возвращаем false, если символы не соответствуют разрешенным
}
$hashedPassword = encryptPassword($newpass);
$query = "UPDATE accounts SET password = :newpass WHERE login = :login";
$statement = $connectLoginServer->prepare($query);
$statement->bindParam(':newpass', $hashedPassword, PDO::PARAM_STR);
$statement->bindParam(':login', $login, PDO::PARAM_STR);
return $statement->execute();
}
// Функция для валидации логина
function isValidLogin($login) {
return preg_match('/^[a-zA-Z0-9_-]+$/', $login);
}
// Функция для валидации пароля
function isValidPassword($password) {
// Дополнительные проверки пароля
// Например, минимальная длина пароля, требования к символам и т.д.
if (strlen($password) < 6) {
return false; // Пароль слишком короткий
}
// Проверка разрешенных символов в пароле
if (!preg_match('/^[a-zA-Z0-9!@#$%^&*()_+-]+$/', $password)) {
return false; // Пароль содержит недопустимые символы
}
return true;
}
// Функция для шифрования пароля
function encryptPassword($password)
{
$hashedPassword = base64_encode(hash('whirlpool', $password, true));
return $hashedPassword;
}
gamaleev0071, а для чего используется метод bindParam вместо bindValue в подобных запросах?
gamaleev0071, а для чего используется метод bindParam вместо bindValue в подобных запросах?
Зачем скидывать копипаст ответа с какого-то ИИ чата то?) я то в курсе как работают оба метода. Вопрос был про конкретный случай, в котором вы используете именно bindParam. Коли смысла так и не поняли, советую посмотреть в примерах на просторах интернета как работают эти оба метода.В данном коде используется метод bindParam вместо bindValue для привязки значений к параметрам в SQL запросах.
Метод bindParam привязывает параметр запроса к переменной, что означает, что значение переменной будет использовано в момент выполнения запроса. Связь между параметром и переменной устанавливается по ссылке, поэтому любые изменения значения переменной будут отражены в параметре.
С другой стороны, метод bindValue привязывает параметр запроса к конкретному значению. Значение переменной, переданное в bindValue, будет скопировано и использовано в момент выполнения запроса. Изменения значения переменной после привязки не будут отражены в параметре.
Оба метода могут использоваться для привязки значений к параметрам в SQL запросах. Выбор между bindParam и bindValue зависит от требуемого поведения и контекста использования.
в конкретном случаи адекватно оно работать по другому не хочет ) и именно над этим участком я провисел часа 2, м.б версия php не та, а возможно версия mariaDB но по другому оно не работает )Зачем скидывать копипаст ответа с какого-то ИИ чата то?) я то в курсе как работают оба метода. Вопрос был про конкретный случай, в котором вы используете именно bindParam. Коли смысла так и не поняли, советую посмотреть в примерах на просторах интернета как работают эти оба метода.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?