Помогите разобраться с формой (PHP).

Автор Тема: Помогите разобраться с формой (PHP).  (Прочитано 4911 раз)

Оффлайн tabitsАвтор темы

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 1
  • Сообщений: 15
  • Карма: 0
  • Пол: Мужской
    • Просмотр профиля
    • Love Доктор

Оффлайн tabitsАвтор темы

  • Рекрут
  • *
Знающие люди, помогите разобраться с формой обратной связи.

Это HTML.
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.
Это PHP.

Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.
Заранее спасибо!


Оффлайн Старый

  • Бизнес оценка: (9, 100%)
  • Мастер
  • *****
  • СПАСИБО: 1703
  • Сообщений: 5526
  • Карма: 159
  • Ищу работу постоянную, удалённую с окладом.
  • Награды Более одной тысячи спасибо КМС поисковой оптимизации
    • Просмотр профиля

Оффлайн Старый

  • Мастер
  • *****
  • Доп. информация
    • Бизнес оценка: (9, 100%)
    • СПАСИБО: 1703
    • Сообщений: 5526
    • Карма: 159
    • Ищу работу постоянную, удалённую с окладом.
    • Награды Более одной тысячи спасибо КМС поисковой оптимизации
      • Просмотр профиля
Re: Помогите разобраться с формой (PHP).
« Ответ #1 : 25-06-2016, 22:36:48 »
Ну и?
У вас форма в HTML + открытие сессий в PHP.
Мы должны удивиться?  :)
Вопрос в чём? И дайте обработку формы.  :)

Оффлайн tabitsАвтор темы

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 1
  • Сообщений: 15
  • Карма: 0
  • Пол: Мужской
    • Просмотр профиля
    • Love Доктор

Оффлайн tabitsАвтор темы

  • Рекрут
  • *
Re: Помогите разобраться с формой (PHP).
« Ответ #2 : 26-06-2016, 12:18:58 »
Вопрос в том что не работает. Что такое обработчик?

Оффлайн Старый

  • Бизнес оценка: (9, 100%)
  • Мастер
  • *****
  • СПАСИБО: 1703
  • Сообщений: 5526
  • Карма: 159
  • Ищу работу постоянную, удалённую с окладом.
  • Награды Более одной тысячи спасибо КМС поисковой оптимизации
    • Просмотр профиля

Оффлайн Старый

  • Мастер
  • *****
  • Доп. информация
    • Бизнес оценка: (9, 100%)
    • СПАСИБО: 1703
    • Сообщений: 5526
    • Карма: 159
    • Ищу работу постоянную, удалённую с окладом.
    • Награды Более одной тысячи спасибо КМС поисковой оптимизации
      • Просмотр профиля
Re: Помогите разобраться с формой (PHP).
« Ответ #3 : 26-06-2016, 22:10:13 »
Обработчик это та часть кода, которая обрабатывает данные пришедшие из формы.
У вас, судя по приложенному коду, идёт экранирование символов переданных POST-запросом и их переименование. Потом вы пытаетесь эти переменные снова наполнить данными из сессии.
1. Сессия открыта, но данных там нет.
2. В начале переменные наполнены POST-запросом, а потом очищены, так как вы удаляете то, что было вначале, перезаписываете их. (В сессии нет данных == пустые переменные).
3. Как скрипт должен работать, если в коде нет действий? Они не прописаны.

После экранирования должны быть проверки (длинны, символов, соответствия написания мыла и т.д.).
И потом уже отправка письма, и если нужно, запись инфы в базу или файл.
В вашем коде этого нет.

Оффлайн tabitsАвтор темы

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 1
  • Сообщений: 15
  • Карма: 0
  • Пол: Мужской
    • Просмотр профиля
    • Love Доктор

Оффлайн tabitsАвтор темы

  • Рекрут
  • *
Re: Помогите разобраться с формой (PHP).
« Ответ #4 : 26-06-2016, 22:52:17 »
Вы имеете в виду код PHP? Проверки обязательны?
« Последнее редактирование: 26-06-2016, 22:57:41 от tabits »


Оффлайн Старый

  • Бизнес оценка: (9, 100%)
  • Мастер
  • *****
  • СПАСИБО: 1703
  • Сообщений: 5526
  • Карма: 159
  • Ищу работу постоянную, удалённую с окладом.
  • Награды Более одной тысячи спасибо КМС поисковой оптимизации
    • Просмотр профиля

Оффлайн Старый

  • Мастер
  • *****
  • Доп. информация
    • Бизнес оценка: (9, 100%)
    • СПАСИБО: 1703
    • Сообщений: 5526
    • Карма: 159
    • Ищу работу постоянную, удалённую с окладом.
    • Награды Более одной тысячи спасибо КМС поисковой оптимизации
      • Просмотр профиля
