[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: игнорируются изменения в базе данных
Гость_fenix
Люди добрые, помогите пожалуйста... дело в следующем: необходимо написать скрипт, который идентифицировал бы пользователя по логи ну и паролю, и при необходимости предоставлял бы возможность смены пароля. Проблема состоит в том, что при изменении пароля в базе эти изменения отображаются, а при попытке идентификации пароль по прежнему почему то остаётся старый.... т.е. игнорятся изменения в БД. База данных состоит из полей логин и пароль, в роли сервера выступает denwer. Вот структура моего кода
//проверяет правильность ввода логина и пароля
<?php
$dbser="localhost";
$dbnazv="users";
$dbusr="root";
$dbpass="";
$dbcnct = @mysql_connect($dbser,$dbusr,$dbpass);
if (!$dbcnct)
{
echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
if (! @mysql_select_db($dbnazv,$dbcnct) ) // Выбираем базу данных
{
echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
function puterror($message) // функция, которая выводит сообщение об ошибке в случае ошибки запроса к базе данных
{
echo("<p>$message</p>");
exit();
}
$login=$_POST['login'];
$password=$_POST['password'];
$submit=$_POST['Submit'];
if ($submit){
$query1 = "SELECT * FROM logpass where login like '$login';" ; //

$lopa = mysql_query($query1,$dbcnct);
$n=mysql_num_rows($lopa);
while (mysql_fetch_row($lopa)) {
$pas=mysql_result($lopa,'password');
}
if ($n==0)
{
echo "Такого логина не существует.<br>";}
$pas=rtrim($pas);
if ("$password" == "$pas")//сравнение введенного и существующего паролей
{

print "доступ разрешен";
echo '<a href="index.php">Гостевая книга</a>';
}
else {print "попробуйте снова";
}

}
echo '<form action="sec.php" method="post" name="registr">
<p>login
<input type="text" name="login" >
</p>
<p>password
<input type="password" name="password" >
</p>
<input type="submit" name="Submit" value="Вход"><a href="registr.php">регистрация</a>
</form>';
<?

//файл изменения пароля
<?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($password == '' || $password2 == '') {
die("Поле 'Пароль' не заполнено<br />\n");
}elseif($password !== $password2) {
die("Поля 'Пароль' и 'Повтор пароля' не совпадают<br />\n");
// Пароль может состоять из букв, цифр и подчеркивания
}elseif(!preg_match("/^\w{3,}$/", $password)) {
die("В поле 'Пароль' введены недопустимые символы<br />\n");
}
$query1 = "SELECT * FROM logpass where login like '$login';" ; //

$lopa = mysql_query($query1,$dbcnct);
$n=mysql_num_rows($lopa);
while (mysql_fetch_row($lopa)) {
$pas=mysql_result($lopa,'password');
}
if ($n==0)
{
echo "Такого логина не существует.<br>";}
$pas=rtrim($pas);
if ("$password" == "$pas")//сравнение введенного и существующего паролей
{
$qwer="UPDATE 'logpass' SET 'password' = '$chpass' ";
$y=mysql_query ($qwer);
//mysql_free_result ($qwer);
}
else
{
print "попробуйте снова";
}

}

echo '<form action="changepass.php" method="post" name="registr">
<p>login
<input type="text" name="login" >
</p>
<p>password
<input type="password" name="password" >
</p>
<p>Repeat
<input type="password" name="password2" >
</p>
<input type="password" name="chpass" >
</p>
<input type="submit" name="Submit" value="Сменить пароль">
</form>';
?>

буду весьма признателен за оказанную мне помощь...



Спустя 26 минут, 1 секунда (16.04.2010 - 15:22) John_761 написал(а):
Что-то вы намудрили... попробуйте так smile.gif


...
$result = mysql_query("SELECT *
FROM logpass
WHERE login = '"
.mysql_real_escape_string($login)."'") or die(mysql_error());

if (mysql_num_rows($result) > 0 ) :

while ($row = mysql_fetch_assoc($result))
if ($row['login'] === $login && $row['password'] === $password)
echo 'да';
else
echo 'нет';
else :
echo 'Логина нет';
endif;
...

Спустя 34 минуты, 51 секунда (16.04.2010 - 15:57) Гость_fenix написал(а):
спасибо большое за оптимизацию (занялся этим недавно, поэтому коды ещё корявые). но скорей всего мною некорректно мною был поставлен вопрос....извиняюсь... в моем первом сообщении есть второй файл после комментов "файл смены пароля". Проблема в том что он вносит изменения в базу, но не учитывает их при повторной идентификации. т.е. к примеру логин=test пароль test если изменит пароль допустим на test1, то изменения в базу вносятся, а при вводе логин и пароля всё равно для успешного действия необходимо в пароле набрать test. sad.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.