2012-02-14 2 views
1

Я начинаю php и пытаюсь сделать электронную коммерцию, используя php. Я пытаюсь создать регистрационную форму, и я хочу сохранить эти данные в сервере mysql. Кодировка выглядит как ОК, но данные не хранились на сервере mysql. Не могли бы вы дать свой ответ за это? php-язык - это первый раз, когда я боюсь. Пожалуйста, дайте несколько советов. Благодарю.php mysql INSERT INTO mysql, используя регистрационную форму

--registerForm.php--

<h4>Create a new account</h4> 
       <div class="box"> 
       <form action="register.php" method="post"> 
        <p>User ID: <input type="text" name="userId" size="30"/>*</p> 
        <p>Password: <input type="password" name="password" size="30"/>*</p> 
        <p>Retype Password: <input type="password" name="repassword" size="30"/>*</p> 
        <p>First Name: <input type="text" name="firstName" size="30"/>*</p> 
        <p>Last Name: <input type="text" name="lastName" size="30"/>*</p> 
        <p>Your Address (*):</p> 
        <p> <textarea name="address" rows="5" cols="30"></textarea></p> 
        <p>Phone: <input type="text" name="phone" size="20"/>*</p> 
        <p>E-mail: <input type="text" name="email" size="21"/>*</p> 
        <p><input type="submit" value="Create Account"/></p> 
       </form> 
       </div> 

--register.php--

<?php 
require "sql_connection.php"; 
if(isset($_POST['submit'])) 
{ 
if($_GET["userId"]==$_GET["repassword"]){ 
mysql_query("insert into customer (userId, password, firstName, lastName, address, 
phone, email) 
values 
    ('$_GET[userId]','$_GET[password]','$_GET[firstName]','$_GET[lastName]','$_GET[address]','$_GET[phone]','$_GET[email]')") 
or die(mysql_error()); 
} 
echo "Done!!!!"; 
} 
?> 

--sql_connection.php--

<?php 
$db_host = "localhost"; 
$db_username = "root"; 
$db_pass = "**MY_PASS**"; 
$db_name = "**MY_DB**"; 

@mysql_connect("$db_host", "$db_username", "$db_pass", "$db_name") or die("connection is fail."); 
@mysql_select_db("$db_name") or die("database does not exsist."); 
echo "Successfully connection!!"; 
?> 
+0

@Marshall: обратите внимание, что имя пользователя и пароль origina сохраняются в истории сообщений - утечка навсегда. – sarnold

+0

Обратите внимание, что вы написали скрипт, уязвимый для [SQL Injection] (http: //en.wikipedia.org/wiki/SQL_injection), поскольку вы не дезактивировали любую из предоставленных пользователем переменных в ваших SQL-запросах. Для предотвращения этих уязвимостей используйте [Подготовленные формулировки PHP] (http://php.net/manual/en/pdo.prepared-statements.php). Благодарю. – sarnold

+0

O_o ​​о хорошо. Sooooo @ wholee1, даже если это на вашем локальном хосте, я бы изменил имя базы данных и пароль - лучше, чем забыть позже. – Marshall

ответ

3
if($_GET["userId"]==$_GET["repassword"]) 

Почему вы сравниваете userid с полем ptyword retype?

Я думаю, что это должно быть:

if($_GET["password"]==$_GET["repassword"]) 

Кроме того, убедитесь вы убегаете строки для предотвращения SQL Injection атак.

http://php.net/manual/en/function.mysql-real-escape-string.php

И, как Павел сказал, чтобы правильно восстановить данные с помощью $ _POST

+0

Вы должны попытаться ответить на вопрос, а не просто выбрать его код ... –

+0

перечитайте мой «ответ». –

+0

Спасибо. Я ошибся! – wholee1

3

Несколько вещей. Ваши $_GET и $_POST перепутаны. и НИКОГДА не публикуйте свои db_pass и uername публично. Кроме того, вы подавляете ошибки, используя @. не делайте этого.

т.е.

if($_GET["userId"]==$_GET["repassword"]){ 

должен быть

if($_POST["userId"]==$_POST["repassword"]){ 

и изменяет все это в $_POST

Ваш код:

$_GET[userId]','$_GET[password]','$_GET[firstName]','$_GET[lastName]','$_GET[address]','$_GET[phone]','$_GET[email]') 

Должно быть:

$_POST[userId]','$_POST[password]','$_POST[firstName]','$_POST[lastName]','$_POST[address]','$_POST[phone]','$_POST[email]')" 
0

Я думаю, что вы пытаетесь сделать, это:

if($_GET["password"]==$_GET["repassword"]) { 
3

Как ваш метод формы определен в POST поэтому используйте $_POST, чтобы получить значения после того, как подать вместо $_GET

require "sql_connection.php"; 
if(isset($_POST['submit'])) 
{ 
if($_POST["userId"]==$_POST["repassword"]){ 
mysql_query("insert into customer (userId, password, firstName, lastName, address, 
phone, email) 
values 
    ('$_POST[userId]','$_POST[password]','$_POST[firstName]','$_POST[lastName]','$_POST[address]','$_POST[phone]','$_POST[email]')") 
or die(mysql_error()); 
} 
echo "Done!!!!"; 
} 
?> 

Значения не указаны правильно. Вы должны процитировать его перед вставкой.

mysql_query("insert into customer (userId, password, firstName, lastName, address, 
phone, email) 
values 
    ('".$_POST[userId]."','".$_POST[password]."','".$_POST[firstName]."','".$_POST[lastName]."','".$_POST[address]."','".$_POST[phone]."','".$_POST[email]."')") 
+0

Спасибо, что ответили, но все же это не вставить в таблицу клиентов .. что такое проблема? – wholee1

+0

Теперь что такое ошибка? Вы уже приняли ответ –

+0

Вы должны либо задать новый вопрос, либо обновить этот вопрос –