|
|
|
| В базе хранится зашифрованный пароль (md5). Делаю авторизацию:
<?php
if (empty($_POST['login']) || empty($_POST['password']))
{
echo "error";
exit;
}
else
{
$login=$_POST['login']
$password=$_POST['password']
$md5pass=md5($password);
include ("config.cfg");
mysql_connect($hostname, $username, $password) or die;
mysql_select_db('DB') or die;
$result=mysql_query("select password FROM table WHERE login='$login'");
$password_from_database=mysql_fetch_array($result);
if(!$password_from_database)
{
exit("Таких пользователей нет");
}
elseif ($password_from_database['password']==$md5pass)
{
session_start();
$_SESSION['logged_user']=$login;
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];
header("Location: secret_place.php");
exit;
}
else
{
echo "Неверный пароль...";
exit;
}
}
?>
|
Проблема в том, что если в строчке сверки пароля пишу знак "=", то скрипт при правильном пароле типа виснет (то есть не выводит ни ошибку, ни страницы, ничего). А если ставлю "==", то пускает при любом непустом пароле (конечно, если пользователь есть в базе). Ничего не могу разобрать, помогите | |
|
|
|
|
|
|
|
для: amsun
(14.12.2005 в 06:58)
| | Использовать надо ==, так как = это присвоение значения, а не сравнение.
А косяк у вас скорее всего из-за того, что соединения с базой не происходит: для соединения с базой вы используете тот же пароль что и для авторизации. | |
|
|
|
|
|
|
|
для: Loki
(14.12.2005 в 10:02)
| | проблема осталась, при установке "==" даже при правильном пароле - выдает, что пароль неверен, перед сравнением делаю шифрование md5, что делать? | |
|
|
|
|
|
|
|
для: amsun
(14.12.2005 в 10:18)
| | попробуйте вывести на экран перед сравнением массив $password_from_database
print_r($password_from_database);
|
сдается мне, он у вас пустой. | |
|
|
|
|
|
|
|
для: amsun
(14.12.2005 в 06:58)
| | Я заметил что пароль принимаемый от пользователей имеет имя $password и к базе данных вы подключаетесь с этим же паролем (который по всей видимости находится в config.cfg (кстати у вас это расширение интерпретируется?)). Измените имена переменных.
... хотя только что пересмотрел ещё раз, вроде должно работать. | |
|
|
|
|
|
|
|
для: Евгений Петров
(14.12.2005 в 13:22)
| | пароль не пустой, а то, который в базе (проверил), с конфигурационным файлом все нормально, в соседнем скрипте он работает, совпаденй имен нет, ничего не понимаю | |
|
|
|
|
|
|
|
для: amsun
(14.12.2005 в 17:04)
| | да вам уже два человека сказали:
<?
$password=$_POST['password']
$md5pass=md5($password);
include ("config.cfg");
mysql_connect($hostname, $username, $password) or die;
?>
|
в конфиге ваш $password каждый раз переопределяется. Так что данные пост до проверки даже не доходят. | |
|
|
|
|
|
|
|
для: Loki
(14.12.2005 в 17:23)
| | у меня уже давно такой код:
$passw=$_POST['passw']
$md5pass=md5($passw);
include ("config.cfg");
mysql_connect($hostname, $username, $password) or die;
|
то есть нигде не переопределяется, однако, работать не хочет | |
|
|
|
|
|
|
|
для: Loki
(14.12.2005 в 17:23)
| | Да нет, он не переопределяется, точнее переопределяется, но там сразу же хеш находится и сохраняется в др. переменную, дальше он не нужен, поэтому проблема не в этом. | |
|
|
|
|
|
|
|
для: Евгений Петров
(14.12.2005 в 18:14)
| | Да действительно... это я как-то упустил:)
Ну остается проверить совпадает ли хэш с тем что в базе. если не совпадает, то можно прогнать $passw через trim(). Иногда дело в этом бывает. | |
|
|
|