Re: Помогите разобраться с формой (PHP).
« Ответ #5 : 27-06-2016, 07:54:30 »
Да, PHP.
Проверки делаются для проверки соответствия полей. Пардон за тафтологию.  :)

Чтобы были обязательные поля, телефон содержал только цифры, мыло имело вид mail@mail.ru, вам не могли отправить пустое, очень короткое или очень длинное сообщение и т.д.

Оффлайн tabitsАвтор темы

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 1
  • Сообщений: 15
  • Карма: 0
  • Пол: Мужской
    • Просмотр профиля
    • Love Доктор

Оффлайн tabitsАвтор темы

  • Рекрут
  • *
Re: Помогите разобраться с формой (PHP).
« Ответ #6 : 01-07-2016, 02:15:43 »
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.<?php
#  В данном файле ничего менять не нужно, однако если у вас есть трудности с возвратом на указанную
#  в настройках страницу, то отредактируйте строку 100 как указано в коментарии.
error_reporting(0);
require("./config.inc");
require("./header.inc");
# Функции
  function formtohtml ($str) {
    if (get_magic_quotes_gpc()) {
    $str = stripslashes($str);
    }
  $str = trim($str);
  $str = htmlspecialchars ($str, ENT_QUOTES);
  $str = str_replace("|", "/", $str);
  $str = str_replace("\r", "", $str);
  $str = str_replace("\n", "<br>", $str);
  $str = eregi_replace("(<br>*){2,}","<br><br>",$str);
  $str = eregi_replace("[ ]{2,}", " ", $str);
  return $str;
  }
  function htmltoform ($str) {
  $str = str_replace("&amp;", "&", $str);
  $str = str_replace("&quot;", "\"", $str);
  $str = str_replace("'", "'", $str);
  $str = str_replace("&lt;", "<", $str);
  $str = str_replace("&gt;", ">", $str);
  $str = str_replace("<br>", "\r\n", $str);
  return $str;
  }
# Отправка
  if (!empty($_GET['a']) and $_GET['a'] == "m") {
  $var['fields'] = array("name"=>"имя", "email"=>"e-mail", "subject"=>"заголовок", "message"=>"текст сообщения");
  $notice['error'] = array();
    foreach ($var['fields'] as $key => $value) {
    if (empty($_POST[$key]) || (($_POST[$key] = formtohtml($_POST[$key])) == "0")) $notice['error'][] = $value;
    }
    if (empty($notice['error'])) {
      if (preg_match("/^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/",$_POST['email'])) {
      $t['c'] = file($config['recip_f']);
      $t['n'] = sizeof($t['c']);
        for ($i=0;$i<$t['n'];$i++) {
        $t['c'][$i] = explode("|",trim($t['c'][$i]));
        }
        if (!empty($_POST['recip']) and !empty($t['c'][$_POST['recip']-1])) {
        $var['recip_n'] = $t['c'][$_POST['recip']-1][1];
        $var['recip_e'] = $t['c'][$_POST['recip']-1][0];
          if (function_exists("imap_binary")) {
            function mail_convert($str) {
            $str = trim(imap_binary(addcslashes($str, "\"!@\\!@(!@)")));
            return $str;
            }
          $var['subj'] = "=?Windows-1251?B?".trim(imap_binary(htmltoform($_POST['subject'])))."?=";
          $var['header']  = "From: =?Windows-1251?B?".mail_convert(htmltoform($_POST['name']))."?= <".$_POST['email'].">\r\n";
          $var['header'] .= "MIME-Version: 1.0\r\n";
          $var['header'] .= "Content-Transfer-Encoding: 8bit\r\n";
          $var['header'] .= "Content-Type: text/plain; charset=\"Windows-1251\"\r\n";
          $var['header'] .= "X-Mailer: PHP v.".phpversion();
          $var['message']  = htmltoform($_POST['message']);
          if (!empty($config['features'])) $var['message'] .= "\r\n\r\n---------------------------------------\r\nIP адрес отправителя: ".$_SERVER['REMOTE_ADDR'];
          # Пытаемся послать сообщение
            if (mail("=?Windows-1251?B?".mail_convert(htmltoform($var['recip_n']))."?= <".$var['recip_e'].">",$var['subj'],$var['message'],$var['header'])) {
            $notice['ok'] = "Сообщение успешно отправлено";
            }
            else {
            $notice['error'] = "Системная ошибка - сбой функции &quot;mail&quot;";
            }
          }
          else {
          $notice['error'] = "Ошибка программы - недоступна функция &quot;imap_binary&quot;";
          }
        }
        else {
        $notice['error'] = "Ошибка настоек программы - неверный получатель";
        }
      }
      else {
      $notice['error'] = "Пожалуйста, проверьте правильность e-mail";
      }
    }
    else {
    $notice['error'] = "Пожалуйста, введите ".implode(", ",$notice['error']);
    }
  }
echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">\r\n";
  if (empty($notice['ok'])) {
  echo "<form name=\"SM\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."?a=m\">\r\n";
  }
  else {
  // ПРИ ВОЗНИКНОВЕНИИ ОШИБКИ "METHOD POST NOT ALLOWED" ИЗМЕНИТЬ "POST" на "GET"
  echo "<form name=\"GT\" method=\"POST\" action=\"".$config['url_path']."\">\r\n";
  }
# Сообщение о завершении / ошибке
  if (!empty($notice)) {
  echo "<tr><td align=\"center\">";
    if (!empty($notice['ok'])) {
    echo "<p><b><font color=\"#008000\">".$notice['ok']."!</font></b></p>";
    }
    elseif (!empty($notice['error'])) {
    echo "<p><b><font color=\"#800000\">".$notice['error']."!</font></b></p>";
    }
  echo "</td></tr>\r\n";
  }
# Вывод формы
  if (empty($notice['ok'])) {
  echo "<tr><td align=\"center\">";
  require("./form.inc");
  echo "</td></tr>\r\n";
  }
echo "<tr><td align=\"center\"><table border=\"0\" cellpadding=\"5\" cellspacing=\"0\"><tr><td>";
# Кнопки
  if (empty($notice['ok'])) {
  echo "<input type=\"submit\" value=\"Отправить\"></td>\r\n";
  echo "<td><input type=\"reset\" value=\"Сбросить\">\r\n";
  }
  else {
  echo "<input type=\"submit\" value=\"".$config['url_name']."\">\r\n";
  }
echo "</td></tr></table></td></tr>\r\n";
  if (!empty($config['copyshow'])) {
  echo "<tr><td align=\"center\"><font style=\"font-size: 10px;\">PHPSendMail v.2.1.2 © 2004</font></td></tr>\r\n";
  }
echo "</form></table>\r\n";
# Футер
require("./footer.inc");
?>

Оффлайн Старый

  • Бизнес оценка: (9, 100%)
  • Мастер
  • *****
  • СПАСИБО: 1703
  • Сообщений: 5526
  • Карма: 159
  • Ищу работу постоянную, удалённую с окладом.
  • Награды Более одной тысячи спасибо КМС поисковой оптимизации
    • Просмотр профиля

Оффлайн Старый

  • Мастер
  • *****
  • Доп. информация
    • Бизнес оценка: (9, 100%)
    • СПАСИБО: 1703
    • Сообщений: 5526
    • Карма: 159
    • Ищу работу постоянную, удалённую с окладом.
    • Награды Более одной тысячи спасибо КМС поисковой оптимизации
      • Просмотр профиля
Re: Помогите разобраться с формой (PHP).
« Ответ #7 : 01-07-2016, 13:00:14 »
Хм... Мудрёно написано.  :)
А как форма у вас не работает? Совсем? Что-нить говорит? Ошибки выдаются?

Если тишина полная, то в строке
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь. поставьте "1". Вот так:
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.И посмотрите, какие ошибки выдаются.
У вас там какой-то дизайн вписан, поэтому можете не увидеть сразу ошибки. Нажмите Ctrl+U и посмотрите в коде. Если выдаются ошибки, то там точно увидите.

Покажите, на что скрипт будет ругаться.

Оффлайн tabitsАвтор темы

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 1
  • Сообщений: 15
  • Карма: 0
  • Пол: Мужской
    • Просмотр профиля
    • Love Доктор

Оффлайн tabitsАвтор темы

  • Рекрут
  • *
Re: Помогите разобраться с формой (PHP).
« Ответ #8 : 01-07-2016, 13:30:37 »
Посмотрю, сейчас основная проблема в том что письма на приходят.


Оффлайн tabitsАвтор темы

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 1
  • Сообщений: 15
  • Карма: 0
  • Пол: Мужской
    • Просмотр профиля
    • Love Доктор

Оффлайн tabitsАвтор темы

  • Рекрут
  • *
Re: Помогите разобраться с формой (PHP).
« Ответ #9 : 08-07-2016, 01:28:08 »
А где лучше расположить: в отдельном файле PHP или в теле HTML?


 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
2191 Просмотров
Последний ответ 27-10-2010, 01:30:43
от ymniza
4 Ответов
1916 Просмотров
Последний ответ 17-08-2011, 19:21:26
от Lesia
3 Ответов
1815 Просмотров
Последний ответ 13-05-2012, 21:58:45
от realtor
5 Ответов
1968 Просмотров
Последний ответ 16-08-2012, 18:04:01
от uhab
7 Ответов
2232 Просмотров
Последний ответ 18-08-2012, 21:10:03
от realtor