• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Простая обвязка html + php [адаптировано под Lucera]

Простая обвязка html + php [адаптировано под Lucera]

Havyx

Медиум
Местный
Мастер реакций
Старожил I степени
Любитель реакций
Куратор Данных
Неукротимое пламя
Сообщения
331
Розыгрыши
0
Решения
4
Репутация
296
Реакции
881
Баллы
968
Havyx добавил(а) новый ресурс:

Простая обвязка html + php [адаптировано под Lucera] - Слеплено из шар

Приветствую. Самопальная простенькая веб-обвязка с личным кабинетом адаптированная под люцеру. Верстка на основе bootstrap (адаптивная), добавить что-то свое не составит труда. Тестировалось на Php 8.1.

Посмотреть вложение 52191

Посмотреть вложение 52192

Посмотреть вложение 52194

Скачать:
*P.S. Слеплено из шарных файлов. На...

Узнать больше об этом ресурсе...
 

не рекомендую ставить...
Вообще не защищена...
PHP:
$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'");
Для повышения безопасности приложения необходимо соблюдать следующие меры:

1.
Использовать подготовленные запросы и функции экранирования для того, чтобы предотвратить SQL-инъекцию.
Пример использования подготовленного запроса:
$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);

2. Хранить пароли в зашифрованном виде с помощью хэш-функций с солью. Например, можно использовать функцию `password_hash` для хеширования паролей, а затем функцию `password_verify` для проверки совпадения пароля при авторизации пользователя.

3. Использовать сессии для хранения данных о пользователе после авторизации.
session_start();
$_SESSION["user"] = $user;
4. Использовать HTTPS для шифрования передаваемых данных между клиентом и сервером.
 
MysticalHeir, вообще не использовать mysqli лучше)
 
не рекомендую ставить...
Вообще не защищена...
PHP:
$user = $_POST["user"];
$pass = $_POST["pass"];
$encryp = base64_encode(hash('whirlpool', $pass, true));

$consultaruser = mysqli_query($conexao, "SELECT * FROM accounts WHERE login = '$user'");
Написано же, слеплено из шар :D :D :D .
Берешь шар, берешь другой шар - дыру SQL Injection.
 
В теме есть пометка: *P.S. Слеплено из шарных файлов. На адекватность кода не надейтесь
 
За шару говорят спасибо)
 
скоро выложу
пример
PHP:
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);
}
PHP:
// Функция для получения списка персонажей из 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 в подобных запросах? :unsure:
 
gamaleev0071, а для чего используется метод bindParam вместо bindValue в подобных запросах? :unsure:
В данном коде используется метод bindParam вместо bindValue для привязки значений к параметрам в SQL запросах.
Метод bindParam привязывает параметр запроса к переменной, что означает, что значение переменной будет использовано в момент выполнения запроса. Связь между параметром и переменной устанавливается по ссылке, поэтому любые изменения значения переменной будут отражены в параметре.
С другой стороны, метод bindValue привязывает параметр запроса к конкретному значению. Значение переменной, переданное в bindValue, будет скопировано и использовано в момент выполнения запроса. Изменения значения переменной после привязки не будут отражены в параметре.
Оба метода могут использоваться для привязки значений к параметрам в SQL запросах. Выбор между bindParam и bindValue зависит от требуемого поведения и контекста использования.

gamaleev0071, а для чего используется метод bindParam вместо bindValue в подобных запросах? :unsure:
Скрытое содержимое для пользователя(ей): òbi
 
В данном коде используется метод bindParam вместо bindValue для привязки значений к параметрам в SQL запросах.
Метод bindParam привязывает параметр запроса к переменной, что означает, что значение переменной будет использовано в момент выполнения запроса. Связь между параметром и переменной устанавливается по ссылке, поэтому любые изменения значения переменной будут отражены в параметре.
С другой стороны, метод bindValue привязывает параметр запроса к конкретному значению. Значение переменной, переданное в bindValue, будет скопировано и использовано в момент выполнения запроса. Изменения значения переменной после привязки не будут отражены в параметре.
Оба метода могут использоваться для привязки значений к параметрам в SQL запросах. Выбор между bindParam и bindValue зависит от требуемого поведения и контекста использования.
Зачем скидывать копипаст ответа с какого-то ИИ чата то?) я то в курсе как работают оба метода. Вопрос был про конкретный случай, в котором вы используете именно bindParam. Коли смысла так и не поняли, советую посмотреть в примерах на просторах интернета как работают эти оба метода.
 
Зачем скидывать копипаст ответа с какого-то ИИ чата то?) я то в курсе как работают оба метода. Вопрос был про конкретный случай, в котором вы используете именно bindParam. Коли смысла так и не поняли, советую посмотреть в примерах на просторах интернета как работают эти оба метода.
в конкретном случаи адекватно оно работать по другому не хочет ) и именно над этим участком я провисел часа 2, м.б версия php не та, а возможно версия mariaDB но по другому оно не работает )
 
Назад
Сверху Снизу