我正在撰写联系表格。现在我遇到问题,当用户想要重新输入它不起作用的密码时。我知道这可能是一些小事,但我还没弄清楚。这是我的代码:
<?php
function showForm($strMessage){
echo "<h1>".$strMessage."</h1>";
echo " <p>Note: fields marked with '*' are required</p>\n";
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n";
echo "<table width=\"45%\" class=\"formtable\" cellpadding=\"3\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td><span id=\"rfvname\">* Name:</span></td>\n";
echo " <td><input type=\"text\" name=\"name\" value=\"".$_POST['name']."\" /></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><span id=\"rfvemail\">* E-mail:</span></td>\n";
echo " <td><input type=\"text\" name=\"email\" value=\"".$_POST['emial']."\" /></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><span id=\"rfvusername\">* Username:</span></td>\n";
echo " <td><input type=\"text\" name=\"username\" value=\"".$_POST['username']."\" /></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><span id=\"rfvpword\">* Password:</span></td>\n";
echo " <td><input type=\"password\" name=\"pword\" value=\"".$_POST['pword']."\" /><br /><span style=\"font-size:9px;\"><em>(at least 4 chars) </em></span></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><span id=\"rfvpword\">* Re-enter Password:</span></td>\n";
echo " <td><input type=\"text\" name=\"pword\" value=\"".$_POST['pword']."\" /></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td> </td>\n";
echo " <td><input type=\"submit\" value=\"Submit\" class=\"btnSubmit\" id=\"btnSubmit\" name=\"submit\" /></td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "</form>\n";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Contact Form</title>
<style type="text/css">
body{
background-color:#FFBD40;
color:#000000;
font-size:100%;
font-family:Georgia,Verdana,"Times New Roman",sans-serif;
}
#container{
background:#FFF573;
width:800px;
margin:auto;
padding:5px 10px 5px 10px;
border:6px double #000000;
}
</style>
</head>
<body>
<div id="container">
<?php
if (isset($_POST['submit'])){
if (trim($_POST['name'])==""){
$strMessage="Please enter your name!";
showForm($strMessage);
}
elseif (strlen(trim($_POST['pword']))<=3){
$strMessage="Your password must be at least 4 characters long!";
showForm($strMessage);
}
else{
$strMessage="Thank you, your information has been submitted. Below is the information you sent:";
$strMessageBody.="Name: ".trim(stripslashes($_POST['name']))."<br />";
$strMessageBody.="E-mail: ".trim(stripslashes($_POST['email']))."<br />";
$strMessageBody.="UserName: ".trim(stripslashes($_POST['username']))."<br />";
$strMessageBody.="Password: ".trim(stripslashes($_POST['pword']))."<br />";
echo "<h1>".$strMessage."</h1>";
echo $strMessageBody;
}
}
else{
$strMessage= "Please fill out the form below to send your information:";
showForm($strMessage);
}
?>
</div>
</body>
</html>
答案 0 :(得分:3)
如果您为了比较而请求2个密码,则应该给它们不同的名称;否则第二个输入将覆盖第一个输入而你只获得1个值。
以下是验证密码的方法:
if (trim($_POST['name'])==""){
$strMessage="Please enter your name!";
showForm($strMessage);
}
/* START ADD */
elseif ($_POST['pword1'] != $_POST['pword2']) {
$_POST['pword1'] = NULL; // Reset the values of pword1 so it is not in the form
$_POST['pword2'] = NULL; // Reset the values of pword2 so it is not in the form
$strMessage="Passwords do not match!";
showForm($strMessage);
}
/* END ADD */
elseif (strlen(trim($_POST['pword']))<=3){
$strMessage="Your password must be at least 4 characters long!";
showForm($strMessage);
}
else ...
答案 1 :(得分:1)
您可以将“重新输入密码”字段设为其他名称,例如
echo " <td><span id=\"rfvpword\">* Re-enter Password:</span></td>\n";
echo " <td><input type=\"text\" name=\"repword\" value=\"".$_POST['repword']."\" /></td>\n";
然后在验证部分再添加一个elseif来检查它是否与密码匹配
elseif ($_POST['repword'] != $_POST['pword']){
$strMessage="Re-type password must be same as password!";
showForm($strMessage);
}
没有测试过代码,只是一个粗略的想法,希望它可以帮助你