Как сделать регистрацию с номером приглашения?

12 3
S
На сайте с 08.02.2017
Offline
7
2823

Все привет. Есть форма регистрации, нужно добавить в нее обязательное дополнительное поле, в которое пользователю необходимо ввести некий пригласительный номер (он для всех один), без него регистрация была бы невозможна. Помогите, добавить в этот скрипт такую функцию.

Основные файлы

Файл register.php

<?php

include_once 'handler.php'; // проверяем авторизирован ли пользователь

// если да, перенаправляем его на главную страницу
if($user) {
header ('Location: index.php');
exit();
}

if (!empty($_POST['login']) AND !empty($_POST['password']))
{
// фильтрируем логин и пароль
$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$password = mysql_real_escape_string(htmlspecialchars($_POST['password']));

// проверяем есть ли логин в нашей базе данных
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' LIMIT 1;"), 0) != 0)
{
echo 'Выбранный логин уже зарегистрирован!';
exit();
}
// заносим данные в таблицу, обратите внимание - пароль кодируем в md5
mysql_query("INSERT INTO `users_profiles` (`username`, `password`) VALUES ('".$login."', '".md5($password)."')");
echo 'Вы успешно зарегистрированы!';
exit();
}
// форма регистрации
echo '
<form action="register.php" method="POST">
Логин:<br/>
<input name="login" type="text" value="" /><br/>
Пароль:<br/>
<input name="password" type="text" value="" /><br/>
<input type="submit" value="Зарегистрироваться" />
</form>';
?>

Файл db_connect.php

<?php


mysql_connect('localhost', 'пользователь', 'пароль пользователя') or die('Ошибка соеденения с MySQL!');
mysql_select_db('база данных') or die ('Ошибка соеденения с базой данных MySQL!');
mysql_query('SET NAMES `utf8`'); // выставляем кодировку базы данных

?>

Файл handler.php

<?php

include_once 'db_connect.php'; // проверяем подключение к базе данных

// проверяем заполнены ли логин и пароль в куках
if(!empty($_COOKIE['username']) AND !empty($_COOKIE['password']))
{
// ищем пользователя в таблице users_profiles, mysql_real_escape_string используем как защиту от sql injection
$search_user = mysql_query("SELECT * FROM `users_profiles` WHERE `username` = '".mysql_real_escape_string($_COOKIE['username'])."' AND `password` = '".mysql_real_escape_string($_COOKIE['password'])."'");
$user = (mysql_num_rows($search_user) == 1) ? mysql_fetch_array($search_user) : 0;
}
else
{
$user = 0;
}
?>
R
На сайте с 31.08.2010
Offline
78
#1

вот так сделай, вместо 123456 напиши свой номер приглашения

файл register.php остальные редактировать не нужно

if(!empty($_POST['priglashenie']) AND ($_POST['priglashenie'] =='123456')){
if (!empty($_POST***91;'login'***93;) AND !empty($_POST***91;'password'***93;))
{
// фильтрируем логин и пароль
$login = mysql_real_escape_string(htmlspecialchars($_POST***91;'login'***93;));
$password = mysql_real_escape_string(htmlspecialchars($_POST***91;'password'***93;));

// проверяем есть ли логин в нашей базе данных
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' LIMIT 1;"), 0) != 0)
{
echo 'Выбранный логин уже зарегистрирован!';
exit();
}
// заносим данные в таблицу, обратите внимание - пароль кодируем в md5
mysql_query("INSERT INTO `users_profiles` (`username`, `password`) VALUES ('".$login."', '".md5($password)."')");
echo 'Вы успешно зарегистрированы!';
exit();
}
}
// форма регистрации
echo '
<form action="register.php" method="POST">
Логин:<br/>
<input name="login" type="text" value="" /><br/>
Пароль:<br/>
<input name="password" type="text" value="" /><br/>
Приглашение:<br/>
<input name="priglashenie" type="text" value="" /><br/>
<input type="submit" value="Зарегистрироваться" />
</form>';
?>
S
На сайте с 08.02.2017
Offline
7
#2
Rokkkin:
вот так сделай, вместо 123456 напиши свой номер приглашения
файл register.php остальные редактировать не нужно

Отредактировал, страница не загружается, пишет: "Страница недоступна. Сайт пока не может обработать этот запрос." Вот что у меня получилось, в чем может быть проблема?

Файл register.php


