首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

有关php注册页面的,没运行检查用户输入是否符合要求这一步,求大神指出哪里出错了?该怎么处理

2012-04-25 
有关php注册页面的,没运行检查用户输入是否符合要求这一步,求大神指出哪里出错了?PHP code?php//新用户注

有关php注册页面的,没运行检查用户输入是否符合要求这一步,求大神指出哪里出错了?

PHP code
<?php//新用户注册函数function register(){//两个变量的定义$str1="<p>使用者须知:</p>        <p>请仔细阅读以下条款:</p>        <p>----------------</p>        <p>----协议内容----</p>        <p>----------------</p>        <p><a href='register.php?message=agree'>同意</a>&nbsp;&nbsp;&nbsp;&nbsp;        <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='提交'>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        <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> 










[解决办法]
代码的错别字太多了,主要集中在$_POST和sql语句部分,并且代码的逻辑挺乱,将就着改了一下,你试试?
PHP code
<?phpob_start();//新用户注册函数function register(){//两个变量的定义$str1="<p>使用者须知:</p>        <p>请仔细阅读以下条款:</p>        <p>----------------</p>        <p>----协议内容----</p>        <p>----------------</p>        <p><a href='register.php?message=agree'>同意</a>&nbsp;&nbsp;&nbsp;&nbsp;        <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='提交'>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        <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

HTML code
        <p>使用者须知:</p>        <p>请仔细阅读以下条款:</p>        <p>----------------</p>        <p>----协议内容----</p>        <p>----------------</p>        <p><a href='register.php?message=agree'>同意</a>&nbsp;&nbsp;&nbsp;&nbsp;        <a href='loginscreen.php'>不同意</a></p> 

热点排行