基于URI调用PHP函数
我希望创建一个基于URI的简单php脚本,它将调用某个函数 我希望能够访问: /开发/查看/发布/ 它将调用我在PHP脚本中创建的“posts”函数 任何帮助都将不胜感激基于URI调用PHP函数,php,Php,我希望创建一个基于URI的简单php脚本,它将调用某个函数 我希望能够访问: /开发/查看/发布/ 它将调用我在PHP脚本中创建的“posts”函数 任何帮助都将不胜感激 谢谢 您使用的是框架吗?他们为你做这种事 您需要在apache中使用 基本上,您可以使用/dev/view/posts 并将其改写为 /dev/view.php?page=posts RewriteEngine On RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1
谢谢 您使用的是框架吗?他们为你做这种事 您需要在apache中使用 基本上,您可以使用/dev/view/posts 并将其改写为 /dev/view.php?page=posts
RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1
in view.php
switch($_REQUEST['page'])
{
case 'posts':
// call posts
echo posts();
break;
}
EDIT调用了任何称为“page”的函数
您可能希望使用一个框架来实现这一点,因为存在安全隐患。但很简单,你可以做到这一点:
if (array_key_exists('page',$_REQUEST))
{
$f = $_REQUEST['page'];
if (is_callable($f))
{
call_user_func($f);
}
}
注意,有很多更好的方法可以做到这一点!你应该使用一个框架 您使用的是框架吗?他们为你做这种事 您需要在apache中使用 基本上,您可以使用/dev/view/posts 并将其改写为 /dev/view.php?page=posts
RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1
in view.php
switch($_REQUEST['page'])
{
case 'posts':
// call posts
echo posts();
break;
}
EDIT调用了任何称为“page”的函数
您可能希望使用一个框架来实现这一点,因为存在安全隐患。但很简单,你可以做到这一点:
if (array_key_exists('page',$_REQUEST))
{
$f = $_REQUEST['page'];
if (is_callable($f))
{
call_user_func($f);
}
}
注意,有很多更好的方法可以做到这一点!你应该使用一个框架 您需要的是在web服务器上重写URL的一种形式。例如,如果您使用的是Apache,您应该查找mod_rewrite。您的规则可能是什么样子的示例:
RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /posts.php?id=$1
但我假设您希望有一个跟踪帖子ID或类似的ID,以便您可以将其用于多个帖子URL。您正在寻找的是在web服务器上重写URL的一种形式。例如,如果您使用的是Apache,您应该查找mod_rewrite。您的规则可能是什么样子的示例:
RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /posts.php?id=$1
但是我假设您希望有一个尾随post ID或类似的ID,以便可以将其用于多个post URL。查看函数文档
$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]);
看看函数文档
$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]);
我知道如何使用mod_rewrite,但问题是我需要编写代码,使每个“posts”与“posts”函数匹配。通过框架思想,您可以编写一个函数posts(),然后转到/dev/view/posts/,它将调用该函数。您使用的是什么框架?您不需要转义
/
字符。有点相关,这是一个很好的例子,可以将其带到下一个级别,可能有点太远了!它不使用switch语句,而是检查控制器文件是否有与参数值匹配的方法。不安全,但这很重要。我知道如何使用mod_rewrite,但问题是我需要编写代码,使每个“posts”与“posts”函数匹配。通过框架思想,您可以编写一个函数posts(),然后转到/dev/view/posts/,它将调用该函数。您使用的是什么框架?您不需要转义/
字符。有点相关,这是一个很好的例子,可以将其带到下一个级别,可能有点太远了!它不使用switch语句,而是检查控制器文件是否有与参数值匹配的方法。不安全,但很重要。这就是我要找的。谢谢!这就是我要找的。谢谢!