【问题标题】:URL rewriting, same URL across multiple PHP filesURL 重写,跨多个 PHP 文件的相同 URL
【发布时间】:2013-06-14 04:44:07
【问题描述】:

嘿,所以我创建了一个网站登录系统,我希望在我输入地址时显示此登录信息。当我输入详细信息并登录后,我希望被重定向到另一个 PHP 文件,但地址相同......这样,如果我已经登录并且我需要做的就是输入我的地址将转到需要登录的站点。 我已经进行了一项事务,以确定是否创建了会话,如果是,它会将我重定向到另一个页面,但也会重定向到另一个 URL。我试着用谷歌搜索它,但找不到任何准确和直接的东西。

目前:

登录页面: www.example.com

会员页面: www.example.com/members

我的愿望:

登录页面: www.example.com

会员页面: www.example.com

【问题讨论】:

    标签: php url-rewriting


    【解决方案1】:

    程序结构应如下所示。

    index.php

    if (user is logged in)
       display dashoard
    else 
       display login page
    

    由于您使用的是 PHP,请使用session functions。因此,不再需要 URL 重写。

    更新

    假设你在 PHP 中有这样的文件结构:

    - index.php
    - login.php  
    + template   
      - login.php
      - dashboard.php
    

    你可以在index.php文件中做如下结构。

    define('IN_FILE', true);
    if (isset($_SESSION['user'])) {
       require 'template/dashboard.php';
    } else {
       require 'template/login.php';
    }
    

    template/dashboard.php

    if (!defined('IN_FILE')) {
       exit;
    }
    
    // Then your HTML, PHP and whatnot
    

    login.php

    if (!isset($_SESSION['user'])) {
       require 'template/login.php';
    } else {
       header('Location: index.php');
    }
    

    根据需要更改代码。

    【讨论】:

    • 我不希望通过将所有内容放入 index.php 文件来使设计可见...这就是我希望使用 2 个文件的原因...我检查了 facebook,他们设法保留1 跨登录和登录时的 URL。我该怎么做?另外,我使用会话函数,但是当我使用 if 语句将我从 index.php 带到 members.php 时,我的 URL 会发生变化
    • 咳咳,你忘了你的开头和结尾{ } grin
    • @FrieBitz,使用requiredinclude 函数怎么样?你不必把所有东西都写出来。
    • @WindShear 我知道,我只是在开玩笑 ;-) 幽默在夜晚的这个时候很有帮助。
    • @ALL - 请记住,session_start(); 在每个文件的顶部,如果和何时使用会话。这是人们犯的最大错误。
    【解决方案2】:

    这可以通过多种方法来实现。

    a) 使用会话来确定当前页面,因此如果用户单击链接,则创建会话存储值并在页面加载时读取会话数据并相应地包含文件。

    b) 使用 URL 参数来确定页面(这是最常见的方法)。例如在 index.php 中,您可以添加更多参数,例如 index.php?page=somepage 并使用 $_GET 读取值并相应地包含 PHP 文件。

    还有更多方法可以实现您想要的,例如使用 javascript/jQuery 这是可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2020-04-08
      相关资源
      最近更新 更多