如何重定向(标头位置)到 html 文件?

2024-05-13

所以我正在 php 中运行一个注册/登录系统,包括 MySQL。

出于测试目的,成功登录后,我将用户重定向到 index.php,该文件声明用户已登录,并为他提供注销选项。

同时,我制作了一个计划使用的实际 html 页面,因此我只是添加了 index.html,而不是我的 login.php 文件中的 header('location: index.php')。

除非,这种情况发生了。

未找到

在此服务器上找不到请求的 URL /registration/index.html。

知道为什么会发生这种情况吗?我确保我需要的所有文件都在文件夹本身中,index.php 与index.html 共享相同的位置。

我错过了一些明显的事情吗?

// LOGIN USER
if (isset($_POST['login_user'])) {
    $username = mysqli_real_escape_string($db, $_POST['username']);
    $password = mysqli_real_escape_string($db, $_POST['password']);

    if (empty($username)) {
        array_push($errors, "Username is required");
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
    }

    if (count($errors) == 0) {
        $password = md5($password);
        $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
        $results = mysqli_query($db, $query);

        if (mysqli_num_rows($results) == 1) {
            $_SESSION['username'] = $username;
            $_SESSION['success'] = "You are now logged in";
            header('location: index.html');
        }else {
            array_push($errors, "Wrong username/password combination");
        }
    }
}

总的来说,您遇到的问题比重定向问题更重要。如果您创建一个包含在每个基本页面顶部的配置文件,那么您将会有所帮助。另外,使用一些函数将使您的脚本保持可读性,我添加了一些示例。不要使用md5()对于密码,它已经是“想通了”,可以这么说,因此很容易被破解。你想使用password_hash() and password_verify()如果您的 PHP 版本中没有这些(如果可能的话,您应该升级到具有该功能的版本)然后使用 bcrypt 兼容库。另外,在 sql 中使用参数化值,mysqli_real_escape_string()还不够好。最后,我会切换到 mysqli 的 OOP 版本,在我看来,它更容易使用。

/config.php

<?php
# Create a constant for your domain, this makes redirect super easy!
define('BASE_URL', 'http://www.example.com');
# Create a constant for your root folder (this config should be in the root)
define('ROOT_DIR', __DIR__);
# Create a function dir
define('FUNCTIONS', ROOT_DIR.'/functions');
# Add session to this page
session_start();
# Add our session var creator
include_once(FUNCTIONS.'/setSession.php');
# Add our get session function (use to retrieve session values)
include_once(FUNCTIONS.'/getSession.php');
# Add our message creator (set all messages via this)
include_once(FUNCTIONS.'/setMessage.php');
# Include our redirect function
include_once(FUNCTIONS.'/redirect.php');

/函数/validate.php

<?php
function validate($username, $password, $con, &$errors)
{
    # Prepare the statement
    $query = $con->prepare("SELECT * FROM users WHERE username = ?");
    # Bind the parameter
    $query->bind_param('s', $username);
    # Execute the query
    $query->execute();
    # Fetch the row
    $result = $query->fetch_assoc();
    # Stop if there is no username matching
    if(empty($result['password'])) {
        $errors[] = "Invalid Username or Password.";
        return false;
    }
    # See if the password matches
    return (password_verify($password, $result['password']))? $result : false;
}

/functions/redirect.php

<?php
function redirect($path)
{
    header("Location: {$path}");
    exit;
}

/functions/setSession.php

<?php
function setSession($key, $value, $multi = false)
{
    if($multi)
        $_SESSION[$key][] = $value;
    else
        $_SESSION[$key] = $value;
}

/functions/getSession.php

<?php
function getSession($key = false, $clear = false)
{
    if(!empty($key)) {
        $value = (isset($_SESSION[$key]))? $_SESSION[$key] : false;
        if(isset($_SESSION[$key]) && $clear) {
            unset($_SESSION[$key]);
        }
        return value;
    }

    return $_SESSION;
}

/functions/setMessage.php

<?php
# It's easier to store in the same key all the time, then you can save multiple
# and retrieve them all at one time with implode()
function setMessage($msg, $key = 'general')
{
    setSession($key, $msg, true);
}

/functions/getMessage.php

<?php
function getMessage($key = 'general', $clear = true)
{
    return getSession($key, $clear);
}

/登录.php

