Подтвердить что ты не робот

Сокращение PHP для isset формы POST

Я создаю форму и просто ищу более эффективные способы делать что-то. Что я до сих пор:

<p><input type="text" name="transmission" value="" /></p>
<p><input type="text" name="model" value="<?=$model;?>" /></p>

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

<p><input type="text" name="name" value="<?php if isset($_POST['submit'])) { echo $_POST['name']; } else { echo ""; } ?>" /></p>

Но должен быть более короткий способ сделать это.

ЕСЛИ кто-нибудь может указать мне в том направлении, в котором я был бы очень признателен.

Спасибо!

4b9b3361

Ответ 1

Вы можете определить переменные в начале вашего script перед выходом HTML, например:

$name = isset($_POST['submit']) ? $_POST['name'] : null;

в вашем разделе html вы можете печатать $name, не беспокоясь о том, что он не определен

<p><input type="text" name="name" value="<?php echo $name ?>" /></p>

Также, если $_POST ['submit'] не содержит никакого значения, вы, скорее всего, получите инструкцию FALSE. Чтобы избежать таких проблем, используйте array_key_exists

Ответ 2

Как сказал Назарий, вы должны избегать как можно большего количества PHP в шаблоне.
Фактически, вы должны иметь только в своих шаблонах уже подготовленные переменные.

Итак, в вашем коде есть что-то вроде этого

$FORM = array();
$form_fields = array('name','sex');
foreach($form_fields as $fname) {
  if (isset($_POST[$fname])) {
    $FORM[$fname] = htmlspecialchars($_POST[$fname]);
  } else {
    $FORM[$fname] ='';
  }
}

а затем у вас есть гладкий и аккуратный шаблон:

<p><input type="text" name="name" value="<?=$FORM['name']?>" /></p>

Ответ 3

Не вдаваясь в причины не использовать <p> для структурирования ваших форм, не так много можно сделать, кроме удаления else.

<p><input type="text" name="name" value="<?php if isset($_POST['name'])) echo $_POST['name']; ?>" /></p>

Ответ 4

Сокращенное <?=$_POST['name'] ?: ''?>

Ответ 5

Вы можете попробовать это...

$_POST['submit'] ? echo $_POST['name'] : echo '';

Я использую логическое сравнение вместо функции isset (см. ссылку для таблицы)

http://www.php.net/manual/en/types.comparisons.php

или другой вариант...

echo ($_POST['submit'] ? $_POST['name'] : '');

Ответ 6

<?= isset($_POST['submit'])? $_POST['name'] : ""; ?>

Самый короткий из них вы получите, не считая <?= $_POST['name']; ?> (если submit не задано, имя должно быть пустым в любом случае) - вам, вероятно, нужно отключить предупреждения.

Все, что сказано, это очень очень плохая практика и открывает вам межсайтовый скриптинг (XSS). Вы должны НЕ делать это. Даже в интрасети, если злоумышленник когда-либо владеет компьютером, который имеет к нему доступ, он может использовать XSS для выполнения любых действий, которые может выполнить пользователь.

Из вашего вопроса и того, насколько вы испытываете отвращение к этому типу эха на экране, я предлагаю вам использовать некоторую форму библиотеки шаблонов, такую ​​как Smarty. Это позволяет вашему html-коду выглядеть следующим образом:

<p><input type="text" name="name" value="{name}" /></p>

Ответ 7

Я только что видел это со стандартного кодирования Wordpress. хотя они не поощряют читаемость.

isset( $var ) || $var = some_function();

ссылка здесь

Ответ 8

Используйте управление ошибкой php: @.

<?php

   $posted_text = @$_POST['posted_text'];
   echo $posted_text

?>  

Если задана переменная POST, она будет отформатирована. Если нет, ничего не появится.