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

Форум PHP

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

 

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

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

тема: Есть проблемы с гостевой!
 
 автор: Прохожий   (11.04.2006 в 17:27)   письмо автору
 
 

Привет всем. Я совсем недавно начал изучать PHP, так что поймите меня.
У меня такая проблема. Гостевая похожая на ту что написана в вашем учебнике php.

Как возвравиться на исходную страницу (гостевой) после того как кто-то напишет сообщение в гостевую?

Смотрим:

в главной файле index.php :
<?
switch("$_GET[index]")

{ case 
"1": include ("guestbook/index.php"); break;

default: echo (
""); }
?>


в файле guestbook/index.php :
<?
$dir_rec 
opendir("guestbook/recordes");
$i=0;
while(
$entry readdir ($dir_rec))
 {
   if (
substr($entry,0,3)=="rec")
   {
$names[$i]=substr($entry,4);
$i++;
   }
 }
$dir_rec closedir();
?>


в файле guestbook/addrec.php :
<?
$data 
date("d-m-Y, время: H-i");
$file fopen("recordes/rec.".time(),"w");
 
fputs($file,$name."\n");
 
fputs($file,$city."\n");
 
fputs($file,$email."\n");
 
fputs($file,$url."\n");
 
fputs($file,$msg."\n");
 
fputs($file,$data."\n");
 
fclose($file); 

 print 
"<HTML><HEAD>\n";
 print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n";  // проблема здесь!!!
 
print "</HEAD></HTML>\n";
?>

Здесь я сохраняю и перезагружаю страницу guestbook/index.php но не через исходную. И он застревает на этих ошибках:

Warning: opendir(guestbook/recordes) [function.opendir]: failed to open dir: Invalid argument in .../guestbook/index.php on line 2

Warning: readdir(): supplied argument is not a valid Directory resource in .../guestbook/index.php on line 4

Warning: closedir(): no Directory resource supplied in .../guestbook/index.php on line 12

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

   
 
 автор: Oligarx   (11.04.2006 в 18:48)   письмо автору
 
   для: Прохожий   (11.04.2006 в 17:27)
 

Да, и объясните пожалуйта заодно что такое switch ... чёт первый раз вижу (заранее спасибо)

   
 
 автор: CrazyAngel   (11.04.2006 в 20:22)   письмо автору
 
   для: Oligarx   (11.04.2006 в 18:48)
 

switch это переключатель,

Это удобное средство для переключения действий по значению переменной,

switch ($var)
{
 case "yes" :
  echo "да";
  break;
 case "no" :
  echo "нет";
  break;
 defaukt :
  echo "Вообще что-то не то"
 }


здесь break говорит что последующие действия выполнять не надо

   
 
 автор: cheops   (12.04.2006 в 00:02)   письмо автору
 
   для: Прохожий   (11.04.2006 в 17:27)
 

Замените в guestbook/index.php строку
<?php
  $dir_rec 
opendir("guestbook/recordes");
?>

на
<?php
  $dir_rec 
opendir("recordes");
?>

   
 
 автор: Прохожий   (12.04.2006 в 10:00)   письмо автору
 
   для: cheops   (12.04.2006 в 00:02)
 

Привет. cheops я ожидал от тебя такой ответ! Думал, ты прочитаешь внимательнее всё то, что я изложил выше и поймёшь мой вопрос. Но видимо нет.
Ладно, напишу подругому:

<?php 
  $dir_rec 
opendir("recordes"); 
?>

Это вполне справедливое решение, и будет работать... Я об этом знаю.
В кнопку назначил такой путь:
<A href="http://localhost/guestbook/">
<IMG src="image/menu/guestbook.gif" alt=Гостевая width=100 height=25 border=0>
</A>

Без меню!!! А мне нужно чтоб мое меню (кнопки "Гостевая”; “Форум”; “Чат” и т.д.") присутствовали везде.

