[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: создание полей для формы регистрации на php !
Страницы: 1, 2
Xaker32Bit
Есть у меня локальный сайт не cms а чисто html js php и css! и я застрял на 1 месте есть у меня форма регистрации! и я туда добавил поля сериия и номер паспорта! и в php мне надо чтобы эти 2 поля проверялись как 1 целоее например:
в БД MySql есть таблица USER и там есть serial и number
есть 1 пользователь у него например serial 4502 и number 123456
мне надо чтобы при регистрации он проверял занят ли число 4502123456
то есть serial при регистрации может быть 4502 и тогда number должен быть другим!

вот код который проверяет 1 поле!

$result = mysql_query("SELECT id FROM users WHERE serial='$serial'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ('Извините, введённый вами паспорт уже зарегистрирован. Введите другой паспорт.<a href="reg.php"'); //останавливаем выполнение сценариев

}

вот сделать так же но только уже не serial а number не получится!
pamparam
добрый вечер!!!

судя по коду то исправлять там есть чего...(заново написать легче будет)

может я что то не так понял, но возможно это

$result = mysql_query("SELECT `id` FROM `users` WHERE `serial`=" . (int)$serial ." AND `number`=" . (int)$number,$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ('Извините, введённый вами паспорт уже зарегистрирован. Введите другой паспорт.<a href="reg.php"'); //останавливаем выполнение сценариев

}


я не уверен что Вам именно это нужно...
Xaker32Bit
Цитата (pamparam @ 8.01.2015 - 21:19)
добрый вечер!!!

судя по коду то исправлять там есть чего...(заново написать легче будет)

может я что то не так понял, но возможно это

$result = mysql_query("SELECT `id` FROM `users` WHERE `serial`=" . (int)$serial ." AND `number`=" . (int)$number,$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ('Извините, введённый вами паспорт уже зарегистрирован. Введите другой паспорт.<a href="reg.php"'); //останавливаем выполнение сценариев

}


я не уверен что Вам именно это нужно...

описываю проблему подробнее!!!
вот сайт у меня есть и там есть форма регистрации!
вот поля на странице:

<p>
<h3>
Придумайте логин:<br>
<input
name="login" type="text" size="15" placeholder="Login123" maxlength="15" style="width: 304px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;"></h3>
</p>

<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<p>
<h3>
Придумайте пароль:<br>
<input
name="password" type="password" placeholder="Password123" size="15" maxlength="16" style="width: 304px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;"></h3>
</p>

<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->
<p>
<h3>
Напишите Ваш E-mail:<br>
<input
name="email" type="text" placeholder="example@mail.com" size="15" maxlength="129" style="width: 304px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;"></h3>
</p>

<p>
<h3>
Номер Вашего телефона:<br>
<input
name="phone" type="text" pattern="[0-9]{11}" placeholder="79161234567" size="15" maxlength="11" style="width: 304px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;"></h3>
</p>

<p>
<h3>
Как Вас зовут?<br>
<input
name="name" type="text" pattern="^[А-Яа-яЁё]+$" placeholder="Иван" size="15" maxlength="11" style="width: 304px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;"></h3>
</p>

<p>
<h3>
А фамилия какая у Вас?<br>
<input
name="surname" type="text" pattern="^[А-Яа-яЁё]+$" placeholder="Иванов" size="15" maxlength="11" style="width: 304px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;"></h3>
</p>

<p>
<h3>
Паспорт: (серия и номер)<br>
<input
name="serial" type="text" pattern="[0-9]{4}" placeholder="1234" size="15" maxlength="4" style="width: 99px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;">
<input
name="number" type="text" pattern="[0-9]{6}" placeholder="123456" size="15" maxlength="6" style="width: 199px; height: 50px; padding: 12px; font-size: 20px; border: 3px solid #FFF; border-radius: 0px; color: #FFF; background-color: #203748;"></h3>
</p>


человек все должен заполнять!
есть таблица user и там есть serial и number отдельно!

вот php код когда юзер заполнил все поля и нажал отправить!


<html>
<
head>
<
link href="http://www.creative-site.org/css/bootstrap.css" rel="stylesheet">
<
link href="http://www.creative-site.org/css/bootstrap-responsive.css" rel="stylesheet">
<
link href="http://www.creative-site.org/css/style.css" rel="stylesheet">
<
link href="http://www.creative-site.org/font/css/fontello.css" rel="stylesheet">
<
link href="buttons/css/component.css" rel="stylesheet">
<
link href='http://fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'>
<
script type="text/javascript" src="buttons/js/classie.js"></script>
<
script type="text/javascript" src="buttons/js/modernizr.custom.js"></script>
</
head>
<
body >

<?php

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (isset($_POST['code'])) { $code = $_POST['code']; if ($code == '') { unset($code);} } //заносим введенный пользователем защитный код в переменную $code, если он пустой, то уничтожаем переменную

if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} } //заносим введенный пользователем e-mail, если он пустой, то уничтожаем переменную

