Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: FireFox register_globals On\Off
Форумы портала PHP.SU » PHP » Программирование на PHP » FireFox register_globals On\Off

Страниц (1): [1]
 

1. Phantik - 05 Декабря, 2009 - 16:55:59 - перейти к сообщению
Столкнулся с непонятной ситуацией:
У меня есть страничка регистрации, пользователь заполняет поля, скрипт проверяет есть ли такой пользователь уже в базе или нет, и если нет то добавляет, в противном случае выдает соответствующее сообщение.
Для того что бы в случае ошибки поля не очищались я использую такой метод:
<?php
$pole1 = "";
$pole2 = "";
.....
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$pole1 = $_POST['pole1'];

$pole2 = $_POST['pole2'];
...

}
>

А в самом html соответсвенно
<form...>
...
<input... value="<?=$pole1?>"....>
<input... value="<?=$pole2?>"....>
...
</form>

Далее я регистрирую нового пользователя user1 - все проходит удачно, он добавляется в базу.
Потом я пытаюсь регистрировать пользователя user2 и мне выдается ошибка, что пользователь user1 уже зарегистрирован. И в поле login, после обновления страницы заполняется текстом user1. Хотя я нажимаю кнопку submit, когда в поле забит текст user2.
Проверил весь код. присвоение $login = происходит только 2 раза:
1) В самом начале $login='';
2) В блоке условного оператора if($_SERVER['REQUEST_METHOD'] == "POST")
больше присвоений этой переменной каких-либо значений нету.

Далее пишу проверку echo "$login"; после присвоения
$login = $_POST['login']; - выдает все правильно - user2
далее пишу echo "$login"; в том месте кода, где происходит проверка с результатом запроса, а там уже это поле равно user1. И, естественно генерится ошибка, что такой пользователь уже существует и, при перезагрузке страницы, в поле login записывается значение user1.

Непонятно, кто меняет значение этой переменной на предыдущее, если больше нету никаких присвоений этой переменной?

Далее какое бы новый логин я не вводил, меня все время выкидывает на ошибку, что user1 уже существует и, после перезагрузки страницы, поле заполняется значением user1.

Проверял эту регистрацию на 2х браузерах FF и Chrome. Во втором все регистрируется правильно, а в FF, что удивительно, правильно работает только когда я прописываю в .htaccess
php_value register_globals off (по умолчанию на сервере они On)

Очень бы хотел узнать что это за загадочная связь браузера FF и настройки PHP на сервере?
Заранее спасибо. Прошу прощение за то что слишком много букв в вопросе.
2. Champion - 05 Декабря, 2009 - 17:05:33 - перейти к сообщению
А ты не думаешь, что нужно посмотреть на тот кусок скрипта, который проверяет, зарегистрирован ли пользователь? И который скорее всего использует для этого sql запрос с постоянным true в условии.
3. Phantik - 05 Декабря, 2009 - 17:14:54 - перейти к сообщению
Ну не надо меня считать совсем идиотом. Тот кусок выглядит вот так
PHP:
скопировать код в буфер обмена
  1.  
  2.  $query = "SELECT login,email FROM st_users WHERE login='$login' OR email='$email'";
  3.    $queryRes = mysql_query($query);
  4.    if($queryRes!=FALSE) // Запрос выполнился
  5.     {
  6.          if(mysql_num_rows($queryRes)) // Найдены одна или более записей
  7.           {
  8.             $Row = mysql_fetch_assoc($queryRes);
  9.                 if($Row['login']==$login)
  10.                  $err_Login = 'ОШИБКА! Такой Логин уже занят. Введите другой вариант.';
  11.  


Просто к этому моменту в переменную $login попадает значение 'user1' не зависимо от того что приходит в POST-е. К тому же в другом браузере проверка на существование и добавление нового пользователя происходят правильно.

 

Powered by ExBB FM 1.0 RC1