|
|
|
| При создании формы регистрации на сайте, используется HTML-форма, созданная с помощью SoftTime Framework.
<div class="registr">
Хотите получать рассылки?
Зарегистрируйтесь на сайте
<?php
$text = "Поля, отмеченные звёздочкой *, являются
обязательными к заполнению";
$form_comment = new field_paragraph($text);
$fam = new field_text("fam",
"Ник",
true,
htmlspecialchars($_REQUEST['fam'], ENT_QUOTES),
"",
16);
$email = new field_text_email("email",
"E-mail",
true,
htmlspecialchars ($_REQUEST['email'], ENT_QUOTES),
"",
16);
$form = new form(array("form_comment" => $form_comment,
"fam" => $fam,
"email" => $email),
"Регистрация",
"main_txt",
"",
"in_input");
// Обработчик HTML-формы
if(!empty($_POST))
{
// Проверяем корректность заполнения HTML-формы
// и обрабатываем текстовые поля
$error = $form->check();
// Проверяем не зарегистрирован ли пользователь
// с аналогичным именем ранее
$query = "SELECT COUNT(*) FROM $tbl_register
WHERE name = '{$form->fields[fam]->value}'";
$usr = mysql_query($query);
if(!$usr)
{
throw new ExceptionMySQL(mysql_error(),
$query,
"Ошибка добавления нового пользователя");
}
if(mysql_result($usr, 0))
{
$error[] = "Пользователь с таким именем уже существует";
}
if(empty($error))
{
// Формируем SQL-запрос на добавление позиции
$query = "INSERT INTO $tbl_register
VALUES (NULL,
'{$form->fields[fam]->value}',
'{$form->fields[email]->value}',
'unblock',
NOW(),
NOW())";
if(!mysql_query($query))
{
throw new ExceptionMySQL(mysql_error(),
$query,
"Ошибка добавления
нового пользователя");
}
// Вход на сайт
$_SESSION['fam'] = $form->fields['fam']->value;
$_SESSION['id_user'] = mysql_insert_id();
// Осуществляем редирект на страницу, сообщающую
// об успешной регистрации
header("Location: register_success.php");
//Отправляем содержимое буфера вывода клиенту
ob_end_flush ();
exit();
}
}
// Выводим сообщения об ошибках если они имеются
if(!empty($error))
{
echo "<br>";
foreach($error as $err)
{
echo "<span style=\"color:red\" class=main_txt>$err</span><br>";
}
}
// Выводим HTML-форму
$form->print_form();
?>
</div>
|
Каким образом вставть в форму капчу. Какой класс для этого подходит.
Подскажите варианты, если это имеют место. | |
|
|
|
|
|
|
|
для: sevidi
(28.02.2011 в 16:51)
| | В промышленном варианте FrameWork имеется класс field_image, я не уверен, что он присутствует в учебном варианте. Посмотрите, есть ли у вас такой класс? | |
|
|
|
|
|
|
|
для: cheops
(28.02.2011 в 16:55)
| | Такого класса у меня нет. Подскажите, где его можно найти? | |
|
|
|
|
 228.1 Кб |
|
|
для: sevidi
(28.02.2011 в 16:59)
| | Для работы капчи необходимо, чтобы на страницах, где она используется была инициализирована сессия, так как код, передается через неё. Во вложении находится скрипт protect.php - генерирующий капчу, папка со шрифтами fonts, нужная для работы protect.php, файл include/include.protect.php который генерирует код и помещает его в сессию при первом обращении к форме. В папке class/class.field.image.php находится класс капчи (его нужно прописать наряду с другими классами в config/class.config.php), кроме того, чтобы он успешно работал, необходимо, в классе class.forms.php добавить case-обработчик, что-то вроде
<?php
case "image":
// Кнопка-изображение
$result .= "<tr>
<td width='120' nowrap='nowrap' class='fst' valign='top'> </td>
<td valign='top' class='snd'>
<p id='id_protect'><img src='protect.php' border='0' alt='".msg("Введите защитный код")."' /></p>
<p id='id_protect_refresh' class='main_txt_lnk' style='cursor:hand; margin: 0px; padding: 0px;'>".msg("Обновить код")."</p>
</td>
</tr>\n";
$res .= "<tr><td class='fst'>$caption:</td><td class='snd'>$tag</td></tr>\n";
break;
?>
|
| |
|
|
|