Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка существования пользователя в базе данных
 
 автор: Вадя   (30.10.2007 в 17:34)   письмо автору
 
 

Программа работает, а коментарии правильно вывести к ней не получается.
Помогите, не пойму как исправить.
Суть программы : Конект к базе данных, сравнение есть ли такой пользователь,
update пароля.


Программа по изменению старого пароля:
html форма:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>HTML FORM</title>
</head>
<body>
<FORM ACTION="par1.php" METHOD=POST>
number <INPUT TYPE=TEXT NAME="number" maxlength=15><BR>
parol <INPUT TYPE="password" NAME="parol" maxlength=5><BR>
newparol <INPUT TYPE="password" NAME="newparol" maxlength=5><BR>
podtvpar <INPUT TYPE="password" NAME="podtvpar" maxlength=5><BR>
</TEXTAREA<BR>
<INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Send!">
</body>
</html>

Пхп - код:

#!/usr/local/bin/php
<?php
include "./common_db.inc";
Error_Reporting(E_ALL & ~E_NOTICE);
$link_id = db_connect('Nortwind');
$result = mssql_query("SELECT * from temppolzov where number='$number' and parol='$parol'");

if ($newparol!=$podtvpar)
echo "Passwords entered were not the same. Not changed.";

else if (strlen($newparol)>10 || strlen($newparol)<5)
echo "New password must be between 5 and 10 characters.Try again.";

else
{
$result = mssql_query("update temppolzov set parol='$newparol' where number='$number' and parol='$parol'");
}

if (!$result) echo "Password or number is not correct";

else
echo "Password is changed";

?>

1) не получается вывести сообщение о неправильном вводе пароля и номера пользователя
2) не получается в случае успешного выполнения кода вывести сообщение о изменении пароля
Подскажите пожайлуста.

   
 
 автор: kailDeSazerland   (30.10.2007 в 18:13)   письмо автору
 
   для: Вадя   (30.10.2007 в 17:34)
 

Мне кажеться у Вас ошибка в запросе
$result = mssql_query("update temppolzov set parol='$newparol' where number='$number' and parol='$parol'");
Проверьте выполняется ли он. Мне кажется должно быть
$result = mssql_query("update temppolzov set parol='$newparol' where ((number='$number') and (parol='$parol'")));

   
 
 автор: Вадя   (30.10.2007 в 18:19)   письмо автору
 
   для: kailDeSazerland   (30.10.2007 в 18:13)
 

Спасибо, что откликнулись!!! Этот запрос отрабатывает правильно, вот только коментарии не получается добавить. Пользователям не видно где они делают ошибку. Подскажите, как правильно комментарии добавить:
if (!$result) echo "Password or number is not correct";
else
echo "Password is changed";

эти строчки не выходят

   
 
 автор: kailDeSazerland   (30.10.2007 в 18:32)   письмо автору
 
   для: Вадя   (30.10.2007 в 18:19)
 

А так?

#!/usr/local/bin/php
<?php
include "./common_db.inc";
Error_Reporting(E_ALL & ~E_NOTICE);
$link_id db_connect('Nortwind');
$result mssql_query("SELECT * from temppolzov where number='$number' and parol='$parol'");

if (
$newparol!=$podtvpar)
echo 
"Passwords entered were not the same. Not changed.";

else if (
strlen($newparol)>10 || strlen($newparol)<5)
echo 
"New password must be between 5 and 10 characters.Try again.";

else
{
$result mssql_query("update temppolzov set parol='$newparol' where number='$number' and parol='$parol'");


if (!
$result) echo "Password or number is not correct"

else 
echo 
"Password is changed"
}
?>


В таком варианте у меня все работает!

   
 
 автор: Вадя   (31.10.2007 в 11:09)   письмо автору
 
   для: kailDeSazerland   (30.10.2007 в 18:32)
 

Проверял, в таком варианте, если вводишь неправильный пароль, вё равно пишет:Password is changed

   
 
 автор: KPETuH   (31.10.2007 в 11:26)   письмо автору
 
   для: Вадя   (31.10.2007 в 11:09)
 

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

   
 
 автор: Вадя   (31.10.2007 в 11:35)   письмо автору
 
   для: KPETuH   (31.10.2007 в 11:26)
 

