2010-12-20 13 views
0

私はPHPで始まっています。登録フォームの作成方法は不思議でした。データベースに値を追加する方法はわかりません。私はデータベースのphpMyAdminを使用しています。PHPフォーム:登録ユーザ

私はここでの入力を持っている:

<div id="registerSpace"> 
<form id="formulaireInscription2" name="formSignup" method="post" action="signUp.php"> 
    <div class="registerUsername"><input type="text" placeholder="Username" name="txtUserName" /><span class="textInputs"></span></div> 
    <div class="registerNom"><input type="text" placeholder="First name" name="txtNom" /><span class="textInputs">First name</span></div> 
    <div class="registerPrenom"><input type="text" placeholder="Last name" name="txtPrenom" /><span class="textInputs">Family name</span></div> 
    <div class="registerPassword"><input type="password" placeholder="Password" name="txtPassword" /><span class="textInputs">Password</span></div> 
    <div class="dropLogonContentOptions"><input type="submit" value="Sign Up" name="send" /> 
</form> 
</div> 

私はsignUp.phpにすべての私のコードを置きます。 phpMyAdminで、私のデータベースはとjleggett_colourfulと呼ばれ、私のテーブル(ユーザ、パスワード、ファーストネームblabla)はt_usagersです。
そこには、u_id(自動増分、数字のみ)、u_nom(姓)、u_prenom(名)、u_courriel(メール、ユーザー名!)、u_passwordがあります。

これをデータベースに追加するにはどうすればよいでしょうか?私はここにこのコードを持っています:

<?php 
session_start(); 

include 'inc/define.inc.php'; 
include 'inc/fct.inc.php'; 



if (isset($_POST["txtUserName"]) && isset($_POST["txtNom"]) && isset($_POST["txtPrenom"]) && isset($_POST["txtPassword"])) 
{ 
    // Ouvre une connexion au serveur MySQL 
    $connection = mysql_connect(NOM_SERVEUR, USER_NOM, USER_PASSWORD) or die("Impossible de se connecter : " . mysql_error()); 
    if (!$connection) { 
    fin_perso('Problème de connexion au serveur : '. ' ---' . NOM_SERVEUR. '- - -' . USER_NOM. '- - -' . USER_PASSWORD. '- - - ' . mysql_error(), 'erreur_bd_'); 
    } 

    // S�lectionne une base de données MySQL 
    if (!mysql_select_db(NOM_BD)) 
    { 
    fin_perso('Problème de connexion à la base de données : ' . mysql_error(), 'erreur_bd'); 
    } 

    $sql = "INSERT INTO t_usager (u_nom, u_prenom, u_password) VALUES ('fdfs', 'qwerty', '456789')"; 

else 
    echo "Please, enter all informations" 
?> 

私はここで少し失われていますが、これは次のようになります!データベースに接続するコードが正しいです、私はちょうど私のフォームからの値でそれを追加する方法がわかりません。どうも! (私は$ sqlでテストするために、デフォルト値を入力しました)。

答えて

4

次を変更します:

$sql = "INSERT INTO t_usager (u_nom, u_prenom, u_password) VALUES ('fdfs', 'qwerty', '456789')"; 

の$ _POST配列(すなわち、$ _POST [ 'txtUsername'])の値を使用します。クエリの文字列を作成したら、mysql_query($ sql)を呼び出す必要があります。実際にクエリを実行するには

$ sqlの行が現在有効でないため、コード内に{}のペアがありませんと考えています(関係があればすぐ近くにelseがあります)。

コード例:

$nom = mysql_real_escape_string ($_POST [ 'txtNom' ]); 
$preNom = mysql_real_escape_string ($_POST [ 'txtPrenom' ]); 
$pass = mysql_real_escape_string ($_POST [ 'txtPassword' ]); 
$sql = "INSERT INTO t_usager (u_nom, u_prenom, u_password) VALUES ('$nom', '$preNom', '$pass')"; 
+0

THXは、私は、少しの微調整しました$ sql = "INSERT INTO t_usager(u_nom、u_prenom、u_password)VALUES($ _P OST ["txtNom"]、$ _POST ["txtPrenom"]、$ _POST ["txtPassword"]) ";しかし、私にエラーを与える:構文エラー、予期しない '"'、T_STRINGまたはT_VARIABLEまたはT_NUM_STRINGを/home/jleggett/domains/jleggett.tim.college-em.qc.ca/public_html/signUp.php on line 23 – Elggetto

+0

恐ろしい:) ...あなたのデータベースに入れる前にユーザーからの入力を念入りに覚えておいてください。更新された投稿を参照してください。 – judda

+0

sanitize?hehehe申し訳ありませんが、どういう意味ですか...私も同じですエラー:構文解析エラー:構文エラー、予期しないT_STRING /home/jleggett/domains/jleggett.tim.college-em.qc.ca/public_html/signUp.php on line 23 – Elggetto

3

Juddaの答えは確実に動作しますが、SQLインジェクションのリスクは、それは確実性のよりになってきて、「リスク」分野を超越非常に高いです。

私はあなたが良い基本的なマニュアルを入手(O'Reillyの「学習のPHP、MySQLとJavascriptが初心者のための非常に簡単でわかりやすいです)やデータベースを扱うときに観察するために、基本的なセキュリティルールを学ぶお勧めします。

スポイラーを、エスケープは十分ではありません。。。!あなたは準備されたステートメントが必要になります

を、あなたが本を購入したくない場合は、神の愛が先に進む前に、thisをお読みくださいため

+0

私は、準備されたステートメントの使用が、必要なセキュリティを実装する最良の方法であることに同意します。 – judda

+0

またあなたの答えは正しい - 私はちょうどElggettoについて心配していた。 – cbrandolino

+0

これは、いくつかのクリーニングについての例であり、この記事はスクリプトのセキュリティに関するものではないので、私は最も基本的なセキュリティが適切だと考えました。 – judda