2012-02-14 77 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>