2011-10-23 1 views
0

$ _GET ['q']がメインドメイン名を表示し、ウェブサイトの他のディレクトリが次のように表示されるように、このファイル内のすべてが設定されます。 else if (substr($_GET['q'], 0, 7) == 'quotes/') フォルダ:究極-取引-と低価格、私はsubstr()を使用してディレクトリを開く必要がありますか、別のコードを使用できますか?

else if (substr($_GET['q'], 0, 30) == 'ultimate-deals-and-low-prices/') 

を使用しない意味をなすか、私は、ディレクトリの部分文字列を呼び出すためにPHPを依頼することなく、別の方法で私のディレクトリ呼び出しますファイル名。私はそれが部分文字列が何であるか理解していますが、文字数が10未満の文字しか使用していないことがわかりました。ディレクトリに文字数が多い場合は、部分文字列を使用しますか?それは私が私のディレクトリを呼び出すにはどうすればよい

else if (substr($_GET['q'], 0, 7) == 'quotes/') 

に入るよりも

require_once(getcwd() ."/db/db_pagetitle.php"); 
print get_page_title($_GET['q']); 
if (isset($_GET['q']) && $_GET['q']) { 
    if (file_exists(getcwd() .'/pages/'. $_GET['q'] .'.php')) { 
     require_once(getcwd() .'/pages/'. $_GET['q'] .'.php'); 

これは、この文書のif文の始まりですか!

ありがとうございます。

+1

私は3回質問を読みましたが、私はあなたが知りたいことはまだ分かりません。 – middus

+0

'?q = ../passwords'を' getcwd() 'とするとどうなりますか? 'passwords.php'が存在しました。セキュリティの問題? – rodneyrehm

答えて

0

あなたはまだ10個の以上の文字を持っても問題はありません:)(あなたがタイピングを気にしない場合)、言い換えれば、あなたが投稿した正確にコードを使用することができ、SUBSTRを使用することができます。else if (substr($_GET['q'], 0, 30) == 'ultimate-deals-and-low-prices/')

しかし、すべてのフォルダ(例えば、cd-ingやその中のファイルの検索など)に共通のロジックがある場合は、各フォルダにelseブランチを書く必要はありません。

if (isset($_GET['q']) && $_GET['q']) { 
    if (file_exists(getcwd() .'/pages/'. $_GET['q'] .'.php')) { 
     require_once(getcwd() .'/pages/'. $_GET['q'] .'.php'); 
    } else if (is_dir(getcwd() . '/pages/' . $_GET['q'])) { 
     // do whatever you want to do with the folder 
    } 
} 

あなたのコードをもっと書くなら、何をしようとしているのか分かりやすいでしょう。

0

複数のキーワードを使用する場合は、検出システムを使用できます。

$match[]='ultimate-deals-and-low-prices/'; 
$match[]='users/'; 
$match[]='imgs/'; 
foreach($match as $k=>$v){ 
$l=strlen($v); 
$s=substr($_GET[q],0,$l); 
if ($v==$s) //Code to run... 
} 
0

strposに何が起こったのですか?

<?php 

if (file_exists($sanitizedPath)) { 

} elseif (strpos($_GET['q'], "ultimate-deals-and-low-prices/") === 0) { 

} elseif (strpos($_GET['q'], "some-other-directory/") === 0) { 

} 

エラーが発生しにくく、速くなります。

関連する問題