简体   繁体   English

php表单isset验证

[英]php form isset validation

i have been trying to implement isset form validation on a signup form i am developing for my site...... 我一直在尝试为我正在为自己的网站开发的注册表单实施isset表单验证。

basically i need all fields filled in correctly or form wont $_post..... 基本上我需要正确填写所有字段,否则表单不会$ _post .....

as im posting to self (form action="") i will need my form to reload and display error messages above form if not filled correctly.... 作为即时消息发布到自己(表单action =“”),如果填写不正确,我将需要重新加载表单并在表单上方显示错误消息。...

here is my form code .... 这是我的表格代码....

<?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";
}
?>

i know this form code looks garbled, and i hate messy code, but i had to truncate it to post on here, or i would be typing 4 spaces before hundreds of code lines lol 我知道这个表单代码看起来乱码,而且我讨厌凌乱的代码,但是我必须将其截断才能在此处发布,否则我将在数百个代码行之前输入4个空格

if anyone can come up with a solution to this (would presume pretty simple but cannot figure how to code it") i will be very greatful again :D 如果有人可以提出解决方案(假定很简单,但无法弄清楚如何编写代码”),我将再次非常感激:D

thanks guys 多谢你们

:bow: STACK EXCHANGE ALL THE WAY :bow: :bow:一直进行堆栈交换:bow:

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";
}

Full example: 完整示例:

<?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";
}
?>

Form validation can be done using javascript. 表单验证可以使用javascript完成。

HTML 的HTML

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

JAVASCRIPT JAVASCRIPT

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

all your code currently does it verify someone clicked the submit button, it doesnt actually verify they entered valid values. 您的所有代码当前都在验证有人单击了提交按钮,但实际上并没有验证他们是否输入了有效值。 Understand that isset doesnt check that a variable has a value, just that the variable exists, which it will since all form elements will exist in the post array regardless of what, if any value is posted. 了解isset并不会检查变量是否具有值,而只是检查变量是否存在,因为所有表单元素都将存在于post数组中,而不管发布了什么值(无论是否发布了值)。

2 tips for you: 为您提供2条提示:

1) use a foreach loop to evaluate each element of the post array. 1)使用foreach循环来评估post数组的每个元素。 You can create a seperate array of expected value conditions to check against in the loop. 您可以创建一个单独的期望值条件数组,以在循环中进行检查。 There are plenty of ready to use validation filter scripts out there you can just plug in to check that your expected value is char, int, float etc. PLEASE always validate your user input before inserting into your database or your asking for SQL injection attack. 有很多现成可用的验证过滤器脚本,您可以插入它们以检查您的期望值是char,int,float等。请始终在插入数据库或要求进行SQL注入攻击之前验证用户输入。

2) use print_r($_POST) to debug your form submissions if you dont understand what exactly is being submitted.... 2)如果您不了解确切提交的内容,请使用print_r($ _ POST)调试表单提交。

also I find its easier to put the PHP at the top of the file and leave the html below. 我还发现将PHP放在文件顶部并在下面保留html更加容易。 If you arent using PHP values to prefill out form values, there is no need to echo your html. 如果您没有使用PHP值来预填表单值,则无需回显html。 This makes it much easier to edit your html... observe the php tags in the start and end of the else statement: 这使得编辑html变得更加容易...在else语句的开始和结束处观察php标签:

<?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 } ?>
<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>
<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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM