2012-03-18 14 views
-2

ログイン時に次のコードを使用してデータベースに電子メールとパスワードを格納しますが、何らかの形でパスワードを格納するだけです。電子メールフィールドはデータベースにNULLのままです。助言がありますか?ここで電子メールとパスワードをデータベースに保存する

はコードです:

<?php 
define('DB_NAME', 'XXXXXXX'); 
define('DB_USER', 'XXXXXXX'); 
define('DB_PASSWORD', 'XXXXXXX'); 
define('DB_HOST', 'db.example.com'); 

$link = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
die('Could not Connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!db_selected) { 
die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 

$value = $_POST['email']; 
$value = $_POST['password']; 

$sql = "INSERT INTO demo (email) VALUES ('$value')"; 
$sql = "INSERT INTO demo (password) VALUES ('$value')"; 

if (!mysql_query($sql)) { 
die('Error: ' . mysql_error()); 
} 

mysql_close(); 
?> 
+0

フォームはどのように見えますか? – Mike

+4

StackOverflowの質問に実際の接続情報を投稿しないようにしてください。 –

+2

私は興味深いです、あなたは何から学んでいますか? –

答えて

-2

あなたが最初の$値は、電子メールadddressであると言っています。次に、$ valueがパスワードであると言っています。

挿入すると、$ valueは常にパスワードになります。変数の名前を変更してみてください。

$email = $_POST["email"]; 
$password = $_POST["password"]; 

$sql = 'INSERT INTO demo (email, password) VALUES ("'.$email.'", "'.$password.'")'; 

は、SQLインジェクションのために確保することを忘れないでください。あなたのためにこれを探してください。

+0

thnxx ...これは動作します.... –

+5

-1はSQL注入穴です。 –

+0

"SQLインジェクションのための監視!"という標準的なSOメッセージを入れるのを忘れた – Mike

3
$value = $_POST['email']; 
$value = $_POST['password']; 

秒割り当ては/が最初の割り当てを上書き破壊するので、このコードが書かれたとして働いている...あなたのような何か必要があると思います:別にそれらを保存するために

$value1 = $_POST['email']; 
$value2 = $_POST['password']; 

を。あなたの2つの$ sql変数についても同じことが言えます。

これ以外にも、ユーザーが提供するデータをSQLクエリに直接挿入しているため、コードがSQLインジェクション攻撃のために広く開かれています。

これらのコーディングエラーの基本性を考えれば、一般公開されているWebサーバーに何かを置く前に、コーディングスキルを向上させることをお勧めします。そうしないと、短い時間でpwn3dを取得する可能性があります。

+0

よく言ったことを使って...それはdbに空白の値を保存します.... –

+0

フォームが実際にPOSTメソッドを使用していることと、フォームフィールドの名前が$ _POST参照で使用しているものと一致することを確認してください。 –

+0

ええフォームフィールドの名前が一致し、私はすでにPostメソッドを使用しています.....でもまだそれはうまくいきません....私はこのような何かをsshud何か意味しますか: $ value1 = $ _POST ['email']; $ value2 = $ _POST ['password']; $ sql = "INSERT INTOデモ(電子メール)VALUES( '$ email'); $ sql = "INSERT INTOデモ(パスワード)VALUES( '$ password')"; –

4

あなたがここにあなたの変数

$email = mysql_real_escape_string($_POST['email']); 
$pass = mysql_real_escape_string($_POST['password']); 

$sql = "INSERT INTO demo (email, password) VALUES ('$email, '$pass')"; 
+0

これまでの唯一の正しい答え –

-1

問題をされて上書きされています

$value = $_POST['email']; 
$value = $_POST['password']; 

あなたは電子メールに「$値」変数の値を設定している場合、パスワードにリセット。

$sql = "INSERT INTO demo (email,password) VALUES ('$email','$password')"; 

しかし、私はあまりにもあなたの入力値をサニタイズすることを確認します:あなたは一度だけ、SQLを設定することを確認し、その後

$email = mysql_escape_string($_POST['email']); 
$pass = mysql_escape_string($_POST['password']); 

はこれを試してみてください。また、元の投稿を編集してDB名、パスワード、ホストを削除したいかもしれません:)

関連する問題