Автор Тема: примитивная гостевая->сохранение сообщений  (Прочитано 10916 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BarT

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Здравствуйте, уважаемые!
Вопрос такой (конечно понимаю, что он, скорее всего дурацкий, но я только начинаю изучать РНР да и вообще программирование, поэтому такие вопросы имеют место быть...) нужно сделать нечто напоминающее примитивную гостевую, смысл такой:
на странице (forma.php) выводится:
многострочная форма, кнопка-submit и содержание текстового файла с сообщениями (файл наз. texta.txt).
В другом файле (template2.php) находится шаблон, создающий "ячейки" для сообщений.
Напр., если пользователь ввел:
"курсив
жирным
просто так"
то в результате сообщение выводится 2 раза:
первый так:
курсив жирным просто так /* без обработки курсив-курсивом, жирный соответственно - жирным и т.п. */
а второй раз так:
курсив
жирным
просто так
/*точно так как пользователь написал в форму со всеми html-ями и переводом строк, т.е. с дополнительной обработкой */
и все вроде бы нормально, не оптимизировано, страшновато, но работает...
...дальше выяснилось, что в файле со всеми сообщениями каждая строка должна быть наиболее близка к тому, что написал пользователь, т.е. быть только такой и никак по-другому:
jjjj\\r\\nhhhh /*с переводом строк, возвратом каретки и т.п., */
а у меня в файле с сообщениями получается так:

курсив

жирным

просто так


Нужно использовать функции
addcslashes() и stripcslashes(),
как выглядят эти функции, тоже понимаю  

$no_esc="bbb\\r\\naaa";
//заэкранировать строку с сообщением
$esc=addcslashes($no_esc, "\\r\\n");
//прочие действия...
//------в другом файле, где шаблон с ячейкой для сообщения---
//перед выводом текста вернуть обратно:
$final=stripcslashes($esc);
echo "$final";


Все бы ничего, но у меня нет соображений, куда написать addcslashes($message, "\\r\\n");

т.к. дело в том, что сообщение я беру из $_POST [\'text1\']=$message."\\n";

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

Может кто-нибудь подскажет и напишет примерчик для зеленого-зеленого чайника о том, как можно обработать сообщения, чтобы хранить их в файле ввиде:
курсив\\r\\nжирным\\r\\n просто так  ...?

Вот ссылка на то, что работает внешне почти как надо, но не подходит из-за неправильного хранения сообщений в файле:

http://bart.pochtamt.ru/PHP_work_forma.zip

очень благодарный зеленый чайник, желающий все-таки научиться и надеющийся на помощь людей знающих :)
Татьяна (aka BarT).
Верх упорства: набирать неверный
пароль, пока компьютер не  согласится.

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
В forma10.php вместо
$_POST[\'text2\']=str_replace("\\n","
",$_POST[\'text2\']);
напиши
$_POST[\'text2\']=preg_replace("/\\r\\n|\\n/","
",$_POST[\'text2\']);
и в файле texta.txt сообщение переданное из поля textarea будет храниться в одну строку.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Цитировать
Нужно использовать функции
addcslashes() и stripcslashes(),

кому нужно?
это ты такое задание себе придумала?
а почему именно эти, а не другие?
Цитировать
Все бы ничего, но у меня нет соображений, куда написать addcslashes

нету? и НЕ ПИШИ!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Цитировать
дальше выяснилось, что в файле со всеми сообщениями каждая строка должна быть наиболее близка к тому

как выяснилось?
кем выяснилось?

Танечка.
Давайте вы будете нас информировать не о своих неправильных выводах, а о тех собыытиях, из которых вы выводы сделали.

Я, конечно, понимаю, что проще сказать "мне надо!"
но, к сожалению, такие заявления выглядят очень глупо.

извините, конечно, но строка
Цитировать
RomikChef:
jjjj\\r\\nhhhh

не будет выглядеть так, как ввел пользователь, НИ в форме, ни в хтмл.
то есть, вообще ни при каком раскладе.
и поэтому все требования "надо" выглядят довольно бессмысленными.

Может быть, все-таки описать задачу не на уровне "мне нужна такая-то и такая-то бессмысленная функция, и я не знаю, куда ее впихнуть", а на уровне "я решаю такую-то задачу. такие-то данные. используются для того-то. как это сделать лучше?"
Спасибо

Оффлайн BarT

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RomikChef

По порядку:
Цитировать
RomikChef:
?
?
?


Нет, придумала не сама, препод дал такое задание и, после того, как я уже сделала все выложенное в архиве (извините, что в zip-е, просто пока больше было негде выложить по-нормальному), посмотрел и сказал, что он будет засчитывать только такое решение, где  будут применена ф-ция addcslashes() и если  в файле с записями сообщений строки будут исключительно в таком виде:
aaaa\\r\\ndddd\\r\\nzzzz
//это было первой сообщение
111\\r\\n222\\r\\n333
//а это уже было 2-ое
(так сделано у него, и следовательно, должно повториться у меня...),
по его словам, цитирую дословно, "поскольку символы переносов строк и табуляции у нас зарезервированы как специальные символы разметки данных, то мы должны обязательно их экранировать функцией addcslashes()",

что касается stripcslashes(), она раскавычивает строку, закавыченную функцией addcslashes().
Поэтому выбора других функций не дано.
Сама задача звучала так:
нужно:
-получить от пользователя строку (сообщение),
-добавить эту строку в файл,  
-считать файл в массив,
-обработать каждое сообщение так, чтобы каждое сообщение было в рамочке (код самой рамочки в отдельном файле),
-каждое сообщение выводить 2 раза (с обработкой и без обработки),
-исправить проблемы, возникающие про использовании