Heim >Backend-Entwicklung >PHP-Tutorial >帮我看一下,着么输都是验证码错误!

帮我看一下,着么输都是验证码错误!

WBOY
WBOYOriginal
2016-06-23 13:02:541229Durchsuche


nbsp;html>


    
    
    

    <script> <br /> function check(){ <br /> var psw1=document.getElementById("psw1"); <br /> var psw2=document.getElementById("psw2"); <br /> if(psw1.value!=psw2.value) <br /> psw2.setCustomValidity("两次密码不一致"); <br /> return false; <br /> } <br /> </script>


登录|注册

欢迎注册



    
用户名  :


        密  码  :


        确认密码:


        邮  箱  :                                      placeholder="请输入正确的邮箱格式" name="email">
        


        
  验证码  :

    

    


          
                                require('03.php');
                ?>
            

    


    
我已阅读并同意该协议
        《book》条款



    
 





002.php
if(isset($_POST['submit'])) {
    session_start();
    $checkstr = $_SESSION['yzm'];    //使用$_SESSION变量获取03.php页面上的验证码
    $str = $_POST['check'];            //用户输入的字符串
    if (strcasecmp($str, $checkstr) != 0)    //不区分大小写进行比较
        echo "<script>alert('验证码错误!');</script>";
    else {
        $conn = mysql_connect("localhost", "root", "123456");
        mysql_query("set names 'utf8'");
        mysql_select_db("book", $conn);
        $username = $_POST["username"];
        $password = $_POST["psw1"];
        $email = $_POST["email"];
        $sql = "insert into register(username,password,email) VALUES ('$username','$password','$email')";
        $result = mysql_query($sql);
        if ($result) {
            session_start();
            $_SESSION['username'] = $username;
            print("
        <script> <br /> alert('注册成功'); <br /> location.href='login.php'; <br /> </script>
                ");
        }
    }
}
else echo"非法访问";
?>



03.php
function a($type, $length ,$clear){
    $nums=range(0,9);
    $xxzm=range('a','z');
    $dxzm=range('A','Z');
    $igorne=array('0','o','1','l');
    $chars=array();
    if($type==1)
        $chars=$nums;
    if($type==2)
        $chars=array_merge($nums,$xxzm);
    if($type==3)
        $chars=array_merge($nums,$xxzm,$dxzm);
    if($clear==true)
        $chars=array_diff($chars,$igorne);
    $keys=array_rand($chars,$length);
    $code="";
    foreach($keys as $key)
        $code=$code.$chars[$key];
    return $code;
}
$yzm=a(3,5,true);
$_SESSION['yzm']=$yzm;
echo $yzm;
?>


回复讨论(解决方案)

if(psw1.value!=psw2.value)
                psw2.setCustomValidity("两次密码不一致");
            return false;
没有{ }?好久没用JS不太记得了。

js的代码是没错的,问题是出在验证码的验证上!

03.php 中没有 session_start();

虽然验证是对了,但是出来了个警告Notice:A session had already been started -ignoring session_star( ) in 002.php
这又是什么原因呢

警告是说session_start的时候session已经start了,所以第二次跳过了
也就是说一次流程执行到了两次session_start
原因就是脚本2里有两个session_start,把第二个删掉就行了

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn