PHP и с чем его едят....

[fly]

Sweet orange
А вот теперь стало интересно. Как зашифровать - понял. А как провести авторизацию по зашифрованному паролю в md5 - не ясно. Кто подскажет?
 

Dre.hz

Active Member
Не зашифровать, а взять от него хеш (зашифрованное можно расшифровать, в отличии от хеша)

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

[fly]

Sweet orange
Ясно, что ничего не ясно. Наверное еще рано об защищенности говорить.
 

Пух

كنت بلهاء
Модератор
Dre вроде ясно все написал. Пользователь в форму вводит пароль - вы считаете md5 хеш этого пароля. (вроде в пхп функция md5($password) ). Сохраняете именно этот хеш в базу. Потом при авторизации пользователь снова вводит свой логин / пароль. Вы считаете хеш введеного пароля и сравниваете с хешем в базе. Совпало - авторизуете, нет - не авторизуете. Все просто.
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Да все просто. Вот пример. В принципе, должно работать, я просто на php давно ничего не писал=)
PHP:
$username=$_POST['username'];
$password=$_POST['password'];
/*тут шаманим магию, вынимаем данные откуда-то. Допустим, в базе лежат пароли уже в мд5, т.е. они туда заносились так $pass_md5=md5(password); и вот
собственно это дело и запизивалось в базу.
теперь мы вытащили из базы пассворд как строку, которая лежит в $pass_from_db; и имя пользователя username= $username_from_db
соответственно мы имеем переданные данные из формы $username и $password(см. выше).
*/
if($username==$username_from_db && md5($password)==$password_from_db){
    echo 'login successful';
}
else{
    echo 'login failure';
}
Как то так =)
 

[fly]

Sweet orange
Пух, теория это хорошо, а визуальный пример еще лучше.
PainKiller, спасибо за код, сейчас проверю:)
 

[fly]

Sweet orange
Знатоки, почему скрипт работает только при закоментированном else?
PHP:
<?php // ФОРМА АВТОРИЗАЦИИ
$name = trim($_POST['email']);
$password = trim($_POST['password']);
if (isset($name) AND isset($password)) {
$data=file("data/users.dat");
for ($i=0; $i<count($data); $i++) {
$dat=explode("|", $data[$i]);
if ($name==trim($dat[0]) && md5($password)==trim($dat[1])) {
echo "<h2>Добрый день <b>$dat[3]</b><br />ВЫ АВТОРИЗОВАНЫ</h2>"; 
echo "</td>"; 
include ("bottom.html"); exit; }
// else { echo "<h2>Вход невозможен. Проверьте верно ли введены данные.</h2>"; 
// echo "</td>"; 
// include ("bottom.html"); exit; }
}
}
?>
Когда раскоментирую, то всегда пишет Вход невозможен. Проверьте верно ли введены данные., и не пропускает авторизацию. Кто-нибудь может объяснить?
 
Останнє редагування модератором:

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Б-гомерзкий язык =)
 

bllem

New Member
Знатоки, почему скрипт работает только при закоментированном else?


Когда раскоментирую, то всегда пишет Вход невозможен. Проверьте верно ли введены данные., и не пропускает авторизацию. Кто-нибудь может объяснить?
эм. А exit в цикле, это нормально?
 

Тагрим

Поняшка
Знатоки, почему скрипт работает только при закоментированном else?
PHP:
<?php // ФОРМА АВТОРИЗАЦИИ
$name = trim($_POST['email']);
$password = trim($_POST['password']);
if (isset($name) AND isset($password)) {
$data=file("data/users.dat");
for ($i=0; $i<count($data); $i++) {
$dat=explode("|", $data[$i]);
if ($name==trim($dat[0]) && md5($password)==trim($dat[1])) {
echo "<h2>Добрый день <b>$dat[3]</b><br />ВЫ АВТОРИЗОВАНЫ</h2>"; 
echo "</td>"; 
include ("bottom.html"); exit; }
// else { echo "<h2>Вход невозможен. Проверьте верно ли введены данные.</h2>"; 
// echo "</td>"; 
// include ("bottom.html"); exit; }
}
}
?>
Когда раскоментирую, то всегда пишет Вход невозможен. Проверьте верно ли введены данные., и не пропускает авторизацию. Кто-нибудь может объяснить?
бллем несомненно праф.

трай зис:

PHP:
<?php
$name   = trim($_POST['email']);
$password = trim($_POST['password']);

if (isset($name) && isset($password)) {
	$data = file("data/users.dat");
	for ($i = 0; $i < count($data); $i++) {
		$dat = explode("|", $data[$i]);
		
		if ($name == trim($dat[0]) && md5($password) == trim($dat[1])) {
			echo "<h2>Добрый день <b>$dat[3]</b><br />ВЫ АВТОРИЗОВАНЫ</h2>"; 
			exit;
		} else {
			echo "<h2>Вход невозможен. Проверьте верно ли введены данные.</h2>"; 
		}
	}
	echo "</td>"; 
	include ("bottom.html");
}
 
Зверху