2

ユーザーがデータベース情報を入力するフォームがあり、AJAX を使用してこのページに資格情報を送信するリンクをクリックできます。私が抱えている問題は、正しいホスト名を入力する限り、スクリプトが返すことTRUEです。

FALSEユーザー名とパスワードが無効な場合に返されるように、これをテストする別の方法はありますか?

$h  =   urldecode($_GET['h']);
$u  =   urldecode($_GET['u']);
$p  =   urldecode($_GET['p']);

$con = mysql_connect($h, $u, $p);

if(!$con){
    echo 'Could not connect';
}

else{
    echo 'Connected';
}

解決しました!

今後の参考のために、問題は、ユーザーのmysqlユーザーテーブルのエントリが「Any」であるということでした。これらのユーザーを削除すると、スクリプトは期待どおりに機能しました。この投稿を更新して、同様の問題を抱えている人のためにスクリーンショットを含めました. 以下のファビオの提案に感謝します!

MYSQL のユーザー テーブルには、次のエントリが含まれていました。

4

1 に答える 1

5

これは、接続時に mysql_connect がいくつかのデフォルトを使用するためrootです。これは、正しく覚えていれば、ユーザー名とパスワードの空白文字列に使用する必要があります。または、Web サーバーを実行するユーザー名にすることもできます。

これは、db サーバーが (Web サーバー マシンからの) パスワードなしのルート接続を受け入れることを意味する可能性があり、これは非常に危険です。データベース構成とユーザー リストを確認する必要があります。

セキュリティの観点から、あなたのコードはあまり安全ではありません.db認証情報はクリアテキストで送信されます.経験則として、エンドユーザーはdb認証情報を入力すべきではありません.

于 2011-09-05T20:23:25.510 に答える