Я пытаюсь сделать базовую форму регистрации на WAMP, я пробовал с учебниками и книгой.
Кажется, у меня возникла проблема после отправки данных на веб-страницу.
Я создал базу данных и таблицы и можно увидеть здесь …
http://oi57.tinypic.com/2j47hux.jpg
Вот код, который у меня есть на моей HTML-странице:
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#536977">
<tr>
<form method="post" action="register.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#536977">
<tr>
<td colspan="3"><strong>Register: </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input type="text" id="username"></td>
</tr>
<tr>
<td width="78">First Name</td>
<td width="6">:</td>
<td width="294"><input type="text" id="firstname"></td>
</tr>
<tr>
<td width="78">Last Name</td>
<td width="6">:</td>
<td width="294"><input type="text" id="lastname"></td>
</tr>
<tr>
<td width="78">Age</td>
<td width="6">:</td>
<td width="294"><input type="text" id="age"></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input type="text" id="email"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input type="text" id="password"></td>
</tr><tr>
<td> </td>
<td> </td>
<td><input type="submit" value="Login"></td>
</tr>
</table>
</td
</form>
</tr>
</table>
Php я ссылаюсь на это ..
<?php
$con = mysqli_connect("localhost","root","","membersapp");
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
$sql="INSERT INTO memberstable (username, firstname, lastname, age, email, password)
VALUES
('$_POST[username]','$_POST[firstname]','$_POST[lastname]','$_POST[age]','$_POST[email]','$_POST[password]' )";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "$_POST[firstname] $_POST[lastname] has been added";
mysqli_close($con);
?>
Я запустил небольшой скрипт php, чтобы увидеть, подключается ли php к базе данных, и он подключен.
Есть идеи, что не так?
ОК, код отредактирован ..
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$con = mysqli_connect("localhost","root","","membersapp");
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
$sql="INSERT INTO memberstable (username, firstname, lastname, age, email, password)
VALUES
('$_POST[username]','$_POST[firstname]','$_POST[lastname]','$_POST[age]','$_POST[email]','$_POST[password]' )";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "$_POST[firstname] $_POST[lastname] has been added";
mysqli_close($con);
?>
а также
<form method="post" action="register.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#536977">
<tr>
<td colspan="3"><strong>Register: </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input type="text" id="username" name="username"></td>
</tr>
<tr>
<td width="78">First Name</td>
<td width="6">:</td>
<td width="294"><input type="text" id="firstname" name="firstname"></td>
</tr>
<tr>
<td width="78">Last Name</td>
<td width="6">:</td>
<td width="294"><input type="text" id="lastname" name="lastname"></td>
</tr>
<tr>
<td width="78">Age</td>
<td width="6">:</td>
<td width="294"><input type="text" id="age" name="age"></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input type="text" id="email" name="email"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input type="password" id="password" name="password"></td>
</tr><tr>
<td> </td>
<td> </td>
<td><input type="submit" value="Login"></td>
</tr>
</table>
</td>
</form>
В вашем коде есть несколько ошибок, поэтому, пожалуйста, прочитайте его до конца моего ответа.
Все ваши входы не имеют атрибутов имени. Вы не можете полагаться на id
атрибут один.
+ Изменить
<input type="text" id="username">
до (минус все ^
персонажи конечно) и чтобы соответствовать $_POST[username]
<input type="text" id="username" name="username">
^^^^^^^^^^^^^^^
Редактировать:
Также ваша колонка называется Age
и не age
Но я сомневаюсь, что это будет иметь значение. Попробуйте изменить его, чтобы он соответствовал буквенному регистру.
Однако, делая это таким образом, вы открыты для SQL-инъекция. использование готовые заявления, или же PDO с готовые заявления.
добавлять Отчет об ошибках в начало вашего файла (ов), который поможет найти ошибки.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
который бы поймал ошибки.
Примечание: Отчеты об ошибках должны выполняться только на стадии подготовки, а не на производстве.
Пароли
Я также заметил, что вы можете хранить пароли в виде простого текста. Это не рекомендуется.
Используйте одно из следующего:
crypt()
bcrypt()
scrypt()
password_hash()
функция.Другие ссылки:
Примечание:
Для ввода пароля следует использовать password
тип вместо text
<input type="password" id="password" name="password">
в противном случае пароли будут отображаться в читаемом формате при вводе.
Чего-то еще не хватает
>
в </td
что может повлиять на ваш стол, поэтому измените его на </td>
Других решений пока нет …