首页 > 解决方案 > 将用户重定向到执行脚本的页面后,是否需要使用 exit()?

问题描述

成功注册后,我的用户被重定向到主页使用:

echo
    "<script type=\"text/javascript\">
        window.location.href='../index.php';
    </script>";

我需要遵循这个吗

exit();

还是重定向用户就足够了?

[编辑] 帮助解决如何在同一个 php 文件中与 javascript 一起使用 die()/exit()

jQuery:

$(document).ready(function() {

    $("form").submit(function(event) {

        event.preventDefault();

        var username = $("#register-username").val();
        var email = $("#register-email").val();
        var password = $("#register-password").val();
        var confirmPassword = $("#register-confirm-password").val();
        var submit = $("#register-submit").val();

        $(".form-message").load("../shared/_registerAccount.php", {

            username: username,
            email: email,
            password: password,
            confirmPassword: confirmPassword,
            submit: submit

        });
    });
});

PHP脚本结束(成功路径):

        else
        {
            $errorEmpty = $errorUsername = $errorEmail = $errorPassword = $errorConfirmPassword = false;

            $hashedPassword = password_hash($password, PASSWORD_DEFAULT);

            mysqli_stmt_bind_param($statement, "sss", $username, $email, $hashedPassword);

            mysqli_stmt_execute($statement);

            session_start();
            $_SESSION['register-success'] = 'You have successfully registered! Please verify your email before logging in.';

            $registrationSuccessful = true;

            die('<script type="text/javascript">location.assign("../index.php")</script><a href="../index.php">Home</a>');
        }

在同一文件中遵循 PHP 脚本的 jQuery:

<script type="text/javascript">

    var registrationSuccessful = "<?php echo $registrationSuccessful; ?>";

    if (registrationSuccessful)
    {
        $("#register-username, #register-email, #register-password, 
            #register-confirm-password").val("");
    }

</script>

标签: phpjquery

解决方案


您假设JavaScript在所有用户浏览器上始终可用(或启用)。我强烈建议使用原生header PHP函数:

die(header("Location: ../index.php"));

或者,如果这不可能(无论出于何种原因),至少在JavaScript未启用的情况下为用户提供另一种方式:

die('<script type="text/javascript">location.assign("../index.php")</script><a href="../index.php">Home</a>');

推荐阅读