Цикл Foreach, который проходит по данным $ _POST вместо статического isset ($ _ POST [«name»]…)

1

Поэтому я снова пытаюсь найти лучшие способы делать что-то. 90% учебников делают вещи обычным способом:

if (isset($_POST['name']) && isset($_POST['password'])) {
     // Does some stuff...
    }

Это нормально, но это кажется слишком статичным, поскольку я предпочитаю нечто более динамичное. Например, скажем, прокручиваем все массивы $ _POST в форме контакта. Таким образом я могу изменить имя или поля на все, что захочу, или добавить еще... мой код всегда будет обрабатывать остальные.

Я знаю, что цикл foreach пригодится, но, как кто-то новый в мире программирования и php, я думал, что вы можете показать мне, как это делается. Итак, как я могу заменить выше цикл for? Я не знаю, с чего начать.

  • 1
    Будет ли это дубликатом stackoverflow.com/questions/10262763/… ?
  • 0
    добавил что-то в решение
Теги:

3 ответа

2
Лучший ответ

попробуй это:

$check=true;   
if(isset($_POST)){
  foreach($_POST as $key=>$value){
   if(!isset($_POST[$key]){
    $check = false;
    break;
     } 
  }
}

на основе $check вы можете проверить, правильно ли он отправлен или нет.

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

$keys =array("input1","input2");

$check=true;   
if(isset($_POST)){
  foreach($keys as $input){
   if(!array_key_exists($input,$_POST)){
    $check = false;
    break;
     } 
  }
}
  • 0
    Но, подумав сейчас, моя логика может не сработать, потому что SELECT id FROM members ГДЕ name = $ name AND password = $ password
  • 0
    что именно нужно?
0

Вы всегда можете использовать цикл foreach:

foreach($_POST as $key => $value){ echo '$_POST["'.$key.'"] = "'.$value.'"'}

Но помните, что кто угодно, может изменить вашу форму, подготовить какой-то пост-сообщение и отправить данные, которые могут создать небольшой беспорядок с вашим кодом. Так что это хороший способ проверить все поля. Разумеется, возможно динамическое подтверждение, но вам нужно сделать это правильно!

0

Хорошо, вы могли бы попробовать что-то вроде этого:

<?php
$inputNames = array("input1","input2");
foreach($inputNames as $input)
{
    if (isset($_POST["$input"]) && isset($_POST["$input"])) {
     // Does some stuff...
    }
}
?>

Создайте массив с именами всех ваших входных тегов, а затем просто сделайте foreach между ними. Таким образом, вам всегда нужно редактировать массив имен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню