2011-12-12 45 views
2

窗體過程有什麼更好? (安全/快)窗體過程使用php

佈局形式:

<form id="myForm" name="frm1" action="insert.php" method="post"> 
<textarea name="content" id="content" cols="35" rows="5"></textarea> 
<INPUT type=submit value="submit" name=submit></form> 

插入PHP:

<?php 
if (('POST' == $_SERVER['REQUEST_METHOD'])) { 
    //php validation code 
} else { 
    exit(); 
} 
?> 

或者

<?php 
if (!isset($_POST['submit'])) { 
    //php validation code 
} else { 
    exit(); 
} 
?> 
+0

你想要處理什麼樣的表單? –

+0

我個人比較喜歡前者。我不知道有一個正確的答案 –

+0

我編輯了這個表格 – user1086738

回答

1

第二個,絕對。它更具可讀性。甚至更符合邏輯

<?php 
if (isset($_POST['submit'])) { //php validation code 
    //do something 
} 
else 
{ 
    exit(); 
} 
?> 
1

您通常應該檢查是否存在您要處理的數據。沿着這些路線,你的第二種方法是首選,但不要以爲人們會點擊你的提交按鈕。

我有一些其他的筆記給你,而我在它。您應該在結束時使用/>關閉<input>標籤。

此外,雖然您可以進行比較,如('POST' == $_SERVER['REQUEST_METHOD']),但按照該順序編寫它們沒什麼意義。像這樣翻轉它:($_SERVER['REQUEST_METHOD'] == 'POST')

+0

我同意!我快速寫道;) – user1086738

1

速度在這裏無關緊要。在安全性方面的代碼,這兩個蛋糕diferents ...

if (('POST' == $_SERVER['REQUEST_METHOD'])) 
{//php validation code 
} 
else 
{exit();} 

在這裏,你正在測試,如果你的頁面的請求方法是POST,然後你做你的驗證。

if (!isset($_POST['submit'])) 
{//php validation code 
} 
else 
{exit();} 

在這裏,你正在測試如果在具有關鍵的「提交」後值的值。你假設一個字段有這個名字,但這不一定是真的。您可以使用任何名爲「提交」的字段來輸入帖子值。

這裏真正的安全問題是您的驗證測試。

+0

if if(('POST'== $ _SERVER ['REQUEST_METHOD']))&& isset($ _ POST ['submit']){...} else {...}現在呢? – user1086738

+0

我猜,當php填充$ _POST數組是當請求方法發佈。檢查這是多餘的。 – macjohn

0
if (!isset($_POST['submit'])) 
{//php validation code 
} 
else 
{exit();} 

第二個對我更有意義。

0

第二個答案是最好的,因爲你只是檢查你的提交按鈕。另一個正在檢查一個職位。