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 :: Версия для печати :: Помогите уgростить и найти ошибку
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите уgростить и найти ошибку

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

1. A.N.R.I - 17 Августа, 2009 - 17:10:00 - перейти к сообщению
Вот код страницы:

CODE (text):
скопировать код в буфер обмена
  1.  
  2.  
  3. if (isset ($_POST['lng']) OR isset($_POST['email']) OR isset ($_POST['pass']) OR isset ($_POST['pass2']) OR isset ($_POST['quest']) OR isset ($_POST['answer'])){ // если все это существует, то...
  4. $lng=$_POST['lng']; // каждую полученую переменную присваиваем к переменой :)
  5. $email=$_POST['email'];
  6. $pass=md5($_POST['pass']);
  7. $pass2=md5($_POST['pass2']);
  8. $quest=$_POST['quest'];
  9. $answer=$_POST['answer'];
  10. if($email ==''){
  11. print "<div id='error'>Поле Email не должно быть пустым.</div>";
  12. }
  13. if ($pass != $pass2){
  14. print "<div id='error'>Поля \"Пароль\" не совпадают.</div>";
  15. }
  16. if(preg_match("/^[0-9a-zA-Zа-яА-Я._]+$/","$pass")){print "<div id='error'>В поле \"Пароль\" нельзя использовать другие символы кроме цифр, латинских и русских букв, а также подчеркивания и точка</div>";}
  17. if($answer == '' && $quest !=''){
  18. print "<div id='error'>Поле ответ должно быть заполеное</div>";
  19. }
  20. if($answer != '' && $quest ==''){
  21. print "<div id='error'>Поле вопрос должно быть заполеное</div>";
  22. }
  23. if($email !='' && $pass2 == '' && $pass == ''){
  24. if ($answer != '' && $quest !=''){
  25. $query = ("UPDATE userlist SET email='$email', quest='$quest', answer='$answer'  WHERE id='$_GET[u]'" );
  26. }
  27. if ($answer == '' && $quest ==''){
  28. $query = ("UPDATE userlist SET email='$email' WHERE id='$_GET[u]'" );
  29. }
  30. if ($query == true){
  31. print "<div id='good'>Профиль обновлен</div>";
  32. }
  33. else{
  34. print "<div id='error'>Профиль не обновлен </div>";
  35. }
  36. }
  37. if($email !='' && $pass2 != '' && $pass == $pass2){
  38. if ($answer != '' && $quest !=''){
  39. $query = ("UPDATE userlist SET email='$email', pass='$pass', quest='$quest', answer='$answer'  WHERE id='$_GET[u]'" );
  40. }
  41. if ($answer == '' && $quest ==''){
  42. $query = ("UPDATE userlist SET email='$email', pass='$pass'  WHERE id='$_GET[u]'" );
  43. }
  44. if ($query == true){
  45. print "<div id='good'>Профиль обновлен</div";
  46. }
  47. else{
  48. print "<div id='error'>Профиль не обновлен </div>";
  49. }
  50. }
  51. }
  52.  

Проблема в том, что когда все ведено правильно, и нажимаю "Обновить" - я получаю сообщение "Профиль обновлен". Смотрю БД - ничего не изменилось Недовольство, огорчение. Помогите мне решить проблему и если возможно сделать код проще (я думаю, что это можно, но как?)
И еще, почемуто не пашет правильно функция preg_match() . Я ее не правильно использую?
2. Champion - 17 Августа, 2009 - 18:01:42 - перейти к сообщению
RomAndry, ну убери цифры и сделай, чтоб табуляция превращалась в 4 пробела, а не 8.

Автор, это тебе - http://phpfaq[dot]ru/debug
3. Мелкий - 17 Августа, 2009 - 18:05:31 - перейти к сообщению
строка 3 - в комментарии "если все это существует, то...", а по смыслу - если есть любое из этого.

и в 45 строке - может там всё таки mysql_query поставить? А то запрос написан, а отправлять-то кто будет? ;)

