Php重定向到页面if语句


Php redirect to page if statement

我试图让你重定向到成功注册后的页面,但每当我点击注册按钮,我立即重定向,即使所有的输入是空的

if(isset($_POST["registration"])){
    if(!empty($_POST["gender"])
    and !empty($_POST["username"])
    and !strlen($_POST["username"]) < 3
    and !empty($_POST["email"])
    and !email($_POST["email"])
    and !empty($_POST["emailver"])
    and !verification($_POST["email"],$_POST["emailver"])
    and !empty($_POST["password"])
    and !strlen($_POST["password"]) < 8
    and strlen($_POST["password"]) < 25
    and checkUppercase($_POST["password"])
    and checkLowercase($_POST["password"])
    and checkNumber($_POST["password"])
    and !empty($_POST["passwordver"])
    and !verification($_POST["password"],$_POST["passwordver"])){
        if(addgamer($db,$_SESSION["gender"],$_SESSION["username"],$_SESSION["email"],$_POST["password"]) === TRUE){
            $url = 'succesfull.html';
            header($url);
        }
    }
}

addgamers的函数

function addgamer($db,$gender,$username,$email,$password){
    $sql = "INSERT INTO gamers (`gender`, `username`, `email`, `password`) VALUES('$gender','$username','$email','$password')";
    $db -> exec($sql);
    if ($db->query($sql) === TRUE) {
        $GamerId = $db -> lastInsertId();
        $_SESSION['GamerId'] = $GamerId;
        return true;
    } else {
        return false;
    }
}

我在这里找到了一些答案,但是所有的答案都是一样的,我没有办法解决这个问题。

GOTO($url);

header('location: $url');

if(addgamer($db,$_SESSION["gender"],$_SESSION["username"],$_SESSION["email"],$_SESSION["password"]) === FALSE ){
    die();
}else{
    $url = 'successful.php';
    header($url);
}

也尝试过jQuery

echo "<script>window.location = '$url'</script>";

每次点击注册提交按钮,您都会被重定向到成功的页面,但这应该不会发生,直到所有内容都正确填写,如上述代码所示。

正如你所看到的,我想先用php解决这个问题

最好在提交表单之前进行验证。正如@Nicolas D提到的,你还应该知道表单操作是你直接指向的页面。

您可以使用action=""action="<?php echo $_SERVER['PHP_SELF']; ?>"将其设置为当前页面

最后一个可能会有漏洞,你可以使用"htmlentities($_SERVER['PHP_SELF'])"代替。

您对PHP有误解。如果您的表单使用提交表单,它将自动发送到目标php页面。如果您不想发布到一个新的页面,并且仍然验证您的数据,那么您必须使用jquery中的ajax: http://api.jquery.com/jquery.post/。这样,您就可以捕获数据,而不会出现意外的重定向。在ajax调用期间,一旦php代码验证了所有表单,就可以在jquery中重定向回调函数。

希望这对你有帮助,我经历过这一步,我记得这是痛苦的