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

Форум PHP

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

 

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

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

тема: Проблема, требущая срочного решения. Получаемые методом POST данные на один шаг отстают от вводимых в форму.
 
 автор: ck   (24.10.2005 в 14:49)   письмо автору
 
 

То есть происходит следующее. При неверной введенной паре логин-пароль пользователь направляется обратно на страницу авторизации - плюс выдается сообщение об ошибке.
Второй раз вводится правильная пара, но отправляются снова первые данные. Я проверял - выводил на целевой странице, какие данные получены из массива.
Зато в третий раз, какие логин и пароль не введи - авторизация будет успешной, т.к. отправляются данные, введенные при второй попытке.
И т.д. То есть идет отставание на один шаг. Разобраться нужно довольно срочно. Большое спасибо всем ответившим.

   
 
 автор: 10100100   (24.10.2005 в 14:58)   письмо автору
 
   для: ck   (24.10.2005 в 14:49)
 

Выложите пожалуйста код...

   
 
 автор: ck   (24.10.2005 в 15:07)   письмо автору
 
   для: 10100100   (24.10.2005 в 14:58)
 

Код довольно длинный. Действительно, используются и SESSION и COOKIE - но при условии входа с другой страницы, что определяется переменными в массиве _GET - $page и $a. В нашем случае, ссылка - чистый адрес: start.php. То есть эти переменные не определены.
<?php
$connect=mysql_connect("localhost", "root", "");
mysql_select_db("addlink", $connect);
$page=$_GET['page'];
if (!isset ($page))
{
$page=1;
if (isset ($a))
{
session_start();
$login=$_SESSION['login'];
$pass=$_SESSION['pass'];
unset($_SESSION['login']);
unset($_SESSION['pass']);
session_destroy();
}
else
{
$login=$_POST['login'];
$pass=$_POST['pass'];
}
setcookie("kkl", $login, time() + 8600);
setcookie("kkp", $pass, time() + 8600);
}

if (isset($page))
{
$login=$_COOKIE['kkl'];
$pass=$_COOKIE['kkp'];
}

$str="SELECT * FROM users";
$ask=mysql_query($str, $connect);
while ($masl=mysql_fetch_array($ask))
{
if ($login == $masl['LOGIN'])
{
$getl=$masl['LOGIN'];
$oklog=1;
break;
}
}
if ($oklog!=1)
{
?>
<script>
<!--
location.href = "center.php?mist=7";
//-->
</script>
<?php
exit();
}
$strn = "SELECT * FROM users WHERE LOGIN = '$getl'";
$askn = mysql_query($strn, $connect);
while ($masp=mysql_fetch_array($askn))
{
$getp=$masp['PASS'];
if ($pass == $masp['PASS'])
{
$okpass=1;
break;
}
}
echo $okpass."<br>";
echo $getl."<br>";
echo $pass."<br>";
echo $getp."<br>";
if ($okpass!=1)
{
?>
<script>
<!--

//-->
</script>
<?php
exit();
}
?>

   
 
 автор: ck   (24.10.2005 в 15:17)   письмо автору
 
   для: ck   (24.10.2005 в 15:07)
 

Вы знаете, где-то я все же запутался с определенными и неопределенными страницами, с сессиями и COOKIES. Удалил все, с ними связанное из кода - рабтает нормально. Значит, ошибка в них. По идее, при неопределенных переменных _GET они вообще не должны участвовать. Но, видимо, участвует.

   
 
 автор: ck   (24.10.2005 в 15:21)   письмо автору
 
   для: ck   (24.10.2005 в 15:17)
 

Господа, я нашел ошибку. Забыл, что у меня прописано:
If (!isst $page)
{
$page = 1;
}
Поэтому потом все операции с COOKIE, предназначенные для страницы с определенной $page относятся и сюда. Всем спасибо.

   
 
 автор: irr   (24.10.2005 в 15:01)   письмо автору
 
   для: ck   (24.10.2005 в 14:49)
 

может быть у Вас логин и пароль куда-то записываются (например, в $_SESSION), а потом берутся оттуда, а не из $_POST? хотелось бы на код взглянуть.

   
Rambler's Top100
вверх

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