Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 20:33   #11
SwiP
Форумчанин
 
Регистрация: 18.03.2009
Сообщений: 101
Плохо

Вот, вставил в один файл.
Теперь добавилась ещё одна проблема, после добавления сообщения, страница не обновляется, надо делать вручную. htmlspecialchars так и не работают

Код:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
  <title>Гостевуха</title>
</head>
<body>
<?php
//Вывод сообщений
$url="data.txt"; //путь до файл
$content = file($url);//Получаем массив строк

    for($i=0;$i<=count($content)-1;$i++) {//запускаем цикл
    list($name,$mail,$text) = explode("::",$content[$i]);//Разбиваем строку на нужные нам данные
    echo "<a href=\"mailto:$mail\">$name</a>
    <br/>$text<br/><br/>";//Выводим информацию в браузер
                                      }
//Форма для заполнения
?>
<br/>
<form name="" action="" method="post">
Имя:<input name="data[0]" type="text" value=""><br/>
e-mail:<input name="data[1]" type="text" value=""> <br/>
<textarea name="data[2]" rows=5 cols=20 wrap="off"></textarea>
<br/>
<input type="submit" name="add" value="добавить"> <br/>



<?php
$url="data.txt";
$name = htmlspecialchars(addslashes(substr($_POST['data']['0'],0,20)));
$mail = htmlspecialchars(addslashes(substr($_POST['data']['1'],0,30)));
$text = htmlspecialchars(addslashes(substr($_POST['data']['2'],0,300)));


if($_POST['add'] != '') {
    if($name != '') {
        if($mail !='') {
            if($text != '') {
            if(!file_exists($url)) {

   //Если файла не существует, создаем его, и записываем нулевое значение
$data = array($name,$mail,$text);
$data = implode("::",$_POST['data']);
$handle = fopen($url,"a");
fwrite($handle,$data."\n");
fclose($handle);
 echo "Добавлено";
}
else {
 //Если файл существует, то работаем с ним
$data = array($name,$mail,$text);
$data = implode("::",$_POST['data']);
$handle = fopen($url,"a");
fwrite($handle,$data."\n");
fclose($handle);
 echo "Добавлено";
 }
 }
 else {echo "Введите коментарий";}
 }
 else {echo "Введите мэйл";}
 }
 else { echo "Введите имя"; }
 }
 else {echo "<a href=\"index2.php\">назад</a>";  };
?>
</form>
</body>
</html>
SwiP вне форума Ответить с цитированием
Старый 25.03.2009, 20:55   #12
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
По умолчанию

Обновление странички работает
PHP код:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
  <title>Гостевуха</title>
</head>
<body>
<?php
//Вывод сообщений
$url="data.txt"//путь до файл
$content file($url);//Получаем массив строк

    
for($i=0;$i<=count($content)-1;$i++) {//запускаем цикл
    
list($name,$mail,$text) = explode("::",$content[$i]);//Разбиваем строку на нужные нам данные
    
echo "<a href=\"mailto:$mail\">$name</a>
    <br/>
$text<br/><br/>";//Выводим информацию в браузер
                                      
}
//Форма для заполнения
?>
<br/>
<form name="" action="" method="post">
Имя:<input name="data[0]" type="text" value=""><br/>
e-mail:<input name="data[1]" type="text" value=""> <br/>
<textarea name="data[2]" rows=5 cols=20 wrap="off"></textarea>
<br/>
<input type="submit" name="add" value="добавить"> <br/>



<?php
@$url="data.txt";
@
$name htmlspecialchars(addslashes(substr($_POST['data']['0'],0,20)));
@
$mail htmlspecialchars(addslashes(substr($_POST['data']['1'],0,30)));
@
$text htmlspecialchars(addslashes(substr($_POST['data']['2'],0,300)));


if(@
$_POST['add'] != '') {
    if(
$name != '') {
        if(
$mail !='') {
            if(
$text != '') {
            if(!
file_exists($url)) {

   
//Если файла не существует, создаем его, и записываем нулевое значение
$data = array($name,$mail,$text);
$data implode("::",$_POST['data']);
$handle fopen($url,"a");
fwrite($handle,$data."\n");
fclose($handle);
 echo 
"Добавлено";
}
else {
 
//Если файл существует, то работаем с ним
$data = array($name,$mail,$text);
$data implode("::",$_POST['data']);
$handle fopen($url,"a");
fwrite($handle,$data."\n");
fclose($handle);
 echo 
"Добавлено";
 
$s $_SERVER['HTTP_REFERER'];
echo
"<html><head>
<meta http-equiv='Refresh' content='2; URL=
$s'></head></html>";
 }
 }
 else {echo 
"Введите коментарий";}
 }
 else {echo 
"Введите мэйл";}
 }
 else { echo 
"Введите имя"; }
 }
 else {echo 
"<a href=\"index2.php\">назад</a>";  };
?>
</form>
</body>
</html>
С htmlspecialchars небыло времени разбираться.
p.s.: пиши лучше с БД,тебе эти действия нафиг не нужны будут,только почти зря учишь,я тоже так парился,теперь всё отлично,проблем в раз 5 больше стало))
Jensi вне форума Ответить с цитированием
Старый 25.03.2009, 21:13   #13
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от Jensi Посмотреть сообщение
С htmlspecialchars небыло времени разбираться.
p.s.: пиши лучше с БД,тебе эти действия нафиг не нужны будут,только почти зря учишь,я тоже так парился,теперь всё отлично,проблем в раз 5 больше стало))
А при чем тут БД? Нет разницы, какое движок для хранения данных использовать - БД или текстовый файл - htmlspecialchars все равно обычно нужен (по крайней мере в контексте треда сего).
SkyM@n вне форума Ответить с цитированием
Старый 26.03.2009, 00:48   #14
SwiP
Форумчанин
 
