Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Написать гостевую книгу
 
 автор: freddie_X   (17.05.2006 в 18:43)   письмо автору
 
 

Люди добрые, помогите пожалуйста написать гостевую. Мне нужна максимально простая и удобная гостевая книга! без наворотов, без администрирования, чтобы ввод и вывод сообщений были на одной странице, и сообщения хранились в отдельных файлах. Мне та книга, та что в учебнике на этом сайте, не подходит, для меня она сложновата.
Буду очень благодарен! :-)
И ещё! Форма добавления сообщения передает данные движку, он записывает данные отдельный файл, а потом переадресуется обратно на страницу гостевой книги. Как такое сделать?

   
 
 автор: CrazyAngel   (17.05.2006 в 18:49)   письмо автору
 
   для: freddie_X   (17.05.2006 в 18:43)
 

Если вам нужны готовые
вот тут найдете
http://www.softtime.ru/info/forums_gb.php

Если хотите сами то скажите, все объясню

   
 
 автор: Freddie_X   (17.05.2006 в 19:03)   письмо автору
 
   для: CrazyAngel   (17.05.2006 в 18:49)
 

Как раз таки для меня те гостевые сложноваты, я хотел бы сам сделать гостевую, очень простую, но сам! :-) Если не сложно, то объясни, пожалуйста! ;-)

   
 
 автор: CrazyAngel   (17.05.2006 в 19:37)   письмо автору
 
   для: Freddie_X   (17.05.2006 в 19:03)
 

Нус, какую будем делать ?
Файловую или с использованием MySQL?

   
 
 автор: Freddie_X   (17.05.2006 в 19:55)   письмо автору
 
   для: CrazyAngel   (17.05.2006 в 19:37)
 

Файловую, я говорил. Записи чтобы хранились в отдельных файлах или в одном? Как удобнее на твой взгляд?

   
 
 автор: Old Blind Dog   (17.05.2006 в 21:36)   письмо автору
 
   для: Freddie_X   (17.05.2006 в 19:55)
 

Наверное, в одном?
Просто Каждое сообщение - строчка "id + текст + имя отправителя + e-mail", например.

   
 
 автор: Freddie_X   (17.05.2006 в 22:04)   письмо автору
 
   для: Old Blind Dog   (17.05.2006 в 21:36)
 

Да, я тоже думаю, что лучше в одном хранить. Теперь нужна сама гостевая... :)

   
 
 автор: Trunk   (17.05.2006 в 22:43)   письмо автору
 
   для: Freddie_X   (17.05.2006 в 22:04)
 

Ня...
index.php

<HTML><TITLE>Гостевая Книга</TITLE></HTML>
<?php
  
//Гостевая книга на PHP
  //Работа на файлах
  //Данный скрипт осуществляет вывод сообщений.
  
$data "msgs.txt"//Файл в котором находятся сообщения
  
if (fopen($data,"at")) //Если получается открыть файл
  
{
    
$AllMsgArray array_reverse(file($data));
    for (
$i 0$i count($AllMsgArray); $i++)
    {
      
$MsgArray explode("|",$AllMsgArray[$i]);
      
$id_Msg    intval($MsgArray[0]);
      
$Time_Unix intval($MsgArray[1]);
      
$Author    $MsgArray[2];
      
$Msg       $MsgArray[3];
      
$Time date("j",$Time_Unix).".".date("m",$Time_Unix);
      
$Time .= " ".date("G",$Time_Unix).":".date("i",$Time_Unix);
      echo 
"<FIELDSET><b>$id_Msg : $Author ($Time)</b></FIELDSET>
      <FIELDSET>
$Msg</FIELDSET><br>";
    }
  }
  else  echo 
"Не удалось подключить файл";
  echo 
"<center><FIELDSET><form action=add.php method=post>
  Имя: <input name='author' type='text' value=''> <br>
  Сообщение: <br>
  <textarea name='msg' rows=10 cols=100%></textarea><br>
  <input type=submit value=Добавить>
  </form></FIELDSET>"
;


add.php

<?php
require_once("utils.php");
//Получаем данные от пользователя
$Author trim($_POST['author']);
$Msg trim($_POST['msg']);
//Обрезам до нужной длинны и обезвреживаем
$Author substr(var_render($Author),0,32);
$Msg substr(var_render($Msg),0,1024);

$data "msgs.txt";
if (
$FileData fopen($data,"at"))
{
  
$File file($data);
  
$i count($File) - 1;
  
$LastString $File[$i];
  
$LastString explode("|"$LastString);
  
$LastId $LastString[0];
  
$NewId $LastId 1;
  
$NewTime time();
  
$en chr(32);
  
$NewString "$NewId|$NewTime|$Author|$Msg";
  
$NewString .= $en;
  
fputs ($FileData,$NewString);
  
header("Location: index.php");
  exit();
}


utils.php

<?php
function var_render($per)
  {
    
$per stripslashes(trim($per));
    
$per mysql_escape_string($per);
    
$per str_replace("'","'",$per);
    
$per str_replace("|","",$per);
    return 
$per;
  }


msgs.txt

1|1143896413|Trunk|ggg 


Вроде когда-то работало...
Не ругать )

   
 
 автор: Freddie_X   (17.05.2006 в 23:28)   письмо автору
 
   для: Trunk   (17.05.2006 в 22:43)
 

А что значит trim() и var_render()?
П.С. и всё же, есль излишества, там не надо никаких обрезаний делать :-) и заменять я думаю ничего не надо. Мне важно понять принцип ввода - вывода сообщений, а остальное со временем сам сделаю! :)
Вот я как то пробовал выводить сообщения так:

<table width="100%" border="1">
    <?php $book=file("news.php"); 
$count=count($book);
    for(
$i=0;$i<$count;$i++){ 
$row=explode(':::',$book[$i]);?>
    <tr>
      <td width="10%" class="tekst"><?php echo "$row[1]";
 
?>
      <div align="left"></div></td>
      <td width="90%" class="tekst"><?php echo "row[0]";?>
      <div align="left"></div></td>
    </tr>
    <tr>
      <td colspan="2" class="tekst"><?php echo "row[2]";?>
      <div align="left"></div></td>
    </tr>
    <?php ?>
  </table>

Ещё приложил картинку, чтобы посмотреть как выглядит таблица.
Но здесь не получилось вывести всё полностью. Имя показывает, а время и сообщение не выводится.

   
 
 автор: cheops   (17.05.2006 в 23:48)   письмо автору
 
   для: Freddie_X   (17.05.2006 в 23:28)
 

trim() - функция, которая принимает в качестве аргумента строку и возвращает её, предварительно удалив начальные и конечные пробельные символы
var_render() - это пользовательская фунция - она определяется в файле utils.php.

   
 
 автор: Freddie_X   (18.05.2006 в 14:52)   письмо автору
 
   для: cheops   (17.05.2006 в 23:48)
 

Всё, вроде получилось! :) ТОлько у меня вопрос! Если в сообщении у меня присутствует перенос строки, тоесть был нажал Enter =), то сообщения отображаются некорректно, типа чьё-то сообщение стало на место имени или даты и наоборот! Как это можно исправить?
С уважением!

   
 
 автор: cheops   (18.05.2006 в 23:30)   письмо автору
 
   для: Freddie_X   (18.05.2006 в 14:52)
 

Пропускайте текст через функцию nl2br()
<?php echo nl2br(row[2]);?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования