X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Как сделать форму обратной связи на сайте
Kolovrat_hb
Kolovrat_hb
Topic Starter сообщение 12.5.2012, 17:51; Ответить: Kolovrat_hb
Сообщение #1


По названию понятно что нужно сделать обратную связь, по сути я понял как она делается, но с PHP разобраться не могу.

Вот код страницы обратной связи (знаю что не хватает таких тегов как BODY. Их если не ошибаюсь не надо добавлять когда поключается инфа из определенного файлика через PHP):
<title>Обратная связь</title>
<center>
<font size=5 style="font-family: cursive">Передайте информацию или задайте вопрос</font><br><br>
<em>
Заполните текстовые поля соответствующей информацией и нажмите кнопку "Отправить"<br>
Мы прочитаем ваше письмо и постараемся ответить<br><br>
<form method="post" action="2.php/feedback.php">
Укажите ваше имя <br><input type="text" name="name" size="20" maxlength="30"><br><br>
Ваш контактный E-Mail адресс <br><input type="text" name="mail" size="20" maxlength="50"><br><br>
Краткая тема письма (не более 20-и символов) <br><input type="text" name="theme" size="20" maxlength="20"><br><br>
Ваша информация или вопрос: <br><textarea name="text" cols="50" rows="20"></textarea>
<br><br><input type="submit" name="send" value="Отправить">
</em>
</form>
</center>


Мысль такая:
1. Юзер заполняет форму на сайте и нажимает на кнопку отправить
2. Срабатывает PHP код который записывает данные из формы в файлик в виде переменных
3. Администратор открывает через другую страницу список файликов (жалоб) и нажатием на нужный рядом появляется инфа из этого файла (имя майл и т.д.)

Как это все будет я представляю. Единственная трудность это то что я не знаю PHP. Я нашул урок по этой теме но у меня как то все странно получается, долго объяснять что не так.

К вам просьба, если не сложно напишите код второго пункта, а я на наглядном примере сам разберусь и научусь

P.S. заранее благодарен
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
unfixed
unfixed
сообщение 12.5.2012, 22:45; Ответить: unfixed
Сообщение #2


Более того, теги <title> добавлять тоже не надо.

В упрощенном виде второй пункт выглядит так.
<?php

// Если срабатывает кнопка send
if (@$_POST['send']) {

    // Получаем данные формы
    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $theme = $_POST['theme'];
    $text = $_POST['text'];

    $string = $name."\n".
                  $mail."\n".
                  $theme."\n".
                  $text;

    // Название каждого файла — дата и время поступления сообщения
    $filename = date("d-m-Y H.i.s").'.txt';

    // Записываем каждое сообщение в файл
    $file = fopen($filename, 'w+');
    fwrite($file, $string);
    fclose($file);

}

?>


Только не стоит забывать обрабатывать полученные переменные функциями типа trim, htmlspecialchars. т.е. получится "$name = htmlspecialchars(trim( $_POST['name']));".

Переменные записываются в файл каждая с новой строки, поэтому потом будет удобно считывать их функцией file.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kolovrat_hb
Kolovrat_hb
Topic Starter сообщение 12.5.2012, 23:19; Ответить: Kolovrat_hb
Сообщение #3


огромнейшее спасибо =) вот такой вот вопросик =) я вот сидел сам пробовал сделать упрощенный вариант чтоб именно понять работу с файлами и написал эту вещь:
<?
$name = $_post['name'];
$mail = $_post['mail'];
$theme = $_post['theme'];
$text = $_post['text'];
$file = "Тема сообщения: ".$theme."/n Имя: ".$name."/n Майл: ".$mail."/n/n".$text;
$feed = fopen('counter.txt', 'w');
$test = fwrite($feed, $file);
if ($test) echo("Данные успешно занесены!"); else echo("ОШИБКА!!!");
fclose($feed);
?>



так вот, файл не создавался а проверка в конце срабатывала так как будто все записалось (ну в том смысле что выводилось сообщение "Данные успешно занесены!"). потом я еще попробовал переменную $file вывести после того сообщения и оказалось что в нее не вставились значения переменных $name $text и т.д.
не знаете ли почему так получилось?

и если не сложно, можно ли поподробней про "Только не стоит забывать обрабатывать полученные переменные функциями типа trim, htmlspecialchars. т.е. получится "$name = htmlspecialchars(trim( $_POST['name']));"."

