gpt4 book ai didi

PHP 重定向在 Chrome 中有效,但在其他浏览器中无效

转载 作者:搜寻专家 更新时间:2023-10-31 21:50:42 25 4
gpt4 key购买 nike

所以我试图通过一本书的帮助来学习 MVC。 我仍处于非常基础的水平,所以如果您愿意回答,请记住这一点。

这是我的应用程序布局的一部分:

enter image description here

现在我有一个简单的登录表单

<form method="post" action="index.php">
<input type="text" name="action" value="login" style="display: none">
<label for="email">Email</label>
<input type="email" required="required" name="email" id="email" placeholder="Enter Your Email" />
<br />
<label for="password">Password</label>
<input type="password" required="required" name="password" id="password" placeholder="Enter Your Password" />
<button type="submit" name="submit">Login</button>
</form>

请注意第一个字段 name="action"value="login",因为重定向取决于该特定字段。

型号

users_db.php

function login($email, $pword)
{
$sql = "SELECT * FROM users WHERE email = :email AND pword = :pword ";
$stmnt = $db->prepare($sql);
$stmnt->bindValue(':email', $email);
$stmnt->bindValue(':pword', $pword);
$stmnt->execute();
if ($stmnt->rowCount() > 0) {
return $stmnt->fetchAll();
} else {
return null;
}
}

目录 - 用户

index.php 服务器作为 Controller 。以下是“ Controller ”的部分摘录,也是问题发生的地方。

require_once('../config/db.php');
require_once('../model/users_db.php');
if(isset($_POST['action'])) {
$action = $_POST['action'];
if ($action == 'login') {
$email = htmlspecialchars($_POST['email']);
$pword = htmlspecialchars($_POST['password']);
$users = login($email, $pword);
if (is_array($users)) {
foreach ($users as $user) {
session_start();
$_SESSION['firstname'] = $user['firstname'];
$_SESSION['lastname'] = $user['lastname'];
$_SESSION['username'] = $user['username'];
$_SESSION['email'] = $user['email'];
$_SESSION['userType'] = $user['userType'];
$_SESSION['userID'] = $user['userID'];
header('Location:welcome.php');
die();
}

应用流程/步骤

  1. 用户在表单中输入电子邮件和密码。
  2. 表单信息被传递到 index.php,“ Controller ”包括电子邮件、密码。和隐藏的输入字段值
  3. 在 index.php 文件中, Controller 检查隐藏的输入字段 action 值是否设置为登录。
  4. 如果设置了登录,它会从 users_db 模型调用登录函数,该函数查询数据库并返回所有用户信息。
  5. 假设输入了正确的电子邮件和密码,index.php 会将用户重定向到欢迎页面并exit()

以下内容在 Chrome 中完美运行,但所有其他浏览器都会重定向到 404 错误 index.php not found。这对我来说很奇怪,如果有人能提供一些关于为什么会出现上述错误的意见,我将不胜感激?

最佳答案

试试这个

error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);


flush();
header("Location: http://www.website.com/");
echo '<script>window.location.replace("http://www.example.com")</script>';
die('should have redirected by now');

PHP 重定向使用 header 代码告诉浏览器重定向。但是,如果您的 PHP 代码在该 header 位置之前回显(甚至是警告),则某些浏览器不会重定向。

在上面的代码中,它刷新所有内容并发送 header 位置。它还会告诉浏览器使用 javascript 进行重定向,因此即使 php header 重定向不起作用,它也会起作用。

希望对你有帮助

关于PHP 重定向在 Chrome 中有效,但在其他浏览器中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com