Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Помогите, пожалуйста, написать прототип гостевой книги!

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
Kate




Зарегистрирован: 31.08.2008
Сообщения: 2

СообщениеДобавлено: Вс Авг 31, 2008 5:41 pm    Заголовок сообщения: Помогите, пожалуйста, написать прототип гостевой книги!
Ответить с цитатой

Здравствуйте, Денис!

Помогите, пожалуйста, написать прототип гостевой книги!
Я воспользовалась сценарием из Вашей книги PHP5 в теории и на практике, самоучитель.
При отправке данных ничего не отправляется и не отображается.


Код:
<?
echo "<html><head><title>guestbook</title></head></html><body>";

$file_gb="./gbook/gb.txt";
$file_tmp="./gbook/gb_tmp.txt";
$Max=50;

function view()
{
 $Messages=file($file_gb);
 echo "<p><table width=100%>";
 $i=0;
 
 for($i=$last; $i<count($Messages); $i++) echo "<tr><td>$Messages[$i]</td></tr>";
 
 }
 
 if (!isset($Post))
 {
 echo "<table width=100% border=1";
 echo "<tr><td>New Message<form method=post action=$SCRIPT_NAME>";
 echo "<textarea name=mes cols=30 rows=3 wrap=virtual></textarea>
 <br>
 <br>
 <input type=text name=mes>
 <br>
 <br>
 <input name=radio_button type=radio value=rb1 checked>
  Radio button 1
 <input name=radio_button type=radio value=rb2 >
  Radio button 2
 <br>
 <br>
 <input name=ch_box1 type=checkbox value=chb1 checked>
  Check box 1
 <input name=ch_box2 type=checkbox value=chb2 >
  Check box 2
 <br>
 <br>
  <input type=submit name=Post> </td></tr>";
 echo "</table></form>";
 
 view();
 }
 else
 {
 if(file_exists($file_tmp)) die("fatal error!");
 if(copy($file_gb, $file_tmp))
 {
  if($w=fopen($file_gb, "w"))
   {
    fwrite($w,"[".date("d.m.Y. H:i:s")."]". strip_tags($mes)."\n");
   
   if(!$r = fopen($file_tmp,"r")) die("can't");
   
   while($mes=fgets($r,10240))
   {
   fputs($w,$mes);
   }
   fclose($r);
   fclose($w);
   unlink($file_temp);
   }
}
echo "Message has been submitted succesfully!";
view();
}
?>
   


+ ещё нужна проверка данных, отправленных пользователем;
возможность добавления, просмотра и удаления сообщений пользователем (как при удачном добавлении, так и при удалении сообщения, должно выводиться уведомление об этом с помощью библиотеки JS HighSlide)

Помогите, пожалуйста, если у Вас есть время...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Вс Авг 31, 2008 6:27 pm    Заголовок сообщения:
Ответить с цитатой

Можешь скачать гостевую книгу работающую с MySQL

http://dkws.org.ua/mybooks/gb.rar

Если не разберешься, как ее установить, то я уже завтра напишу подробнее
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Kate




Зарегистрирован: 31.08.2008
Сообщения: 2

СообщениеДобавлено: Вс Авг 31, 2008 7:58 pm    Заголовок сообщения:
Ответить с цитатой

