2016-11-05 76 views
0

我希望在任何輸入之前首先說「請填寫下面的表單」,但之後如果輸入了年齡但是沒有名字,我想說: 「請輸入一個名稱:」 ,如果他們輸入一個名稱,但沒有年齡,然後: 「請輸入您的年齡:」 但如果他們什麼都沒有提交: 「錯誤:請輸入您的姓名和年齡,繼續」

這裏是我的代碼:

if($_GET["name"] && $_GET["age"]) { 
    echo "<p>Welcome ". $_GET['name']. " ... "; 
    echo "You are ". $_GET['age']. " years old.</p>"; 

    exit(); 
    } elseif ($_GET["name"] == FALSE) { 
     echo "<p>Please fill in the form below:</p>"; 
    } elseif ($_GET["age"] == FALSE) { 
     echo "<p>Please fill in the form below:</p>"; 
    } elseif ($_GET["name"] == FALSE && $_GET["age"]) { 
     echo "<p>Please fill in your name:</p>"; 
    } elseif ($_GET["age"] == FALSE && $_GET["name"]) { 
     echo "<p>Please fill in your age:</p>"; 
    } 

我只是學習PHP,我試過了我能想到的所有東西,這就是我迄今爲止所做的一切!

謝謝。

+4

提交表單確實應該使用'$ _POST'方法 – Martin

+0

這可以在一行中使用'||'(OR)語句完成。 –

+2

考慮使用客戶端表單驗證。 https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms_in_HTML#Constraint_Validation它現在已經標準化了,並且對於尚不支持它的瀏覽器有很好的填充。你仍然需要驗證服務器端的數據完整性(因爲不可能阻止人們劫持你的表單發送任何他們想要的內容),但是如果數據是意外的,你可以簡單地拋出一個錯誤,而不是處理所有的工作需要做一個友好的形式。 – Brad

回答

1

更換FALSEempty()和你幾乎沒有

您的形式:

<form method='post' ... > 
<input type='text' name='name' value=''> 
... 
</form> 

那麼你的PHP:

if($_POST["name"] ...) { 
    ... 
    exit; 
} 
elseif (empty($_POST["name"])) { 
     echo "<p>Please fill in the form below:</p>"; 
    } elseif (empty($_POST['age'] || !is_numeric($_POST["age"])) { 
     echo "<p>Please fill in the form below:</p>"; 
    } elseif (empty($_POST['name'] && !empty($_POST['age']) { 
     echo "<p>Please fill in your name:</p>"; 
    } elseif ( !empty($_POST['name'] && empty($_POST['age']) { 
     echo "<p>Please fill in your age:</p>"; 
    } 

你真的應該調整你的邏輯,這樣你的兩個值獨立

  • 檢查名稱是否填寫
  • 檢查是否填寫了年齡
  • 返回用戶的回聲。

所以上面的一系列elseif語句可以成爲...

if(empty($_POST['name'])){ 
    $notice .= " Please enter your name."; 
} 
if(empty($_POST['age'])){ 
    $notice .= " Please Enter your age." 
} 
print $notice. 

.=串接到變量的當前(或空)值的末尾的新定義。您可以每次打印$notice,因爲它不是空的(沒有打印),或者它有一個值,這是您想要打印的值,所以每次都贏得勝利。

+0

這可以進一步濃縮,但像這樣留下來說明這個想法... – Martin

+0

哇太棒了答案謝謝so.much – Joe

相關問題