Регистрация

Проверка данных при авторизации

Сделал проверку логина и пароля при авторизации, но если ввести рандомный логин и пароль, то авторизация проходит не выплёвывая ошибок.

if(isset($_POST['enter'])) < $e_login = $_POST['e_login']; $e_password = md5($_POST['e_password']); $query = mysql_query("SELECT login FROM game WHERE login = '$e_login'") or die(mysql_error()); $user_data = mysql_fetch_array($query); if($user_data['e_password'] == $password) < echo "bravo!"; $check = true; >else < echo "Passowrd/login incorect!"; >> if(isset($_POST['logout']))

2 ответа 2

В запросе вы запрашиваете только логин, не указывая в SELECT поля e_password

SELECT login FROM game WHERE login = '$e_login' 

Поправьте запрос следующим образом

SELECT login, e_password FROM game WHERE login = '$e_login' 

Кроме того, обратите внимание у вас две переменные вместо одной: $e_password и $password — фактически вы сравниваете с не инициализированной переменной.

@ilyaplot сменил все поля на $login и $password и заменил все $e_login и $e_password, все равно та же хрень.

Никогда не вставляйте прямо в SQL-запрос то, что ввёл юзер – это «дыра» для SQL-инъёкций, как вам продемонстрировали в первом же комменте. Вместо этого используйте привязку параметров PDO, или хотя бы фильтруйте то, что прислал юзер.

Вам нужно найти в базе запись с таким же логином и получить из неё хэшированный пароль. Предположим, что таблица в БД содержит три поля: id, login, hash :

$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $dbuser = 'dbuser'; $dbpass = 'dbpass'; try < $dbh = new PDO($dsn, $dbuser, $dbpass); >catch (PDOException $e) < die 'Подключение не удалось: ' . $e->getMessage(); > $sth = $dbh->prepare('SELECT hash FROM users WHERE login = ?'); $sth->bindParam(1, $_POST['login']); // это безопасно $sth->execute(); // если вообще найден юзер с таким логином // и хэш его пароля совпал if( $db_hash = $sth->fetchColumn() && $db_hash === md5($_POST['pass'])) < // введён правильный пароль >else < // неправильный >

Источник

Читайте также:  Create graphics with python

Проверка на авторизацию!

Имеется код, как сделать проверку, что авторизация уже выполнена, а то при заходе на главную страницу требуется снова ввести логин и пароль, хотя авторизация уже была выполнена!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
html> head> link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> link rel="stylesheet" href="style.css" type="text/css"/> div class="header"> a href="/">img src="vr.png" width="55"> font size="5" color="black" face="Arial"> асходе a> font> div>  include "base.php"; ?> div class="main"> table> tr> td>div class="menu" > strong>Авторизацияstrong> form method="post" action="index.php" name="loginform" id="loginform"> label for="username">Логин:label>input type="text" name="username" id="username">br> label for="password">Пароль:label>input type="password" name="password" id="password">br> input type="submit" name="login" id="login" value="Войти"> form>  if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username'])) { // даём доступ пользователю к главной странице } elseif(!empty($_POST['username']) && !empty($_POST['password'])) { // позволим пользователю войти на сайт } else { // выводим форму для авторизации } ?>  if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username'])) { // даём доступ пользователю к главной странице ?>  } elseif(!empty($_POST['username']) && !empty($_POST['password'])) { // позволим пользователю войти на сайт $username = mysql_real_escape_string($_POST['username']); $password = md5(mysql_real_escape_string($_POST['password'])); $checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'"); if(mysql_num_rows($checklogin) == 1) { $row = mysql_fetch_array($checklogin); $email = $row['EmailAddress']; $_SESSION['Username'] = $username; $_SESSION['EmailAddress'] = $email; $_SESSION['LoggedIn'] = 1; echo ""; } else { echo "

Ошибка

"
; echo "

Мы не нашли такого аккаунта. Можешь \"index.php\">попробовать ещё раз.

"
; } } else { // выводим форму для авторизации ?> } ?> div> div> body> html> div>td> td>div class="page" style="border: 0px solid #597DA3"> div>td> tr> table> div> div class="footer">(C) 2015 vRасходеdiv> head> body>body> html>

Проверка на нахождение в корневом каталоге и авторизацию
Добрый день! Интересует такой детский вопрос: как проверить находится ли пользователь в корневом.

Проверка на авторизацию AJAX
На сайте есть часть модулей, доступ к которым имеют только авторизированные пользователи. Чтобы.

Интеграция с БД, диалоговое окно, проверка или как реализовать авторизацию в аккаунте
Добрый день, форумчане. Передо мной стоит следующая задача: В данный момент я реализовал.

Проснифферить авторизацию
Привет. Если кто может, помогите. Мне нужно проснифферить авторизацию на сайте https://freebitco.in.

NightSun, зачем столько тегов.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
 session_start(); if (isset($_POST['login'])) { $username = mysql_real_escape_string($_POST['username']); $password = md5(mysql_real_escape_string($_POST['password'])); $checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'"); if(mysql_num_rows($checklogin) == 1) { $row = mysql_fetch_array($checklogin); $email = $row['EmailAddress']; $_SESSION['Username'] = $username; $_SESSION['EmailAddress'] = $email; $_SESSION['LoggedIn'] = 1; echo ""; } else { echo "

Ошибка

"
; echo "

Мы не нашли такого аккаунта. Можешь \"index.php\">попробовать ещё раз.

"
; } } ?> html> head> link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> link rel="stylesheet" href="style.css" type="text/css"/> div class="header"> a href="/">img src="vr.png" width="55"> font size="5" color="black" face="Arial"> асходе a> font> div> include "base.php"; ?> div class="main"> if (!empty($_SESSION['Username']) && !empty($_SESSION['EmailAddress'])) { echo "Вы вошли как: ".$_SESSION['Username'];} else { ?> table> tr> td>div class="menu" > strong>Авторизацияstrong> form method="post" action="index.php" name="loginform" id="loginform"> label for="username">Логин:label>input type="text" name="username" id="username">br> label for="password">Пароль:label>input type="password" name="password" id="password">br> input type="submit" name="login" id="login" value="Войти"> form> div> div> body> html> div>td> td>div class="page" style="border: 0px solid #597DA3"> div>td> tr> table> } ?> div> div class="footer">(C) 2015 vRасходеdiv> head> body>body> html>

