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]   

> Описание: валидация
Ruben
Отправлено: 11 Сентября, 2017 - 23:31:33
Post Id


Новичок


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


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




привет Сенек помоги мне спасибо заранее😎

++++++++++++++++++++++++++++++++++++++++++++++++++


if (isset($_POST['submit'])) {

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


function validate($data)
{
$error = array();

foreach ($data as $key => $value) {
switch ($key) {
case 'firstname':
if (empty($value))
$error['firstname'] = 'The Name Was Empty<br>';
break;
case 'lastname':
if (empty($value))
$error['lastname'] = ' The Lastname was Empty<br>';
break;
case 'email':
if (empty($value))
$error['email'] = 'The Email was Empty<br>';
break;
case 'pass':
if (empty($value))
$error['pass'] = 'The Password was Empty<br>';
break;
case 'confirmpass':
if (empty($value))
$error['confirmpass'] = 'The ConfirmPassword was Empty<br>';
break;

}
}

return implode($error);
}

$error = validate($_POST);

echo $error;

}
++++++++++++++++++++++++++++++++++++++++++++++++++
Здесь все работает но мне надо штобы цикл foreach был наверху и function была бы в нутри цикла а не цикл был внутри функции и функция долхна получать 2 параметра key,value и проверятса спомошЮ switchcase спасобо заранее
 
 Top
Vladimir Kheifets
Отправлено: 12 Сентября, 2017 - 12:49:58
Post Id



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


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




Ruben пишет:
привет Сенек помоги мне спасибо заранее😎

++++++++++++++++++++++++++++++++++++++++++++++++++


if (isset($_POST['submit'])) {

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


function validate($data)
{
$error = array();

foreach ($data as $key => $value) {
switch ($key) {
case 'firstname':
if (empty($value))
$error['firstname'] = 'The Name Was Empty<br>';
break;
case 'lastname':
if (empty($value))
$error['lastname'] = ' The Lastname was Empty<br>';
break;
case 'email':
if (empty($value))
$error['email'] = 'The Email was Empty<br>';
break;
case 'pass':
if (empty($value))
$error['pass'] = 'The Password was Empty<br>';
break;
case 'confirmpass':
if (empty($value))
$error['confirmpass'] = 'The ConfirmPassword was Empty<br>';
break;

}
}

return implode($error);
}

$error = validate($_POST);

echo $error;

}
++++++++++++++++++++++++++++++++++++++++++++++++++
Здесь все работает но мне надо штобы цикл foreach был наверху и function была бы в нутри цикла а не цикл был внутри функции и функция долхна получать 2 параметра key,value и проверятса спомошЮ switchcase спасобо заранее


Добрый день!
Попробуйте так:
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['submit']))
  2. {  
  3.         $error="";
  4.         foreach ($_POST as $key => $value)
  5.         {
  6.            $$key = $value;
  7.            $error .= validate($key,$value);
  8.         }
  9.         echo $error;
  10. }
  11. ########################################       
  12. function validate($key,$value)
  13. {      
  14.         $error="";
  15.         switch ($key)
  16.         {
  17.                 case 'firstname':
  18.                 if (empty($value))
  19.                 $error = 'The Name Was Empty<br>';
  20.                 break;
  21.                
  22.                 case 'lastname':
  23.                 if (empty($value))
  24.                 $error = ' The Lastname was Empty<br>';
  25.                 break;
  26.        
  27.                 case 'email':
  28.                 if (empty($value))
  29.                 $error = 'The Email was Empty<br>';
  30.                 break;
  31.        
  32.                 case 'pass':
  33.                 if (empty($value))
  34.                 $error = 'The Password was Empty<br>';
  35.                 break;
  36.        
  37.                 case 'confirmpass':
  38.                 if (empty($value))
  39.                 $error = 'The ConfirmPassword was Empty<br>';
  40.                 break;
  41.         }
  42.     return $error;
  43. }


P.S. Вместо строк:
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


достачно в цикле foreach ($_POST as $key => $value) написать:
$$key=$value;

(Отредактировано автором: 12 Сентября, 2017 - 12:50:42)

 
 Top
Ruben
Отправлено: 12 Сентября, 2017 - 15:21:35
Post Id


Новичок


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


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




function validate($key, $value)
{
switch ($key) {
case 'firstname':
if (empty($value)) {
echo 'Putt Your Firstname';
echo '<br>';
}
break;
case 'lastname' :
if (empty($value)) {
echo 'Putt Your Lastname';
echo '<br>';
}
break;
case 'email':
if (empty($value)) {
echo 'Putt Your Email';
echo '<br>';
}
break;
case 'pass' :
if (empty($value)) {
echo 'Putt Your Password';
echo '<br>';
}
break;
case 'confirmpass' :
if (empty($value)) {
echo 'Putt Your Confirmpassword ';
echo '<br>';
}
break;
}
}