переменные берутся из базы данных mssql

   
 
 автор: Вадя   (31.10.2007 в 11:38)   письмо автору
 
   для: Вадя   (31.10.2007 в 11:35)
 

#!/usr/local/bin/php
<?php
include "./common_db.inc";
Error_Reporting(E_ALL & ~E_NOTICE);
$link_id = db_connect('Nortwind');
$result = mssql_query("SELECT * from temppolzov where number='$number' and parol='$parol'");

if (mssql_num_rows(!$result) <= 0 ) echo "Password or number is not correct"; // ошибка

else

if ($newparol!=$podtvpar)
echo "Passwords entered were not the same. Not changed.";
else if (strlen($newparol)>10 || strlen($newparol)<5)
echo "New password must be between 5 and 10 characters.Try again.";
else
{
$result = mssql_query("update temppolzov set parol='$newparol' where number='$number' and parol='$parol'");
if (mssql_affected_rows($result) > 0) echo "Password is changed"; // ошибка
else
echo "Invalid query: " . mssql_error(); //
}



?>



Пробывал так, тоже ошибки

   
 
 автор: Вадя   (31.10.2007 в 11:42)   письмо автору
 
   для: Вадя   (31.10.2007 в 11:38)
 

При таком варианте выдаёт сообщение:

Warning: mssql_num_rows(): supplied argument is not a valid MS SQL-result resource in v:\home\localhost\cgi-bin\par2.php on line 8
Password or number is not correct
Это если всё введено правильно: номер и пароль.


Если я убираю знак <= 0
if (mssql_num_rows(!$result) <= 0 ) echo "Password or number is not correct";

то тогда ошибка:вызов в неопределённую функцию:Fatal error: Call to undefined function: mssql_affected_rows()

в строке:if (mssql_affected_rows($result) > 0) echo "Password is changed";


не пойму, должно же так работать???? ::((((((

   
 
 автор: KPETuH   (31.10.2007 в 11:43)   письмо автору
 
   для: Вадя   (31.10.2007 в 11:42)
 

еще раз для дураков укажите пожалуйста откуда вы берете переменные $number и $parol судя по вашему скрипту они пустые....

   
 
 автор: Вадя   (31.10.2007 в 11:45)   письмо автору
 
   для: KPETuH   (31.10.2007 в 11:43)
 

Вводятся через форму :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>HTML FORM</title>
</head>
<body>
<FORM ACTION="par1.php" METHOD=POST>
number <INPUT TYPE=TEXT NAME="number" maxlength=15><BR>
parol <INPUT TYPE="password" NAME="parol" maxlength=5><BR>
newparol <INPUT TYPE="password" NAME="newparol" maxlength=5><BR>
podtvpar <INPUT TYPE="password" NAME="podtvpar" maxlength=5><BR>
</TEXTAREA<BR>
<INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Send!">
</body>
</html>

   
 
 автор: KPETuH   (31.10.2007 в 11:47)   письмо автору
 
   для: Вадя   (31.10.2007 в 11:45)
 

ГДЕ ОНИ ИНИЦИИРУЮТСЯ в СКРИПТЕ PHP

я в вашем примере не увидел например такой записи


$parol=$_POST['parol'];


и тд.

   
 
 автор: Вадя   (31.10.2007 в 11:53)   письмо автору
 
   для: KPETuH   (31.10.2007 в 11:47)
 

Поправьте код, как вы считаете нужным. Проблема заключалась только в коментариях: если пароль или код не правильно введён - вывод сообщения. И если изменён - вывод сообщения. Та к прога работала. А с коментами после выполнения кода - грабли. Как я понял инициализация через запрос к базе данных :
$result = mssql_query("SELECT * from temppolzov where number='$number' and parol='$parol'");
Я только разбираюсь в пхп......

   
 
 автор: KPETuH   (31.10.2007 в 11:56)   письмо автору
 
   для: Вадя   (31.10.2007 в 11:53)
 

объясните как она у вас работала

если в запросах к базе

$result = mssql_query("SELECT * from temppolzov where number='$number' and parol='$parol'");



$result = mssql_query("update temppolzov set parol='$newparol' where number='$number' and parol='$parol'");


вместо $newparol, $number и $parol подставляются пустые значения, так как они у вас НИГДЕ не определены!!!!

вы должны явно определитть переменные как я написал выше

например
$parol=$_POST['parol'];


так как из вормы ваши значения попадают в массив $_POST

   
 
 автор: Вадя   (31.10.2007 в 12:02)   письмо автору
 
   для: KPETuH   (31.10.2007 в 11:56)
 

пользователь вводит в поля формы:
1) номер
2) пароль
3) новый пароль
4) подтверждение пароля

Идёт запрос к базе данных проверяются позиции 1) и 2) через запрос к базе данных:
$result = mssql_query("SELECT * from temppolzov where number='$number' and parol='$parol'");

