2015-03-26 4 views
1

У меня есть HTML форму регистрации, что позволяет новым пользователям регистрироваться на сайте .:PHP Регистрационная форма не спасаем

<form action="register.php" method="POST" class="register-form"> 
    <h1>Create Account</h1> 
    <label> 
     <span>First Name :</span> 
     <input id="firstname" type="text" name="firstname" placeholder="Your First Name" autocomplete="off" required/> 
    </label> 
    <label> 
     <span>Surname :</span> 
     <input id="surname" type="text" name="surname" placeholder="Your Surname" autocomplete="off" required/> 
    </label> 
    <label> 
     <span>Username :</span> 
     <input id="username" type="text" name="username" placeholder="Your Chosen Username" autocomplete="off" required/> 
    </label> 
    <label> 
     <span>Email :</span> 
     <input id="email" type="email" name="email" placeholder="Your Email Address" autocomplete="off" required/> 
    </label> 
    <label> 
     <span>Password :</span> 
     <input id="password" type="password" name="password" placeholder="Your Chosen Password" autocomplete="off" required/> 
    </label> 
    <hr> 
    <input name="action" type="hidden" value="signup" /> 
    <input type="submit" class="btn register btn-success btn-lg" name="submit" value="Register"> 

</form> 

, который идет в register.php:

<?php 
$connection = mysql_connect('localhost', 'root', 'password'); 
if (!$connection) { 
    die("Database Connection Failed" . mysql_error()); 
} 

$select_db = mysql_select_db('gmaps1'); 
if (!$select_db) { 
    die("Database Selection Failed" . mysql_error()); 
} 

// If the values are posted, insert them into the database. 
if (isset($_POST['username']) && isset($_POST['password'])) { 
    $firstname = $_POST['firstname']; 
    $surname = $_POST['surname']; 
    $username = $_POST['username']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 


    $query = "INSERT INTO `users` (firstname, surname, username, password, email) VALUES ('$firstname', '$surname', '$username', '$password', '$email')"; 
    $result = mysql_query($query); 
    if ($result) { 
     header("Location: thank_you.html"); 
    } else { 
     echo 'User Not Created'; 
    } 
} 
?> 

Но когда Я нажимаю кнопку «Регистр», он не сохраняет данные и возвращает «Пользователь не создан». Было бы лучше использовать MySQLi, а не MySQL, или есть лучший способ для этого работать?

+2

Добавить отчеты об ошибках в верхнюю части файла (ы) сразу после вашего открытия PHP-тега , например '

+0

проверить файл журнала, сообщить об ошибке, если есть что-нибудь –

+0

Кстати, вы планируете хранить хешированный пароль, не так ли? Надеюсь, это не предназначено для живого сайта. –

ответ

1

проверки ошибок решить мою проблему - «поле„активное“не имеет значения по умолчанию»

Было неактивное поле в таблице «Пользователи». Я избавился от этого, и он отлично работает. Должно быть, это было добавлено по ошибке.

+0

Как это было определено; через проверку ошибок? –

+0

О да, это была проверка ошибок, я исправил свой ответ, чтобы отразить это. Спасибо. – Stephen

+0

Добро пожаловать. –

1
  • Вы не получите «Database Connection Failed», чтобы вы успешно подключен к базе данных
  • Его лучше использовать MySQLi или PDO (мой выбор)
  • По крайней мере, использовать mysql_real_escape и, может быть, но trim() вот только отправной точкой, когда речь идет о безопасности
  • проверка кастрированный баран все ваши поля базы данных называются именно так, как вы адресация их внутри Вставка-Заявление
  • Сделайте echo $query, откройте PhpMyAdmin (например) и скопировать-вставить выход внутри поля SQL и отправить -> вы можете получить ошибку MySQL, которую вы можете проанализировать
  • Лучше хранить хэшированные пароли. Попробуйте вставить MD5($password) (есть способ лучше варианта!), И при входе в системе делать сравнение:

    если (MD5 ($ inputPassword) == $ passwordhashFromDatabase) {}

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