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
中。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule>
现在您可以使用$_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¶meter2=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文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章