Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Объединение условий
 
 автор: ecipuser   (13.07.2009 в 09:07)   письмо автору
 
 

Доброго дня! Гуру, снова нужна ваша помощь!
Нужно сделать форму отправки сообщения с антиботом.
В инете нашел статейки с описанием создания скрипта с защитным кодом

<?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>&nbsp;Отправить сообщение&nbsp;</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>"
;
}
?>

Подскажите, как это объеденить в единое целое?
Заранее благодарен

  Ответить  
 
 автор: Trianon   (13.07.2009 в 09:16)   письмо автору
 
   для: ecipuser   (13.07.2009 в 09:07)
 

сменить подход.

>Я нашел в инете рецепт яблочного штруделя.
>А еще имеется торт "Графские развалины".
>подскажите, как это объединить в пирожное "Тирамису"?

  Ответить  
 
 автор: ecipuser   (13.07.2009 в 09:56)   письмо автору
 
   для: Trianon   (13.07.2009 в 09:16)
 

А можно без преамбул?
Если нет желания помочь, так и не нужно...
Раз прошу помощи, значит не знаю или не понимаю.

  Ответить  
 
 автор: Trianon   (13.07.2009 в 10:05)   письмо автору
 
   для: ecipuser   (13.07.2009 в 09:56)
 

Почему же. У меня есть желание помочь. Я готов отвечать на Ваши вопросы относительно того, как устроены и работают эти фрагменты кода.

А без преамбул только в борделе.

  Ответить  
 
 автор: ecipuser   (13.07.2009 в 10:22)   письмо автору
 
   для: 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>&nbsp;Отправить сообщение&nbsp;</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>';

  Ответить  
 
 автор: Trianon   (13.07.2009 в 10:59)   письмо автору
 
   для: 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]

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования