[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема при регистрации
b1bk0
Недавно начал осваивать PHP, сейчас занимаюсь разработкой простейшей формы для регистрации. Есть таблица в MySQL, страница с формой и обработчик. Написал, все отлично работало, начал ставить различные фильтры и проверки - в итоге наотрез отказывается вносить информацию в БД.

Страница формы:

<?php
session_start();
require_once("blocks/config.php"); // файл настроек
require_once("blocks/connect_db.php"); // соединение с базой данных
$confirmation_id = md5($_SERVER['USER_AGENT'].$_SERVER['REMOTE_ADDR'].mktime());
if(!isset($_POST['reg_go']))
{
if($_SESSION['uid'] =='') { $_SESSION['uid'] = mt_rand(10000,99999); }

echo '<form action="registration_do.php" method="post" name="registration">
<table>
<tr><td>Фамилия:</td> <td><input type="text" name="lastname" size="20"></td></tr>
<tr><td>Имя:</td> <td><input type="text" name="firstname" size="20"></td></tr>
<tr><td>Отчество:</td> <td><input type="text" name="patronymic" size="20"></td></tr>
<tr><td>Дата рождения:</td><td><input type="date" name="birth_date" size="20"</td></tr>
<tr><td>PIN-код:</td> <td><input type="text" name="pin" size="20"></td></tr>
<tr><td>Дата выдачи PIN-кода:</td> <td><input type="text" name="time_pin" size="20"></td></tr>
<tr><td>Выдал:</td> <td><input type="text" name="admin_id" size="20"></td></tr>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<tr><td colspan="2"><input type="submit" name="reg_go" value="Зарегистрировать!"></td></tr>
</table>
</form>'
;
}
?>


Страница-обработчик:


<?php
require_once("blocks/config.php"); // файл настроек
require_once("blocks/connect_db.php"); // соединение с базой данных

if (isset($_POST['lastname'])) {$lastname = $_POST['lastname'];}
if (isset($_POST['firstname'])) {$firstname = $_POST['firstname'];}
if (isset($_POST['patronymic'])) {$patronymic = $_POST['patronymic'];}
if (isset($_POST['birth_date'])) {$birth_date = $_POST['birth_date'];}
if (isset($_POST['pin'])) {$pin = $_POST['pin'];}
if (isset($_POST['time_pin'])) {$time_pin = $_POST['time_pin'];}
if (isset($_POST['admin_id'])) {$admin_id = $_POST['admin_id'];}
if (isset($_POST['confirmation_id'])) {$confirmation_id = $_POST['confirmation_id'];}
if (isset($_POST['reg_go'])) {$reg_go = $_POST['reg_go'];}
if (isset($_POST['id'])) {$id = $_POST['id'];}

if(isset($reg_go))
{
if(isset($lastname)) {trim($lastname); }
else {$lastname = "";}

if(isset($firstname)) {trim($firstname); }
else {$firstname = "";}

if(isset($patronymic)) {trim($patronymic); }
else {$patronymic = "";}

if(isset($birth_date)) {trim($birth_date); }
else {$birth_date = "";}

if(isset($pin)) {trim($pin); }
else {$pin = "";}

if(isset($time_pin)) {trim($time_pin); }
else {$time_pin = "";}

if(isset($admin_id)) {trim($admin_id); }
else {$admin_id = "";}}
if (empty($lastname) or empty($firstname) or empty($patronymic) or empty($birth_date) or empty($pin) or empty($time_pin) or empty($admin_id))
{exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля.
<br><input name='back' value='Вернуться назад' type='button' onclick='javascript:self.back();'>"
);
}

/*Защита от слешев*/

$lastname = stripslashes($lastname);
$firstname = stripslashes($firstname);

/*Защита от HTML и JAVA*/

$lastname = htmlspecialchars($lastname);
$firstname = htmlspecialchars($firstname);


// Далее проверяем введенные пользователем данные
$nick_q = mysql_query("Select lastname From izbirateli Where lastname='$lastname'");
$nick_q = mysql_query("Select firstname From izbirateli Where firstname='$firstname'");
$nick_q = mysql_query("Select patronymic From izbirateli Where patronymic='$patronymic'");
$nick_q = mysql_query("Select birth_date From izbirateli Where birth_date='$birth_date'");
$nick_q = mysql_query("Select pin From izbirateli Where pin='$pin'");
$nick_q = mysql_query("Select time_pin From izbirateli Where time_pin='$time_pin'");
$nick_q = mysql_query("Select admin_id From izbirateli Where admin_id='$admin_id'");

if (mysql_affected_rows()==0) // Если такого не существует, продолжаем
{
// Записываем в базу данных строку с данными нового пользователя.
$reg = mysql_query("INSERT into izbirateli (id,lastname,firstname,patronymic,birth_date,pin,time_pin,admin_id,confirmation_id) VALUES ('$id','$lastname','$firstname','$patronymic','$birth_date','$pin','$time_pin','$admin_id','$confirmation_id')", $db);
}
if ($reg == 'true')
{
{
exit ("<p>Избиратель зарегистрирован успешно!.
<br><input name='back' value='Вернуться назад' type='button' onclick='javascript:self.back();'>"
);
}}
else
{
{
exit ("<p>Данный избиратель уже зарегистрирован.
<br><input name='back' value='Вернуться назад' type='button' onclick='javascript:self.back();'>"
);
}}
?>


Теперь какую бы информацию не пытался занести, пишет, что избиратель зарегистрирован. Подскажите, пожалуйста, в чем может быть проблема? Прошу прощения, если вопрос слишком простой..Спасибо!



Спустя 17 минут, 49 секунд (2.05.2011 - 14:57) b1bk0 написал(а):
Вопрос решен, спасибо!;)

Спустя 2 часа, 19 минут, 48 секунд (2.05.2011 - 17:17) Guest написал(а):
Твой код - мечта начинающего хакера. (да и индусы рады были бы увидеть его)

Посмотри на следующие функции на php.net

mysql_real_escape_string()
extract() - хотя по сути, непонятно зачем тебе нужны переменные, - ну пользовался бы массивом
trim() - не принимает параметр ссылкой, а это значит не меняет его, а возвращает новый.



Ну а эту ошибку как я понимаю ты поправил:
   // Далее проверяем введенные пользователем данные
$nick_q = mysql_query("Select lastname From izbirateli Where lastname='$lastname'");
$nick_q = mysql_query("Select firstname From izbirateli Where firstname='$firstname'");
$nick_q = mysql_query("Select patronymic From izbirateli Where patronymic='$patronymic'");
$nick_q = mysql_query("Select birth_date From izbirateli Where birth_date='$birth_date'");
$nick_q = mysql_query("Select pin From izbirateli Where pin='$pin'");
$nick_q = mysql_query("Select time_pin From izbirateli Where time_pin='$time_pin'");
$nick_q = mysql_query("Select admin_id From izbirateli Where admin_id='$admin_id'");




P.S.: java и javascript совсем разные вещи.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.