2013-03-06 79 views
0

我在php中有一個電子郵件表單,它有3種可能的外觀。解析php中的回聲

首先,當提交按鈕沒有被使用時,我希望它出現標準。

其次,提交HAS被點擊並且沒有設置數據。

第三,當數據輸入可接受時,我想顯示輸入內容。

但是,我是一個完全的PHP新手,我似乎並沒有把它弄清楚。 。?

<?php 
    if(isset(sent)) { 
     if(isset($_POST['forename']) && !empty($_POST['forename']) { 
      echo('<input class="tbox" type="text" name="forename" value="$POST['forename']" /><br>'); 
     } else { 
      echo('<input class="tbox bad" type="text" name="forename" value=""/><br>'); 
     } 
    } else { 
     echo('<input class="tbox" type="text" name="forename" value="" /><br>') ; 
    } 
?> 

我假設的錯誤是「S和的我得到意想不到的)異常應該如何回聲線被構造爲避免這種

+0

嵌套的if缺少a)。我曾嘗試類似的解決方案,以前提出的兩個建議,但似乎不是問題。驗證特殊字符非常有用,謝謝! – Glenn 2013-03-06 18:16:09

回答

3

這是你的問題:

echo('<input class="tbox" type="text" name="forename" value="$POST['forename']" /><br>'); 

變量沒有得到解析內單引號,只用雙引號。

一個簡單的解決辦法是:

echo '<input class="tbox" type="text" name="forename" value="' . htmlspecialchars($POST['forename']) . '" /><br>'; 

請注意,我用htmlspecialchars避免你的變量打破了HTML。當你使用echo(不傷害,但......)時,你也不需要使用括號。

1

此行是導致錯誤:

echo('<input class="tbox" type="text" name="forename" value="$POST['forename']" /><br>'); 

你必須Concat的與弦的其他兩個部分的價值和它的$_POST,而不是$POST

'[…]value="' . $_POST['forename'] . '"[…]' 

你也至少應該使用htmlentities的值的輸入不會打破你的HTML:

htmlentities($_POST['forename'], ENT_QUOTES, "UTF-8")