2016-04-03 18 views
1
でそれを

仕事私はこれをめちゃくちゃにしていますどこ私は(ほとんどの場合、ファイルが少し存在する場合は、チェック)が100%かどうか分からないが、私は何をしようとしていることである:URLのクエリ文字列を取得し、PHP

  • ページのクエリを取得します。 example.com?example
  • そして、もしそうであれば、そのファイルは次に
  • が存在するかどうかそして
  • in this case news/example.php)ファイルパスで動作するようにその文字列を使用してエラーメッセージをエコーされていない場合、そのファイルを含みます。

このは私が持っているコードです:クエリになる持っている

$getPage = $_SERVER['QUERY_STRING']; 
    $page = "news/"+$getPage+".php"; 
    if (file_exists($page)) { 
    include $page; 
    } else { 
    echo "The page you are looking for cannot be found. To return back to the main page click <a href='example.com'>here</a>"; 
    } 

場合example.com?news/example.phpそれが世界の終わりではないだろうが、短い方が良いです。拡張子を付けずにファイル名だけを残す方が良いでしょう。

+0

URLを書き換えたいと思うように聞こえます –

+0

人々には、たとえばhttp://example.com/index.php ?p = conctact'、またはあなたの質問ではないですか? – Tom

+0

[RFI](https://en.wikipedia.org/wiki/File_inclusion_vulnerability)に注意してください。 – Bigood

答えて

0

PHP連結は+をサポートしていません。.を使用する必要があります。

$getPage = $_SERVER['QUERY_STRING']; 
$page = "news/".$getPage.".php"; 
if (file_exists($page)) { 
    include $page; 
} else { 
    echo "The page you are looking for cannot be found. To return back to the main page click <a href='example.com'>here</a>"; 
} 

これを試してみてください、と私に知らせて、それはあなたのためか、ではない作品です。

0

この場合、URLリライティングがはるかに適切です。これで.htaccessファイルを作成します :

あなたが正規表現に精通している場合
RewriteEngine on 
RewriteRule ^news/([^/\.]+)/?$ news.php?filename=$1 [L] 

、あなたは同封カッコ()が試合を取り込むためのものであることを知っていると思います。

[^/\.]+は、スラッシュまたはピリオドではない1つ以上の文字です。

試合をキャプチャした後、それはnews.phpでそれを置き換えますが?ファイル名=

だから、あなたはhttp://example.com/news/helloworld、 を要求するとき、あなたのnews.php、今http://example.com/news.php?filename=helloworld

を提供されますファイルは次のようになります:

$getPage = $_SERVER['QUERY_STRING']; 
$page = "news/".$getPage.".php"; 
if (file_exists($page)) { 
    include $page; 
} else { 
    echo "The page you are looking for cannot be found. To return back to the main page click <a href='example.com'>here</a>"; 
} 

これでファイル拡張子がなくなり、URLがよりクリーンに見えます。 URLの書き換えについてもっと読むには、次のURLをご覧ください:http://www.workingwith.me.uk/articles/scripting/mod_rewrite

関連する問題