【问题标题】:Php redirect to page if statementPHP 重定向到页面 if 语句
【发布时间】:2015-09-14 16:08:52
【问题描述】:

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

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);
        }
    }
}

新增玩家功能

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 来解决这个问题。

【问题讨论】:

  • addgamer() 是做什么的?此外,如果您使用header() 进行重定向,则使用类似于header("Location: path.html");
  • 你确定你不是无意中从其他地方重定向的吗?删除您的重定向并添加一个打印语句以确保
  • 前几个点header() 应该看起来像这样header('Location: xxx.php);,后面应该是exit; 以在该点停止执行。
  • 请出示您的&lt;form 标签并告诉我们您向我们展示的此表格的名称。我猜你和我们一样完全糊涂了
  • 我的表单的开头是:'
    '

标签: php jquery redirect


【解决方案1】:

首先在提交表单之前进行验证会更好。 正如@Nicolas D 提到的,您还应该知道表单操作是您无论如何都指向的页面。

但是,您可以使用 action=""action="&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;" 将其设置为当前页面

最后一个可能带有漏洞,您可以使用"htmlentities($_SERVER['PHP_SELF'])" 代替。阅读此here

【讨论】:

  • 我尝试使用 'action=""' 并且似乎可以工作。
  • @Wanjia ,不要忘记重写你的header(); 应该像:header('Location: xxx.php'); 和任何HTML之前使用。
  • 因为这似乎有助于解决问题,所以我创建了一个新问题。可能是我在查看编码错误的问题,但它添加了游戏玩家,但执行 else 语句而不是重定向。
  • @Wanjia 看看我的解决方案,这不是最简单的,但它可能是你能做的最好的事情,并学习提高你的编码技能:)
  • 我会的,但是当我偶然将 "$db->query($sql) === TRUE" 改为 "$db->query($sql)" 时,这一切似乎都有效,而我却没有不知道怎么做。
【解决方案2】:

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

希望这会有所帮助,我已经完成了这一步,我记得那很痛苦

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多