-1

このコードの問題点を教えてください。(76行目が真ん中です)

require("dbConfig.php");
$sql = 'SELECT * FROM dbUsers WHERE username='$_SESSION["valid_user"]'';
$r = mysql_query($sql);
4

4 に答える 4

2

文字列を連結してください

$sql = 'SELECT * FROM dbUsers WHERE username="'.mysql_real_escape_string($_SESSION["valid_user"]).'"';

推奨事項:

1.MySQL インジェクションを防ぐ方法を学ぶ: Good Link

2.Mysql 拡張機能は、新しいコードの作成には推奨されません。代わりに、mysqli または PDO_MySQL 拡張機能を使用する必要があります。詳細: PHP マニュアル

于 2012-11-13T08:02:21.593 に答える
0

これを試してください (ユーザー入力をサニタイズすると、SQL インジェクションを防ぐことができます):

<?php
require("dbConfig.php");
$sql = "SELECT * FROM dbUsers WHERE username='".filter_var(mysql_real_escape_string($_SESSION["valid_user"]),FILTER_SANITIZE_STRING)."'";
$r = mysql_query($sql);
?>

編集: 入力文字列をエスケープするために mysql_real_escape_string() を追加しましたが、ここで説明したように、これでも SQL インジェクションに対して 100% 効率的ではありません。

于 2012-11-13T08:02:27.553 に答える
0

見逃し.た:

$sql = 'SELECT * FROM dbUsers WHERE username='$_SESSION["valid_user"]'';

次のようにする必要があります。

$sql = "SELECT * FROM dbUsers WHERE username='".$_SESSION["valid_user"]."'";
于 2012-11-13T07:59:46.120 に答える
0

これを試して:

$sql = 'SELECT * FROM dbUsers WHERE username='.$_SESSION["valid_user"];
于 2012-11-13T08:00:11.127 に答える