php - 将用户重定向到执行脚本的页面后,是否需要使用 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>
解决方案
您假设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>');
推荐阅读
- vue.js - 如何修复“找不到模块 vue-cli-service.js”?
- vba - 将报表页脚部分与一页中的详细信息部分连接起来
- flutter - 尝试嵌入平台视图,但 PaintContext 不支持嵌入
- ansible - Ansible 'when' 条件不从数组返回结果
- python - 如何使用 python 规范化原始音频文件
- ionic-framework - Jarsigner 显示文件不存在的错误
- regex - 如何从节点参数数据框中去除变量
- javascript - Javascript自定义prng连续调用产生0
- unreal-engine4 - 如果我不延迟至少 0.5 秒,GetAllActorsWithTag 会失败吗?
- vba - 循环遍历 2 列以查找起点和终点以在另一列中插入公式