Остальное не переварил - читать жутко неудобно, приведите табуляцию в норму
4. Ch_chov - 17 Августа, 2009 - 19:02:33 - перейти к сообщению
Да нормально вроде все с табуляцией.
Просто в исходном коде кол-во табов на строку местами доходит до 13(!) штук...
К тому же они выставлены почти в произвольном порядке. Т.е. не соответствуют структуре кода.

CODE (php):
скопировать код в буфер обмена
  1. $query = ("UPDATE userlist SET email="$email" WHERE id="$_GET[u]"" );

A.N.R.I, ты что нибудь слышал про экранирование ковычек?
5. Nestor - 17 Августа, 2009 - 19:09:29 - перейти к сообщению
+SQL injection ...
6. A.N.R.I - 17 Августа, 2009 - 20:08:18 - перейти к сообщению
tabы стер. Не знаю, мне так рассказывали за структуру. Если есть нормально рассписаная статья - буду раж почитать.
про экранирование слышал Улыбка
(Добавление)
Кста,Ch_chov спасибо, провтыкал
7. Ch_chov - 17 Августа, 2009 - 20:45:08 - перейти к сообщению
Цитата:
tabы стер. Не знаю, мне так рассказывали за структуру. Если есть нормально рассписаная статья - буду раж почитать.

Зачем все то стер? Вот тебе статья про хороший стиль программирования.
И Строки

З.Ы. Разбирайся с ковычками...
8. A.N.R.I - 17 Августа, 2009 - 21:43:02 - перейти к сообщению
Ch_chov пишет:

Зачем все то стер?
З.Ы. Разбирайся с кавычками...
НУ МНЕ сказали, что там ничего не понятно, вот и стер Не понял
9. Champion - 18 Августа, 2009 - 08:49:15 - перейти к сообщению
Нет, табуляция в 8 пробелов - это много. Даже если убрать эти вот табы, которые были лишними, все равно после 3 табов код уже почти в середине экрана.

A.N.R.I, зря стер. Только хуже стало.
10. EuGen - 18 Августа, 2009 - 17:31:08 - перейти к сообщению
Champion
Это уж вопрос к владельцам
11. Champion - 18 Августа, 2009 - 17:58:26 - перейти к сообщению
К владельцам и взываю)) Уж в тему "обновление форума" написал, тут просто увидел, что весь код табуляцией далеко вправо был сдвинут, вот и написал. Думал, RomAndry заметит
12. A.N.R.I - 23 Августа, 2009 - 19:17:25 - перейти к сообщению
Так, у меня проблемы:

Код:
CODE (text):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. $to=$_POST['to'];
  5.                 #################Тема сообщения ###############
  6.                 $subject=$_POST['subject'];
  7.                 ###########Текст сообщения ##########
  8.                 $msg=$_POST['msg'];
  9.  
  10. $myrow7=mysql_query("SELECT * FROM userlist WHERE login='$_POST[to]'");
  11.         $result7=mysql_fetch_array($myrow7);
  12.  
  13.  
  14. if(mysql_num_rows ($myrow7) > 0 && $subject != '' && $msg != ''){
  15.                                         $myrow8=mysql_query("INSERT INTO pm (author, to , subject, text) VALUES ('$author','$to','$subject','$msg')");
  16.                                         ###############Если в БД даные ушли, выводим это ##############
  17.                                         if ($myrow8 == 'true'){
  18.                                                 print "<div id='good'>Сообщение отправлено</div>";
  19.                                         }else {
  20.                                                         print "<div id='error'>Сообщение не отправлено</div>";
  21.                                                 }
  22.                                 }
  23.  

И когда отправляю форму - пишет: "Сообщение не отправлено".
Когда оставлял поле author - в БД данные летели, а если что-то другое нет. В чем проблемы можут быть?Форма и обработчик в 1 файле
13. A.N.R.I - 24 Августа, 2009 - 09:58:43 - перейти к сообщению
Ну? Никто не знает как решить проблему? Помогите, плиз!!!!!!!

 

Powered by ExBB FM 1.0 RC1