不使用GET在URL中传递数据

时间:2010-02-11 03:56:17

标签: php

我有一个显示所选成员信息的页面。现在,我选择使用GET数据在URL中选择成员,如下所示:Page/index.php?Member=member1我看到这样做的网站:Page/member1这可能只与一个PHP文件有关吗?

4 个答案:

答案 0 :(得分:3)

友好的URL需要网络服务器进行某种处理,以便页面请求通过单个php脚本(也称为控制器)进行处理。

例如,Apache能够匹配URL中的模式并在后台修改请求 - 您实际上会编写PHP以作出反应,就像用户输入了原始GET字符串一样,但是他们可以使用友好的URL代替。

Apache的简单示例 - 将.htaccess放在文档根目录中并写入:

RewriteEngine On
RewriteRule   ^Page/([A-Za-z0-9\_]+)/?$   index.php?member=$1 [QSA,L]

我不知道IIS中的等价物是什么 - 但我知道它可用

答案 1 :(得分:1)

这不能用PHP完成 - 你用mod_rewrite和apache上的.htacess来做。

答案 2 :(得分:1)

有很多方法可以做到这一点,所有这些都取决于Web服务器。使用Apache,有一些可能性:

  • mod_rewrite(最灵活的方式,但配置起来可能很繁琐)
  • Option + MultiView(非常简单,但需要将PHP文件命名为与请求的URL类似)
  • 自定义404处理程序(不推荐)

假设您正在使用Apache并启用了MultiView。文件Page.phpPage/*匹配,显然包含Page/member1。然后,您必须检查URL(查看$_SERVER,它包含您需要的所有内容)并决定是否可以接受请求。

答案 3 :(得分:0)

您可以使用以下方法单独使用PHP:

1。)获取相对于文档根目录的文件名。

$_SERVER['PHP_SELF']

http://example.com/test.php/foo.bar将是/test.php/foo.bar。

2。)分隔符爆炸(在本例中为/)

array explode  ( string $delimiter  , string $string  [, int $limit  ] )

3。)验证数组中的值,然后放入变量

var $myValue = myarray[0];