Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Система регистрации пользователей

Cхема регистрации (новых) пользователей:

Покупатель

Подпись: Главное меню

Подпись:


 


Подпись:Подпись: Неуспешная регистрация

Регистрационная форма может выглядеть, например, так:

Напомним, что до отправки данных на сервер нужно проверить их на стороне клиента.

Приведем здесь фрагмент серверного сценария, «регистрирующего» пользователя:

<%

// Фрагмент сценария РЕГИСТРАЦИИ

// Предполагается, что уже выполнено

// назначение языка сценария

// запрет кэширования

// соединение с источником данных

// Прочитаем все переменные из формы

var fam=””+Request.Form("fam");

var im=””+Request. Form("im");

var addr=””+Request. Form("addr");

var mail=””+Request. Form("mail");

var login=””+Request. Form("login");

var pass=””+Request. Form("pass");

var pass2=””+Request. Form("pass2");

// “Заготовимобъект Recordset

var MyRec=Server. CreateObject("ADODB. Recordset");

// “Заготовим” строку для сообщения

message="”;

// Создадим “индикатор” успешности регистрации

success=false;

// Проверим, не пустые ли поля

if(fam!="" && im!="" && addr!="" && mail!="" && login!="" && pass!="" && pass2!="")

{

// Проверим, совпадают ли пароли

if(!(pass==pass2))

{

// сформируем сообщение о несовпадении паролей

message="<tr><td bgcolor='#ff9999'>”;

message+="<b>Поля пароля и повтора пароля не совпадают!!!</b></td></tr>";

}//end_if(!(pass==pass2))

else // поля заполнены, пароли совпадают

{

// проверим, нет ли такого логина в БД

var strSQL="SELECT id_cust FROM customers WHERE login='"+login+"'";

MyRec. Open(strSQL, MyCon);

if(!MyRec.EOF) // в БД уже есть такой логин

{

message="<tr><td bgcolor='#ff9999'><b>Такой логин уже существует!!! Выберите другой логин</b></td></tr>";

}//end_ if(!MyRec. EOF)

else // логина нет в БД

{

// подготовим запрос на запись данных

strSQL1="INSERT INTO customers (fam, im, addr, mail,

login, pass) VALUES('"+fam+"','"+im+"','"+addr+"','"+mail+"','"+

login+"','"+pass+"')";

// запишем данные в БД

MyCon.Execute(strSQL1);

// сформируем сообщение об успешной регистрации

message=" <tr><td bgcolor='#66cc66' align='center'>

<b>Вы успешно зарегистрированы</b></td></tr> ";

success=true;

} //end__else // логина нет в БД

} //end_else // поля заполнены, пароли совпадают

} //end_if(поля не пустые)

else // есть пустые поля

{

// сформируем сообщение о наличии пустых полей

message="<tr><td bgcolor='#ff9999'>”;

message+="<b>Не все поля заполнены!!!</b></td></tr>";

}//end_ else // есть пустые поля

// Выведем сообщение

Response.write(message);

// Как завершилась регистрация?

if(!success) // регистрация завершилась неуспешно

{

// снова сформируем форму с заполненными полями

%>

<!-- #include file="forma.asp" -->

<%

}//end_if(!success) // регистрация завершилась неуспешно

Сценарий, создающий форму с заполненными полями (лучше оформить его в виде отдельного файла) будет выглядеть так:

НЕ нашли? Не то? Что вы ищете?

<form action=”asp-сценарий” method=post name=”anketa”>

<tr><td>

<table border="0" width="100%" align="right" >

<tr>

<td>Фамилия:</td>

<td><input type=text name=fam value="<%=fam %>"></td>

</tr>

<tr>

<td>Имя:</td>

<td><input type=text name=im value="<%=im%>"></td>

</tr>

<tr>

<td>Адрес:</td>

<td><input type=text name=addr value="<%=addr%>"></td>

</tr>

<tr>

<td>E-mail: </td>

<td><input type=text name=mail value="<%=mail%>"></td>

</tr>

<tr>

<td>Пароль: </td>

<td><input type=password name=pass value=”<%=pass")%>”></td>

</tr>

<tr>

<td>Повтор пароля: </td>

<td><input type=password name=pass2 value=”<%=pass2%>”></td>

</tr>

<tr>

<td colspan=2 align=center><input type=button value="Отослать" onclick=”proverka();”>

<!---Здесь proverka – это клиентская функция ---->

</td>

</tr>

</table>

</form>

<script src=”js/proverka. js”></script>

Часто форму и сценарий регистрации помещают в один документ, т. е. значением атрибута action является адрес того же файла, в котором находится (или в который включается) форма. В этом случае вводят еще одно (hidden) поле (пусть, например, оно называется type). При нажатии на кнопку клиентская функция помещает в него значение 1. Понятно, что в сценарии нужно предусмотреть чтение и анализ значения этого поля, т. е. весь рассмотренный выше код выполнять лишь в случае, если type=1. В противном случае формируем сообщение – просьбу заполнить поля формы и внедряем в документ форму. При этом поскольку значения всех переменных представляют собой пустые строки, все поля формы также будут пустыми.

Замечание 1. Начинающие разработчики серверных приложений иногда спрашивают: "Почему нельзя обойтись одним только паролем?".

Ясно, что пароль должен быть уникален, т. е. позволять идентифицировать пользователя. Предположим, что при регистрации пользователь придумал себе пароль, который уже есть в базе данных. Ясно, что мы не можем сообщить ему "Такой пароль уже есть - придумайте новый", поскольку тем самым мы открыли бы ему доступ к данным того пользователя, который прежде уже зарегистрировался с этим паролем.

Решить проблему позволяет использование login'а. Даже если придуманный пользователем login уже есть в базе данных, мы можем сообщить об этом пользователю и попросить его придумать новый login. Мы ничем не рискуем - ведь без пароля, зная только login, он все равно не получит доступа к данным. Когда же мы добьемся уникальности login'а, пароль, придуманный пользователем может быть любым - доступ к данным откроется по ключу "пароль - login".

Замечание 2. Иногда в системах регистрации данные заносятся в серверную базу в следующем порядке:

- сначала заносится вся персональная информация

- из БД извлекается значение id пользователя

- проверяется наличие в БД логина, пароля

- в случае отсутствия таковых редактируется строка для данного id

- в случае наличия логина и/или пароля в базе данных пользователю предлагается форма для ввода логина, пароля.

Этой схема имеет следующий недостаток. Может оказаться, что пользователь не доведет регистрацию до конца, оставив поля логина и пароля незаполненными. В то же время, в таблице серверной базы данных появится «ничья» строка.