PHP如何将页面重定向到不同的PHP文件? [复制]

Posted

技术标签:

【中文标题】PHP如何将页面重定向到不同的PHP文件? [复制]【英文标题】:PHP how to redirect the page to a different PHP file? [duplicate] 【发布时间】:2017-02-25 02:18:04 【问题描述】:

我在寻找答案时找不到太多帮助,这就是这里提出问题的原因。

基本上我有这段代码:

<a href="manage/10000' . $user["user_id"] . ' " class="user_grop">More Info</span></a>

现在怎么可能得到我正在传递的东西?

我是否制作了一个名为 manage.php 的 php 文件?如果是这样,是什么让它看起来像 manage.php ?然后通过 $_GET 获取它,但这怎么可能?

我不知道该怎么做,所以我很感激你的任何建议。

谢谢

【问题讨论】:

如果代码不是你的并且不使用框架,请查看项目基础目录中的.htaccess 文件。应该有一个包含该链接的重写。类似RewriteRule ^manage/([0-9]+)$ /manage.php?user=$1 【参考方案1】:

您的问题有两种可能的解决方案:

    通过创建manage.php 文件并将查询字符串传递给它。

您的链接代码将如下所示:

<a href="manage.php?user_id=' . $user["user_id"] . ' " class="user_grop">More Info</span></a>

现在在manage.php 页面上,您可以像这样访问 user_id:

<?php $user_id = $_GET["user_id"]; ?>

    使用.htaccess,创建.htaccess 文件并将下面的代码放入其中。 .htaccess 文件必须放在您的 index.php 文件所在的同一 dir 中。

    &lt;IfModule mod_rewrite.c&gt; RewriteEngine On RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php?/$1 [L] &lt;/IfModule&gt;

现在您可以使用$_SERVER['REQUEST_URI'] 全局变量访问index.php 文件中的查询字符串。

<a href="manage/10000/' . $user["user_id"] . ' " class="user_grop">More Info</span></a>

您的访问页面链接必须如上图note the / after 10000 else user_id will get merge with 10000

为问题进行了聊天会话,view chat transcript here

【讨论】:

当我尝试使用 .htaccess 时,它会将我重定向到 index.php 文件 您可以在index.php 页面上同时使用$_GET$_SERVER['REQUEST_URI'] 来访问变量。 它的路由完美,这就是链接的样子:localhost/users/manage/10000/12 但是 manage.php 根本没有被调用 你必须使用$value = $_SERVER['REQUEST_URI'] 然后$valArr = explode("/",$value); 现在你所有的值都必须存储到$valArr,你可以像$valArr[0]一样访问它们【参考方案2】:

您需要一个路由引擎来管理该类型的 url。

有很多框架包含路由。用的最多的是Symfonyhttp://symfony.com/doc/current/routing.html

【讨论】:

他只需要打开htaccess和mod_rewrite。 我认为路由引擎更适合应用程序维护【参考方案3】:

一般语法如下:

http://domain_name.com/script.php?parameter1=value&parameter2=value

在您的情况下,假设您的参数是 user_id

<a href="manage.php?user_id='.$user["user_id"].'" class="user_grop">More Info</span></a>

在 PHP 中,您将使用 $_GET['user_id'] 来获取传递的值

$userID = $_GET['user_id'];

通过在 .htaccess 中包含这些行

RewriteEngine On
RewriteRule ^manage\/([0-9]+)$ manage.php?user_id=$1

您可以使用以下语法访问同一页面:

http://domainname/manage/2313

【讨论】:

我可以在不明确包含扩展名 (.php) 的情况下这样做吗? 目前我有这个重写: RewriteEngine On RewriteCond %REQUEST_FILENAME !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 可以,看更新 所以我已经对我的 .htaccess 进行了更改,对此【参考方案4】:

如果你的意思是说你需要路由到不同的 php 文件 manage.php 并从上一页获取传递的变量,那么你可以修改链接到

"manage.php?val=10000".$user["user_id"]

然后使用$_GET获取传入的变量

或者你可以保持相同的 url 使用 .htaccess 将你的请求路由到 manage.php?val=$1

或者在像 codeigniter 这样的框架中,你有路由文件,你可以在其中定义你的路由。

【讨论】:

我不想显示扩展名 (.php) 那么你应该使用 htaccess 来路由你的请求 RewriteEngine On RewriteCond %REQUEST_FILENAME !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 是的,您可以使用 rewriterule 路由到 manage.php 而不暴露 .php 扩展名和参数键,通常是您希望 url 的方式

以上是关于PHP如何将页面重定向到不同的PHP文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 PHP 中的会话数据将用户重定向到不同的页面?

如何在 php 中重定向/调度? [复制]

创建一个处理多个目的地的重定向页面php?

php将两个角色重定向到同一页面

如何使用web.config将所有.asp页面重定向到IIS上的.php页面

php 将任何WordPress附件页面重定向到实际文件