Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
qqww1
0 / 0 / 1
Регистрация: 19.01.2017
Сообщений: 7
1

Публикация сообщений через форму PHP

19.01.2017, 13:21. Просмотров 408. Ответов 2
Метки нет (Все метки)

Добрый день. Есть код PHP. Он создает и выводит отзывы в файл.txt и отправляет на почту публикуя при этом на сайте их.

Оригинальная форма для отправки выглядит(с ней PHP работает)

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<form method="post">
  <label>Как к Вам обращаться:</label>
  <input type='text' name='name' required/>
  <label>Email (не публикуется):</label>
  <input type='email' name='email' required/>
  <label>Oтзыв:</label>
  <textarea name='content' required rows="5"></textarea>
  <input type='submit' value='публикация'/>
</form>
 
<dl>
<? echo $dl; ?> <!-- PHP -->
</dl>
Моя переделаная форма дожна быть так(без емейла):


HTML5
1
2
3
4
5
6
7
<form method="post" action="comments.php">
  <label> Имя:</label><br />
  <input type='text' name='name' required/><br /><br />
  <label>Сообщение</label><br />
  <textarea name='content' required rows="3" cols="28"></textarea><br /><br />
  <input type='submit' value='публикация'/>
</form>
Подкорректируйте пожалуйста мастера веб програмированния что бы отображалось при публикации только Дата сообщения, Имя, Текст - в таком же порядке


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?
// занести в массив значение полей
$z = array(
  1 => $_POST['name'],
  2 => $_POST['email'],
  3 => $_POST['content']
  4 => date("m.d.Y H:i")
);
$dl = '';
 
if($z[1] && $z[2] && $z[3]){
 
  mail("name@yandex.ru", "заполнена форма site.ru", $z[1] . "\n" . $z[2] . "\n" . $z[3]); // сообщение на ваш email о новом отзыве
 
  if(strpos($z[3], 'http://') === false){ // если в тексте отзыва нет http://
    $fp = fopen("comments.txt", "a+"); // режим записи
    $mytext = "<dt><a href='" . $z[2] . "'>" . $z[1] . "</a><dd><span>" . $z[4] . "</span> " . $z[3] ;
    $save = fwrite($fp, $mytext); // запись в файл
    fclose($fp); // закрытие файла
    Header("Location: ".$_SERVER['PHP_SELF']); // обновить страницу; обновлённая версия содержит опубликованный комментарий
    exit;
  } else { // если в тексте есть http://
    $dl = '<b style="color: red;">Ваш отзыв будет опубликован после проверки автором сайта</b>'; // показан этот текст
  }
 
} else { 
 
  $fp = @fopen("comments.txt", "r"); // режим чтения
  if ($fp) {
    while (!feof($fp)) {
      $dl .= fgetss($fp, 8000, "<dl>,<dt>,<dd>,<span>"); // <dl>,<dt>,<dd> - это список тегов, разрешённых для публикации
    }
  }
  fclose($fp);
 
} 
?>
После моих манипуляций по какой-то причине файл .тхт с сообщениями создается но на сайте не отображаются.

Добавлено через 42 минуты
Частично вроде разобрался. Осталось понять как поменять местами порядок вывода Дата, Имя, текст
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2017, 13:21
Ответы с готовыми решениями:

Публикация статей через админ панель на php
Привет. Допустим, есть на сайте, который написан на Php, админ панель, откуда возожна публикация...

Отправка сообщений через PHP скрипт.
Здраствуйте всем. Нигде не могу найти информации, как отправлять сообщения на какой-либо сайт через...

Отправка сообщений на почту с PHP формы через пхп исполнитель
Доброй ночи форумчане. Не знаю , пишу ли я по теме или нет,но суть что использую PHP. В общем, в...

Отправка сообщений через форму на телефон
Можно ли как-то отправлять сообщения с приложения на телефон? В инете нужной информации не нашел.

