次のコードでエラーが発生します。
<?php
echo "<a href='prefs.php?username=$PHP_USER'>$lang_menu["prefs"]</a>";
?>
2つのphp変数を要求していることに関係があると確信していますが、解決方法がわかりません。
次のコードでエラーが発生します。
<?php
echo "<a href='prefs.php?username=$PHP_USER'>$lang_menu["prefs"]</a>";
?>
2つのphp変数を要求していることに関係があると確信していますが、解決方法がわかりません。
と置換する
<?php
echo "<a href='prefs.php?username=".$PHP_USER."'>".$lang_menu['prefs']."</a>";
?>
これを試して
<?php
echo "<a href='prefs.php?username=".$PHP_USER."'>".$lang_menu['prefs']."</a>";
?>
明らかに、二重引用符で囲まれた文字列にエスケープされていない二重引用符を書くことはできません。また、エスケープされていないテキストを HTML や URL に書き込むことはお勧めしません。これを試して:
<?php
echo '<a href="prefs.php?username=' . rawurlencode($PHP_USER) . '">' . htmlspecialchars($lang_menu["prefs"]) . '</a>';
?>
編集:いくつかの説明...
これらは有効な文字列です:
$foo = "Hello, World!";
$foo = "Hello, 'World!'";
$foo = "Hello, \"World!\"";
これはそうではありません:
$foo = "Hello, "World!"";
SQL インジェクションは、その言葉が示すように、SQL と呼ばれるデータベース クエリ言語を指します。このコードには SQL が含まれておらず、どのデータベースともまったく対話しません。
したがって、ドットや SQL インジェクションについては何もありません。これは、特定のセマンティック コンテキストで特別な意味を持つ特定の文字に関するものです。テキスト内のテキストについてです。
これを使って:
<?php
echo "<a href=\"prefs.php?username=".$PHP_USER."\" >".$lang_menu["prefs"]."</a>";
?>
$variables
引用符で分割"
:
echo "<a href='prefs.php?username=".$PHP_USER."'>".$lang_menu['prefs']."</a>";