<?
session_start();
$arr=$_POST;
sizeof($arr)<=0 ? header("location:reguserfrom.php"):$a=1;
foreach($arr as $name=>$key){
$arr[$name]=trim($key);
$arr[$name]=htmlspecialchars($arr[$name]);
$arr[$name]=addslashes($arr[$name]);
if( !isset($arr[$name]) ){
echo "<script>alert(\"请认真填写注册信息\");history.go();</script>'";
exit;
 }
}
include_once("conn.php");
$rs=@mysql_query("select dafuuser from user where dafuuser='".$arr["user"]."'") or die("系统出忙");
   if(mysql_num_rows($rs)>0){
   echo "<script>alert(\"用户名已经被占用\");history.go(-1);</script>";
   exit;
    }
$user=substr($arr["user"],0,20);
$pass=substr($arr["pass"],0,15);
$repass=substr($arr["repass"],0,15);
$mail=substr($arr["mail"],0,30);
$qq  =substr($arr["qq"],0,9);
$xb  =substr($arr["xb"],0,1);
$pic ="./pic/".$arr["pic"];
$pic =substr($pic,0,100);
$chk =substr($arr["chk"],0,6);
if ($pass!=$repass){
echo "<script>alert(\"两次输入的密码不一样\");history.go(-1);</script>'";
exit;
}
if(!ereg("^[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[a-zA-Z]+",$mail)){
echo "<script>alert(\"电子邮件格试不对,请正确填写\");history.go(-1);</script>'";
exit;
}
if($chk!=$_SESSION["number"]){
echo "<script>alert(\"验证码不一样\");history.go(-1);</script>'";
exit;
}
$time1=time();
$rs=@mysql_query("insert into user(dafuuser,pass,chk,picurl,zcdate,qq,mai,xb)values('$user','$pass',0,'$pic',$time1,'$qq','$mail','$xb')") or die("系统有点忙,可能是在线人数的原因吧!");

if($rs){
//header("location:infuser.php");
echo "你好:".$user."<br><br>";
echo "<center>你好已经注册成功,系统5秒钟生返回首页<br><br/>";
echo "注册信息已经发送到您的邮箱</center>";
echo "<meta http-equiv=\"refresh\" content=\"5;URL=index.php\">"; }   
unset($rs);
mysql_close($link);
?>

解决方案 »

  1.   

    不高的分1/ substr好多2/ 代码混乱
      

  2.   


    $arr=$_POST;
    sizeof($arr) <=0 ? header("location:reguserfrom.php"):$a=1;
    foreach($arr as $name=>$key){
    $arr[$name]=trim($key);
    $arr[$name]=htmlspecialchars($arr[$name]);
    $arr[$name]=addslashes($arr[$name]);
    if( !isset($arr[$name]) ){
    echo " <script>alert(\"请认真填写注册信息\");history.go(); </script>'";
    exit;
    }

    自己思考一下这段有什么问题吧 = =||
    下面的等你想好这段再说
      

  3.   


    第二行的 $a=1 这个是为了语法的耍要,随便加的。trim //我是想去两边的空格
    htmlspecialchars //我是想转《 》 “
    addslashes //我是想转‘
    难到是这三个函数的用法有问题。
    echo " <script>alert(\"请认真填写注册信息\");history.go(); </script>'";
    多一个’ISSET 我的理解是检查一个变量是不是已经负值。
      

  4.   

    第二行的   $a=1   这个是为了语法的耍要,随便加的。 trim   //我是想去两边的空格 
    htmlspecialchars   //我是想转《   》   “ 
    addslashes   //我是想转‘ 
    难到是这三个函数的用法有问题。 
    echo   "   <script> alert(\ "请认真填写注册信息\ ");history.go();   </script>  ' "; 
    多一个’ ISSET   我的理解是检查一个变量是不是已经负值。 
      

  5.   

    下面是照着你的思路做的,没试过,不过效果应该相同
    if (empty($_POST)) {
    header("location:reguserfrom.php");
    exit;
    }
    foreach ($_POST as $name=>$value) {
    $arr[$name] = addslashes(htmlspecialchars(trim($value)));
    if (empty($arr[$name])) {
    die("<script>alert(\"请认真填写注册信息\");history.go();</script>");
    }
    }请认真填写注册信息,这句照你那个写法根本没机会出现
    给50分是因为,这段程式基本上能够工作
    但在结构及效能上还有很多地方可以调整
      

  6.   

    最好是显示和逻辑分开~~看看MVC模式会对你有帮助
      

  7.   

    谢谢 yctin我错在对isset 和empty的理解上.
    isset应是看一个变量是不是已经被负值 应也算"";
    empyt应是看一个变量里有没有值,如果是一个""返回为1 ,如果是" "则反回为0, 空格也表示一个值.