|
|
|
| помогите пожалуйста!!!
Я сделал стр. регистрации, которая пароли сохраняет в зашифровоном виде (sha1), а как при авторизации осуществить проверку паролей незнаю.
подскажите. Вот код авторизации
<?php
$dblocation = "localhost";
// Имя базы данных
$dbname = "trust";
// Имя пользователя
$dbuser = "root";
$dbpasswd = "1";
// Соединяемся с сервером базы данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) {
echo( "<P>В настоящий момент сервер базы данных не
доступен, поэтому корректное отображение
страницы невозможно.</P>" );
exit();
}
// Выбираем базу данных
if (! @mysql_select_db($dbname,$dbcnx) ) {
echo( "<P>В настоящий момент база данных не доступна,
поэтому корректное отображение страницы
невозможно.</P>" );
exit();
}
// Формируем и выполняем SQL-запрос для посетителя с
// именем $_POST['name']
$query = "SELECT login FROM user WHERE login='".$_POST['user']."'" ;
$nme = mysql_query($query);
if(!$nme)
{
echo mysql_error();
echo "Ошибка выполнения запроса";
exit();
}
// Если запрос вернул результат - производим дальнейшую обработку
if(mysql_num_rows($nme) > 0)
{
// Получаем пароль
$password = mysql_result($nme, 0);
// Сравниваем пароль из базы данных и введённый посетителем
if ($_POST['passw'] == $passw)
{
// Идентификация прошла успешно - осуществляем
// "вход" посетителя.
if(session_start())
{
$_SESSION['user'] = $_POST['user'];
$_SESSION['passw'] = $_POST['passw'];
// Осуществляем автоматический переход на
// страницу index.php чтобы убедится, что
// посетитель "вошёл"
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</HEAD><body>";
}
}
else
{
echo "Ошибка идентификации: неправильный пароль";
exit();
}
}
// Если в результате запроса не получено ни одной
// строки - посетитель с таким именем не зарегистрирован
else
{
echo "Ошибка идентификации: посетитель не зарегистрирован";
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 17:21)
| | В базу при регистрации заносится хеш пароля (от cha1)
При авторизации пароль, который ввел пользователь опять таки хешируется по sha1 и сравнивается с хешем который в базе. Если они верны (и имя тоже верно) то юзер тот
<?
// Сравниваем пароль из базы данных и введённый посетителем
if (sha1($_POST['passw']) == $passw)
{
session_start();
?>
|
| |
|
|
|
|
|
|
|
для: RV
(16.03.2006 в 17:40)
| | Дак надо же прописать код,
>при авторизации пароль, который ввел пользователь опять таки хешируется по sha1
я и хотел узнать что нужно написать чтобы при авторизации пароль хешировался по sha1 | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 18:04)
| | народ подскажите пожалуйста!!! | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 19:06)
| | А где код занесения логинов,паролей в базу пользователей? | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 19:40)
| | мне нужно для авторизации, а не для регистрации.
код формы
<?php
// Это файл index.php
session_start();
?>
<form action=authorize.php method=post>
<table>
<tr>
<td>Имя посетителя : </td><td><input type=text name=user value=<?php echo $_SESSION['user']; ?>></td>
</tr>
<tr>
<td>Пароль : </td><td><input type=password name=passw value=<?php echo $_SESSION['passw']; ?>></td>
</tr>
<tr>
<td colspan=2><input type=submit value=Отправить></td>
</tr>
</form>
<?php
// Если посетитель "вошёл" - приветствуем его
if(isset($_SESSION['user'])) echo "Здравствуйте, ".$_SESSION['user']."!";
?>
|
код обрабатывающий форму выше! | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 19:46)
| | А что такое авторизация, если не сравнение пары логин/пароль с имеющимия в базе пользователей?
Из следующей строки
// Сравниваем пароль из базы данных и введённый посетителем
| я понял, что пароли Вы держите в БД.
Раз держите - значит и укладываете.
Я сделал стр. регистрации, которая пароли сохраняет в зашифровоном виде (sha1),
Где эта страница и где то место в коде, где она их сохраняет? | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 19:51)
| |
$query = "SELECT * FROM user WHERE login LIKE '$user'";
$ath = mysql_query($query);
if($ath)
{
if(mysql_num_rows($ath)>0)
links_id($id, "К сожалению, данное имя уже зарегистрировано. Попробуйте другое.");
}
else puterror("Ошибка при регистрации нового посетителя".mysql_error());
//проверяем, нет ли одинарных кавычек
$user = str_replace("'", "'", $user);
//Запрос к базе данных
$query_user = "INSERT INTO user VALUES ('',
'$INN',
'$family',
'$name',
'$patronymic',
'$user',
md5('$passw'),
'$email',
NOW()
);";
if(mysql_query($query_user))
{
//осуществляем автом вход посетителя
// setallcookie($user, $passw);
//Обновляем дату вхождения
settime ($user, false);
//Осуществляем автом переход на гл. стр.
echo "<html><head>
<meta HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id=$id'>
</head></html>";
} else puterror("Ошибка при регистрации нового посетителя hj".mysql_error());
}
if (empty($action))
{
?>
|
только я все равно не понял почему вам именно нужен код регистрации.
Я думал код регистр. не причем. Мне нужно когда пользователь авторизуется его пароль шифруется и уже сравнивается с паролем который лежит в базе. | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 20:23)
| | У Вас в базе лежит
А Вы хотите sha1('$passw') | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 20:28)
| | ой, Я думаю что это большой роли не сыграет md5 или sha1, в любой момент можно заменить.
Главное скажите какой код вставить и куда чтобы авторизация пользоват. прошла. | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 20:51)
| | Если это большой роли не играет, не очень понятно, что же у Вас не работает. | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 21:20)
| | да уже ничего я по форуму покапался нашел
нужно было вот эту строку подставить, перед тем как будут браться данные из базы и из поля для сравнения
$_POST['passw'] == md5($passw);
|
Все равно большое спасибо! | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 21:25)
| | if(md5($_POST['passw']) == $passw)) ...
Если Вы, конечно, не хешируете пароли на клиентской стороне.
Но тогда я Вам крупно завидую :) | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 21:30)
| | а можно поподробнее про хеширование паролей на клиентской стороне.
А то я первый раз делаю регистрацию пользователя. | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 21:38)
| | а можно поподробнее про хеширование паролей на клиентской стороне.
А то я первый раз делаю регистрацию пользователя.
Вот как раз если первый раз делаете, тогда точно не стоит. Запутаетесь в момент. | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 21:56)
| | а вообще на сколько они нужны. | |
|
|
|
|
|
|
|
для: spyder
(16.03.2006 в 21:57)
| | Нужны, если SSL (https://) не поддерживается или нерентабелен, а пароли в открытом виде по сети гонять не хочется. | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 22:03)
| | Кстати, заранее извинюсь за легкое отклонение от темы, хотелось бы узнать насчет SSL. Ведь если приобретаешь сертификат, заведомо подразумевается, что никаких скриптов авторизации писать не нужно? Админ, чтобы войти под своими правами, просто вводит в SSL-овскую форму (в стиле Винды) свои реквизиты и - вперед? | |
|
|
|
|
|
|
|
для: Anwor
(16.03.2006 в 23:42)
| | Нет, авторизацию проходить нужно, но трафик между машиной и клиентом шифруется и пароли нельзя перехватить когда они прямым текстом идут по сети. | |
|
|
|
|
|
|
|
для: cheops
(17.03.2006 в 13:10)
| | Да, но каким образом можно передать данные, введенные в SSL-форму, в переменные PHP? То, что скрипт авторизации писать все равно надо, это я уже домудрил, но нужна хоть какая-то зацепка, чтоб заправить скрипт данными! Киньте код, если не сложно.. | |
|
|
|
|