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 :: Очистка массива в PHP

 PHP.SU

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


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

> Без описания
BigBoss2012
Отправлено: 16 Октября, 2012 - 09:17:39
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2012  


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




Ребята, помогите пожалуйста. Проблема следующая.

Бэкграунд:

Написал скриптяку регистрации пользователей на сайте. Все нормально работает практически. Пользователь заполняет форму --> Форма проходит валидацию -- >Если все хорошо - пишем в базу, если нет -- возращает ошибки валидации.

Беда:
1. При обновлении страницы или сразу после старта сценария форма выдает ошибки. Т.е пользователь зашел на страницу, ничего не вводил, а ему уже пишут, что введи мол правильно то-то и то.

2. При каждом обновлении страницы (после ввода правильных или неправльных данных) записи падают в базы. Auto-increment выдает новые ид-шники и пишет пустые значения в поля.

Полагаю, что все дело в том, что в суперглобаольной переменной $_POST остаются невалидные данные и интерпретатор молотит их, пока не получит новые. Писал такое условие, но оно не помогло:

if (!empty ($_POST[action])) {
$_POST[action] ="";
validation ();
}
else {
array_splice($_POST, 0);
}

Пояснение:

action - hidden поле с value='register'
validation () - подпрограмма валидации, Там ничего суперского нет, одни ифы для проверки значений
array_splice - вроде бы как бы функция для очистки массива, но походу тоже не помогла.

Ребята, помогите плиз! Я знаю что это легко. Может, посоветуйте что-нить на JavaScript.

Заранее огромное спасибо!
 
 Top
eai
Отправлено: 16 Октября, 2012 - 09:21:48
Post Id



Частый посетитель


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


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




ниче не понял!
 
 Top
AlexAnder
Отправлено: 16 Октября, 2012 - 09:23:12
Post Id



Частый посетитель


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


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




Цитата:
Беда:
1. При обновлении страницы или сразу после старта сценария форма выдает ошибки. Т.е пользователь зашел на страницу, ничего не вводил, а ему уже пишут, что введи мол правильно то-то и то.

проверka отправлены ли данные кнопкой Submit
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['nameofbuttonsubmit'])){
  2.  // validate
  3. }

(Отредактировано автором: 16 Октября, 2012 - 09:23:38)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
BigBoss2012
Отправлено: 16 Октября, 2012 - 09:25:20
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2012  


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




AlexAnder, спасибо за мыслю!!

eai, ну че тут непонятного? валидация срабатывает раньше положенного события, вслдествии чего в базу пишкться пустые значения.
 
 Top
eai
Отправлено: 16 Октября, 2012 - 09:26:20
Post Id



Частый посетитель


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


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




Еще вариант, на сабмит заполнять какое то невидимое поле в TRUE и проверять тока если оно заполнено
 
 Top
BigBoss2012
Отправлено: 16 Октября, 2012 - 09:30:11
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2012  


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




eai пишет:
Еще вариант, на сабмит заполнять какое то невидимое поле в TRUE и проверять тока если оно заполнено


eai, делаю такую проверку. Не помогает.

if (!empty ($_POST[action])) {
$_POST[action] ="";
validation ();
}
 
 Top
AlexAnder
Отправлено: 16 Октября, 2012 - 09:32:01
Post Id



Частый посетитель


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


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




CODE (html):
скопировать код в буфер обмена
  1. <form action="index.php" method="POST">
  2. <p><label for="log">Login:</label></p>
  3. <p><input id="log" type="text" name="login"></p>
  4. <p><label for="pass">Password:</label></p>
  5. <p><input id="pass" type="password" name="password"></p>
  6. <p><input type="submit" value="Отправить" name="submit"></p>
  7. </form>



Что такое?


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
eai
Отправлено: 16 Октября, 2012 - 09:40:41
Post Id



Частый посетитель


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


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




BigBoss2012 пишет:
eai пишет:
Еще вариант, на сабмит заполнять какое то невидимое поле в TRUE и проверять тока если оно заполнено


eai, делаю такую проверку. Не помогает.

if (!empty ($_POST[action])) {
$_POST[action] ="";
validation ();
}


А как ACTION заполняешь ?
Покажи код HTML/JS

Вариант который Alex предлагает мне не знаком но выглядит интересным

(Отредактировано автором: 16 Октября, 2012 - 09:42:08)

 
 Top
BigBoss2012
Отправлено: 16 Октября, 2012 - 09:48:33
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2012  


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




eai пишет:
А как ACTION заполняешь ?


<input type="hidden" value="register" name="action">
 
 Top
eai
Отправлено: 16 Октября, 2012 - 10:28:07
Post Id



Частый посетитель


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


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




BigBoss2012 пишет:
eai пишет:
А как ACTION заполняешь ?


<input type="hidden" value="register" name="action">


А где код его заполнения на сабмит?
 
 Top
BigBoss2012
Отправлено: 18 Октября, 2012 - 08:16:09
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2012  


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




AlexAnder пишет:
CODE (html):
скопировать код в буфер обмена
<form action="index.php" method="POST">
<p><label for="log">Login:</label></p>
<p><input id="log" type="text" name="login"></p>
<p><label for="pass">Password:</label></p>
<p><input id="pass" type="password" name="password"></p>
<p><input type="submit" value="Отправить" name="submit"></p>
</form>

PHP:
скопировать код в буфер обмена
if(isset($_POST['submit'])) {
validate
}


Спасибо, попробовал. Результат такой же.

Кстати, немного поресерчил этот вопрос и нашел такой же баг на формах некоторых крупных сайтов.
(Добавление)
eai пишет:
А где код его заполнения на сабмит?


Вот тут пожалуйста поподробнее, если можно.
 
 Top
eai
Отправлено: 18 Октября, 2012 - 08:58:26
Post Id



Частый посетитель


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


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




BigBoss2012 пишет:

Вот тут пожалуйста поподробнее, если можно.


Что бы заполнить какое либо поле на нажатие кнопки Сабмит надо на клиенте (браузере) использовать JavaScript

Рекомендую покопать в сем направлении, к примеру посмотреть либу jQuery
 
 Top
BigBoss2012
Отправлено: 18 Октября, 2012 - 09:06:30
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2012  


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




eai пишет:
Что бы заполнить какое либо поле на нажатие кнопки Сабмит надо на клиенте (браузере) использовать JavaScript

Рекомендую покопать в сем направлении, к примеру посмотреть либу jQuery


Спасибо. Я уже потихоньку начинаю что на стороне сервака эту проверку сделать довольно геморно. Лучше сделать клиентскую - оно и нагляднее и сервер теребить лишний раз не будет.

В принципе, на ПХП это реально осуществимо, но уж больно геморно - необходимо вычищать\перезаписывать хттп-заголовки, итд
 
 Top
eai
Отправлено: 18 Октября, 2012 - 09:12:40
Post Id



Частый посетитель


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


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




Еще можешь предварительно проверять если от клиента пришел запрос где все поля или часть важных полей не заполнена то значит игнорировать этот запрос

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if(isset($_POST['login']) and isset($_POST['password']))
  4. {
  5. // понеслась
  6. }
  7. else
  8. {
  9. // ниче не делать
  10. }
  11.  
  12.  
  13.  

(Отредактировано автором: 18 Октября, 2012 - 09:14:57)

 
 Top
BigBoss2012
Отправлено: 21 Октября, 2012 - 17:37:19
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2012  


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




Всем большое спаибо. Проблему практически решил.
Опишу в новой теме!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB