php - 如何重定向到登录页面然后重定向回php中的上一页
问题描述
我知道对此有很多问题,但是当我希望登录始终重定向到主页时,我找不到答案,除非当用户单击“提交”页面时它应该登录然后允许用户添加一条建议。单击“提交”页面后,我设法重定向到登录页面,但之后,它重定向到主页,我陷入了循环。(索引是我的主页)。(建议是我想强制登录的地方)。这是我到目前为止所做的:在我的Suggest.php的顶部:
<?php
if(!isset($_SESSION['user_id']))
{
$_SESSION["login_redirect"] = $_SERVER["PHP_SELF"];
header("Location: login2.php");
exit;
}
?>
登录-form.php:
<?php
if(isset($_POST['loginbutton'])){
require 'dbh.inc.php';
$UsernameEmail = $_POST['username/email'];
$password = $_POST['password'];
if (empty($UsernameEmail)||empty($password)){
header("location: ../Index.php?error=emptyfields&username");
exit();
}else {
$sql = "SELECT * FROM users WHERE username=? OR email =? ;" ;
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt,$sql)){
header("location: ../Index.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt , "ss", $UsernameEmail,$UsernameEmail );
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if($row = mysqli_fetch_assoc($result)){
$pwdCheck = password_verify($password , $row['password']);
if($pwdCheck == false ){
header("location: ../Index.php?error=wrongPassword");
exit();
} else if ($pwdCheck == true ){
session_start();
$_SESSION['user_id']= $row['id'];
$_SESSION['user_name']= $row['username'];
} else {
header("location: ../Index.php?error=wrongPassword");
exit();
}
}
else {
header("location: ../Index.php?nouser/emailmatch");
exit();
}
}
}
}
else {
header("Location: ../Index.php?succses");
exit();
}
我也在 SUGGEST.php 中尝试过这段代码
<?php
if(!isset($_SESSION['user_id']))
{
header('Location: login2.php?redirect=SUGGEST.php');
exit;
}
?>
而这个在 login-form.php 中,但这也不起作用
if (isset($_GET['redirect'])) {
header('Location: ' . $_GET['redirect']);
}
那是我第一次用 php 编码,所以我真的很想得到一个详细的答案。谢谢
解决方案
您应该session_start();
在每页的第一行使用,实际上在此之前没有任何空格或换行符!
推荐阅读
- python - 如何将数据库作为加密文件存储在自定义目录中?
- javascript - Javascript - 使用给定的键数组获取对象字段
- python - 如何扩展默认 seaborn 调色板或为 20 条堆叠条形图创建自定义调色板?
- javascript - Scalable React Apps
- nuget - 打包 Blazor Webassembly 客户端不包括 _framework 文件夹
- amazon-web-services - 将运行私有子网的集群公开给面向 Internet 的负载均衡器
- swift - 如果双击否则如何单击 UITapGestureRecognizer
- javascript - 如何在对象数组中查找属性值,每个对象数组都是来自 API 响应的对象数组
- javascript - 如何用缩进抛出异常?
- c - 打印由 calloc 分配的内存值未初始化为零