Спасибо, den!
Только в этом архиве нет файла config.php!!
Этот файл необходим, для проверки правильности вводимых данных.
Дело в том, что я совсем плохо разбираюсь с PHP... и это задание на самом деле, поэтому от заданных условий, приведённых мной в предыдущем сообщении, отступить никак нельзя(
Мне не к кому больше обратиться...Если Вы сможете помочь, хотя бы тот сценарий объяснить, почему сообщения не отобразить...буду очень благодарна Вам!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alexander _shaman




Зарегистрирован: 01.09.2008
Сообщения: 3
Откуда: murmansk

СообщениеДобавлено: Пн Сен 01, 2008 12:43 am    Заголовок сообщения:
Ответить с цитатой

Короче я сам ламер, и старательно пытаюсь это исправить. Короче под твой код пишу комментарий. Это будет для меня хорошая тренировка знаний.


<?
echo "<html><head><title>guestbook</title></head></html><body>"; // отобразить на экране html-скрипт с надписью Guestbook!

$file_gb="./gbook/gb.txt"; // это понятно. пусть к базе данных из файла
$file_tmp="./gbook/gb_tmp.txt"; //временное хранилище
$Max=50; //максимальное количество - 5

function view() // функция показа
{
$Messages=file($file_gb); //ссылка на файл с данными
echo "<p><table width=100%>"; // создаётся таблица
$i=0; // изначально данная переменная имеет значение 0

for($i=$last; $i<count($Messages); $i++) echo // для сообщений с
// первой по последнюю поочереди
"<tr><td>$Messages[$i]</td></tr>"; // выводить их на экран (простите
// мне мой нерусский Smile)

}

if (!isset($Post)) // если переменная $post не установлена (логично предположить, что это название сообщения или что то типа того),
{
echo "<table width=100% border=1"; // то открыть табло
echo "<tr><td>New Message<form method=post // надпись и кнопочка
action=$SCRIPT_NAME>"; // результат нажатия кнопочки присваивается переменной $script_name
echo "<textarea name=mes cols=30 rows=3 wrap=virtual></textarea> // создаётся поле для текста
<br>
<br>
<input type=text name=mes>
<br>
<br>
<input name=radio_button type=radio value=rb1 checked>
Radio button 1 // лучше так не пиши на всякий случай
<input name=radio_button type=radio value=rb2 >
Radio button 2 // это х з что за радио такое, короче это радио ))
<br>
<br>
<input name=ch_box1 type=checkbox value=chb1 checked>
Check box 1 // такое в скриптах писать вообще нельзя.
<input name=ch_box2 type=checkbox value=chb2 > // это две строчки для ввода данных
Check box 2 // такое в скриптах писать вообще нельзя.
<br>
<br>
<input type=submit name=Post> </td></tr>"; // тут у тебя косяк. не post, а $perem->post; подробнее внизу напишу.
echo "</table></form>";

view(); // показать
}
else // иначе
{
if(file_exists($file_tmp)) die("fatal error!"); // если временное файло существует (true), то выйти с сообщением об ошибке
if(copy($file_gb, $file_tmp)) // если происходит копирование из файла
//основного в резервный, то
{
if($w=fopen($file_gb, "w")) // если основное файло открыто для
//записи, то
{
fwrite($w,"[".date("d.m.Y. H:i:s")."]". strip_tags($mes)."\n"); // то
// записать в него дату и сделать допустимыми
//только те хтмл-тэги, которые используются в
//сообщении (объясню позже)

if(!$r = fopen($file_tmp,"r")) die("can't"); // если резервное файло
// открыто для чтения, то отморозить посетителя
// PS: ну его нафиг )) обойдётся )

while($mes=fgets($r,10240)) // это php считывает сообщение с
// первого символа по последний
{
fputs($w,$mes); // сообщение вставляется в файло (заметь условие)
}
fclose($r); // закрыть файло для чтения
fclose($w); // закрыть файло для записи
unlink($file_temp); // транклюкировать временный файл ))
}
}
echo "Message has been submitted succesfully!"; // вывести сообщение
// сообщение было сдано успешно ))
view(); // показать ё
}
?>

Короче дальше лирическое отступление. Ты косячница!! ГДЕ в начале файла команда require с указанием файла-хранителя используемых здесь переменных и функций?? или что, у тебя переменная $post из ниоткуда взялась?? Это первое. Если ты что-то берёшь из другого файла, то есть переменная (тот же $post) объявляется в другом файле, то пишешь не просто $post, а $perem->post; То есть ссылаешься на переменную из другого файла. Откуда взялась переменная $last?? Опять же.. Я не считаю тебя совсем ламером, и думаю что это они есть где-то. Напиши в начале require("путь к файлу источнику"); Короче покажи чё у тебя в файле-источнике написано, исправляй ошибки, и пиши на асю 2221740, потрещим. Можешь на меня тоже сурово наехать )). Я сам в общем то начинающий и могу ругаться зря, за что заслуженно получу люлей. Но на всякий случай буду ругаться как следует.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Alexander _shaman




Зарегистрирован: 01.09.2008
Сообщения: 3
Откуда: murmansk

СообщениеДобавлено: Пн Сен 01, 2008 12:53 am    Заголовок сообщения:
Ответить с цитатой

Ещё я забыл про strip_tags(). в скобках указываешь хтмл-тэги, которые можно использовать в сообщении. Если никаких нельзя, то просто вставляешь $mes, то есть допускаешь само сообщение, но можно добавить ещё смайлы и всю фигню. Кстати, а переменная $mes откуда взялась?? Почему не определила нихрена?? Если хочешь порадовать препода, то защити от ошибок и предусмотри реакцию на ввод пустого сообщения. Короче пефы, мне самому щас врадость покопаться во кодах
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Alexander _shaman




