有关php注册页面的,没运行检查用户输入是否符合要求这一步,求大神指出哪里出错了?
<?php//新用户注册函数function register(){//两个变量的定义$str1="<p>使用者须知:</p> <p>请仔细阅读以下条款:</p> <p>----------------</p> <p>----协议内容----</p> <p>----------------</p> <p><a href='register.php?message=agree'>同意</a> <a href='loginscreen.php'>不同意</a></p>";$str2="<form method='post' action='register.php'> <table width='95%' border='1' cellspacing='0' cellpadding='0' bordercolorlight='#00FFFF' bordercolordark='#0000CC'> <tr bgcolor='#99ccff'> <td><font size='2'>请填写如下信息,这是必须填写的.</font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>用户名只能由二十个英文字母(区分大小写)和数字以及下划线组成,最长二十个字符.</font></td> </tr> <tr> <td><font size='2'>请输入你的用户名: <input type='text' name='usename' size='12' maxlength='20'> </font></td> </tr> <tr> <td><font size='2'>请输入你的密码(最大长度为10): <input type='password' name='passwd' size='12' maxlength='10'> </font></td> </tr> <tr> <td><font size='2'>请重复输入你的密码: <input type='password' name='repasswd' size='12' maxlength='10'> </font></td> <tr bgcolor='#99ccff'> <td><font size='2'>密码提示问题是用于当你忘掉密码的时的提示,你应该牢记密码提示信息! </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>密码提示问题: <input type='text' name='passdp' size='30' maxleng> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>当你输入正确的密码提示问题时,将会给出该答案,帮助你找回忘记的密码. </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>密码提示答案: <input type='text' name='passda' size='30'> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>请输入你的Email: <input type='text' name='email' size='30'> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>请输入您的电话号码: <input type='text' name='tel' size='12'> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>请输入您的详细住址: <input type='text' name='addr' size='30'> </font></td> </tr> <tr> <td> <input type='hidden' name='message' value='reg'> </td> </tr> <tr> <td> <p> <input type='submit' name='submit' value='提交'> <input type='reset' name='submit2' value='清空'> </p> </td> </tr> </form>"; //根据message的值决定下一步如何处理 $msg=$_GET["message"]; if(!isset($msg)) $msg=$_POST["message"]; if($msg=='new'){ echo $str1; exit(); }elseif($msg=='agree'){ echo $str2; exit(); }elseif($msg=='reg'){ //检查用户的输入是否符合要求 $username=$_POST["username"]; $password=$_POST["passwd"]; $repasswd=$_POST["repasswd"]; $passwda=$_POST["passwdpa"]; $passwdq=$_POST["passwdq"]; if($username==""||$password=""||$repasswd=""||$passwdq=""||$passwda=""){ echo "必填项不能为空!"; } if($password!=$repasswd){ echo "前后填的密码不一致!"; } //检查数据库中是否有同名的用户存在 $conn=@mysql_connect("localhost","root","") or die("failed to connect to database"); mysql_select_db("project",$conn); $sql="SELECT username FROM member WHERE usename='$username'"; $result=mysql_query($sql); if(mysql_fetch_object($result)){ mysql_close($conn); echo "用户名已经存在!"; } //用户数据插入数据库 $sql='INSERT INTO member (username,password,userpassq,userpassa,email,telephone,address) VALUES ('.$_POST['username'].','.$_POST['passwd'].','.$_POST['passdp'].','.$_POST['passda'].','.$_POST['email'].','.$_POST['tel'].','.$_POST['addr'].')'; if(mysql_query($sql)){ $sql2="SELECT id FROM Member WHERE username='$username'"; $result=mysql_query($sql2); $res=mysql_fetch_object($result); $id=$res->id; session_register($memberid); $reuturnpage="Location:loginscreen.php?username='$username'"; mysql_close($conn); header($returnpage); }else{ mysql_close($conn); header("Location:register.php?message=".urlencode("注册失败!请重试")); exit; } }else{ $msg=$_GET["message"]; echo $msg; exit(); } } //页面部分?><html> <head><title>用户注册页面</title></head><body><?php register(); ?></body></html>
<?phpob_start();//新用户注册函数function register(){//两个变量的定义$str1="<p>使用者须知:</p> <p>请仔细阅读以下条款:</p> <p>----------------</p> <p>----协议内容----</p> <p>----------------</p> <p><a href='register.php?message=agree'>同意</a> <a href='loginscreen.php'>不同意</a></p>";$str2="<form method='post' action='register.php'> <table width='95%' border='1' cellspacing='0' cellpadding='0' bordercolorlight='#00FFFF' bordercolordark='#0000CC'> <tr bgcolor='#99ccff'> <td><font size='2'>请填写如下信息,这是必须填写的.</font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>用户名只能由二十个英文字母(区分大小写)和数字以及下划线组成,最长二十个字符.</font></td> </tr> <tr> <td><font size='2'>请输入你的用户名: <input type='text' name='usename' size='12' maxlength='20'> </font></td> </tr> <tr> <td><font size='2'>请输入你的密码(最大长度为10): <input type='password' name='passwd' size='12' maxlength='10'> </font></td> </tr> <tr> <td><font size='2'>请重复输入你的密码: <input type='password' name='repasswd' size='12' maxlength='10'> </font></td> <tr bgcolor='#99ccff'> <td><font size='2'>密码提示问题是用于当你忘掉密码的时的提示,你应该牢记密码提示信息! </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>密码提示问题: <input type='text' name='passdp' size='30' maxleng> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>当你输入正确的密码提示问题时,将会给出该答案,帮助你找回忘记的密码. </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>密码提示答案: <input type='text' name='passda' size='30'> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>请输入你的Email: <input type='text' name='email' size='30'> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>请输入您的电话号码: <input type='text' name='tel' size='12'> </font></td> </tr> <tr bgcolor='#99ccff'> <td><font size='2'>请输入您的详细住址: <input type='text' name='addr' size='30'> </font></td> </tr> <tr> <td> <input type='hidden' name='message' value='reg'> </td> </tr> <tr> <td> <p> <input type='submit' name='submit' value='提交'> <input type='reset' name='submit2' value='清空'> </p> </td> </tr> </form>"; //根据message的值决定下一步如何处理 $msg=$_GET["message"]; if(!isset($msg)) $msg=$_POST["message"]; if($msg=='new'){ echo $str1; exit(); }elseif($msg=='agree'){ echo $str2; exit(); }elseif($msg=='reg'){ //检查用户的输入是否符合要求 $username=$_POST["usename"]; $password=$_POST["passwd"]; $repasswd=$_POST["repasswd"]; $passwda=$_POST["passda"]; $passwdq=$_POST["passdp"]; if($username==""||$password==""||$repasswd==""||$passwdq==""||$passwda==""){ $message="必填项不能为空!"; }else{ if($password!=$repasswd){ $message="前后填的密码不一致!"; } } //检查数据库中是否有同名的用户存在 $conn=@mysql_connect("localhost","root","") or die("failed to connect to database"); mysql_select_db("project",$conn); $sql="SELECT username FROM member WHERE username='$username'"; $result=mysql_query($sql); if($result!=false&&mysql_fetch_array($result)){ $message="用户名已经存在!"; }else{ //用户数据插入数据库 $sql="INSERT INTO member (username,password,userpassq,userpassa,email,telephone,address) VALUES ('".$username."','".$password."','".$passwdq."','".$passwda."','".$_POST['email']."','".$_POST['tel']."','".$_POST['addr']."')"; if(mysql_query($sql)){ $sql2="SELECT id FROM Member WHERE username='$username'"; $result=mysql_query($sql2); $res=mysql_fetch_object($result); $id=$res->id; header("Location:/reg/loginscreen.php?username=$username"); ob_end_flush(); }else{ header("Location:/reg/register.php?message=".urlencode("注册失败!请重试")); ob_end_flush(); } } mysql_close($conn); exit( $message); }else{ $msg=$_GET["message"]; exit( $msg); } } //页面部分?><html> <head><title>用户注册页面</title></head><body><?php register(); ?></body></html>
[解决办法]
页面没有接收到表单数据,然后导致SQL语句出错。
你这样写代码效率太低了点了吧。填写注册信息的HTML页面和处理注册数据的php页面分开,一个供用户填写和发送表单,一个专门处理表单。很简单的事让你弄的太复杂了
有以下三个页面:
1. doyouagree.html 。用户点提交后转向 register.php?message=agree
<p>使用者须知:</p> <p>请仔细阅读以下条款:</p> <p>----------------</p> <p>----协议内容----</p> <p>----------------</p> <p><a href='register.php?message=agree'>同意</a> <a href='loginscreen.php'>不同意</a></p>