2011-01-20 6 views
0

は、[OK]を私はそれが私たちに、私がURLからコントローラとメソッドを取得しますか?

explode('/',$_SERVER['REQUEST_URI']) 

のようなものを試してみました

http://localhost/controller/method 

URLを与えると言うことができます$_SERVER['REQUEST_URI']

からURLを持っており、それは

array 
    0 => string '' (length=0) 
    1 => string 'controller' (length=10) 
    2 => string 'method' (length=6) 
ように私たちを与えました

コントローラーまたはメソッドを取得する最も良い方法は何ですか?または配列の0を削除しますか? (最初の配列)?

ので、上記入力から

$controller = 'controller'; 
$method = 'method'; 

ようになります。 多分リストについて?まだlist()を使って手がかりがありません。

クラスのIVEは、これまで行って何をHERES編集

$this->url = str_replace(config('foldertoscript'), NULL, $_SERVER['REQUEST_URI']); 
    $hello = explode('/',$this->url);var_dump($hello); 
    array_shift($hello); 
    list($controller,$method) = $hello; 
    var_dump($hello,$controller); 

で探しについて

感謝を。

アダムラマダン

+2

$ _SERVER ['REQUEST_URI']にはホスト名が含まれておらず、コントローラー/メソッドだけが含まれています。だから心配はありません。私はあなたが何か間違っていると確信しています –

+0

list()演算子は、その目的のためです。 **しかし、**私は一度に**バリデーション**を行うために爆発的ではなくregexpを使用します。 –

答えて

0

配列の最初の要素を削除するには、 array_shift()を使用できます。

$_SERVER['REQUEST_URI']には、「http://www.yoursite.com」のないURLが表示されます。

あなたはこの

<?php 
function curPageURL() { 
$pageURL = 'http'; 
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
$pageURL .= "://"; 
if ($_SERVER["SERVER_PORT"] != "80") { 
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
} else { 
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
} 
return $pageURL; 
} 

echo curPageURL(); 
?> 

ようなものを使用することができますが、この情報がお役に立てば幸いです。

0

array_shiftを使用して、最初の配列項目を削除します。

http://php.net/manual/en/function.array-shift.php

例:私はurl_rewritingを使用するのと同じ問題については

$your_array = array_shift($your_array); 
$controller = $your_array[0]; 
$method = $your_array[1]; 
0

私は、^([a-zA-Z0-0 -_ \ /。] +)$ index.php?url = $ 1というルールを持っています(これは自分のコードのコピー貼りではありません。考えを得る) $ _URL = $ _REQUEST ["url"];

$ directive = explode( "/"、$ _ URL);

あなたはモジュール/メソッド/ ID/1 /データ/ 2

あなたはパラメータの世話をするために持っていて、GETメソッドを使用している場合、それは動作します言うことができるパラメータに関しては、何が必要でしょう

ナビゲーションのみ(使用する必要があります)。また、誰もがSQLを送ることができるように物事をより安全にするgetまたは任意の "スマート"指令を介して注入を介してSQL

注射。

+0

ありがとうmartin :) –

関連する問題