Приднестровская поддержка XOOPS
Создание формы регистрации пользователя
Рассмотрим форму регистрации пользователя с проверкой корректности введенных данных (листинг 73).
Листинг 73. Проверка данных на стороне клиента
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Регистрация пользователя</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript">
<!--
function f_submit() {
var name1 = document.getElementById("name1");
if (name1.value=="") {
window.alert("Введите имя");
name1.focus();
return false;
}
var fam1 = document.getElementById("fam1");
if (fam1.value=="") {
window.alert("Введите фамилию");
fam1.focus();
return false;
}
var age1 = document.getElementById("age1");
var p = /^[0-9]{1,3}$/;
if (!p.test(age1.value)) {
window.alert("Неверный возраст");
age1.focus();
return false;
}
var mail1 = document.getElementById("mail1");
p = /^[a-z0-9_\.\-]+@([a-z0-9\-]+\.)+[a-z]{2,6}$/i;
if (!p.test(mail1.value)) {
window.alert("Неверный адрес E-mail");
mail1.focus();
return false;
}
var pass1 = document.getElementById("pass1");
var pass2 = document.getElementById("pass2");
p = /^[a-z0-9_\.\-]{6,16}$/i;
if (!p.test(pass1.value)) {
window.alert("Неверный пароль");
pass1.focus();
return false;
}
else if (pass1.value != pass2.value) {
window.alert("Пароли должны совпадать");
pass1.focus();
return false;
}
return true;
}
//-->
</script>
</head>
<body>
<h2>Регистрация пользователя</h2>
<form action="test.php" method="POST" name="form1"
onsubmit="return f_submit();">
<div>
Имя:<br>
<input type="text" name="name1" id="name1"><br>
Фамилия:<br>
<input type="text" name="fam1" id="fam1"><br>
Возраст:<br>
<input type="text" name="age1" id="age1"><br>
E-mail:<br>
<input type="text" name="mail1" id="mail1"><br>
Пароль:<br>
<input type="password" name="pass1" id="pass1"><br>
Повторите пароль:<br>
<input type="password" name="pass2" id="pass2">
<br><br>
<input type="reset" value="Очистить">
<input type="submit" value="Отправить">
</div>
</form>
</body>
</html>
Итак, все данные проверены. Что же происходит после отправки данных формы? Давайте рассмотрим содержимое файла test.php (листинг 74).
Листинг 74. Проверка данных на стороне сервера
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Результаты регистрации</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<div>
<?php
if (!isset($_POST['name1'])) echo "Форма не отправлена";
else {
// Создаем короткие имена переменных
$name = (isset($_POST['name1'])) ? $_POST['name1'] : '';
$fam = (isset($_POST['fam1'])) ? $_POST['fam1'] : '';
$age = (isset($_POST['age1'])) ? (int)$_POST['age1'] : 0;
$mail = (isset($_POST['mail1'])) ? $_POST['mail1'] : '';
$pass1 = (isset($_POST['pass1'])) ? $_POST['pass1'] : '';
$pass2 = (isset($_POST['pass2'])) ? $_POST['pass2'] : '';
// Если "магические" кавычки включены, то удаляем слеши
if (get_magic_quotes_gpc()) {
$user = stripslashes($user);
$fam = stripslashes($fam);
$email = stripslashes($email);
$pass1 = stripslashes($pass1);
$pass2 = stripslashes($pass2);
}
$err = "";
if (strlen($name)>100 || strlen($name)<2) {
$err .= "Недопустимая длина поля 'Имя'.<br>";
}
if (strlen($fam)>100 || strlen($fam)<2) {
$err .= "Недопустимая длина поля 'Фамилия'.<br>";
}
if (!preg_match('/^[0-9]{1,3}$/s', $age) || $age==0) {
$err .= "Неверный возраст.<br>";
}
if (!preg_match('/^[a-z0-9_\.\-]+@([a-z0-9\-]+\.)+[a-z]{2,6}$/is', $mail)
|| strlen($mail)>70) {
$err .= "Неверный адрес E-mail.<br>";
}
if (!preg_match('/^[a-z0-9_\.\-]{6,16}$/is', $pass1)) {
$err .= "Неверный пароль.<br>";
}
else {
if ($pass1 != $pass2) {
$err .= "Пароли должны совпадать.<br>";
}
}
if ($err=="") { // Если ошибок нет
// Добавляем данные в базу данных и отправляем подтверждение на E-mail
echo "<b>Регистрация прошла успешно</b>";
}
else {
echo "<span style='color: red'>При заполнении формы были допущены ";
echo "следующие ошибки:</span><br><br>";
echo $err;
}
}
?>
</div>
</body>
</html>
Эта программа, написанная на РНР, очень напоминает программу на JavaScript. Как и в JavaScript, код программы может внедряться в HTML-документ. Только вместо открывающего тега <script> используется дескриптор <?php, а вместо закрывающего тега </script> — дескриптор ?>. Но главным отличием является то, что программа на РНР выполняется не на компьютере пользователя, а на Web-сервере.
Как видно из примера, все имена полей, заданные с помощью параметра name, доступны через переменную окружения $_post. Более того, если в файле конфигурации включена поддержка глобальных переменных, то все имена доступны как обычные переменные. Что же происходит дальше? Мы опять проверяем введенные данные... но зачем? Ведь мы уже проверили их с помощью JavaScript... Как уже говорилось ранее, любой пользователь может отключить JavaScript в настройках Web-браузера. Поэтому проверять данные нужно обязательно. Так как файл test.php выполняется не на компьютере пользователя, а на сервере, то проверка будет выполнена независимо от программного обеспечения компьютера пользователя, и отключить ее пользователь не сможет.
При успешной проверке данные обычно добавляются в базу данных, и отправляется письмо с подтверждением регистрации.
Что будет, если сохранить файл test.php на локальном компьютере, а затем отправить данные формы этому файлу? Вместо надписи "Регистрация прошла успешно" мы получим нечто подобное:
Иными словами, для выполнения программы, написанной на языке РНР, необходимо специальное программное обеспечение.
Отправитель | Нити |
---|
9 пользователь(ей) активно (3 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 9 далее... |