基于URI调用PHP函数

时间:2009-08-07 21:03:48

标签: php

我希望创建一个基于URI的简单php脚本,它将调用某个函数。

我希望能够访问:

,而不是拥有一堆if语句

的/ dev /视图/帖/

它会调用我在PHP脚本中创建的'posts'函数。

非常感谢任何帮助。

谢谢!

3 个答案:

答案 0 :(得分:3)

您使用的是框架吗?他们为你做这件事。

您需要在apache中使用mod_rewrite才能执行此操作。

基本上你采取/ dev / view / posts 并重写它 /dev/view.php?page=posts

 RewriteEngine On
 RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1
在view.php中

switch($_REQUEST['page'])
{
    case 'posts':
        // call posts
        echo posts();
        break;
}

编辑进行此调用,无论什么功能被称为“页面”

您可能希望使用框架来执行此操作,因为存在安全隐患。但很简单,你可以这样做:

if (array_key_exists('page',$_REQUEST))
{
    $f = $_REQUEST['page'];
    if (is_callable($f))
    {
        call_user_func($f);
    }
}

请注意,有更好的方法可以做到这一点!你应该使用框架!!!

答案 1 :(得分:1)

查看call_user_func功能文档。

$functions['/dev/view/posts']    = 'function_a';
$functions['/dev/view/comments'] = 'function_b';
$functions['/dev/view/notes']    = 'function_c';

$uri = '/dev/view/comments';

call_user_func($functions[$uri]);

答案 2 :(得分:0)

您正在寻找的是Web服务器上的URL重写形式。例如,如果您使用Apache,则应查找mod_rewrite。您的规则可能如下所示的示例:

RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /posts.php?id=$1

但我假设你想要一个尾随的帖子ID或类似信息,以便你可以将它用于多个帖子的网址。