P.S. попробовал сейчас вставить ваш код себе и он тоже не работает... просто не создает файлик =( может быть какие то базы данных не обновлены??? я пользуюсь программой openserver, недавно было какое то обновление и я его установил
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
unfixed
unfixed
сообщение 13.5.2012, 14:31; Ответить: unfixed
Сообщение #4


Переменные не передались, потому что глобальные переменные типа $_POST, $_GET, $_SERVER пишутся заглавным буквами. И, кстати, символ перевода строки "\n", а не "/n".

Может, с формой что-то не так? Вот весь код, который у меня работал:
<?php
error_reporting(E_ALL);
// Если срабатывает кнопка send
if (@$_POST['send']) {
        // Получаем данные формы
        $name  = $_POST['name'];
        $mail  = $_POST['mail'];
        $theme = $_POST['theme'];
        $text  = $_POST['text'];
        $string = $name."\n".
                  $mail."\n".
                  $theme."\n".
                  $text;
        // Название каждого файла — дата и время поступления сообщения
        $filename = date("d-m-Y H.i.s").'.txt';
        // Записываем каждое сообщение в файл
        $file = fopen($filename, 'w+');
                fwrite($file, $string);
                fclose($file);
}
?>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
        <input type="text" name="name" placeholder="name" />
        <input type="text" name="mail" placeholder="mail" />
        <input type="text" name="theme" placeholder="theme" />
        <input type="text" name="text" placeholder="text" />
        <input type="submit" name="send" />
</form>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kolovrat_hb
Kolovrat_hb
Topic Starter сообщение 13.5.2012, 15:11; Ответить: Kolovrat_hb
Сообщение #5


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

что значит это: error_reporting(E_ALL);

Все! Большое спасибо! Заработало! Теперь буду разбираться с кодом, попытаюсь понять почему до этого не работало и т.д.
все же просьба растолкуйте русским языком для чего error_reporting(E_ALL); . я нашел в нэте описание, но там как то не понятно
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 13.5.2012, 16:02; Ответить: yury_mw
Сообщение #6


что значит это: error_reporting(E_ALL);
error_reporting() — это функция обработки ошибок.
Конкретно команда
error_reporting(E_ALL);

указывает интерпретатору PHP сообщать обо всех ошибках в вашем коде и выводить все предупреждения, если соответствующие ошибки в коде обнаружатся.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kolovrat_hb
Kolovrat_hb
Topic Starter сообщение 13.5.2012, 16:49; Ответить: Kolovrat_hb
Сообщение #7


тоесть если эту комманду не поставить они не будут выводиться? но ведь если не ошибаюсь у меня выводились ошибки до этого

Я немного подправил PHP код, но вся суть осталась. Просто оформил как мне удобней будет. И переводы строки не работают. Гляньте скрипт пожалуйста:
<?php
error_reporting(E_ALL);
if (@$_POST['send'])
{
$name = $_POST['name'];
$mail = $_POST['mail'];
$theme = $_POST['theme'];
$text = $_POST['text'];
$string = "Имя: ".$name."n"."EMail: ".$mail."n"."Тема: ".$theme."nn".$text;
$filename = $theme." ".date("(d.m.Y H.i)").'.txt';
$file = fopen($filename, 'w+');
fwrite($file, $string);
fclose($file);
}
?>

Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 13.5.2012, 18:13; Ответить: yury_mw
Сообщение #8


тоесть если эту комманду не поставить они не будут выводиться? но ведь если не ошибаюсь у меня выводились ошибки до этого
Будут ли выводиться сообщения об ошибках и какие зависит от настроек PHP, команда error_reporting задает это в обход этих настроек.

И переводы строки не работают.
Переводы строк работают, но не для windows, который считает, что для новой строки одного символа новой строки "n" не достаточно и в добавок хочет еще символ возврата каретки "r".
Т.е. если хочется увидеть переводы строк в стандартном win-блокноте, используйте вместо "n" — "rn":
$string = "Имя: ".$name."rn"."EMail: ".$mail."rn"."Тема: ".$theme."rnrn".$text;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kolovrat_hb
Kolovrat_hb
Topic Starter сообщение 13.5.2012, 21:49; Ответить: Kolovrat_hb
Сообщение #9


Спасибо большое всем =) все работает =) но появился еще один вопрос :D как делать перенаправление на определенный адресс???
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kolovrat_hb
Kolovrat_hb
Topic Starter сообщение 13.5.2012, 22:10; Ответить: Kolovrat_hb
Сообщение #10


блин =) и еще одна проблемка :D думал это легко исправить будит, но не получилось ;) файл с данными создается в том же каталоге где находится php файл с кодом, а мне надо на один каталог раньше в другую папку. как мне это указать? пробовал двумя способами и не работает
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Сделать дорвей
2 tok24ua 896 Сегодня, 5:21
автор: c4p1t4l15t
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
2 rownong27 1116 26.3.2024, 14:13
автор: knezevolk
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
12 uahomka 2279 25.3.2024, 6:52
автор: Skyworker
Открытая тема (нет новых ответов) Как отозвать банковский платеж фрилансеру?
28 metvekot 3910 25.3.2024, 6:34
автор: Skyworker
Открытая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
23 freeax 3635 24.3.2024, 20:55
автор: Liudmila


 



RSS Текстовая версия Сейчас: 28.3.2024, 14:13
Дизайн