2012-02-14 84 views
0

我一直在努力實現註冊表單我爲我的網站開發上isset表單驗證......PHP的形式isset驗證

基本上我需要正確填寫所有字段或形成習慣$ _POST。 ....

作爲即時通訊張貼到自己(的形式行動=「」),我需要我的形式加載和顯示錯誤上述形式的郵件,如果沒有正確填寫....

這裏是我的表單代碼...

<?php 
if(!isset($_POST['submit'])) { 

echo ' 
<form action="" method="post" name="signup"> 
<table border="1" width="100%"> 



<tr><td> 
<p style="text-align: right;">First Name:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="first_name" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Last Name:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="last_name" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Desired Username:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="username" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Password:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="password" type="password" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Confirm Password:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="confpassword" type="password" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Date Of Birth:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<select name="dob_day"> 
<option value="000">Day</option> 
<option value="01">01</option> 
<option value="02">02</option> 
<option value="03">03</option> 
<option value="04">04</option> 
<option value="05">05</option> 
<option value="06">06</option> 
<option value="07">07</option> 
<option value="08">08</option> 
<option value="09">09</option> 
<option value="10">10</option> 
<option value="11">11</option> 
<option value="12">12</option> 
<option value="13">13</option> 
<option value="14">14</option> 
<option value="15">15</option> 
<option value="16">16</option> 
<option value="17">17</option> 
<option value="18">18</option> 
<option value="19">19</option> 
<option value="20">20</option> 
<option value="21">21</option> 
<option value="22">22</option> 
<option value="23">23</option> 
<option value="24">24</option> 
<option value="25">25</option> 
<option value="26">26</option> 
<option value="27">27</option> 
<option value="28">28</option> 
<option value="29">29</option> 
<option value="30">30</option> 
<option value="31">31</option> 
</select>&nbsp;&nbsp;&nbsp;&nbsp; 
<select name="dob_month"> 
<option value="000">Month</option> 
<option value="january">January</option> 
<option value="february">February</option> 
<option value="march">March</option> 
<option value="april">April</option> 
<option value="may">May</option> 
<option value="june">June</option> 
<option value="july">July</option> 
<option value="august">August</option> 
<option value="september">September</option> 
<option value="october">October</option> 
<option value="november">November</option> 
<option value="december">December</option> 
</select> 
&nbsp;&nbsp;Year:&nbsp;&nbsp; 
<input name="dob_year" type="text" maxlength="4" size="10" value="eg: 1964"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Email Address:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="email" type="text" maxlength="50"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Gender:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;&nbsp;&nbsp;Male:&nbsp;&nbsp;<input type="radio" name="gender" value="male" />&nbsp;&nbsp;&nbsp;&nbsp; 
Female:&nbsp;&nbsp;<input type="radio" name="gender" value="female" /> 
</td></tr> 
</table><p> 
<center><input type="submit" name="submit" value="  Sign-Up  "></center> 
</font> 
';} 
else 
{ 
echo "Form Submitted"; 
} 
?> 

我知道這個表單代碼看起來亂碼,我討厭凌亂的代碼,但我不得不截斷它在這裏張貼,或者我會在數百個代碼行之前鍵入4個空格大聲笑

如果任何人都可以拿出該解決方案(將設定非常簡單,但找不出如何代碼爲「),我將非常感激再次:d

謝謝你們

:鞠躬:堆疊交換一路:弓:

+1

您可以突出顯示文本的部分,然後點擊大括號圖標自動4維空間中的大段代碼。 – 2012-02-14 04:07:52

+1

omg我所以沒有知道,下次我會發一個問題哈哈感謝隊友 – 2012-02-14 04:10:27

回答

1
else 
{ 
    $accept=true; 
    if(!isset($_POST["value1"])){ 
     $accept=false; 
     $_SESSION["error"] .= "Please fill in value1\n"; 
    } 
    //.... Other values 

    if(!$accept){ 
     header("Location: Current file name"); //Check if the session has the error value filled in and display it on the form. 
     exit; 
    } 
    echo "Form Submitted"; 
} 

舉例:

<?php 
session_start(); 
if(!isset($_POST['submit'])) { 

echo ' 
<form action="" method="post" name="signup"> 
<table border="1" width="100%"> 

<tr><td colspan="2">' . $_SESSION['error'] . ' </td></tr> 

<tr><td> 
<p style="text-align: right;">First Name:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="first_name" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Last Name:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="last_name" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Desired Username:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="username" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Password:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="password" type="password" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Confirm Password:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="confpassword" type="password" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Date Of Birth:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<select name="dob_day"> 
<option value="000">Day</option> 
<option value="01">01</option> 
<option value="02">02</option> 
<option value="03">03</option> 
<option value="04">04</option> 
<option value="05">05</option> 
<option value="06">06</option> 
<option value="07">07</option> 
<option value="08">08</option> 
<option value="09">09</option> 
<option value="10">10</option> 
<option value="11">11</option> 
<option value="12">12</option> 
<option value="13">13</option> 
<option value="14">14</option> 
<option value="15">15</option> 
<option value="16">16</option> 
<option value="17">17</option> 
<option value="18">18</option> 
<option value="19">19</option> 
<option value="20">20</option> 
<option value="21">21</option> 
<option value="22">22</option> 
<option value="23">23</option> 
<option value="24">24</option> 
<option value="25">25</option> 
<option value="26">26</option> 
<option value="27">27</option> 
<option value="28">28</option> 
<option value="29">29</option> 
<option value="30">30</option> 
<option value="31">31</option> 
</select>&nbsp;&nbsp;&nbsp;&nbsp; 
<select name="dob_month"> 
<option value="000">Month</option> 
<option value="january">January</option> 
<option value="february">February</option> 
<option value="march">March</option> 
<option value="april">April</option> 
<option value="may">May</option> 
<option value="june">June</option> 
<option value="july">July</option> 
<option value="august">August</option> 
<option value="september">September</option> 
<option value="october">October</option> 
<option value="november">November</option> 
<option value="december">December</option> 
</select> 
&nbsp;&nbsp;Year:&nbsp;&nbsp; 
<input name="dob_year" type="text" maxlength="4" size="10" value="eg: 1964"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Email Address:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="email" type="text" maxlength="50"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Gender:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;&nbsp;&nbsp;Male:&nbsp;&nbsp;<input type="radio" name="gender" value="male" />&nbsp;&nbsp;&nbsp;&nbsp; 
Female:&nbsp;&nbsp;<input type="radio" name="gender" value="female" /> 
</td></tr> 
</table><p> 
<center><input type="submit" name="submit" value="  Sign-Up  "></center> 
</font> 
';} 
else 
{ 
$accept=true; 
if(!isset($_POST["first_name"])){ 
    $accept=false; 
    $_SESSION["error"] .= "Please fill in your first name.<br />"; 
} 
//.... Other values 

if(!$accept){ 
    header("Location: " . $_SERVER["PHP_SELF"]); //Check if the session has the error value filled in and display it on the form. 
    exit; 
} 
echo "Form Submitted"; 
} 
?> 
+0

這仍然可以讓你提交表單沒有名稱=>(「first_name」)是我測試的領域....它表明沒有錯誤或沒有提交表單的回聲,但它仍然顯示我的PHP標題,所以我知道有沒有主要的代碼錯誤:)對不起 – 2012-02-14 04:20:09

+0

它是否有所不同,我有多個表單元素來驗證? – 2012-02-14 04:26:06

+0

我將其作爲示例發佈,我將在一分鐘內完全更新它。 (注意「value1」作爲一個通用值)。 – 2012-02-14 04:30:36

1

表單驗證可以使用javascript完成。

HTML

<input type="submit" onclick="return validate();" /> 

JAVASCRIPT

<script type="text/javascript"> 
function validate() 
{ 
if(document.getElementsByName('username') == "") 
{ 
alert("Please Enter username"); 
return false; 
} 
... 
} 
</script> 
+0

這就是我原先想到的,但是不能代碼我自己,因爲我不知道JavaScript .....這不做任何事情,但生病繼續嘗試修改,直到我得到一些,謝謝隊友 – 2012-02-14 15:10:17

1

所有的代碼目前不會驗證,用戶點擊提交按鈕,它並不真正驗證他們進入有效值。理解isset並不檢查變量是否有值,只是變量存在,它會這樣做,因爲所有表單元素都將存在於後置數組中,而不管發佈什麼值。

2個提示你:

1)使用foreach循環到柱陣列的每個元素評價。您可以創建一個單獨的期望值條件數組,以在循環中進行檢查。有很多準備使用的驗證過濾器腳本,你可以直接插入來檢查你的期望值是char,int,float等等。在插入數據庫之前或詢問SQL注入攻擊之前,請始終驗證用戶輸入。