Зарегистрирован: 01.09.2008
Сообщения: 3
Откуда: murmansk

СообщениеДобавлено: Пн Сен 01, 2008 1:16 am    Заголовок сообщения:
Ответить с цитатой

надеюсь, у тебя апач то стоит на машине??
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Сен 01, 2008 4:06 am    Заголовок сообщения:
Ответить с цитатой

Цитата:

Только в этом архиве нет файла config.php!!

Там только переменные для подключения к БД. Открой любой файл и там где идут строки подключения к БД будут эти 4 переменные. Просто присвой им значения в файле config.php

Вот таблица для гостевой книги

CREATE TABLE gb(
ID INT NOT NULL AUTO_INCREMENT ,
UNAME CHAR( 40 ),
t TEXT,
APR INT DEFAULT 0,
PRIMARY KEY ( ID )
)

gb_show.php – основной сценарий, выводящий гостевую книгу и форму для добавления нового сообщения
gb_add.php – добавляет новое сообщение в гостевую книгу
gb_service.php – служебный сценарий, удаляющий спам и одобряющий нормальные сообщения

Первый сценарий показывает только одобренные сообления, второй только добавляет новое сообщене. При добавлении сообщения админу отправляется по мылу текст сообщения и он может его или одобрить или удалить. Это ссылки на последний сценарий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Сен 01, 2008 4:09 am    Заголовок сообщения:
Ответить с цитатой

Цитата:

При отправке данных ничего не отправляется и не отображается.

Сценарий рабочий 100%. Может были какие-то опечатки при верстке, но я сам их пишу, проверяю и вставляю в книгу. Если у тебя такая проблема то проверь включена ли register_globals. Скорее всего что нет. Тогда добавь в начало сценария след код:

foreach($HTTP_POST_VARS as $key => $value)
eval("$".$key."='".$value."';");
foreach($HTTP_GET_VARS as $key => $value)
eval("$".$key."='".$value."';");


http://www.dkws.org.ua/phpbb2/viewtopic.php?t=1314
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Владимир_(zox)




Зарегистрирован: 22.10.2008
Сообщения: 1

СообщениеДобавлено: Ср Окт 22, 2008 7:41 pm    Заголовок сообщения:
Ответить с цитатой

Здравствуйте! Вот решил изучать php и взял вашу книгу. вроде дела пока идут не плохо, но вот проблема решил попробовать по вашему описанию зделать гостевую...вроде всё правильно, но пишет ошибку я уже замучился с этой гостевой Confused
Вот код вроде всё как по книжки...

<?
echo "<html><head><title>guestbook</title></head><body>";
echo "<h1>Гостевая /h1>";

$file_gb="./gbook/gb.txt";
$file_tmp="./gbook/gb_tmp.txt";
$Max=50;

function view()
{
$Messages=file($file_gb);
echo "<p><table width=100%>";
$i=0;
foreach ( $messages as $v)
{
$i++
if ($i % 2 = = 0) echo "<tr><td>$v</td></tr>";
else echo "<tr><td bgcolor=gray>$v</td></tr>";
if ($i=$Max) break;
}
}
if (!isset($Post))
{
echo "<table width=100% border=1>";
echo "<tr><td><h2>новое</h2><form method=post action=$SCRIPT_NAME>";
echo "Email: <input type=text name=email>";
echo "ваш сайт: <input type=text name=mes> <input type=submit name=Post> </td></tr>";
echo "</table></form>";

view();
}
else
{
if(file_exists($file_tmp)) die("fatal error!");
if(copy($file_gb, $file_tmp))
{
if($w=fopen($file_gb, "w"))
{
flock ($w,2);

fwrite ($w,"[".date ("d.m.Y H:i:s") .$email."]". strip_tags ($mes)."\n");

if(!$r = fopen($file_tmp,"r")) die("can't open file");
flock ($r,1);

while($mes=fgets($r,10240))
{
fputs($w,$mes);
}
flock ($r,3);
fclose($r);
flock ($w,3);
fclose($w);
unlink($file_temp);
}
}
echo "Message has been submitted succesfully!";
view();
}
?>

Вожу http://localhost/gbook/gbook.php он пишет ошибку....


Ещё вопрос: ведь должно быть 3 файла ????
gb.txt
gb_tmp.txt
gbook.php

Помогите неопытному...
Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Чт Окт 23, 2008 4:50 am    Заголовок сообщения:
Ответить с цитатой

Используй ту галерею, которую я выложил выше!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис