0

了解しました。次のことを実行しようとしています。

<?php include('pages/{$_GET["page"]}.txt'); ?>

Wichは機能しません。の内部の作業サイトに配置されるため、divは空白のままになります。

私がこれを行う場合:

<?php include('pages/index.txt'); ?>

できます。

mydomain.com/?page=indexに接続しています。ここでヒントを教えてもらえますか?

検索してみましたが、運が悪かったです。

4

5 に答える 5

2

編集:多くの人が言っているように、この方法でやりたいことをするのは危険です。これを改善する簡単な方法は次のとおりです。

<?php 
    $valid_pages = array('index', 'contact', 'faq');
    $page = $_GET["page"];

    if (!in_array($page, $valid_pages)) {
        $page = $valid_pages[0];
    }

    include("pages/{$page}.txt"); 
?>

これにより、ユーザーが必要とするページが許可されたページ内にあるかどうかがチェックされ、そうでない場合は、$valid_pages配列の最初のページが使用されます。

于 2013-03-03T19:08:37.237 に答える
0

これを試して:

<?php include('pages/' . $_GET["page"] . '.txt'); ?>
于 2013-03-03T19:08:31.450 に答える
0

まず、これをしないでください!それはとても安全ではありません!これを行うと、サイト上の任意のファイルにアクセスできます。残念。

さて、あなたが持っているものの実際の問題は、あなたの文字列が一重引用符で囲まれていることです。二重引用符に変更すると、機能します。しかし、あなたはまだこれをすべきではありません。

$foo = "QQQ";

echo "asfd{$foo}asdf";
> asfdQQQasdf
echo 'asfd{$foo}asdf';
> asdf{$foo}asdf

脆弱性を修正する1つの方法は、ホワイトリストを用意することです。簡単な例を次に示します。

$file = "foo";

switch ($file) {
    case "foo":
        include ("pages/foo.txt");
        break;
    case "bar":
        include ("pages/bar.php");
        break;
    default:
        echo "YOU CANNOT ACCESS THIS FILE!";
        break;
}

もう1つの方法は、受け入れ可能なファイル名の配列を用意し、要求されたファイルがその配列にあるかどうかを確認することです。

于 2013-03-03T19:11:29.653 に答える
0

あなたがこれをしなければならないなら、

<?php include('pages/' . {$_GET["page"]} . '.txt'); ?>

しかし、他の人が述べているように、これはセキュリティの脆弱性を露呈します。少なくともページパラメータをチェックして、Webサーバーの外部のファイルにリンクされていないことを確認してください。

于 2013-03-03T19:13:26.017 に答える
0
$_GET['page'] = "index";
$allowed_page = array("index", "about", "contact");
$page = htmlentities($_GET['page']);
if((isset($_GET['page']) && $_GET['page'] != "")  && in_array($page, $allowed_page)){
$page = $_GET['page'];
}
$final_page =  'pages/' . $_GET["page"].'.txt';
include($final_page);
于 2013-03-03T19:23:05.100 に答える