2013-07-29 3 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

Почему вы вставляете значения NULL в поле userid? – Maximus2012

+0

Вы говорите, что ничего не делают? Означает ли это, что страница даже не отправляется, она подчиняется, а затем ничего не делает? Если в первом случае проверьте, есть ли у вас некоторый javascript, останавливающий отправку (например, validationscript) – 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

Смежные вопросы