2013-04-08 125 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