Intereting Posts
Вставить значение переключателя в mysql Есть ли такой инструмент, как phpMyAdmin, который можно настроить для доступа только к одной базе данных? Возможно ли создать приложение iphone / android на базе php с помощью PhoneGap или Appcelerator? PHP объединяет два ассоциативных массива в один массив Загрузка файла Force Force Как вставить специальные символы языка в PHP в базу данных MySQL? Прямая печать веб-страницы в файле PDF Получить ВСЕ результаты из базы данных с именем пользователя Подключение к удаленной DB2 на i5 / os через php-клиент на Windows-машине с использованием pdo_ibm или ibm_db2 php-расширений Сортируемый список JQuery UI net :: ERR_EMPTY_RESPONSE, когда сообщение с ajax Сократите файл в конце с помощью PHP Facebook Connect, как разрешить пользователям находить и приглашать друзей на ваш сайт? Разбить одну строку текста без каких-либо различимых точек останова в PHP PHP readfile () и большие загрузки

Запуск входа в php-сессия

У меня есть этот сценарий входа:

<?php session_start(); $username = $_POST['username']; $password = $_POST['password']; include 'includes/connect.php'; $username = mysqli_real_escape_string($con, $username); $query = "SELECT password, salt FROM member WHERE username = '$username';"; $result = mysqli_query($con, $query); if(mysqli_num_rows($result) == 0) { header('Location: login.html'); } $userData = mysqli_fetch_array($result, MYSQL_ASSOC); $hash = hash('sha256', $userData['salt'] . hash('sha256', $password) ); $_SESSION['username']=$username; if($hash != $userData['password']) { header('Location: login.html'); }else{ // Redirect to home page after successful login. $_SESSION['username']=$username; header('Location: stats.php'); } ?> 

то это stats.php:

  <?php session_start(); if(!isset($_SESSION['username'])){ header("Location:register.html"); } ?> 

и под этим мой html 5 документ.

однако это не имеет значения, если он вошел в систему или нет, и он все еще позволяет мне получить доступ к stats.php

Вы не сохраняете значение сеанса, поэтому условие всегда будет терпеть неудачу.

Итак, добавьте

 $_SESSION['username'] = $userData['username']; 

внутри login.php.

Вы еще не установили сеанс. Вот почему вы перенаправляетесь.

Установите сеанс здесь, на свой код login.php как это

 $userData = mysqli_fetch_array($result, MYSQL_ASSOC); $hash = hash('sha256', $userData['salt'] . hash('sha256', $password) ); //Set here like this $_SESSION['username']=$username; // or whatever you have 

вы всегда задаете имя пользователя sesion var. Представьте себе такую ​​ситуацию:

Я хочу получить статистику пользователей, мне нужен только вход в систему с пользователем и повторите попытку с другим именем пользователя. если я пишу успех один раз имя пользователя без правильного пароля, результат запроса получит num_Rows> 0, потому что имя пользователя в порядке.

следующий шаг вы собираетесь проверить пароль, но между генерировать хэш и тестовый хэш вы начинаете sesion.Now мой пароль неправильный, но я получаю init sesion с именем пользователя. ????

если знаете URL-адрес для статистики, я могу получить доступ по http-адресу и посмотреть информацию, которая не принадлежит мне.

У вашей структуры для входа в систему появилась большая ошибка.

Вам нужно вставить установленный сеанс var внутри пароля проверки. перед заголовком … stats.php и удалять остальные происходит в файле login.php.

вы можете сделать это для выхода на logout.php : sesion_Destroy()