2013-07-29 49 views
-4

好的,所以我正在学习php,今天我想了解一下制作用户注册页面。注册脚本没有任何作用

我写了这个代码: - PHP

<?php 
$db = mysql_connect('127.0.0.1', 'root', '') or die ('Unable to Connect.Check your connection parameters'); 
mysql_select_db('stock_inventory', $db) or die (mysql_error($db)); 
$usernamer=(isset($_POST['username'])) ? $_POST['username'] : ''; 
$passwordr=(isset($_POST['password'])) ? $_POST['password'] : ''; 
$emailr=(isset($_POST['email'])) ? $_POST['email'] : ''; 
$usernamer=strip_tags($usernamer); 
$passwordr=strip_tags($passwordr); 
$emailr=strip_tags($emailr); 
$errors[]=array(); 
if(isset($_POST['submit']) && $_POST['submit'] == 'register') 
{ 
    $query = 'SELECT * FROM user WHERE user_name = ' . $usernamer; 
    $result=mysql_query($query, $db) or die (mysql_error($db)); 
    if(mysql_num_rows($result) > 0) 
    { 
     echo "Username already exists."; 
     echo '<br/>'; 
     echo "Redirecting"; 
     header('Refresh: 3; URL=register.php'); 
    } 
    if(empty($usernamer)) 
    { 
     $errors[]="Username cannot be blank"; 
    } 
else if(empty($passwordr)) 
{ 
    $errors[]="Password cannot be empty"; 
} 
else if(empty($emailr)) 
{ 
    $errors[]="Email Cannot be empty"; 
} 
else if(count($errors) > 0) 
{ 
    echo '<table>'; 
    echo '<tr>'; 
    foreach($errors as $error) 
    { 
     echo '<td>' . $error . '</td>'; 
    } 
    echo '</tr>'; 
    echo '</table>'; 
    die(); 
} 
else 
{ 
$query = 'INSERT INTO user 
      (user_id, user_name, user_password, user_email) 
      VALUES 
      (NULL, "' . mysql_real_escape_string($usernamer, $db) . '", "' . PASSWORD($passwordr) . '", "' . mysql_real_escape_string($emailr, $db) . '")'; 
$result = mysql_query($query, $db) or die (mysql_error($db)); 
if($result) 
{ 
    echo "Registration Succssfull"; 
} 
else 
{ 
    echo "Error in registration"; 
} 

} 
} 
?> 

HTML

<html> 
    <head> 
     <title>Register</title> 
    </head> 
    <body> 
     <form action="register.php" method="post"> 
      <table> 
       <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>Email:</td> 
        <td><input type="text" name="email" /></td> 
       </tr> 
       <tr> 
        <td><input type="submit" name="register" value="register" /></td> 
       </tr> 
      </table> 
     </form> 
    </body> 
</html> 

问题: - 不幸的是,这个脚本什么也不做。 无论我输入什么或不输入,它什么也不做。 我该如何解决这个问题?

任何帮助表示赞赏。 谢谢。

+0

你为什么要在userid字段中插入NULL值? – Maximus2012

+0

你说它什么都不做?这是否意味着该网页甚至不会提交,它会提交,然后什么也不做?如果第一种情况,检查你是否可能有一些javascript停止提交(如验证脚本) – Martijn

+1

* PSA:* mysql_ *函数[在PHP 5.5中不推荐](http://php.net/manual/en /faq.databases.php#faq.databases.mysql.deprecated)。不建议您编写新的代码,因为这会阻止您将来升级。相反,请使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/book.pdo.php)和[是一个更好的PHP开发人员](http://jason.pureconcepts.net/2012/08/better-php-developer/)。 –

回答

2

你的提交按钮被命名寄存器,不能提交,所以这行:

if(isset($_POST['submit']) && $_POST['submit'] == 'register') 

应该

if(isset($_POST['register']) && $_POST['register'] == 'register') 

这就是为什么它什么都不做。

+0

好吧,我得到这个: - 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在第1行''附近使用正确的语法。 – Rahul

+0

您的用户名变量未正确转义。 – datasage

+0

datasage是正确的,它应该是: $ query =“SELECT * FROM user WHERE user_name ='”。$ usernamer。“'”; 请注意查询外部的双引号,它允许您使用单个内部引号来表示用户名周围的sql字符串,该字符串应该可以工作。 – rncrtr