md5 криво работает

hussar

In code we trust!
md5 криво работает

Я защищаю страницу от несанкционированого доступа. Юзвери и пароли храняться в базе MySQL. Все работает правильно, и все авторизируется. Но если я шифрую пароль перед тем как записать его в БД с помощью md5, то пользователь перестает авторизироваться, хотя переменную
PHP:
$PHP_AUTH_PW
я перед сверкой с БД тоже шифрую.

В чем может быть дело?
Заранее спасибо
 

hussar

In code we trust!
PHP:
switch ($REQUEST_METHOD):
case "POST":
if ($psw==$psw1) {
	$psw=md5($psw);
	mysql_query("insert into user (user, psw) values ('$username', '$psw') ");
	echo "<center>Пользователь добавлен</center>";
Этим кодом я добавляю в БД, а тем который ниже обрабатываю (кстати такая же фигня месяц назад была с cript() так и не разобрался):
PHP:
<?
function denied () {
	echo "404 Unauthorised: The password / username combination you entered was invalid";
}

function headers ($title) {
	Header("WWW-Authenticate: Basic realm=".$title."");
	Header("HTTP/1.0 401 Unauthorized");
}

if (!isset($PHP_AUTH_USER)) {
	headers ("Защищенная страница!!!");
	denied ();
	exit;
}
else {

mysql_connect("localhost");
mysql_select_db ("slonart");

$PHP_AUTH_PW=md5($PHP_AUTH_PW);
$result=mysql_query("select user, psw from user where user='$PHP_AUTH_USER' and psw='$PHP_AUTH_PW' ");

if ( mysql_num_rows($result) == 0 ) {
	echo mysql_error ();
	headers ("Защищенная страница!!!");
	denied();
	exit; 
}
mysql_close();
}
?>
 

AnToXa

prodigy-одаренный ребенок
неверно делать $PHP_AUTH_PW=md5($PHP_AUTH_PW);
сделай $psw = md5($PHP_AUTH_PW);
и в запросе его же напиши.

да, и вообще просто выведи тот запрос, который ты делаешь и посмотри. проблема не в md5, а в кривых руках.
 

hussar

In code we trust!
при выводе $psw (при авторизации) его значение в два раза больше чем значение в БД, при условии что первая часть совпадает с тем что в базе, а вторая половина непонятно откуда берется. Понятно теперь почему они не совпадают, а вот в чем дело и откуда берется вторая половина понять не могу (((
 

AnToXa

prodigy-одаренный ребенок
что значит в 2 раза больше?
что она выводит?
 

Demiurg

Guest
А у тебя поле, в которое ты пишешь этот $psw какой тип имеет ?
 

hussar

In code we trust!
Я разобрался, всем спасибо :)
Просто поле где хранился пароль было VARCHAR (15), а md5 кодирует в 32 битном формате, все оказалось просто :)

Только еще один вопрос:
нужно ли и как это делается, при моем выходе из админовской части сайта удалять
PHP:
$PHP_AUTH_PW, $PHP_AUTH_USER
?

Заранее спасибо!
 

AnToXa

prodigy-одаренный ребенок
хм. недавно обсуждали тему "отлогинивания". народ предлагал кучу способов.
сорри, не могу дать прямую ссылку, попробуй поискать.
 
Сверху