0
<?php

include ("account.php") ;

( $dbh = mysql_connect ( $hostname, $username, $password ) )
        or    die ( "Unable to connect to MySQL database" );
print "Connected to MySQL<br>";

mysql_select_db($project);

$number =   NULL ;
$username   =   $_POST["username"];
$priority   =   $_POST["priority"];
$category = $_POST["category"];
$incident_description = $_POST["incident_description"];


$sql  =   "insert into incident values ( NULL,       '$username','$priority','$category','$incident_description',curdate(),curtime() )" ;

mysql_query ( $sql )    or   print ( mysql_error ( ) );

$credentials = "select * from Credentials where ("username" = '$username' ,"password" =  '$password' , "email_address" = 'email_address')" ;

print $credentials;

$result = mysql_query ($credentials) or print (mysql_error ( ) );

$howManyRows = mysql_num_rows ( $result);

//if $howManyRows is positive continue process to update database with sql,if not,die.
?>

別のファイルにフォームのhtmlコードがあるため、$ _ POSTがありますが、このphpファイルには正しい構文が必要なので、ここに表示する必要はないと思います。

htmlフォームの値をデータベースのテーブル$credentialsの値と比較する方法についてのサポートが必要ですか?値がプロセスを実行することを承認するために、これを行う必要があります。私がそこに得た構文は、正しく実行されないため、現時点では正しくありません。2つを比較する方法がわかりません。このすべてがラインまで機能します。(username,password,email_address)"Credentials"mysql_query ( $sql ) or print ( mysql_error ( ) )

提案があればいいのですが、長い質問をお詫びします!

PS:資格情報テーブルの列username,password,email_addressも同様です!

4

4 に答える 4

0

試す

$ password = mysql_real_escape($ _ POST ['password']); //SQLの差し止め命令を回避するため
$username= mysql_real_escape($ _ POST ['username']);

$ credentials = "select * from Credentials where username='$ username' AND password='$ password' AND email_address='email_address'";

于 2012-09-20T05:35:25.733 に答える
0

私は知りませんが、あなたは以下を使うべきではありません...

$sql = "INSERT INTO incident (fieldname, fieldname) VALUES ('".mysql_real_escape($_POST['fieldname'])."', '".mysql_real_escape($_POST['fieldname'])."')";

mysqlに何かを挿入するには?

于 2012-09-20T05:31:07.883 に答える
0

問題はここにあります

$credentials = "select * from Credentials where ("username" = '$username' ,"password" =  '$password' , "email_address" = 'email_address')" ;

への変更

$credentials = "select * from Credentials where `username` = '$username' and `password` =  '$password' and  `email_address` = 'email_address'" ;

句で使用ANDされている複数の値を確認する場合、問題はクエリにあります。WHERE

于 2012-09-20T05:26:43.400 に答える
0

クレデンシャルクエリは次のように使用できます

$credentials = "select * from Credentials where username = '$username' AND password = '$password' AND email_address = 'email_address'" ;

しかし、パフォーマンスを向上させ、mysqlインジェクションのコードを防ぐには、次のことを行う必要があります

1)mysql関数の代わりにMysqliを使用します。ここにラッパーとしてのmysqliに適したライブラリがあります https://github.com/nWidart/PHP-MySQLi-Database-Class

2)データベース接続文字列は常に別のファイルに安全な場所に保管してください。次に、接続ファイルをrequireプロジェクトファイルに含めます。

3)クエリに直接使用する前に、常に変数の値を検証し、mysql_real_escapeを使用してください。

于 2012-09-20T05:45:16.793 に答える