if (isset($_POST['name'])) { $name = $_POST['name']; if ($name == '') { unset($name);} }

if (isset($_POST['surname'])) { $surname = $_POST['surname']; if ($surname == '') { unset($surname);} }

if (isset($_POST['serial'])) { $serial = $_POST['serial']; if ($serial == '') { unset($serial);} }

if (isset($_POST['number'])) { $number = $_POST['number']; if ($number == '') { unset($number);} }

if (empty($login) or empty($password)or empty($code) or empty($email)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ('<h3 style="text-align: center;">Вы ввели не всю информацию, вернитесь назад и заполните все поля!<br><a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>'); //останавливаем выполнение сценариев

}
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)) //проверка е-mail адреса регулярными выражениями на корректность
{exit ('<h3 style="text-align: right;">Вы ввели неверный E-mail!<a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>');}


function generate_code() //запускаем функцию, генерирующую код
{

$hours = date("H"); // час
$minuts = substr(date("H"), 0 , 1);// минута
$mouns = date("m"); // месяц
$year_day = date("z"); // день в году

$str = $hours . $minuts . $mouns . $year_day; //создаем строку
$str = md5(md5($str)); //дважды шифруем в md5
$str = strrev($str);// реверс строки
$str = substr($str, 3, 6); // извлекаем 6 символов, начиная с 3
// Вам конечно же можно постваить другие значения, так как, если взломщики узнают, каким именно способом это все генерируется, то в защите не будет смысла.



$array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
srand ((float)microtime()*1000000);
shuffle ($array_mix);
//Тщательно перемешиваем, соль, сахар по вкусу!!!
return implode("", $array_mix);
}

function chec_code($code) //проверяем код
{
$code = trim($code);//удаляем пробелы

$array_mix = preg_split ('//', generate_code(), -1, PREG_SPLIT_NO_EMPTY);
$m_code = preg_split ('//', $code, -1, PREG_SPLIT_NO_EMPTY);

$result = array_intersect ($array_mix, $m_code);
if (strlen(generate_code())!=strlen($code))
{
return FALSE;
}
if (sizeof($result) == sizeof($array_mix))
{
return TRUE;
}
else
{
return FALSE;
}
}


// после сравнения проверяем, пускать ли пользователя дальше или, он сделал ошибку, и остановить скрипт
if (!chec_code($_POST['code']))
{
exit ('<h3 style="text-align: right;">Вы ввели неверный код с картинки!<a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>'); //останавливаем выполнение сценариев
}


//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);

$phone = stripslashes($phone);
$phone = htmlspecialchars($phone);

//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
$phone = trim($phone);


// дописываем новое********************************************

//добавляем проверку на длину логина и пароля

if (strlen($login) < 3 or strlen($login) > 15) {

exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15."); //останавливаем выполнение сценариев

}
if (strlen($password) < 3 or strlen($password) > 16) {

exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 16."); //останавливаем выполнение сценариев

}

if (empty($_FILES['fupload']['name']))
{
//если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
$avatar = "avatars/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
}

