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.SU

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


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

> Без описания
alex.pro100
Отправлено: 26 Февраля, 2017 - 14:25:13
Post Id


Новичок


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


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




Я уже задавал вопрос относительно своего скрипта на этой странице http://forum.php.su/topic.php?fo...0&topic=7041 и сейчас я снова буду задавать глупые вопросы. Вот я тут накидал несколько проверок, как посоветовал мне один из авторов в предыдущем моем вопросе. Вот код:
PHP:
скопировать код в буфер обмена
  1. include_once "cabinet/database.php";
  2. header ("content-type: text/html; charset=utf-8");
  3.  
  4. if (isset ($_SESSION['id'])) {
  5.         header ("location: cabinet/index.php");
  6. }
  7.  
  8. if (isset ($_POST['reg_ok'])) {
  9.     if ($_POST['password'] != $_POST['password_2']) {
  10.         $_SESSION['msg'] = "Пароли не совпали!";
  11.         }
  12.     else {
  13.         if ($_POST['name'] == '' || $_POST['mail'] == '' || $_POST['login'] == '' || $_POST['password'] == '') {
  14.             $_SESSION['msg'] = "Поля отмеченные * обязательны для заполнения!";
  15.                 }
  16.                 elseif (!preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['mail'])) {
  17.             $e_m = $_SESSION['msg'] = "Вы допустили ошибку при заполнении поля e-mail!";
  18.         }
  19.                 elseif (strlen ($_POST['login']) < 3) {
  20.             $e_l = $_SESSION['msg'] = "Логин не может состоять менее чем из 3-х символов!";
  21.                 }
  22.                 elseif (mb_strlen ($_POST['password']) < 8) {
  23.                         $e_p = $_SESSION['msg'] = "Вы допустили ошибку при заполнении поля пароль!";
  24.                 }
  25.         else {
  26.             $mail = $_POST['mail'];
  27.             $login = $_POST['login'];
  28.             $sql_res = mysql_query ("SELECT id FROM cabinets WHERE login='$login' OR mail='$mail'") or die (mysql_error ());
  29.             if (mysql_num_rows ($sql_res) != 0) {
  30.                 $_SESSION['msg'] = "Пользователь с таким логином и/или почтой уже существует!";
  31.                         }
  32.             else {
  33.                 $name = $_POST['name']; $mail = $_POST['mail']; $login = $_POST['login']; $password = $_POST['password']; $ip = $_SERVER['REMOTE_ADDR'];
  34.                 mysql_query ("INSERT INTO cabinets SET name='$name',  mail='$mail', login='$login', password='$password', ip='$ip'");
  35.                 $id = mysql_insert_id ();
  36.                 $sql_res = mysql_query ("SELECT * FROM cabinets WHERE id=$id");
  37.                 $arr = mysql_fetch_assoc ($sql_res);
  38.                                 $_SESSION['id'] = $arr['id'];
  39.                 $id = $_SESSION['id'];
  40.                 $usr = mysql_fetch_assoc (mysql_query ("SELECT * FROM cabinets WHERE id=$id"));
  41.                 header ("location: cabinet/index.php");
  42.                                 exit;
  43.                         }
  44.                 }
  45.         }
  46. }

А ниже у меня есть разметка к этому скрипту, вот она:
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4.         <title>Регистрация кабинета</title>
  5.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6.         <link rel="stylesheet" type="text/css" href="css/styl.css" />
  7. </head>
  8. <body>
  9.         <div id="login">
  10.                 <form action="" method="post">
  11.                         <h1>Регистрация кабинета</h1>
  12.                         <?php
  13.                         if (isset ($_SESSION['msg'])) {
  14.                                 echo $_SESSION['msg'];
  15.                                 unset ($_SESSION['msg']);
  16.                         }
  17.                         ?>
  18.                         <div class="name">Ваше имя</div>
  19.                         <input name="name" type="name" />
  20.                         <div class="name">Ваш e-mail</div>
  21.                         <input name="mail" type="text" />
  22.                         <div class="name">Ваш логин</div>
  23.                         <input name="login" type="name" />
  24.                         <div class="name">Придумайте пароль</div>
  25.                         <input name="password" type="password" />
  26.                         <div class="name">Повторите пароль</div>
  27.                         <input name="password_2" type="password" />
  28.                         <center><button name="reg_ok" type="submit">Зарегистрироваться</button></center>
  29.                 </form>
  30.         </div>
  31. </body>
  32. </html>

И вот, собственно сам вывод ошибок:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (isset ($_SESSION['msg'])) {
  3.         echo $_SESSION['msg'];
  4.         unset ($_SESSION['msg']);
  5. }
  6. ?>

Проблема в том, что данная конструкция проверяет и выводит только одну ошибку, даже если их три. Так вот как мне написать этот вывод ошибок в некий список? То есть, чтобы выводились сразу все ошибки.
 
 Top
Строитель
Отправлено: 26 Февраля, 2017 - 14:48:00
Post Id



Участник


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


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




alex.pro100, создайте вместо этой переменной $_SESSION['msg'] массив $_SESSION['msg'][] , а в выводе обращайтесь к нему через функцию объединения элементов массива join($_SESSION['msg'])
 
 Top
alex.pro100
Отправлено: 26 Февраля, 2017 - 14:51:01
Post Id


Новичок


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


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




Строитель пишет:
alex.pro100, создайте вместо этой переменной $_SESSION['msg'] массив $_SESSION['msg'][] , а в выводе обращайтесь к нему через функцию объединения элементов массива join($_SESSION['msg'])

Смешной вопрос, но не могли бы вы привести пример такого кода?=))
 
 Top
Строитель
Отправлено: 26 Февраля, 2017 - 14:53:55
Post Id



Участник


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


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




alex.pro100, да, чуть позже, когда буду за компом, напишу пример.
 
 Top
alex.pro100
Отправлено: 26 Февраля, 2017 - 14:54:59
Post Id


Новичок


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


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




Строитель пишет:
alex.pro100, да, чуть позже, когда буду за компом, напишу пример.

Буду ждать, спасибо.=))
 
 Top
Строитель
Отправлено: 26 Февраля, 2017 - 15:22:37
Post Id



Участник


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


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




alex.pro100
Спойлер (Отобразить)

И вывод ошибок
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (isset($_SESSION['msg'])) {
  4.     echo join('<br />', $_SESSION['msg']);
  5.     unset($_SESSION['msg']);
  6. }
  7.  
  8.  

(Отредактировано автором: 26 Февраля, 2017 - 15:33:04)

 
 Top
alex.pro100
Отправлено: 27 Февраля, 2017 - 09:49:21
Post Id


Новичок


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


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




Строитель пишет:
alex.pro100
Спойлер (Отобразить)

И вывод ошибок
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (isset($_SESSION['msg'])) {
  4.     echo join('<br />', $_SESSION['msg']);
  5.     unset($_SESSION['msg']);
  6. }
  7.  
  8.  

Не работает! Ошибки как и прежде выводятся по одному
(Добавление)
Вроде бы разобрался и все работает как нужно, но хотелось бы узнать правильно ли я сделал! Я, вместо elseif написал просто if и вот хочу узнать правильно ли я сделал?
 
 Top
Строитель
Отправлено: 27 Февраля, 2017 - 10:11:13
Post Id



Участник


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


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




alex.pro100, да.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB