2017-02-13 81 views
0

我對PHP很陌生,我從這裏的一些其他答案拼湊在一起。任何人都可以告訴我如何獲得$ errMsg來顯示?目前,空白或不正確的名稱會導致空白頁面。這是因爲表單沒有被再次顯示?如果是這樣,我應該怎麼去'重新加載'錯誤信息的表單?僅使用PHP在同一頁上顯示錶單驗證錯誤消息?

<?php 
$name = "Fred"; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    if (!empty($_POST["name"])) { 

     if ($_POST["name"] == $name) { 
     include("welcomeFred.php"); 
     } 

     else { 
     $errMsg = "Incorrect name"; 
     } 

    } 

    else { 
    $errMsg = "Name required"; 
    } 

} 
else { ?> 

    <html> 
    ... 
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
    <input type="text" name="name" required> 
    <span><?php echo $errMsg;?></span> 
    <input type="submit" value="Submit"> 
    </form> 
    ... 
    </html> 

<?php } ?> 
+1

沒有必要在窗體的action字段中放置'<?php echo htmlspecialchars($ _ SERVER [「PHP_SELF」]);?>'。如果您將其留空,表單將被髮送到當前網址。 – Jerodev

+0

@Jerodev但是有沒有'空白'方法的安全問題? – Bricriu

+0

不是我可以看到的,任何人都可以使用html檢查器更改該值,所以如果您將其保留爲空或不存在,安全性將保持不變。 – Jerodev

回答

1

你不應該把表單的渲染放在你的if結構的else中。這是您提交表單時未加載表單的原因。

刪除文件末尾的else { ?><?php } ?>,它應該可以正常工作。

+0

謝謝 - 這樣做更有意義,現在正在工作。 – Bricriu

+0

很高興我能幫到你。考慮將此答案標記爲解決方案,如果這對您有所幫助。 – Jerodev

相關問題