И я сделал так. В кнопку назначил другой путь:
<A href="index.php?index=1">
<IMG src="image/menu/guestbook.gif" alt="Гостевая" width=100 height=25 border=0>
</A>


Он тоже загружает. Вместе с меню как я и хотел. Пути к определенным файлам пришлось изменить.
<?php 
  $dir_rec 
opendir("guestbook/recordes");
/* путь начинается с корневой, где лежит файл index.php и папка guestbook */
?>

Но стоит мне только записать сообщение в гостевую, он останавливается на фрагменте того скрипта что показано чуть выше... Т.е. получается, что он уже не через меню (кнопки "Гостевая”; “Форум”; “Чат” и т.д.") проходит, а напрямую и ему действительно надо, чтобы было, так как показал решение cheops.

Я всё еще уверен в том, что ошибка находится в файле guestbook/addrec.php :
<? 
$data 
date("d-m-Y, время: H-i"); 
$file fopen("recordes/rec.".time(),"w"); 
fputs($file,$name."\n"); 
fputs($file,$city."\n"); 
fputs($file,$email."\n"); 
fputs($file,$url."\n"); 
fputs($file,$msg."\n"); 
fputs($file,$data."\n"); 
fclose($file); 

print 
"<HTML><HEAD>\n"
print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n";  // проблема здесь!!! 
print "</HEAD></HTML>\n"
?>


Пожалуйста, прочитайте внимательно. Извиняюсь, если я не совсем правильно сформулировал свой вопрос.

   
 
 автор: cheops   (12.04.2006 в 14:57)   письмо автору
 
   для: Прохожий   (12.04.2006 в 10:00)
 

Я это тоже заметил, но решил, что вам не удаётся запустить скрипт. Но без структуры сайта перед глазами соориенрироваться очень сложно, если не сложно опишите где в каких директориях у вас что лежит, где лежит меню и что в нём записано.
>index.php?index=1
Вот этот файл лежит в корне или в guestbook?

   
 
 автор: Прохожий   (12.04.2006 в 16:34)   письмо автору
 
   для: cheops   (12.04.2006 в 14:57)
 

Описываю, где и в каких директориях у меня что лежит (только самое нужное):
В папке www.
menu
guestbook
index.php

В menu.
head.php

В guestbook.
index.php
addrec.php

recordes

Набираю свой url(home) http://localhost/ и запускается index.php
В index.php:

<?
include "menu/head.php"/* кнопки */
?>

