PHP データベース ユーザー検証
$con=mysql_connect("localhost","root","123456");
if(!$con)
{
die('接続できませんでした:'.mysql_error ());
}
mysql_query("SET NAMES 'utf8'") // 文字セットを設定
mysql_select_db("manage",$con) // データベースを選択
$sql1="
select count(*);ユーザー
から、username=="".$_POST['name']."" およびpassword=="".$_POST['password'].""
LIMIT 1
";
$result=mysql_query($ sql1,$con);
赤い部分はエラーを報告します。先輩方、質問が 2 つあります。まず、現在の形式を正しくするには、どのように変更する必要がありますか?次に、ユーザー情報を確認するときはどうするのでしょうか。よりシンプルなタイプ。
ディスカッションに返信 (解決策)
$sql1="select count(*)from userwhere username='".$_POST['name']."' and password='".$_POST['password']."'LIMIT 1";
ログイン後にコピー
次に、mysql_num_rows を使用して行が 1 に等しいかどうかを判断します。
ユーザー名='".mysql_real_escape_string($_POST['name'])."' およびパスワード='".mysql_real_escape_string($_POST['password'])."
単純なアンチインジェクションを取るのが最善です。測定。
http://php.net/manual/en/function.mysql-real-escape-string.php
php5.5 以降の場合は、mysqli_real_escape_string() または PDO::quote() を使用します
$sql1 = "select count(*)from userwhere username='".$_POST['name']."' and password=='".$_POST['password']."'";
ログイン後にコピー
または
$sql1 = "select count(*)from userwhere username='$_POST[name]' and password='$_POST[password]'";
ログイン後にコピー
LIMIT 1 は必要ありません
group 句がないため、クラスタリング関数は 1 つのレコードのみを取得します
受信データをエスケープする必要があります プログラムエントリではこれで十分です
$_POST = array_map ('mysql_real_escape_string ', $_POST);
$_POST = array_map('mysql_real_escape_string', $_POST);
$_POST が空の場合、エラーが報告されますか?
'$_POST[name]' を SQL 内で直接使用しても大丈夫ですか?
通常、ISSET などで最初に判断する必要があります。