2011-01-01 15 views
2

私はPHPを初めて使い、簡単なログインシステムを作っています。 誰かが登録したいときは、register.htmlに行き、insert.phpに行きます。 以下のコードは、フォームのデータをテーブルに追加する必要がありますが、そこには現れません。 私はそれがおそらく次の行であると思われます:$ sql = INSERT INTO ... コードの最後にechoステートメントが表示されます これには簡単な答えがあるかもしれませんが、それを見つける。 ありがとうございます、どんな助けも本当にありがとうございます!再びPHPは、データベースにデータを追加しないで、任意のアイデア?

insert.php

<?php 
$email=$_POST['email']; 
$name=$_POST['name']; 
$password=$_POST['password']; 
$con = mysql_connect("localhost","user","[email protected]"); 
mysql_select_db("database", $con); 
$sql="INSERT INTO table_name (email, name, password) 
VALUES ('$email', '$name', '$password')";   
echo"Thank you, you are now registered and can login on our homepage"; 
mysql_close($con); 
?> 

のためのコードは、ありがとう!

+0

<?php $ email = $ _ POST ['email']; $ name = $ _ POST ['name']; $ password = $ _ POST ['password']; $ con = mysql_connect( "localhost"、 "username"、 "password"); mysql_select_db( "database"、$ con); $ sql = "INSERT INTOテーブル(メール、名前、パスワード) VALUES( '$ email'、 '$ name'、 '$ password')"; echo "ありがとう、あなたは今登録されており、私たちのホームページにログインできます"; mysql_close($ con); ?> – Niall

答えて

6

接続を確立してクエリを準備しましたが、実際には実行しませんでした。 mysql_query()に電話し、SQLと接続ハンドルを渡して、データベースに命令を実行するように指示する必要があります。

<?php 
$email=$_POST['email']; 
$name=$_POST['name']; 
$password=$_POST['password']; 
$con = mysql_connect("localhost","user","[email protected]"); 
mysql_select_db("database", $con); 
$sql="INSERT INTO table_name (email, name, password) 
VALUES ('$email', '$name', '$password')"; 
mysql_query($sql, $con) or trigger_error(mysql_error($con), E_USER_ERROR); 
echo"Thank you, you are now registered and can login on our homepage"; 
mysql_close($con); 
?> 

あなたはPHP(および一般的には、おそらくデータベース開発?)に新しいしていると言うので、私はまた、あなたが警戒する必要があり、なぜそれが何であるかを説明し、PHP tutorial on SQL injectionの方向にあなたをポイントしてみましょうたとえば、あなたのサンプルコードは脆弱です。アプリケーションは、現在非常にあることが

mysql_query($sql); 

大きな問題がある:

+2

+1はSQLインジェクションに言及しています。 –

+0

ありがとう、それは右の音、 – Niall

+0

それは完全にありがとう!あなたの助けは本当に感謝しています! :) – Niall

2

このコードは動作しないことの理由は、あなたが実際に問い合わせを行うmysql_queryへの呼び出しを持っていないということです$email$nameまたは$passwordの妥当性をチェックしていないため、悪意のあるユーザーがデータベースに簡単に迷惑をかける可能性があります。少なくとも、mysql_real_escape_stringを使用してエスケープしてください。好ましくは、PDOなどのライブラリを使用して、サイトのセキュリティを確保してください。

+0

はい、ありがとうございます。私は基本を正しく理解し、暗号化と検証を追加することを目指しています。とにかくありがとうございます – Niall

+0

@Backslapこれは非常にうまくいきますが、古くからの 'mysql_'関数ではなくPDOで学ぶと、デフォルトでセキュリティが組み込まれます。私はそれらの機能を探求してほしい。 – lonesomeday

関連する問題