-1

ユーザーが名前と市区町村のフィールドのデータを Web サイトに送信するときに句読点を表示できるようにする、addslashes または magicquotes コーディングをどこに置くことができますか?

if(isset($_POST['submit'])) {   
$name=$_POST["element_1"];
$xxx=$_POST["element_2_1"];
$xxxxx=$_POST["element_2_2"];
$xxxxx=$_POST["element_2_3"];
$xxxxx=$_POST["element_3_1"];
$xxxxxd=$_POST["element_3_2"];
$xxxxxx=$_POST["element_3_3"];
$xxxxx=$_POST["element_4_1"];
$xxxxx=$_POST["element_4_2"];
$city=$_POST["element_4_3"];
$xxx=$_POST["element_4_4"];
$xxp=$_POST["element_4_5"];
$desc=$_POST["element_5"];
//$file=$_FILES['element_6'];
$link=$_POST["element_7"];
$stdate=$stdatemm."-".$stdatedd."-".$stdateyy;
$endate=$endatemm."-".$endatedd."-".$endateyy;
$user=$_POST["postuser"];
4

1 に答える 1

1

データベースに保存するときに、ユーザーが送信したコンテンツをエスケープする必要があります。

// Your var with `"/'` chars
$name=$_POST["element_1"];

// Escape it for database storage
$name_escaped = mysql_real_escape_string($name);

// Use the escaped version in your query
mysql_query("INSERT INTO table (column) VALUES ('" . $name_escaped . "')");

注: このmysql_real_escape_string()関数は、MySQL 接続を開始した後、MySQL クエリを実行する前に呼び出す必要があります。

注: MySQL クエリを実行するこの方法は、PHP 5.5 で非推奨になったため、MysqliまたはPDOメソッドを使用する必要があります。

いずれにせよ、データベースからコンテンツを取得するときはエスケープすべきではありません。そのため、HTML ページに表示したい場合は、htmlspecialchars()" " のような文字<が HTML を壊さないように使用してください:

<html>
<body>
    <div>
        <?php echo htmlspecialchars($name_fromDB); ?>
    </div>
</body>
</html>
于 2013-08-16T00:30:53.400 に答える