<?php
include_once 'handler.php'; // проверяем авторизирован ли пользователь

// если да, перенаправляем его на главную страницу
if($user) {
header ('Location: index.php');
exit();
}
if(!empty($_POST***91;'priglashenie'***93;) AND ($_POST***91;'priglashenie'***93; =='123456')){
if (!empty($_POST***91;'login'***93;) AND !empty($_POST***91;'password'***93;))
{
// фильтрируем логин и пароль
$login = mysql_real_escape_string(htmlspecialchars($_POST***91;'login'***93;));
$password = mysql_real_escape_string(htmlspecialchars($_POST***91;'password'***93;));

// проверяем есть ли логин в нашей базе данных
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' LIMIT 1;"), 0) != 0)
{
echo 'Выбранный логин уже зарегистрирован!';
exit();
}
// заносим данные в таблицу, обратите внимание - пароль кодируем в md5
mysql_query("INSERT INTO `users_profiles` (`username`, `password`) VALUES ('".$login."', '".md5($password)."')");
echo 'Вы успешно зарегистрированы!';
exit();
}
}
// форма регистрации
echo '
<form action="register.php" method="POST">
Логин:<br/>
<input name="login" type="text" value="" /><br/>
Пароль:<br/>
<input name="password" type="text" value="" /><br/>
Приглашение:<br/>
<input name="priglashenie" type="text" value="" /><br/>
<input type="submit" value="Зарегистрироваться" />
</form>';
?>
S
На сайте с 13.10.2014
Offline
171
#3

не пользуйтесь подсветкой php тут. луче просто

 пользовать подсветка php ломает код заменяя [ на ***91; а ] на ***93;
R
На сайте с 31.08.2010
Offline
78
#4

siew, Ну вы же не тупо копируйте, как написал silicoid код ломается на этом форуме, посмотрите свой исходный файл и сравните что изменилось и что нужно добавить.

S
На сайте с 08.02.2017
Offline
7
#5
Rokkkin:
siew, Ну вы же не тупо копируйте, как написал silicoid код ломается на этом форуме, посмотрите свой исходный файл и сравните что изменилось и что нужно добавить.

Я уже это понял.

S
На сайте с 08.02.2017
Offline
7
#6

Rokkkin, Ваш вариант отлично работает, но еще хотелось бы, чтобы появлялось сообщение при неверном вводе.

Joker-jar
На сайте с 26.08.2010
Offline
154
#7

Как-то так:

<?php 
include_once 'handler.php'; // проверяем авторизирован ли пользователь

// если да, перенаправляем его на главную страницу
if($user) {
header ('Location: index.php');
exit();
}

if (isset($_POST['login']) && isset($_POST['password']) && isset($_POST['promo']) )
{
// фильтрируем логин и пароль
$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));
$promo = trim($_POST['promo']);

if ( $promo != '123456 )
{
echo 'Неверный код!';
exit();
}

// проверяем есть ли логин в нашей базе данных
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' LIMIT 1;"), 0) != 0)
{
echo 'Выбранный логин уже зарегистрирован!';
exit();
}

if ()

// заносим данные в таблицу, обратите внимание - пароль кодируем в md5
mysql_query("INSERT INTO `users_profiles` (`username`, `password`) VALUES ('".$login."', '".md5($password)."')");
echo 'Вы успешно зарегистрированы!';
exit();
}
// форма регистрации
echo '
<form action="register.php" method="POST">
Логин:<br/>
<input name="login" type="text" value="" /><br/>
Пароль:<br/>
<input name="password" type="text" value="" /><br/>
Приглашение:<br/>
<input name="promo" type="text" value="" /><br/>
<input type="submit" value="Зарегистрироваться" />
</form>';
?>

Не советую делать htmlspecialchars в данном случае (работа с БД), экранирования тут достаточно. Используйте htmlspecialchars при выводе информации на странице. А вот trim (отбрасывание пробелов по краям) обычно делать стоит.

S
На сайте с 08.02.2017
Offline
7
#8

Joker-jar, вы где-то допустили ошибку - Страница недоступна. Сайт пока не может обработать этот запрос.

S
На сайте с 30.09.2016
Offline
469
#9

siew, сами-то не ленитесь, такую мелочь ведь несложно увидеть

if ( $promo != '123456 )
Кавычка не закрыта.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S
На сайте с 08.02.2017
Offline
7
#10

Sitealert, это я увидел, исправил, но все равно ошибка

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий