了解しました。次のことを実行しようとしています。
<?php
include('pages/{$_GET["page"]}.txt');
?>
Wichは機能しません。の内部の作業サイトに配置されるため、divは空白のままになります。
私がこれを行う場合:
<?php
include('pages/index.txt');
?>
できます。
mydomain.com/?page=indexに接続しています。ここでヒントを教えてもらえますか?
検索してみましたが、運が悪かったです。
編集:多くの人が言っているように、この方法でやりたいことをするのは危険です。これを改善する簡単な方法は次のとおりです。
<?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
配列の最初のページが使用されます。
これを試して:
<?php include('pages/' . $_GET["page"] . '.txt'); ?>
まず、これをしないでください!それはとても安全ではありません!これを行うと、サイト上の任意のファイルにアクセスできます。残念。
さて、あなたが持っているものの実際の問題は、あなたの文字列が一重引用符で囲まれていることです。二重引用符に変更すると、機能します。しかし、あなたはまだこれをすべきではありません。
$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つの方法は、受け入れ可能なファイル名の配列を用意し、要求されたファイルがその配列にあるかどうかを確認することです。
あなたがこれをしなければならないなら、
<?php include('pages/' . {$_GET["page"]} . '.txt'); ?>
しかし、他の人が述べているように、これはセキュリティの脆弱性を露呈します。少なくともページパラメータをチェックして、Webサーバーの外部のファイルにリンクされていないことを確認してください。
$_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);