else
{
//иначе - загружаем изображение пользователя
$path_to_90_directory = 'avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия


if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
{

$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory

if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}

//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru

// Создание квадрата 90x90
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности


$w = 90; // квадратная 90x90. Можно поставить и другой размер.

// создаём исходное изображение на основе
// исходного файла и определяем его размеры

$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат

$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)

if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);


$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.

//почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.


$avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.

$delfull = $path_to_90_directory.$filename;
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
}
else
{
//в случае несоответствия формата, выдаем соответствующее сообщение

exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев

}
//конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы
}

$password = md5($password);//шифруем пароль

$password = strrev($password);// для надежности добавим реверс

$password = $password."b3p6f7w7r9f5s5e3r4r";
//можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать метадом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.

//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.


// дописали новое********************************************

// Далее идет все из первой части статьи,но необходимо дописать изменение в запрос к базе.

// подключаемся к базе

include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь

// проверка на существование пользователя с таким же логином, тел, маил

$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ('<h3 style="text-align: center;">Извините, введённый вами логин уже зарегистрирован. Введите другой логин.<br><a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>'); //останавливаем выполнение сценариев

}

$result = mysql_query("SELECT id FROM users WHERE phone='$phone'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ('<h3 style="text-align: center;">Извините, введённый вами номер телефона уже зарегистрирован. Введите другой номер.<br><a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>'); //останавливаем выполнение сценариев

}

$result = mysql_query("SELECT id FROM users WHERE email='$email'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ('<h3 style="text-align: center;">Извините, введённый вами E-mail уже зарегистрирован. Введите другой E-mail.<br><a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>'); //останавливаем выполнение сценариев

}

$result = mysql_query("SELECT id FROM users WHERE serial='$serial' AND number='$number'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ('Извините, введённый вами паспорт уже зарегистрирован. Введите другой паспорт.<a href="reg.php"'); //останавливаем выполнение сценариев

}

// если такого нет, то сохраняем данные
$result2 = mysql_query ("INSERT INTO users (login,password,avatar,email,phone,date,name,surname,serial,number) VALUES('$login','$password','$avatar','$email','$phone','$name','$surname','$serial','$number',NOW())");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
{

$result3 = mysql_query ("SELECT id FROM users WHERE login='$login'",$db);//извлекаем идентификатор пользователя. Благодаря ему у нас и будет уникальный код активации, ведь двух одинаковых идентификаторов быть не может.
$myrow3 = mysql_fetch_array($result3);
$activation = md5($myrow3['id']).md5($login);//код активации аккаунта. Зашифруем через функцию md5 идентификатор и логин. Такое сочетание пользователь вряд ли сможет подобрать вручную через адресную строку.

$subject = "<h1>Подтверждение регистрации</h1>";//тема сообщения
$message = "<h3>Здравствуйте! Спасибо за регистрацию на Creative-Site.org\nВаш логин: ".$login."\n
Перейдите по ссылке, чтобы активировать ваш аккаунт:\nhttp://creative-site.org/lk/activation.php?login=".$login."&code=".$activation."\nС уважением,\n
Администрация Creative-Site.org</h3>";//содержание сообщение
mail($email, $subject, $message, "Content-type:text/plane; Charset=windows-1251\r\n");//отправляем сообщение

echo '<h3 style="text-align: center;">На Ваш E-mail выслано письмо с cсылкой, для подтверждения регистрации. Внимание! Ссылка действительна 1 час.<br><a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>'; //говорим о отправленном письме пользователю
}

else {
exit ('<h3 style="text-align: right;">Ошибка регистрации! попробуйте чуть повторить регистрацию позже.<a href="reg.php" style="margin-top: 5px; padding-top: 9px; height: 47px; width: 274px" class="btn btn-1 btn-1a">ок</a></h3>'); //останавливаем выполнение сценариев

}
?>


вот как сделать так чтобы нельзя было потом регестрироваться с одинаковым serial и number
но чтобы можно было number одинаковые но тогда serial не должен быть одинаковым! или наоборот!
Быстрый ответ:

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