|
|
|
| Привет всем. Я совсем недавно начал изучать 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
Посоветуйте пожалуйста, как мне правильно прописать скрипт так чтобы у меня перезагрузка прошла через исходную страницу?
Вот тогда всё заработает... :-) Вся моя цепочка. | |
|
|
|
|
|
|
|
для: Прохожий
(11.04.2006 в 17:27)
| | Да, и объясните пожалуйта заодно что такое switch ... чёт первый раз вижу (заранее спасибо) | |
|
|
|
|
|
|
|
для: Oligarx
(11.04.2006 в 18:48)
| | switch это переключатель,
Это удобное средство для переключения действий по значению переменной,
switch ($var)
{
case "yes" :
echo "да";
break;
case "no" :
echo "нет";
break;
defaukt :
echo "Вообще что-то не то"
}
|
здесь break говорит что последующие действия выполнять не надо | |
|
|
|
|
|
|
|
для: Прохожий
(11.04.2006 в 17:27)
| | Замените в guestbook/index.php строку
<?php
$dir_rec = opendir("guestbook/recordes");
?>
|
на
<?php
$dir_rec = opendir("recordes");
?>
|
| |
|
|
|
|
|
|
|
для: 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";
?>
|
Пожалуйста, прочитайте внимательно. Извиняюсь, если я не совсем правильно сформулировал свой вопрос. | |
|
|
|
|
|
|
|
для: Прохожий
(12.04.2006 в 10:00)
| | Я это тоже заметил, но решил, что вам не удаётся запустить скрипт. Но без структуры сайта перед глазами соориенрироваться очень сложно, если не сложно опишите где в каких директориях у вас что лежит, где лежит меню и что в нём записано.
>index.php?index=1
Вот этот файл лежит в корне или в guestbook? | |
|
|
|
|
|
|
|
для: 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 в 16:34)
| | Блин... Незнаю что делать. Вспотел уже с этой гостевой. :-( | |
|
|
|
|
|
|
|
для: Прохожий
(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>
|
| |
|
|
|
|
|
|
|
для: cheops
(13.04.2006 в 00:40)
| | Всё хорошо стало. :-) Спасибо. Это то что мне и надо было.
Если Вам не сложно, раскажите пожалуйста про эти два примера.
1. Какой из них лучше и чем удобнее всего будет использовать в будущем? Скажем будет что-то большее чем просто "Гостевая".
2. И какой пример более всего уязвимее? | |
|
|
|
|
|
|
|
для: Wita1y
(13.04.2006 в 19:24)
| | Смысл в том, что чем меньше исключений и чем более универсальный скрипт - тем удобнее его использовать в дальнейшем, если планируется расширение я бы выбрал второй вариант, а то не дай бог потом нужно будет блоки положить ещё на более глубокий уровень - придётся всё это в голове держать, а в ней и без этого есть что разместить... | |
|
|
|
|
|
|
|
для: Прохожий
(11.04.2006 в 17:27)
| | Ну что ж... Гостевая работает. Пиши не хочу! :-)
Из вашего учебной гостевой я извлёк не мало опыта. Что конечно мне + ... :-))) Потому как пример меня сейчас на данный момент учит а не теория. Она лишь дополняет знания к результату (как бы, фиксирует полученное знание с практики) Потом, когда заново пройду весь учебник... Я уже и без примеров смогу увидеть то что написано...
Ну... довольно растыкаться и вести тему вдругую степь. У меня появилось немного вопросов, так как открыв учебник я не сразу это найду, а если и найду, то проёдет не мало времени.
О постраничной навигации. Подскажите несколько способов или напишите пару ссылок на эту тему. | |
|
|
|
|
|
|
|
|
для: cheops
(15.04.2006 в 01:23)
| | Хм... А если гостевая допустим построена без использования БД? | |
|
|
|
|
|
|
|
для: EnD
(15.04.2006 в 01:32)
| | Тогда сразу переходите к http://www.softtime.ru/scripts/pager.php. | |
|
|
|