Autor Zpráva
ala
Profil
Mám jednoduchou navstevni knihu, ale nejdou mi v ni odeslat zpravy... Muzete se na to nekdo mrknout?
Je to tady
Hugo
Profil
Pokud sem nehodis kod, tak ti tu asi nikdo moc nepomuze :-). Z HTML toho moc zjistit nejde.
Leo
Profil
Tak tak, nedela to vubec nic, takze tezko rict kam jde ten kour :-) Leo
Rick
Profil *
Chyba je podle mě v kontrole nevyplněných polí. Ne v php
none
Profil
Chyba je v tom ze soubor book.dat ma byt uplne prázdny a nema byt v nem nejaky php skript co ma potom ten guest book delat ze?
myslim ze je prave v tom chyba
ala
Profil
Zdrojový kod:




<?
Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<LINK href="styl.css" rel="stylesheet" type="text/css">
<title>Kniha návštev - PHP</title>
</head>

<body>
<table width="500" align="center">
<tr>
<td width="500">
<center><font class=nadpis>Kniha návštev</font>
<br><br>
<font class="male"></font></center>
<hr color="#00008B">
<br>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<form action="" method="post">
<tr>
<td width=120 class=povinne>
Jméno:
</td>
<td>
<input type="text" name="jmeno" size="30" value="<?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $jmeno;
endif;
?>">
</td>
</tr>
<tr>
<td width=120 class=povinne>
E-mail:
</td>
<td>
<input type="text" name="email" size="30" value="<?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $email;
endif;
?>">
</td>
</tr>
<tr>
<td width=120 class=nepovinne>
Web (i s http://):
</td>
<td>
<input type="text" name="web" size="30" value="<?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $web;
endif;
?>">
<input type="hidden" name="odeslano" value="ano">
</td>
</tr>
<tr>
<td valign=top width=120 class=povinne>
Text zprávy:
</td>
<td>
<textarea cols="29" rows="5" name="popis"><?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $popis;
endif;
?></textarea>
</td>
</tr>
<tr>
<td width=120>&nbsp;
</td>
<td>
<center><input type="submit" value="Odeslat">&nbsp;&nbsp;&nbsp;<input type="Reset" value="Vymazat"></center>
</td>
</tr>
</form>
</table>

<?
if ($odeslano=="ano"):
if ($jmeno=="" || $email=="" || $popis==""): //kontrola zadaných udajů, pokud nebyly zadány všechny povinné údaje, do knihy se nic nezapíše
echo "<center><br><font class=male>musíte vyplnit všechny povinné údaje<br></font></center>";

else: //včechny povinné údaje jsou zadány

$name = "<font class=jmeno>$jmeno</font><BR>\n"; //do proměnné "name" uloží Jméno, zformátuje jej pomocí tagu <FONT> a otevře nový řádek
$e_mail = "<A class=odkaz HREF=mailto:$email>$email</A><BR>\n"; //do proměnné "e_mail" uloží Email, zformátuje jej pomocí tagu <FONT>, přidá odkaz typu MAILTO a otevře nový řádek
if ($web!=""): //pokud byl zadán Web, vytvoří proměnnou "www"
$www = "<A class=odkaz HREF=\"$web\">$web</A><BR>\n"; //do proměnné "www" uloží Web, zformátuje jej pomocí tagu <FONT>, přidá odkaz na danou stránku a otevře nový řádek
endif;
$cas = "<font class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</font><BR>\n"; //do promenne "cas" uloží aktuální datum a čas ve formátu (př. 5. 11. 2000, 13:54:53), zformátuje a načne další řádek
$popis2 = NL2BR(HTMLSpecialChars($popis)); //změna konců řádků na tagy <BR> a ostraní znaky, které by mohly porušit formátování
$zprava = "<BR><font class=text>$popis2</font><BR><BR><HR color=\"#00008B\"><BR>\n\n"; //do proměnné "www" uloží $popis2, zformátuje, přidá čáru, která bude oddělovat příspěvky a otevře nový řádek

$write = StripSlashes($name . $e_mail . $www . $cas . $zprava); //do proměnné "write" uloží všechna data, která se budou zapisovat a odstraní escape sekvence

if (File_Exists ("book.dat")): //existuje soubor book.dat
$fp = FOpen ("book.dat", "r"); //otevře soubor book.dat pro čtení
$data = FRead ($fp, FileSize("book.dat")); //přečte data ze souboru a uloží do proměnné "data" - kvůli tomu aby se zobrazoval poslední příspěvek nahoře
FClose($fp); //zavře book.dat
endif;
$fp = FOpen ("book.dat", "w"); //otevře book.dat pro přepis nebo vytvoření
FWrite ($fp, $write.$data); //zápis do souboru book.dat (nejprve aktuální příspěvek, poté předešlý obsah souboru book.dat)
FClose ($fp); //zavře soubor book.dat
endif;
endif;
?>

<hr color="#00008B"><br>

<?
if (File_Exists ("book.dat")): //existuje soubor book.dat
$fp = FOpen ("book.dat", "r"); //otevře soubor book.dat pro čteni
FPassThru($fp); //vypíše obsah souboru
endif;
?>

</td>
</tr>
</table>
</body>
</html>
Icepoint
Profil
hmmm, tenhle guestbook jsem uz nekde videl :-), tos stahnul z jaknaweb.com co ?? uz jsem nasel chybu ... kdyz tam das <FORM ACTION=""> tak se ti formular odesle "nikam", tzn ani na tu samou stramku... pbud tam dej <FORM ACTION="kniha.php"> nebo tam polozku action nedavej vubec ... (to se ti pak odkaze na tu samou stranku)... pak by to melo fagat ...
printf
Profil
taky lze předpokládat, že soubor book.dat musí mít práva pro zápis, ale to asi má, jinak by to hlásilo chybu...
mat
Profil
printf

no, tenhle problém jsem měl taky, s touhle samou knihou - a opravdu stačilo změnit práva book.dat na 777 a šlapalo to...
Icepoint
Profil
pravda pravdoucí, ale tu polozku acton taky zmen ...
ala
Profil
Dik:)
ala
Profil
Me to nejak nefunguje:(
ala
Profil
Jak se meni prava_???
printf
Profil
Total commander:
označ soubor, klikni v menu Soubory/Změna atributů a nastav co je třeba

Internet Explorer (jeho FTP klient):
označ soubor (se shiftem nebo ctrl), klikni na některý pravým tlačítkem, zvol vlastnosti (nebo alt+enter) a nastav co je třeba
ala
Profil
Mě to pořád nefunguje:(
dfgfgb
Profil *
[pre][/pre][i][/i]xgnxygn
Toto téma je uzamčeno. Odpověď nelze zaslat.

0