выполняется ряд условий: равенство 3) и 4) , определённая длина 3)

и если всё соответствует тогда накатывается update:
$result = mssql_query("update temppolzov set parol='$newparol' where number='$number' and parol='$parol'");


Не получалось вывести коментарии!
КАК СЧИТАЕТЕ НУЖНЫМ, ИЗМЕНИТЕ

   
 
 автор: KPETuH   (31.10.2007 в 12:13)   письмо автору
 
   для: Вадя   (31.10.2007 в 12:02)
 


#!/usr/local/bin/php
<?php
include "./common_db.inc";
Error_Reporting(E_ALL & ~E_NOTICE);
$link_id db_connect('Nortwind');

#######Изменения#############
$number=$_POST['number'];
$parol=$_POST['parol'];
$newparol=$_POST['newparol'];
$podtvpar=$_POST['podtvpar'];
##############################

$result mssql_query("SELECT * from temppolzov where number='$number' and parol='$parol'");

if (
$newparol!=$podtvpar)
echo 
"Passwords entered were not the same. Not changed.";

else if (
strlen($newparol)>10 || strlen($newparol)<5)
echo 
"New password must be between 5 and 10 characters.Try again.";

else
{
$result mssql_query("update temppolzov set parol='$newparol' where number='$number' and parol='$parol'");
}

if (!
$result) echo "Password or number is not correct"

else 
echo 
"Password is changed"

?>

   
 
 автор: Вадя   (31.10.2007 в 12:31)   письмо автору
 
   для: KPETuH   (31.10.2007 в 12:13)
 

Спасибо за изменения, работает прога, но проблема в этом:

if (!$result) echo "Password or number is not correct";

else
echo "Password is changed";


в любом случае выводится сообщение:Password is changed

   
 
 автор: Вадя   (31.10.2007 в 12:34)   письмо автору
 
   для: Вадя   (31.10.2007 в 12:31)
 

мне для пользователей необходимо вывести
сообщения:
1) Если неправильно вводится пароль и номер - вывод сообщения
2) И если успешное выполнение программы - вывод сообщения
Это не получается!

   
 
 автор: KPETuH   (31.10.2007 в 12:57)   письмо автору
 
   для: Вадя   (31.10.2007 в 12:34)
 

ваша проблема в том что UPDATE видимо всегда возвращает положительный результат и проверять таким образом существование номера и и соответсвие его паролю некоректно... организуйте сначала проверку пароля а патом уже делайте UPDATE

   
 
 автор: Вадя   (31.10.2007 в 13:03)   письмо автору
 
   для: KPETuH   (31.10.2007 в 12:57)
 

Да, точно вы определили! Подскажите, как правильно изменить? Вроде ничего сложного, а не могу дойти, как зделать корректно с коментариями!!!

   
 
 автор: KPETuH   (31.10.2007 в 13:06)   письмо автору
 
   для: Вадя   (31.10.2007 в 13:03)
 

например


$result = mysql_query("select number from temppolzov where number='$number' and parol='$parol'"); 
$s=mysql_fetch_row($result);
if (empty($s[0])) 
{
    echo "Password or number is not correct";  
}
else  
{
    echo "Password is changed";  
}

   
 
 автор: Вадя   (31.10.2007 в 13:19)   письмо автору
 
   для: KPETuH   (31.10.2007 в 13:06)
 

KPETuH!!!!!! ОГРОМНОЕ СПАСИБО!!!!! БЕЗ ВАС Я БЫ НЕ РАЗРУЛИЛ!!!!!!!!!!!!!!!!!!!!!!!!!! ЕЩЁ И ЕЩЁ РАЗ СПАСИБО ЗА ПОМОЩЬ, ПОНЯЛ СВОЮ ОШИБКУ!!!!! С ВАШИМ КОДОМ ЗАРАБОТАЛО!!!!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования