Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
_NightmareDream
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 26
#1

Нерабочая авторизация пользователя

14.02.2018, 22:23. Просмотров 185. Ответов 7
Метки нет (Все метки)

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

passage.php
PHP
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
<!DOCTYPE html>
<head><meta charset='utf-8'>
<title>Авторизация</title></head>
<body>
Вход:
<br>
<br>
 
<form action="login.php" method="POST"><table>
<tr>
<td>Логин:</td>
<td><input type="text" name="login"></td>
</tr>
 
<tr>
<td>Пароль:</td>
<td><input type="password" name="password"></td>
</tr>
 
<tr>
<td colspan="2"><input type="submit" value="Войти" name="submit"></td>
</tr>
</table></form>
 
<a href="registration.php">Регистрация</a>
</body>
</html>
login.php
PHP
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
<?php
include_once("bd.php");
?>
<?php
if (isset($_POST['login'])){
    $login = $_POST['login']; 
    if ($login == '') {
        unset($login);
        exit ("Введите имя персонажа");
    } 
}
if (isset($_POST['password'])){
    $password = $_POST['password']; 
    if ($password == '') {
        unset($password);
        exit ("Введите пароль");
    }
}
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
 
$login = trim($login);
$password = trim($password);
$password = md5($password);
$user = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'");
$id_user = mysql_fetch_array($user);
if (empty($id_user['id'])){
    exit ("Введеный вами логин или пароль неверный.");
}
else {
    $_SESSION['password'] = $password; 
    $_SESSION['login'] = $login; 
    $_SESSION['id'] = $id_user['id']; 
    echo "<meta http-equiv='Refresh' content='0; URL=index.php'>";
}
 
?>
Переправляет на главную страницу, да, но там такой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<head><meta charset='utf-8'>
<title>Главная</title></head>
<body>
<?
if (empty($_SESSION['login']) or empty($_SESSION['password'])) {
echo "Вам следует войти, прежде чем смотреть данный контент.";
}
else {
echo "Привет, ".$login."
<a href='exit.php'>Выход</a>
<a href='profile.php?id=$id_user'>Мой профиль</a>";
}
?></body>
</html>
Выводит только то <<Вам следует войти, прежде чем смотреть данный контент>>, даже если вошла и перенаправило на главную. Регистрация нормально работает, бд есть, не спрашивайте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2018, 22:23
Ответы с готовыми решениями:

Авторизация пользователя
Добрый день, учу php сейчас и задался вопросом об авторизации, почитал в инете что лучше делать...

авторизация пользователя
Помогите пожалуйста,у меня есть форма: function identification_admin() { $admin=&quot;&quot;;...

Авторизация пользователя ПК
можно ли с помощью php/html..etc узнать имя пользователя ПК? т.е. это нужно для того чтоб...

Авторизация пользователя
Всем добра! Народ поставили такую задачу, нужно сделать автоматическую авторизацию. Объясню ...

Авторизация пользователя
Добрый день. Я сделала регистрацию и вход на сайте. Но теперь хотелось бы сделать чтобы при...

7
Vetrox
5 / 5 / 4
Регистрация: 08.10.2012
Сообщений: 177
14.02.2018, 22:42 #2
mysql_query - это старая функция, вашего персонажа будет не сложно взломать.
так или иначе надо перестраиваться на PDO,
про регистрацию попробуйте посмотреть вот этот пример здесь:
https://obninsksite.ru/blog/php-scripts/authorization-registration-php
урок 40 минут длится
0
_NightmareDream
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 26
14.02.2018, 22:53  [ТС] #3
Спасибо, но хочу понять свой косяк с кодом. Не знаете, что нужно исправить?
0
Jewbacabra
Эксперт PHP
3372 / 2811 / 1267
Регистрация: 24.04.2014
Сообщений: 8,516
14.02.2018, 23:11 #4
Цитата Сообщение от _NightmareDream Посмотреть сообщение
но хочу понять свой косяк с кодом
http://phpfaq.ru/debug

Цитата Сообщение от _NightmareDream Посмотреть сообщение
PHP
1
2
3
4
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
Зачем?
0
_NightmareDream
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 26
14.02.2018, 23:15  [ТС] #5
Да нет, ошибок не выводит, просто делает не то что нужно.
0
Jewbacabra
Эксперт PHP
3372 / 2811 / 1267
Регистрация: 24.04.2014
Сообщений: 8,516
14.02.2018, 23:56 #6
Цитата Сообщение от _NightmareDream Посмотреть сообщение
Да нет, ошибок не выводит, просто делает не то что нужно.
Про включение ошибок 1 маленький абзац. Про "просто делает не то что нужно" довольно большая статья, и я сомневаюсь что ее прочесть и выполнить предложенные рекомендации за 4 минуты.

Добавлено через 38 минут
Используется механизм сессий, а вызова session_start я не вижу
0
edward_freedom
1553 / 1432 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
15.02.2018, 12:13 #7
_NightmareDream, Зачем в сессии хранить логин и пароль? Одного ид разве не достаточно?
0
andyyy
564 / 172 / 102
Регистрация: 26.05.2016
Сообщений: 1,277
15.02.2018, 12:42 #8
Цитата Сообщение от _NightmareDream Посмотреть сообщение
Выводит только то <<Вам следует войти, прежде чем смотреть данный контент>>, даже если вошла и перенаправило на главную. Регистрация нормально работает, бд есть, не спрашивайте.
наверное вы переводите в мd5 хеш -а базе у вас не хеш?

Добавлено через 4 минуты
stripslashes вам вроде не нужно вам
и можно писать так

PHP
1
$login = stripslashes(htmlspecialchars($login));
Добавлено через 2 минуты
PHP
1
$password = md5($password);
это можно применить прям с SELECT
AND password=MD5('$password')") вроде так, точно не помню

Добавлено через 3 минуты
Цитата Сообщение от _NightmareDream Посмотреть сообщение
if (isset($_POST['login'])){
$login = $_POST['login'];
if ($login == '') {
unset($login);
exit ("Введите имя персонажа");
}
}
if (isset($_POST['password'])){
$password = $_POST['password'];
if ($password == '') {
unset($password);
exit ("Введите пароль");
}
}
это лучше сделать так
PHP
1
2
3
4
5
6
7
8
9
10
if (isset($_POST['password']) AND isset($_POST['login'])){
 if(!empty($_POST['login']) AND !empty( $_POST['password']) ) {//если не пустое
 $login = $_POST['login']; 
 $password = $_POST['password']; 
}//если не пустое
else {
 exit ("Введите имя или пароль для персонажа");
}
 
}
0
15.02.2018, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2018, 12:42

Авторизация пользователя
Есть код авторизации: &lt;? session_start(); error_reporting(E_ALL); if(isset($_SESSION)){...

Проверка авторизация пользователя
Всем доброго времени суток. Помогите пожалуйста реализовать проверку авторизации на странице, нужно...

Авторизация пользователя на сайте
В общем я пытаюсь создать жалкое подобие Социальной сети (для практики), и у меня возник вопрос: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru