Autor Zpráva
Jackien5
Profil *
Potřeboval bych poradit ohledně návštěvní knihy (žádné databáze - běžná práce se soubory). Na webzdarma.cz mi bohužel nefunguje správně, ovšem na disku u mne ano.

Problém mam v tom, že "online" se zpráva odešle, ale smažou se veškeré zprávy předtím, takže je tam vždy jen ta poslední, kterou další zprávou zase přemažu. U mě na PC se však zprávy normálně řadí za sebe a vše je ok.

Nevíte, kde bych mohl hledat nějakou chybu či jak jí řešit?
Paja
Profil
pošli nějaký odkaz nebo kód... aby se dalo poradit v čem může být chyba
Jackien5
Profil *
Zasílám tedy ten zdroják... jinak teda chybu mam ještě s tím přesměrováním úplně dole (headers already sent by), ale s tím si snad už nějak poradím :)

if (($name!="" ) && ($message!="")):
// přidání do knihy hostů

// určení proměnných pro jména souboru a otevření souborů
$file="./data/guest_book.body";
$file1="./data/guest_book.bak";
UnLink($soubor1); // vymazání souboru1
Copy($soubor, $soubor1); // zkopírování souboru do souboru1

$fp=FOpen($file, "w"); // otevření souboru pro zápis
$fp1=FOpen($file1, "r"); // otevření souboru pro čtení

// přidání nové zprávy
FPutS($fp, "<div class=\"message\">");
FPutS($fp,"<div class=\"sender\"><b> ".HTMLspecialChars($name)."&nbsp; $heading</b><span class=\"time\">".date("d.m.Y | H:i")."</span></div><p>");

$message = stripslashes($message);
$message = HTMLSpecialChars($message);
$message = strtr($message, array("\r" => ""));
//dva a více odřádkování převede na <br><br>:
$message = preg_replace('#(' . "\n" . '{2,})#', "<br><br>", $message);
//jednoodřádkování nahradí <br>:
$message = strtr($message, array("\n" => "<br>"));
FPutS($fp, $message);
FPutS($fp, "</p></div>\n");

// přidáni souboru za novou zprávu a zavření souborů:
FPuts($fp, FRead($fp1, FileSize($file1)));
FClose($fp);
FClose($fp1);

endif;

if ($name!="") header("Location: guest-book.php"); // přesměrování - kvůli F5 a opakovanému odeslání zprávy
Jackien5
Profil *
Jo omylem jsem to špatně překopíroval na zhruba desátém řádku a jedenáctém je normálně použita správná proměnná, tedy:
UnLink($file1); // vymazání souboru1
Copy($soubor, $file1); // zkopírování souboru do souboru1
TFSi
Profil
Copy($soubor, $file1);

Že by byla funkce copy na WZ zakázaná? ;)
Jackien5
Profil *
jé děkuju, tohle mě opravdu nenapadlo... tahle fce ještě nedávno na wz fungovala ne?
TFSi
Profil
Jackien5
tahle fce ještě nedávno na wz fungovala ne?
Nedávno asi před dvěma lety naposledy. Dá se to ale obejít přes fopen() ...
BlueRain
Profil
http://www.webzdarma.cz/forum/read.php?f=2&i=35747&t=35747

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: