私は、URIに基づいて、特定の関数を呼び出す単純なPHPスクリプトを作成するために探しています。URIに基づいてPHP関数を呼び出す
代わりにif文の束を有するので、私が訪問できるようにしたいと思います:
は/ dev /ビュー/記事/
、それは私が作成した「ポスト」関数を呼び出しますPHPスクリプト。
ご協力いただければ幸いです。
ありがとうございます!
私は、URIに基づいて、特定の関数を呼び出す単純なPHPスクリプトを作成するために探しています。URIに基づいてPHP関数を呼び出す
代わりにif文の束を有するので、私が訪問できるようにしたいと思います:
は/ dev /ビュー/記事/
、それは私が作成した「ポスト」関数を呼び出しますPHPスクリプト。
ご協力いただければ幸いです。
ありがとうございます!
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]);
フレームワークを使用していますか?彼らはあなたのためにこの種のことをします。
これを行うには、Apacheでmod_rewriteを使用する必要があります。 view.php
switch($_REQUEST['page'])
{
case 'posts':
// call posts
echo posts();
break;
}
EDITをして /dev/view.php?page=posts
RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1
にそれを
基本的にあなたが取るの/ dev /ビュー/ポスト と書き換えますこの呼び出しは "ページ"と呼ばれていました。
おそらくフレームワークを使用している可能性がありますセキュリティの意味合いです。非常に簡単にこれを行うことができます:
if (array_key_exists('page',$_REQUEST))
{
$f = $_REQUEST['page'];
if (is_callable($f))
{
call_user_func($f);
}
}
メモこれを行うには、より良い方法があります。あなたはフレームワークを使用する必要があります!
私はmod_rewriteの使用について知っていますが、問題はそれぞれの 'posts'と 'posts'機能を一致させるコードを書く必要があることです。フレームワークのアイデアを使って、posts()関数を書いてから/ dev/view/posts /に移動すれば、その関数が呼び出されます。 –
これをマップするフロントコントローラーが必要です。どのフレームワークを使用していますか? –
'/'文字をエスケープする必要はありません。 – Gumbo
あなたが探しているものは、Webサーバー上のURL書き換えの一形式です。たとえば、Apacheを使用している場合は、mod_rewriteを検索する必要があります。
RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /posts.php?id=$1
しかし、私はあなたが複数の投稿のURLのためにこれを使用できるように、末尾のポストIDまたは類似を持つように欠けていると仮定している:あなたのルールはどのように見えるかの例。
これは私が探していたものです。どうもありがとう! –