2015-10-08 72 views
-2

我是一名PHP初學者,我不知道爲什麼這段代碼不工作,但它應該,我試圖做一個簡單的用戶驗證:PHP中的基本表單驗證不起作用

$user=$_POST['user'];    
$message=$_POST['message']; 

if (!isset($user) || !isset($message) || $user == ' ' || $message == ' ')  
echo " please fill a valid user and message"; 

謝謝

+0

http://php.net/manual/en/function.error-reporting.php –

+3

和代碼'$這部分用戶= =''|| $ message =='''正在檢查空間而不是預期的「空」。只需使用'empty()'或更好,一個三元運算符。你也應該發佈你的HTML表單,並保持猜測。 –

回答

1

它情理之中的事isset()函數檢查$ _POST陣列上,以確保你不會得到很多的「未定義指數」的警告。

也許這樣的事情會爲你工作

$user = isset($_POST['user']) ? $_POST['user'] : null;    
$message = isset($_POST['message']) ? $_POST['message'] : null; 

if (empty($user) || empty($message)) echo " please fill a valid user and message"; 

既然你是新來的PHP - 讓我解釋一下這個部分:

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

它,基本上說來$用戶設置$ _POST ['user']如果$ _POST數組已經定義了'user'項目。否則 - $ user變量被設置爲null。每當您不確定具有某個索引的元素是否在數組中定義時,通常最好檢查isset()。

,當然,如果你的HTML格式是正確的做

下面這隻會工作的形式爲樣本,你可以使用

<form action="/test.php" method="POST"> 
    <input type="text" name="user" placeholder="Enter your username here"> 
    <input type="text" name="message" placeholder="Enter your message here"> 
    <input type="submit" value="send"> 
</form> 

請務必將其替換test.php的你腳本名稱

請讓我知道這對你的作品

至於下一步 - 我建議你檢查出this nice article解釋不同在空()和isset()函數之間使用用例。

最終,我們可以用這樣的事情結束了

if (empty($_POST['user']) || empty($_POST['message'])) echo " please fill a valid user and message"; 
+0

有一種方法可以縮短這個更多 –

+1

沒有必要檢查isset()然後empty(),空都做 – Tom

+0

謝謝弗雷德,湯姆,將編輯我的答案並添加一些細節,特別是關於isset()和empty()此示例中的用法 –