2)使用的print_r($ _ POST),如果你不明白到底是被什麼提交調試您的表單提交....

此外,我覺得它更容易把PHP在文件的頂部,留下下面的html。如果您未使用PHP值預填表單值,則不需要回顯您的html。這使得更容易編輯你的HTML ...觀察PHP標籤else語句的開始和結束:

<?php 
if(isset($_POST['submit'])) { 
    echo "Form Submitted"; 
} 

else{ ?> 


<form action="" method="post" name="signup"> 
<table border="1" width="100%"> 
<tr><td> 
<p style="text-align: right;">First Name:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="first_name" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Last Name:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="last_name" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Desired Username:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="username" type="text" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Password:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="password" type="password" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Confirm Password:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="confpassword" type="password" maxlength="25"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Date Of Birth:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<select name="dob_day"> 
<option value="000">Day</option> 
<option value="01">01</option> 
<option value="02">02</option> 
<option value="03">03</option> 
<option value="04">04</option> 
<option value="05">05</option> 
<option value="06">06</option> 
<option value="07">07</option> 
<option value="08">08</option> 
<option value="09">09</option> 
<option value="10">10</option> 
<option value="11">11</option> 
<option value="12">12</option> 
<option value="13">13</option> 
<option value="14">14</option> 
<option value="15">15</option> 
<option value="16">16</option> 
<option value="17">17</option> 
<option value="18">18</option> 
<option value="19">19</option> 
<option value="20">20</option> 
<option value="21">21</option> 
<option value="22">22</option> 
<option value="23">23</option> 
<option value="24">24</option> 
<option value="25">25</option> 
<option value="26">26</option> 
<option value="27">27</option> 
<option value="28">28</option> 
<option value="29">29</option> 
<option value="30">30</option> 
<option value="31">31</option> 
</select>&nbsp;&nbsp;&nbsp;&nbsp; 
<select name="dob_month"> 
<option value="000">Month</option> 
<option value="january">January</option> 
<option value="february">February</option> 
<option value="march">March</option> 
<option value="april">April</option> 
<option value="may">May</option> 
<option value="june">June</option> 
<option value="july">July</option> 
<option value="august">August</option> 
<option value="september">September</option> 
<option value="october">October</option> 
<option value="november">November</option> 
<option value="december">December</option> 
</select> 
&nbsp;&nbsp;Year:&nbsp;&nbsp; 
<input name="dob_year" type="text" maxlength="4" size="10" value="eg: 1964"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Email Address:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;<input name="email" type="text" maxlength="50"> 
</td></tr> 
<tr><td> 
<p style="text-align: right;">Gender:&nbsp;&nbsp;</p> 
</td><td> 
&nbsp;&nbsp;&nbsp;&nbsp;Male:&nbsp;&nbsp;<input type="radio" name="gender" value="male" />&nbsp;&nbsp;&nbsp;&nbsp; 
Female:&nbsp;&nbsp;<input type="radio" name="gender" value="female" /> 
</td></tr> 
</table><p> 
<center><input type="submit" name="submit" value="  Sign-Up  "></center> 
</font> 
<?php } ?> 
+0

