Как мне создать очень простой скрипт входа в PHP? - PullRequest
0 голосов
/ 22 августа 2011

Я использую $_SESSION["user'] в admin.php, а затем звоню session_register("user") в login.php. session_register("user") не возвращает значение моего пользователя.

В настоящее время, когда я хочу перенаправить на страницу администратора с помощью header("location:admin.php"), возникает цикл, в результате которого возвращается страница входа.

Вот моя форма HTML form.php:

<form action='login.php' method='post'>
    Password:
    <input type='password' name='password'>
    <input type='submit' value='Login'>
</form>

На этой странице отображается моя админка admin.php:

<?php

session_start();
if (!isset($_SESSION["user"])) {
    include('form.php');
    }

else    {
    echo "admin stuff";
    }

?>

Здесь вы login.php:

<?php

session_start();
include('functions.php');
connect();

$pass = $_POST['password'];
$text = file_get_contents('pw.txt');

if ($pass == $text) {
    session_register("user");
    header("location:admin.php");
}

else {
    include('form.php');
    echo "Invalid password: '$pass'";
}

?>

Как заставить вышеуказанный код работать так, как задумано?

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Ну, во-первых, вы никогда не должны использовать такие вещи:

$ pass = $ _POST ['пароль'];

Никогда не доверяйте данным изпользователь и всегда экранируйте его

$ pass = mysqli_real_escape_string ($ db_connection, $ _POST ['password']);

Теперь о сессиях, вы должны использовать

$ _ SESSION ['user'] = some_user_identification_info;

регистр - очень старый способ регистрации переменных сеанса.

1 голос
/ 22 августа 2011

session_register равно устарело с версии 5.3. И проблема в том, что вы используете это неправильно. После вызова session_register вы все равно должны установить переменную. Похоже, что вы хотите сделать для этого сценария установку ключа пользователя в сеансе на true в login.php (хотя было бы более разумно называть это 'loggedin' или чем-то еще);

$_SESSION['user'] = true;

Но, если присмотреться немного к вашему коду, я вижу в нем гораздо больше неправильных. Во-первых, вы используете только один пароль для защиты, который вы явно храните в незашифрованном виде в текстовом файле (ради любви к Богу). , не делай этого ). Комбинация имени пользователя и пароля является более распространенной формой защиты. Кроме того, вы используете данные POST без какой-либо проверки / санитарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...