<? 
switch("$_GET[index]"

{ case 
"4": include ("guestbook/index.php"); break; 

default: echo (
""); } 
?> 


В menu/head.php:
<TABLE cellSpacing=0 cellPadding=0 border=0 bgcolor="" bordercolor="">
<TR><TD><IMG src="image/menu/left.gif" width=150 height=25></TD>
<TD><A href="index.php?index=1"><IMG src="image/menu/home.gif" alt=Home width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=2"><IMG src="image/menu/links.gif" alt=Links width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=3"><IMG src="image/menu/downloads.gif" alt=Downloads width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=4"><IMG src="image/menu/guestbook.gif" alt=Guestbook width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=5"><IMG src="image/menu/friends.gif" alt=Friends width=100 height=25 border=0></A></TD>
<TD><IMG src="image/menu/right.gif" width=150 height=25></TD></TR></TABLE>

В guestbook/index.php:
(в пяти словах: Загружает файлы rec.* c папки guestbook/recordes и выводит их поочередности как показано ниже)

<?
$dir_rec 
opendir("guestbook/recordes");
$i=0;
while(
$entry readdir ($dir_rec))
{
  if (
substr($entry,0,3)=="rec")
    {
   
$names[$i]=substr($entry,4);
   
$i++;
    }
}
$dir_rec closedir();
@
rsort($names);

$count $i;
if (empty(
$start))
{
 
$start 0;
   }
   for (
$i $start$i $count$i++)
   {
?>

И в конечном итоге выводится переменные на страницу.
Прошу заметить, что заполнение формы в этом же файле и выглядит он так:
<form action=guestbook/addrec.php method=post>
далее надеюсь понятно...

В guestbook/addrec.php:


<?
$data 
date("d-m-Y, H-i");
$file fopen("recordes/rec.".time(),"w");
 
fputs($file,$name."\n");
 
fputs($file,$city."\n");
 
fputs($file,$email."\n");
 
fputs($file,$url."\n");
 
fputs($file,$msg."\n");
 
fputs($file,$data."\n");
 
fclose($file); 
    
print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n"// здесь.
?>


Вот тут и наверно вся проблема только как решить незнаю.
Я пробовал сделать так. Написал:
<? print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=guestbook/index.php'>\n"// здесь. ?>


http://localhost/guestbook/guestbook/index.php
запись прошла, но почему-то выводит сразу две папки guestbook а надо одну и тогда бы он попал на ту страницу но опять же без меню(кнопок) ???

Другой способ:
<? print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?index=4'>\n"// здесь. ?>


http://localhost/guestbook/index.php?index=4
запись прошла, но не загружает меню(кнопки) и далее не может найти путь к файлам отображения rec.* на страницу, вот тут-то и уместно записывать в файле guestbook/index.php так:
<?php 
  $dir_rec 
opendir("recordes"); 
?>

Я так сделал и он прошел.
Набрав свой любимый адрес http://localhost/ нажимаю кнопочку index.php?index=4 и я как говорится "приплываю". Потому что он просит, чтоб было так как показано ниже:
<?php 
  $dir_rec 
opendir("guestbook/recordes"); 
?>

Вот и всё пожалуй... Надеюсь что всё ясно изложил. :-)

   
 
 автор: Прохожий   (12.04.2006 в 17:24)   письмо автору
 
   для: Прохожий   (12.04.2006 в 16:34)
 

Блин... Незнаю что делать. Вспотел уже с этой гостевой. :-(

   
 
 автор: cheops   (13.04.2006 в 00:40)   письмо автору
 
   для: Прохожий   (12.04.2006 в 16:34)
 

Ничего волшебного тут предложить нельзя, кроме как исправить файл меню, таким образом, чтобы он чувствовал, откуда его вызывают
<?php
  
if($_SERVER['PHP_SELF'] == "/index.php")
  {
?>
<TABLE cellSpacing=0 cellPadding=0 border=0 bgcolor="" bordercolor="">
<TR><TD><IMG src="image/menu/left.gif" width=150 height=25></TD>
<TD><A href="index.php?index=1"><IMG src="image/menu/home.gif" alt=Home width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=2"><IMG src="image/menu/links.gif" alt=Links width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=3"><IMG src="image/menu/downloads.gif" alt=Downloads width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=4"><IMG src="image/menu/guestbook.gif" alt=Guestbook width=100 height=25 border=0></A></TD>
<TD><A href="index.php?index=5"><IMG src="image/menu/friends.gif" alt=Friends width=100 height=25 border=0></A></TD>
<TD><IMG src="image/menu/right.gif" width=150 height=25></TD></TR></TABLE>
<?php
  
}
  else
  {
?>
<TABLE cellSpacing=0 cellPadding=0 border=0 bgcolor="" bordercolor="">
<TR><TD><IMG src="image/menu/left.gif" width=150 height=25></TD>
<TD><A href="../index.php?index=1"><IMG src="../image/menu/home.gif" alt=Home width=100 height=25 border=0></A></TD>
<TD><A href="../index.php?index=2"><IMG src="../image/menu/links.gif" alt=Links width=100 height=25 border=0></A></TD>
<TD><A href="../index.php?index=3"><IMG src="../image/menu/downloads.gif" alt=Downloads width=100 height=25 border=0></A></TD>
<TD><A href="../index.php?index=4"><IMG src="../image/menu/guestbook.gif" alt=Guestbook width=100 height=25 border=0></A></TD>
<TD><A href="../index.php?index=5"><IMG src="../image/menu/friends.gif" alt=Friends width=100 height=25 border=0></A></TD>
<TD><IMG src="../image/menu/right.gif" width=150 height=25></TD></TR></TABLE>
<?php
  
}
?>

Или использоваться абослютные пути
<TABLE cellSpacing=0 cellPadding=0 border=0 bgcolor="" bordercolor="">
<TR><TD><IMG src="image/menu/left.gif" width=150 height=25></TD>
<TD><A href="/index.php?index=1"><IMG src="/image/menu/home.gif" alt=Home width=100 height=25 border=0></A></TD>
<TD><A href="/index.php?index=2"><IMG src="/image/menu/links.gif" alt=Links width=100 height=25 border=0></A></TD>
<TD><A href="/index.php?index=3"><IMG src="/image/menu/downloads.gif" alt=Downloads width=100 height=25 border=0></A></TD>
<TD><A href="/index.php?index=4"><IMG src="/image/menu/guestbook.gif" alt=Guestbook width=100 height=25 border=0></A></TD>
<TD><A href="/index.php?index=5"><IMG src="/image/menu/friends.gif" alt=Friends width=100 height=25 border=0></A></TD>
<TD><IMG src="/image/menu/right.gif" width=150 height=25></TD></TR></TABLE>

   
 
 автор: Wita1y   (13.04.2006 в 19:24)   письмо автору
 
   для: cheops   (13.04.2006 в 00:40)
 

Всё хорошо стало. :-) Спасибо. Это то что мне и надо было.

Если Вам не сложно, раскажите пожалуйста про эти два примера.
1. Какой из них лучше и чем удобнее всего будет использовать в будущем? Скажем будет что-то большее чем просто "Гостевая".
2. И какой пример более всего уязвимее?

   
 
 автор: cheops   (13.04.2006 в 22:38)   письмо автору
 
   для: Wita1y   (13.04.2006 в 19:24)
 

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

   
 
 автор: Wita1y   (14.04.2006 в 21:28)   письмо автору
 
   для: Прохожий   (11.04.2006 в 17:27)
 

Ну что ж... Гостевая работает. Пиши не хочу! :-)
Из вашего учебной гостевой я извлёк не мало опыта. Что конечно мне + ... :-))) Потому как пример меня сейчас на данный момент учит а не теория. Она лишь дополняет знания к результату (как бы, фиксирует полученное знание с практики) Потом, когда заново пройду весь учебник... Я уже и без примеров смогу увидеть то что написано...

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