Регистрация: 18.03.2009
Сообщений: 101
По умолчанию

БД тоже будет, не всё сразу. Надо с этим разобраться.
Щас осталось только 2 проблемы, это сабж и ещё, если кто-то переведёт строку в поле для коммента, то и в самом файле она переведётся на одну вниз, а это уже неправильно. Может здесь надо сделать ещё один символ-разделитель? А то я запутался малёхо
SwiP вне форума Ответить с цитированием
Старый 26.03.2009, 03:05   #15
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
Подмигивание

Цитата:
Щас осталось только 2 проблемы, это сабж и ещё, если кто-то переведёт строку в поле для коммента, то и в самом файле она переведётся на одну вниз, а это уже неправильно. Может здесь надо сделать ещё один символ-разделитель? А то я запутался малёхо
А что собственно будет,если в файле тоже переведётся на следующую строку?
Цитата:
А при чем тут БД? Нет разницы, какое движок для хранения данных использовать - БД или текстовый файл - htmlspecialchars все равно обычно нужен (по крайней мере в контексте треда сего).
Да просто ведь гораздо легче и удобней хранить информацию в БД,а не в файлах,приделать удаление,ответы и т.д. можно легко)
SwiP, а если тебе чел скопирует текст на 10000 строк,что будешь потом делать,искать в файлике это всё?
Поставь strlen и делай проверку на кол-во символов,ещё как бы можно запретить писать через форму с помощью maxlengh или чёт такое,но лучше через PHP такое сделать.
p.s.: файлы уязвимы,почитай в нете информацию об этом
Jensi вне форума Ответить с цитированием
Старый 26.03.2009, 13:46   #16
SwiP
Форумчанин
 
Регистрация: 18.03.2009
Сообщений: 101
По умолчанию

Цитата:
А что собственно будет,если в файле тоже переведётся на следующую строку?
Всё то, что он написал на следующей строке, будет считаться уже новым комментом, при этом пустым, а то, что он написал - будет находится в имени ($name) нового коммента. Наверное здесь надо заменять перевод строки на тег <br>.
Или ещё вариант, в поле для коммента, вместо textarea применить input type="text", то есть будет всего одна строка, перевести не смогут, но это как-то коряво, так только в чатах делают.
Цитата:
Да просто ведь гораздо легче и удобней хранить информацию в БД,а не в файлах,приделать удаление,ответы и т.д. можно легко)
Ну я понимаю )) но от этого проблема с урезанием тегов не исчезнет..

Последний раз редактировалось SwiP; 26.03.2009 в 13:48.
SwiP вне форума Ответить с цитированием
Старый 26.03.2009, 17:52   #17
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
По умолчанию

))Дык,ещё капчу не забудь,а на счёт ентеров можно чёт придумать,только думать нужно
Jensi вне форума Ответить с цитированием
Старый 26.03.2009, 21:13   #18
SwiP
Форумчанин
 
Регистрация: 18.03.2009
Сообщений: 101
По умолчанию

Вообщем, разобрался я с этими траблами. Видимо проблема крылась здесь
@$name = htmlspecialchars(addslashes(substr( $_POST['data']['0'],0,20)));
Из-за этих корявых массивов ничего работать не хотело.
А перевод строки можно осуществить так:
Код:
  $text = ereg_replace ("
", "<br>", $text);
В итоге перевод строки будет записываться в файл как <br>

В общем всем спасибо за помощь, проблемы решены, теперь возьмусь за БД
SwiP вне форума Ответить с цитированием
Старый 26.03.2009, 22:13   #19
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

а еще можно так: ereg_replace("\r\n", "<br>", $name);
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума Ответить с цитированием
Старый 27.03.2009, 10:52   #20
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

еще есть Linux сервера, в которых снос ^M
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает тег align=right?valign работает а align нет! aviv HTML и CSS 5 21.01.2009 17:46
Проблема с UserForm. То работает, то НЕ работает Maxx Microsoft Office Excel 6 19.11.2008 14:51
не работает! RECREATOR Общие вопросы Delphi 6 29.11.2007 12:42
Не работает try except!!! Radost БД в Delphi 17 03.06.2007 11:07