2013-04-08 122 views
1

我有這段代碼(如下所示)和變量$ first_name = $ _ POST ['first_name'];似乎沒有工作。我有用戶名,密碼和標題工作。這是否與使用下劃線有關?我檢查過它與數據庫匹配。當用戶創建存儲first_name的行時拋出錯誤,並且不顯示在數據庫中輸入的名稱。有任何想法嗎?PHP存儲變量

<?php 
/* This code will make a connection with database */ 
$con=mysql_connect("localhost","",""); 

/* Now, we select the database */ 
mysql_select_db(""); 

/* Now we will store the values submitted by form in variable */ 
$username=$_POST['username']; 
$pass=$_POST['password']; 
$title=$_POST['title']; 
$first_name=$_POST['first_name']; 
/* we are now encrypting password while using md5() function */ 
$password=md5($pass); 
$confirm_password=$_POST['confirm_password']; 

/* Now we will check if username is already in use or not */ 
$queryuser=mysql_query("SELECT * FROM Customer WHERE username='$username' "); 
$checkuser=mysql_num_rows($queryuser); 
if($checkuser != 0) 
{ echo "Sorry, ".$username." is already been taken."; } 
else { 

/* now we will check if password and confirm password matched */ 
if($pass != $confirm_password) 
{ echo "Password and confirm password fields were not matched"; } 
else { 

/* Now we will write a query to insert user details into database */ 
$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('$username', '$password', '$title', '$first_name')"); 

if($insert_user) 
{ echo "Registration Succesfull"; } 
else 
{ echo "error in registration".mysql_error(); } 

/* closing the if else statements */ 
}} 

mysql_close($con); 
?> 

謝謝!

HTML表單

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <meta name="viewport" content="width=device-width, initial-scale=1" /> 
     <meta name="apple-mobile-web-app-capable" content="yes" /> 
     <meta name="apple-mobile-web-app-status-bar-style" content="black" /> 
     <title> 
     </title> 
     <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css" /> 
     <link rel="stylesheet" href="my.css" /> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> 
     </script> 
     <script src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js"> 
     </script> 
     <script src="my.js"> 
     </script> 
     <!-- User-generated css --> 
     <style> 
     </style> 
     <!-- User-generated js --> 
     <script> 
      try { 

    $(function() { 

    }); 

    } catch (error) { 
    console.error("Your javascript has an error: " + error); 
    } 
     </script> 
    </head> 
    <body> 
     <!-- Home --> 
     <div data-role="page" id="page1"> 
      <div data-theme="a" data-role="header"> 
      <a data-role="button" data-theme="d" href="Login.html" data-icon="arrow-l" data-iconpos="left" class="ui-btn-left"> 
        Back 
       </a> 
       <a data-role="button" href="index.html" data-icon="home" data-iconpos="right" data-theme="d"class="ui-btn-right"> 
       Home 
       </a> 
       <h3> 
        Registration 
       </h3> 
      </div> 
      <div data-role="content"> 
       <h4> 
        Enter your details below to register: 
       </h4> 

      <form method="post" action="Login.php"> 
      <table border="0"> 
      <tr><td>Title: </td><td><input type="text" name="title" /></td></tr> 

      <tr><td>First Name: </td><td><input type="text" name="name" /></td></tr> 

      <tr><td>Username: </td><td><input type="text" name="username" /></td></tr> 

      <tr><td>Password: </td><td><input type="password" name="password" /></td></tr> 

      <tr><td>Confirm Password: </td><td><input type="password" name="confirm_password" /></td></tr> 

      <tr><td></td><td><input type="submit" value="submit" /></td></tr> 

      </table> 
      </form> 
       <div data-role="content"> 
       <h4> 
       Please ensure your username and password are kept secure. 
       </h4> 

       <br /> 
      </div> 
     </div> 
    </body> 
</html> 
+0

你可以發表你的表格 – Sabari 2013-04-08 16:14:28

+0

'var_dump($ _ POST)'。完全看起來像打字錯誤 – Korcholis 2013-04-08 16:14:45

+0

檢查表單中的字段名稱,它可能與您在$ _POST中引用的名稱不同。另請嘗試'var_dump($ _ POST)'來查看數組中實際包含的內容。 – Sammitch 2013-04-08 16:15:15

回答

3

問題是您的輸入文本first name的表單屬性爲name而不是first_name。所以,你應該改變

$first_name=$_POST['first_name']; 

$first_name=$_POST['name']; 

或更改名稱屬性first_name

也可做適當的插入之前轉義所有領域

<?php 
/* This code will make a connection with database */ 
$con=mysql_connect("localhost","",""); 

/* Now, we select the database */ 
mysql_select_db(""); 

/* Now we will store the values submitted by form in variable */ 
$username= mysql_real_escape_string($_POST['username']); 
$pass= mysql_real_escape_string($_POST['password']); 
$title= mysql_real_escape_string($_POST['title']); 
$first_name= mysql_real_escape_string($_POST['name']); 

/* we are now encrypting password while using md5() function */ 
$password= md5($pass); 
$confirm_password= mysql_real_escape_string($_POST['confirm_password']); 

/* Now we will check if username is already in use or not */ 
$queryuser=mysql_query("SELECT * FROM Customer WHERE username='$username' "); 
$checkuser=mysql_num_rows($queryuser); 
if($checkuser != 0) 
{ echo "Sorry, ".$username." is already been taken."; } 
else { 

/* now we will check if password and confirm password matched */ 
if($pass != $confirm_password) 
{ echo "Password and confirm password fields were not matched"; } 
else { 

/* Now we will write a query to insert user details into database */ 
$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('$username', '$password', '$title', '$first_name')"); 

if($insert_user) 
{ echo "Registration Succesfull"; } 
else 
{ echo "error in registration".mysql_error(); } 

/* closing the if else statements */ 
}} 

mysql_close($con); 
?> 
0

它改成這樣:

$first_name = mysql_real_escape_string($_POST['first_name']);

你目前沒有保存任何消毒或逃逸。

+0

太累了,和它沒有工作 – user2236990 2013-04-08 16:19:33

0

更改此:

$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('$username', '$password', '$title', '$first_name')"); 

要這樣:

$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('".$username."', '".$password."', '".$title."', '".$first_name."')"); 

UPDATE

請檢查<input type="text" name="first_name">name="first_name"

+1

我認爲這是不必要的,因爲雙引號把美元前綴字符串作爲變量 – Korcholis 2013-04-08 16:22:03

+0

公告:未定義的索引:在/web/stud/b12456/PHP2/Login.php FIRST_NAME線64上註冊Succesfull 。這是我得到的錯誤。它正在註冊標題/用戶名和密碼而不是名字 – user2236990 2013-04-08 16:25:04

+0

您確定數據庫中的字段名是first_name嗎?你能發表表格創建代碼嗎? – rinchik 2013-04-08 16:27:12

0

嗯,它看起來像你的形式做不包含first_name項目,但name。將其更改回first_name