О постраничной навигации. Подскажите несколько способов или напишите пару ссылок на эту тему.

   
 
 автор: cheops   (15.04.2006 в 01:23)   письмо автору
 
   для: Wita1y   (14.04.2006 в 21:28)
 

Постраничный вывод обсуждался большое число раз на форуме, в первую очередь стоит посмотреть специально написанную статью по этому поводу
http://www.softtime.ru/info/articlephp.php?id_article=33
кроме этого имеется ряд тем с обсуждением этого вопроса (сразу оговорюсь, не во всех темах именно тот вид постраничной навигации, который вам нужен)
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=2792
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1883
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=721
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1282
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=274
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=302
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=745
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=721
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1169
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=838
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=10465
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9145
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=8890
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8271

PS Под новые вопросы лучше заводить новые темы.

http://www.softtime.ru/scripts/pager.php

   
 
 автор: EnD   (15.04.2006 в 01:32)   письмо автору
 
   для: cheops   (15.04.2006 в 01:23)
 

Хм... А если гостевая допустим построена без использования БД?

   
 
 автор: cheops   (15.04.2006 в 13:21)   письмо автору
 
   для: EnD   (15.04.2006 в 01:32)
 

Тогда сразу переходите к http://www.softtime.ru/scripts/pager.php.

   
Rambler's Top100
вверх

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