foreach ($_POST as $key => $value) {

validate($key, $value);



Как мне проверить $_POST но $_POST при наЖАТИИ формы должен проверять только валю в форме а не весь $_POST
мне сказали сделаи массив и использовай функцию in array()
Помогите меня чтото не получается спасибо;
 
 Top
Vladimir Kheifets
Отправлено: 12 Сентября, 2017 - 15:39:19
Post Id



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


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




Ruben пишет:

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


Как мне проверить $_POST но $_POST при наЖАТИИ формы должен проверять только валю в форме а не весь $_POST
мне сказали сделаи массив и использовай функцию in array()
Помогите меня чтото не получается спасибо;


Попробуйте сделать так:
PHP:
скопировать код в буфер обмена
  1. $KeyArr=array('firstname','lastname','email','pass','confirmpass');
  2. if (isset($_POST['submit']))
  3. {  
  4.         $error="";
  5.         foreach ($KeyArr as $key)
  6.         {
  7.            $value = $_POST[$key];
  8.            $$key = $value;
  9.            $error .= validate($key,$value);
  10.         }
  11.         echo $error;
  12. }


Не советую, но если кому-то очень хочется, то можно использовать функцию in array()
PHP:
скопировать код в буфер обмена
  1. $KeyArr=array('firstname','lastname','email','pass','confirmpass');
  2. if (isset($_POST['submit']))
  3. {  
  4.         $error="";
  5.         foreach ($_POST as $key => $value)
  6.         {
  7.            if(in_array($key,$KeyArr))
  8.            {
  9.                    $$key = $value;
  10.                    $error .= validate($key,$value);
  11.            }
  12.         }
  13.         echo $error;
  14. }

(Отредактировано автором: 12 Сентября, 2017 - 15:53:46)

 
 Top
Ruben
Отправлено: 12 Сентября, 2017 - 16:26:03
Post Id


Новичок


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


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




да понимаю но нельзя так сделать чтоб не было $$ я не прожодил ещо
так неправилно?



if (isset($_POST['submit'])) {


$valid = ["firstname", "lastname", "email", "pass", "confirmpass"];
$valid = $_POST;


function validate($key, $value)
{
switch ($key) {
case 'firstname':
if (empty($value)) {
echo 'Putt Your Firstname';
echo '<br>';
}
break;
case 'lastname' :
if (empty($value)) {
echo 'Putt Your Lastname';
echo '<br>';
}
break;
case 'email':
if (empty($value)) {
echo 'Putt Your Email';
echo '<br>';
}
break;
case 'pass' :
if (empty($value)) {
echo 'Putt Your Password';
echo '<br>';
}
break;
case 'confirmpass' :
if (empty($value)) {
echo 'Putt Your Confirmpassword ';
echo '<br>';
}
break;
}
}

foreach ($_POST as $key => $value) {


validate($key, $value);

$valid = ["firstname", "lastname", "email", "pass", "confirmpass"];
$valid = $_POST;



if (in_array('firstname', $_POST)) {
echo true;
} else {
echo false;
}

if (in_array('lastname', $_POST)) {
echo true;
} else {
echo false;
}
if (in_array('email', $_POST)) {
echo true;
} else {
echo false;
}
if (in_array('pass', $_POST)) {
echo true;
} else {
echo false;
}
if (in_array('confirmpass', $_POST)) {
echo true;
} else {
echo false;
}

}


}
 
 Top
Vladimir Kheifets
Отправлено: 12 Сентября, 2017 - 20:14:59
Post Id



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


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




Ruben пишет:
да понимаю но нельзя так сделать чтоб не было $$ я не прожодил ещо
так неправилно?

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



Можно сделать так, чтобы не было "$$key".
Вместо $$key = $value;
Верните, как было раньше:
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


А вот это:
PHP:
скопировать код в буфер обмена
  1. $valid = ["firstname", "lastname", "email", "pass", "confirmpass"];
  2. $valid = $_POST;

$valid = $_POST; - ошибка. Не будет работать.
 
 Top
Ruben
Отправлено: 13 Сентября, 2017 - 08:51:12
Post Id


Новичок


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


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




спасибо Владимир
(Добавление)
Владимип помоги пожалуста как мне сделать чтобы регистарация была в html форме например если я даю submit если небыло имени то выдавала Putt your name но не самово внезу а под полем NAme; и так все поля Lastname , Email ,Password , i confirmpassword;


if (isset($_POST['submit'])) {

function validate($key, $value)
{
switch ($key) {
case 'firstname':
if (empty($value)) {
echo 'Putt Your Firstname';
echo '<br>';
}
break;
case 'lastname' :
if (empty($value)) {
echo 'Putt Your Lastname';
echo '<br>';
}
break;
case 'email':
if (empty($value)) {
echo 'Putt Your Email';
echo '<br>';
}
break;
case 'pass' :
if (empty($value)) {
echo 'Putt Your Password';
echo '<br>';
}
break;
case 'confirmpass' :
if (empty($value)) {
echo 'Putt Your Confirmpassword ';
echo '<br>';
}
break;
}
}

$arr = array('firstname', 'lastname', 'email', 'pass', 'confirmpass');
foreach ($_POST as $key => $value) {
if (in_array($key, $arr)) {
validate($key, $value);
}
}


}


сейчас все соощение отображаются внезу а мне надо поскайдим полям спасибо большое
 
 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