|
|
|
| Доброго дня! Гуру, снова нужна ваша помощь!
Нужно сделать форму отправки сообщения с антиботом.
В инете нашел статейки с описанием создания скрипта с защитным кодом
<?php
// Инициируем сессию
session_start();
if(isset($_POST['code']) && isset($_SESSION['code']))
{
if(strtolower($_POST['code']) == $_SESSION['code'])
echo '<font color="green">Защитный код верен!</font>';
else
echo '<font color="red">Неверный защитный код!</font>';
}
else
{
?>
<form method="post">
<img src="img.php" border="0" alt="Введите защитный код"><br>
<input type="text" name="code"><br>
<input type="submit" value="Ввести">
</form>
<?php
}
?>
|
И есть вот такой скрипт отправки сообщения:
<?php
if(isset($_POST['code'])&& isset($_SESSION['code'])
{
if(strtolower($_POST['code']) == $_SESSION['code'])
if (isset($_POST['act'])&& $_POST['act']=='act'){
$name=$_POST['name'];
$email=$_POST['email'];
$tema = $_POST['tema'];
$mes=$_POST['mes'];
$to = "xxx@xxx.ru";
$date=date('d M Y, H:i:s');
$str=$date."\nВам Пишет ".$name." Его Email ".$email."\n".$mes;
$m=@mail( $to, $tema, $str, "From: Сообщение с сайта www.example.ru");
if(!$m)exit("<center>Ошибка! Повторите попытку позже!<br><br>
<INPUT TYPE='button' VALUE='НАЗАД' onClick='history.go(-1)'>");else
exit("<center>Ваше письмо отправлено!<br><br>
<INPUT TYPE='button' VALUE='НАЗАД' onClick='history.go(-1)'>");
}else{
echo "<table width='100%' cellspacing='0' class='forumline'><tr><td colspan ='1' class='row-header'><span> Отправить сообщение </span></td></tr><tr class='row2'><td class='row'>
<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr valign='top' align='center'><td width='100%'>";
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<table width="200" border="0" class="content">
<tr>
<td>Имя:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Тема:</td>
<td><input type="text" name="tema"></td>
</tr>
<tr>
<td>Текст сообщения:</td>
<td><textarea name="mes" rows=5 cols=20 ></textarea></td>
</tr>
<tr>
<td>Введите код:</td>
<td><img src="img.php" border="0" alt="Введите защитный код"><br />
<input type="text" name="code" />
</td>
</tr>
<tr>
<td>
<input type="hidden" name="act" value="act">
<input type="submit" name="submit" value="Отправить"></td>
<td><input type="reset" name="reset" value="Очистить"></td>
</tr>
</table>
</form>
<?php
echo "</td></tr></table>
</td></tr>
</table>";
}
?>
|
Подскажите, как это объеденить в единое целое?
Заранее благодарен | |
|
|
|
|
|
|
|
для: ecipuser
(13.07.2009 в 09:07)
| | сменить подход.
>Я нашел в инете рецепт яблочного штруделя.
>А еще имеется торт "Графские развалины".
>подскажите, как это объединить в пирожное "Тирамису"? | |
|
|
|
|
|
|
|
для: Trianon
(13.07.2009 в 09:16)
| | А можно без преамбул?
Если нет желания помочь, так и не нужно...
Раз прошу помощи, значит не знаю или не понимаю. | |
|
|
|
|
|
|
|
для: ecipuser
(13.07.2009 в 09:56)
| | Почему же. У меня есть желание помочь. Я готов отвечать на Ваши вопросы относительно того, как устроены и работают эти фрагменты кода.
А без преамбул только в борделе. | |
|
|
|
|
|
|
|
для: Trianon
(13.07.2009 в 10:05)
| | Ну то что весь код проверки задается с помощью условного оператора - это мне понятно.
но ни как в толк не возьму. как проверку защитного кода добавть в в форму сообщения.
Можно конечно сделать и так:
<?php
if (isset($_POST['act'])&& $_POST['act']=='act'){
$name=$_POST['name'];
$email=$_POST['email'];
$tema = $_POST['tema'];
$mes=$_POST['mes'];
$to = "di-mars@di-mars.ru";
$date=date('d M Y, H:i:s');
$str=$date."\nВам Пишет ".$name." Его Email ".$email."\n".$mes;
$m=@mail( $to, $tema, $str, "From: Сообщение с сайта www.di-mars.ru");
if(!$m)exit("<center>Ошибка! Повторите попытку позже!<br><br>
<INPUT TYPE='button' VALUE='НАЗАД' onClick='history.go(-1)'>");else
exit("<center>Ваше письмо отправлено!<br><br>
<INPUT TYPE='button' VALUE='НАЗАД' onClick='history.go(-1)'>");
}else{
echo "<table width='100%' cellspacing='0' class='forumline'><tr><td colspan ='1' class='row-header'><span> Отправить сообщение </span></td></tr><tr class='row2'><td class='row'>
<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr valign='top' align='center'><td width='100%'>";
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<table width="200" border="0" class="content">
<tr>
<td>Имя:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Тема:</td>
<td><input type="text" name="tema"></td>
</tr>
<tr>
<td>Текст сообщения:</td>
<td><textarea name="mes" rows=5 cols=20 ></textarea></td>
</tr>
<tr>
<td>Введите код:</td>
<td>
<?php
if(isset($_POST['code']) && isset($_SESSION['code']))
{
if(strtolower($_POST['code']) == $_SESSION['code'])
echo '<font color="green">Защитный код верен!</font>';
else
echo '<font color="red">Неверный защитный код!</font>';
}
else
{
?>
<img src="1.php" border="0" alt="Введите защитный код"><br>
<input type="text" name="code">
</td>
</tr>
<tr>
<td>
<input type="hidden" name="act" value="act">
<input type="submit" name="submit" value="Отправить"></td>
<td><input type="reset" name="reset" value="Очистить"></td>
</tr>
</table>
<? } ?>
</form>
<?php
echo "</td></tr></table>
</td></tr>
</table>";
}
?>
|
но будет ли это правильно?
и как быть с
echo '<font color="green">Защитный код верен!</font>';
|
| |
|
|
|
|
|
|
|
для: ecipuser
(13.07.2009 в 10:22)
| | проверрку защитного кода добавляют не в саму форму, а в код обработки данных этой формы.
сейчас у Вас под условием оказывается кусок формы и кусок таблицы.
В предыдущем варианте было более предсказуемо и естественно.
<?php
if(isset($_POST['code'])&& isset($_SESSION['code'])
{
if(strtolower($_POST['code']) == $_SESSION['code'])
if (isset($_POST['act'])&& $_POST['act']=='act'){
$name=$_POST['name'];
|
Единственное, на что Вы похоже не обратили внимания, так это на то, что этот самый код кто-то должен сгенерировать, и в этот самый элемент сессии $_SESSION['code'] его поместить.
В первом примере (из статьи) судя по строке <img src="img.php" ... > этим занимался скрипт img.php, который Вы нигде не приводите.
[Horisontal scrolling ЛАП on] | |
|
|
|