簡體   English   中英

php表單isset驗證

[英]php form isset validation

我一直在嘗試為我正在為自己的網站開發的注冊表單實施isset表單驗證。

基本上我需要正確填寫所有字段,否則表單不會$ _post .....

作為即時消息發布到自己(表單action =“”),如果填寫不正確,我將需要重新加載表單並在表單上方顯示錯誤消息。...

這是我的表格代碼....

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

多謝你們

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

完整示例:

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

表單驗證可以使用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>

您的所有代碼當前都在驗證有人單擊了提交按鈕,但實際上並沒有驗證他們是否輸入了有效值。 了解isset並不會檢查變量是否具有值,而只是檢查變量是否存在,因為所有表單元素都將存在於post數組中,而不管發布了什么值(無論是否發布了值)。

為您提供2條提示:

1)使用foreach循環來評估post數組的每個元素。 您可以創建一個單獨的期望值條件數組,以在循環中進行檢查。 有很多現成可用的驗證過濾器腳本,您可以插入它們以檢查您的期望值是char,int,float等。請始終在插入數據庫或要求進行SQL注入攻擊之前驗證用戶輸入。

2)如果您不了解確切提交的內容,請使用print_r($ _ POST)調試表單提交。

我還發現將PHP放在文件頂部並在下面保留html更加容易。 如果您沒有使用PHP值來預填表單值,則無需回顯html。 這使得編輯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