Источник

Помогите в php добавить подтверждение пароля

Задачу проверки подтверждения пароля можно реализовать таким образом.
Если проверка при нажатии на кнопку.
Как понимаю — файл взят из контекста, добавил несколько комментариев с пояснениями: Первый файл

             



У вас уже есть аккаунт? - авторизируйтесь!

' . $_SESSION['message'] . ' '; > unset($_SESSION['message']); ?>
 else < $Repass = ""; >if(mb_strlen($name) < 5 || mb_strlen($name) >15) < echo "Недопустимая длина имени (от 6 до 15 символов)"; exit(); >else if (mb_strlen($surname) < 5 || mb_strlen($surname) >15) < echo "Недопустимая длина фамилии (от 6 до 15 символов)"; exit(); >else if (mb_strlen($pass) < 5 || mb_strlen($pass) >20) < echo "Недопустимая длина пароля (от 6 до 20 символов)"; exit(); >if($Repass == $pass)< $pass = md5($password); // Тут у Вас берётся переменная $password, а должна быть $pass скорее всего. // Подключение к базе данных require "../blocks/connect.php"; $mysql->query("INSERT INTO `users` (`name`, `surname`, `pass`) VALUES('$name', '$surname', '$pass')"); $mysql->close(); header('Location: /'); > else < echo 'Ошибка подтверждения пароля'; // Если пароли не совпадают, то выводим сообщение об ошибке. (Таким же способом можно выводить в конкретное поле, прописав в основном файле php) include "../help26.php"; // Если пароли не совпадают, то возвращаем на страницу ввода. Тут своё название и путь к файлу укажите. >?> 

Второй вариант — это сделать через js .
При вводе данных в поле проверки пароля сразу проверять данные.
Если не совпадают, то выводим ошибку, если совпадают — соответствующее сообщение.

             



У вас уже есть аккаунт? - авторизируйтесь!

' . $_SESSION['message'] . ' '; > unset($_SESSION['message']); ?>

Источник

How can I check if a user is logged-in in php?

I’m pretty new to PHP and I am trying to figure out how to use sessions to check and see if a user is logged into a website so that they would have authorization to access specific pages. Is this something that is complicated or is it because I am a noob that I can’t figure it out?

8 Answers 8

Logins are not too complicated, but there are some specific pieces that almost all login processes need.

First, make sure you enable the session variable on all pages that require knowledge of logged-in status by putting this at the beginning of those pages:

Next, when the user submits their username and password via the login form, you will typically check their username and password by querying a database containing username and password information, such as MySQL. If the database returns a match, you can then set a session variable to contain that fact. You might also want to include other information:

if (match_found_in_database()) < $_SESSION['loggedin'] = true; $_SESSION['username'] = $username; // $username coming from the form, such as $_POST['username'] // something like this is optional, of course >

Then, on the page that depends on logged-in status, put the following (don’t forget the session_start() ):

if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) < echo "Welcome to the member's area, " . htmlspecialchars($_SESSION['username']) . "!"; >else

Those are the basic components. If you need help with the SQL aspect, there are tutorials-a-plenty around the net.

thanks for explaining this. i was wonder if it possible to make a folder restricted instead of a page? so any page that i have in that folder is restricted unless you are logged in?

Almost all of the answers on this page rely on checking a session variable’s existence to validate a user login. That is absolutely fine, but it is important to consider that the PHP session state is not unique to your application if there are multiple virtual hosts/sites on the same bare metal.

If you have two PHP applications on a webserver, both checking a user’s login status with a boolean flag in a session variable called ‘isLoggedIn’, then a user could log into one of the applications and then automagically gain access to the second without credentials.

I suspect even the most dinosaur of commercial shared hosting wouldn’t let virtual hosts share the same PHP environment in such a way that this could happen across multiple customers site’s (anymore), but its something to consider in your own environments.

The very simple solution is to use a session variable that identifies the app rather than a boolean flag. e.g $SESSION[«isLoggedInToExample.com»].

Source: I’m a penetration tester, with a lot of experience on how you shouldn’t do stuff.

Источник

Оцените статью