2
Пифагор
Модератор
1631 / 1298 / 639
Регистрация: 10.01.2015
Сообщений: 4,283
19.01.2017, 13:23 2
Цитата Сообщение от qqww1 Посмотреть сообщение
что бы отображалось при публикации только Дата сообщения, Имя, Текст - в таком же порядке
Ну, пропишите в строке 17 $z[4], $z[1] и $z[3]. $z[2] не надо, ибо это почта.
Цитата Сообщение от qqww1 Посмотреть сообщение
После моих манипуляций по какой-то причине файл .тхт с сообщениями создается но на сайте не отображаются.
Так инфу надо либо считать из файла, либо сразу выводить на сайт.
1
qqww1
0 / 0 / 1
Регистрация: 19.01.2017
Сообщений: 7
19.01.2017, 13:37  [ТС] 3
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?
// занести в массив значение полей
$z = array(
  1 => $_POST['name'],
  2 => $_POST['content'],
  3 => date("m.d.Y H:i")
);
$dl = '';
 
if($z[1] && $z[2]){
 
  mail("name@yandex.ru", "заполнена форма site.ru", $z[1] . "\n" . $z[2] . "\n" . $z[3]); // сообщение на ваш email о новом отзыве
 
  if(strpos($z[2], 'http://') === false){ // если в тексте отзыва нет http://
    $fp = fopen("comments.txt", "a+"); // режим записи
    $mytext = "<dt> . $z[1] . <dd><span>" . $z[3] . "</span> " . $z[2] ;
    $save = fwrite($fp, $mytext); // запись в файл
    fclose($fp); // закрытие файла
    Header("Location: ".$_SERVER['PHP_SELF']); // обновить страницу; обновлённая версия содержит опубликованный комментарий
    exit;
  } else { // если в тексте есть http://
    $dl = '<b style="color: red;">Ваш отзыв будет опубликован после проверки автором сайта</b>'; // показан этот текст
  }
 
} else { 
 
  $fp = @fopen("comments.txt", "r"); // режим чтения
  if ($fp) {
    while (!feof($fp)) {
      $dl .= fgetss($fp, 8000, "<dl>,<dt>,<dd>,<span>"); // <dl>,<dt>,<dd> - это список тегов, разрешённых для публикации
    }
  }
  fclose($fp);
 
}
?>

Пифагор спасибо за ответ. Вот подкорректировал, сообщения выводятся после отправки на сайте под формой. Если коротко хоть и немного кривовато С одной страницы после нажатия на отправить, идет переход на страницу PHP с этим кодом и на ней отображается отправленный текст.

Добавлено через 11 минут
Все. Вопрос решен, осталось под себя доработать, если кому понадобится:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
// занести в массив значение полей
$z = array(
  1 => $_POST['name'],
  2 => $_POST['content'],
  3 => date("m.d.Y H:i")
);
$dl = '';
 
if($z[1] && $z[2]){
 
  mail("name@yandex.ru", "заполнена форма site.ru", $z[1] . "\n" . $z[2] . "\n" . $z[3]); // сообщение на ваш email о новом отзыве
 
  if(strpos($z[2], 'http://') === false){ // если в тексте отзыва нет http://
    $fp = fopen("comments.txt", "a+"); // режим записи
    $mytext = "<dt> . $z[3] . <dd><span>" . $z[1] . "</span> " . $z[2] ;
    $save = fwrite($fp, $mytext); // запись в файл
    fclose($fp); // закрытие файла
    Header("Location: ".$_SERVER['PHP_SELF']); // обновить страницу; обновлённая версия содержит опубликованный комментарий
    exit;
  } else { // если в тексте есть http://
    $dl = '<b style="color: red;">Ваш отзыв будет опубликован после проверки автором сайта</b>'; // показан этот текст
  }
 
} else { 
 
  $fp = @fopen("comments.txt", "r"); // режим чтения
  if ($fp) {
    while (!feof($fp)) {
      $dl .= fgetss($fp, 8000, "<dl>,<dt>,<dd>,<span>"); // <dl>,<dt>,<dd> - это список тегов, разрешённых для публикации
    }
  }
  fclose($fp);
 
} 
?>
0
19.01.2017, 13:37
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2017, 13:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Много сообщений через форму обратной связи
Ситуация такая. Посетитель заполняет форму обратной связи, а затем начинает быстро-быстро щёлкать...

Php и добавление в базу данных через форму - PHP БД
Привет. Есть вопрос не могу понять почему данные не добавляются в таблицу. вроде все верно. ...

Ошибка при отправке сообщений на емайл через php
Здравствуйте! Начал разбираться как отправлять на электронный адрес письма с сайта, и столкнулся с...

Добавление в бд через форму PHP
Выводит эту ошибку прошу помощи ,если вам не сложно Warning: mysql_query() expects parameter 2 to...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.