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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: FireFox register_globals On\Off

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Phantik
Отправлено: 05 Декабря, 2009 - 16:55:59
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Столкнулся с непонятной ситуацией:
У меня есть страничка регистрации, пользователь заполняет поля, скрипт проверяет есть ли такой пользователь уже в базе или нет, и если нет то добавляет, в противном случае выдает соответствующее сообщение.
Для того что бы в случае ошибки поля не очищались я использую такой метод:
<?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 на сервере?
Заранее спасибо. Прошу прощение за то что слишком много букв в вопросе.
 
 Top
Champion Супермодератор
Отправлено: 05 Декабря, 2009 - 17:05:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




А ты не думаешь, что нужно посмотреть на тот кусок скрипта, который проверяет, зарегистрирован ли пользователь? И который скорее всего использует для этого sql запрос с постоянным true в условии.
 
 Top
Phantik
Отправлено: 05 Декабря, 2009 - 17:14:54
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Ну не надо меня считать совсем идиотом. Тот кусок выглядит вот так
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-е. К тому же в другом браузере проверка на существование и добавление нового пользователя происходят правильно.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB