簡體   English   中英

PHP isset形式POST值的簡寫

[英]PHP Shorthand for isset form POST value

我正在創建一個表單,我只是在尋找更有效的方法來做事。 到目前為止我所擁有的是:

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

但必須有一個更短的方法來做到這一點。

如果有人能指出我的方向,我會非常感激。

謝謝!

您可以在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

就像Nazariy說的那樣,你應該盡可能避免模板中的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>

速記<?=$_POST['name'] ?: ''?>

在沒有使用<p>構建表單的原因的情況下,除了刪除else之外,沒有太多可以做的else

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

我剛剛從wordpress編碼標准中看到了這個。 雖然他們不鼓勵可讀性..

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

這里參考

使用php錯誤控制操作符:@。

<?php

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

?>  

如果設置了POST變量,它將被回顯出來。 如果沒有,任何事都不會出現。

你可以嘗試這個......

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

我正在使用布爾比較而不是isset函數(請參閱表的鏈接)

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

或另一種選擇是......

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

除了說<?= $_POST['name']; ?>之外,你得到的最短<?= $_POST['name']; ?> <?= $_POST['name']; ?> (如果提交未設置名稱,則無論如何都應為空) - 您可能需要關閉警告。

所有這一切,這是非常糟糕的做法,並打開你跨站點腳本(XSS) 應該這樣做。 即使在Intranet上,如果攻擊者擁有可以訪問它的計算機,他們也可以使用XSS執行用戶可以執行的任何操作。

根據你的問題以及你對屏幕上這種類型的回聲有多少厭惡,我建議你使用某種形式的模板庫,比如Smarty 這允許你的HTML代碼看起來像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM