2010-12-20 237 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的行目前是無效的(因爲如果它可以涉及到附近沒有附近的話,那麼其他的權利)。

代碼示例:

$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」])「;但給我的錯誤:解析錯誤:語法錯誤,意外的'「',預計在/ home/jleggett/domain/jleggett.tim.college-em.qc.ca/public_html/signUp.php在線T_STRING或T_VARIABLE或T_NUM_STRING 23 – Elggetto 2010-12-20 03:36:09

+0

真棒:) ...只記得在用戶輸入數據之前清理輸入信息,看看我更新後的帖子 – judda 2010-12-20 03:37:10

+0

sanitize?hehehe抱歉,但我不知道這意味着什麼...... sry!我也得到錯誤:解析錯誤:語法錯誤,意外的T_STRING在第23行的/home/jleggett/domains/jleggett.tim.college-em.qc.ca/public_html/signUp.php – Elggetto 2010-12-20 03:44:04

3

Judda的回答肯定的作品,但SQL注入的風險是如此之高,它超越了「風險」的境界,成爲更多的是肯定的。

我建議你得到一個良好的基礎手冊(O'Reilly的「學習PHP,MySQL和JavaScript是非常容易和簡單,適合初學者),並學習基本的安全規則與數據庫打交道時觀察。

擾流板,逃避是不夠的;!你需要準備的語句

如果你不想買一本書,那麼請對上帝的愛才去任何進一步的閱讀this

+0

我同意使用預準備語句是實現所需安全性的最佳方式。 – judda 2010-12-20 04:16:22

+0

另外你的回答是正確的 - 我只關心Elggetto。 – cbrandolino 2010-12-20 04:17:51

+0

這是一個更清晰的例子......因爲這篇文章不是關於他們腳本的安全性,我認爲最基本的安全性是足夠的。 – judda 2010-12-20 04:23:33