<?php
# add the config
include_once(__DIR__.'/config.php');
# Preset the errors array
$errors = [];
# Check for login
if (isset($_POST['login_user'])) {
    # Set all variables to match keys
    $username = (isset($_POST['username']))? trim($_POST['username']) : false;
    $password = (isset($_POST['password']))? trim($_POST['password']) : false;
    # See if empty
    if (empty($username)) {
        array_push($errors, "Username is required");
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
    }

    if (count($errors) == 0) {
        # Add the validate function
        include_once(FUNCTIONS.'/validate.php');
        # Remember, we want to use the OOP version of $db
        $results = validate($username, $password, $db, $errors);
        # If the user array is set
        if (!empty($results)) {
            # May as well store all the user data
            setSession('user', $results);
            # Store username (or use the one in the user array instead)
            setSession('username', $username);
            # Save the success message
            setMessage('You are now logged in', 'success');
            # Put in full domain using our constant
            redirect(BASE_URL.'/index.html');
        }else {
            array_push($errors, "Wrong username/password combination");
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重定向(标头位置)到 html 文件? 的相关文章

  • 展平数组:保持索引、值等于数组中的位置

    我在尝试以特定方式展平数组时遇到了一些麻烦 这里有一个print r我想要展平的数组的视图 Array 1 gt Array 8 gt 1 9 gt 2 10 gt Array 15 gt Array 22 gt 1
  • 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

    大家好 请帮帮我 我正在尝试在运行 Nginx 和 Fact CGI 的 Centos 服务器上设置 cakephp 环境 我已经在服务器上运行了一个 WordPress 站点和一个 phpmyadmin 站点 因此我已经正确配置了 PHP
  • PHP 异常处理与 C#

    这是一个非常基本的问题 我希望如此 我所做的大部分异常处理都是使用 C 进行的 在 C 中 任何在 try catch 块中出错的代码都会由 catch 代码处理 例如 try int divByZero 45 0 catch Except
  • 用 PHP 截断文件末尾

    我有一个日志文件 我想在 PHP 读取该文件后将其截断 我的代码目前如下所示 fp fopen file r ftruncate fp 125000 fclose fp 但是 这会通过保留first1MB 不过 我想保留last1Mb 的文
  • CakePHP Auth 组件使用 $this->Auth->login() 时未登录;

    我是 cakePHP 的新手 我已经阅读了他们的文档 并且正在遵循他们的简单身份验证示例 我还广泛搜索 包括本网站上的答案 来寻找我的问题的答案 我正在使用 cakePHP 2 0 我的 UsersController 的登录功能如下所示
  • 在 CodeIgniter 中添加新页面

    对于我对 CodeIgniter 和 MVC 系统的无知 我提前表示歉意 我正在帮助一位家庭成员处理他们的商业网站 到目前为止 我已经能够仅通过逻辑来完成大部分所需的更改 但现在我已经走进了死胡同 我不打算继续支持他们 因为我显然不是 Co
  • 在php中获取大于2GB的文件大小的最佳方法?

    我想检查本地驱动器上的文件大小windows OS 但是PHP原生函数filesize 仅当文件大小小于时才有效2GB 大于的文件2GB将返回错误的数字 那么 是否有其他方法来获取大于的文件大小2GB 非常感谢 您始终可以使用系统的文件大小
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • 计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么?

    计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么 用这个 echo substr count abca a will echo 2
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • Apache 子进程已退出,状态为 255

    经过大量的搜索 尝试 修复 等待和哭泣 在我放弃之前 我想为这个错误抓住最后的机会 我们正在奔跑Microsoft Windows Server 2012 Apache 2 4 6 Win64 OpenSSL 1 0 1e PHP 5 5
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 通过 post 使用 php 发送 XML

    我知道有很多类似的问题 但我尝试过摆弄所有的解决方案 但似乎无法使其发挥作用 我正在尝试将 xml 直接发布到 Web 服务并获得响应 从技术上讲 我正在尝试连接到freightquote com 您可以在右上角找到该文档this http
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • 细胞的 fpdf 对齐

    我正在尝试使用生成 PDFfpdf我有一个小问题 我需要有 2 个单元格 如下所示 Address Line 1 Version Address Line 2 1 0 City 06 05 2011 我尝试过使用MultiCell 但没有运
  • 如何从另一个数组值中过滤数组值并返回新数组? [复制]

    这个问题在这里已经有答案了 我有两个数组 all languages and taken languages 第一个包含所有语言 例如 200 种或其他语言 第二个包含之前选择的语言 从 0 到 200 种 我需要删除所有已采用的语言 ta
  • Yii 未检测到骆驼案例操作

    伊伊正在给我404 Error如果我声明这样的操作 站点控制器 php public function actionRegisterUser 这就是我在main php label gt Register User url gt site
  • 使用 Xpath 进行部分匹配

    我正在尝试创建一个搜索功能 允许使用 Xpath 按歌曲标题或流派进行部分匹配 这是我的 XML 文件
  • PHP date() 和 strtotime() 返回错误的月份 31 日

    我在用着date and strtotime 函数在下拉列表中显示接下来的 3 个月 PHP代码 echo date m Y strtotime 0 months echo date m Y strtotime 1 months echo
  • 我如何向 Windows Server IIS 7 中的文件夹授予权限

    我是 PHP 和 Windows Server 新手 在查看我在 PHP 中创建的表单时遇到以下错误 Error in exception handler The stream or file C inetpub wwwroot wrp a

随机推荐