好的感謝關於有趣的PHP標籤的建議,我會實現現在,我工作與平面文件數據庫,我設計自己,我知道它更復雜,並花費更長的時間寫腳本來做我所需要的,但它更安全....我的服務器不會讓任何人閱讀txt文件大聲笑沒有SQL注入的煩惱:D – 2012-02-14 14:56:35

0
<html> 
<body> 
    <form action="<?php $_PHP_SELF ?>" method="GET"> 
    Name: <input type="text" name="name" /> 
    Age: <input type="text" name="age" /> 
    <input type="submit" name="submit" value="submit"/> 
    </form> 
<?php 
if (isset($_GET['submit'])) 
    { 
     $name = $_GET['name']; 
     $age = $_GET['age']; 
     echo "Welcome ".$name."<br />" ; 
     echo "You are ".$age." years old<br/>"; 
    } 
    else 
     { 
    echo "enter the appropriate details"; 
     exit(); 
     } 
    ?> 
</body> 
</html> 
+0

簡單isset表單驗證...檢查出來。 – raja 2013-03-21 09:16:36

0
<html> 
<body> 

if 

    (isset($_GET['actie']) && $_GET['actie']== "registreren") { 
//registreerformulier 
echo "<form method='post' action='".$_SERVER['PHP_SELF']."?actie=aanmaken'> 
Voornaam <input name='voornaam' type='text' /> <br /> 
Familienaam <input name='familienaam' type='text' /> <br /> 
Wachtwoord <input name='wachtwoord' type='password' /> <br /> 
Wachtwoord-controle <input name='wachtwoordControle' type='password' /> <br /> 
<input name='submit' type='submit' value='Maak gebruiker aan' /> 

</form>"; 


</body> 
</html>