Autor Zpráva
TechniX
Profil
Na internetu je k nalezení celkem dost jednoduchých knih návštěv bez použití databáze. Našel jsem tohle originál kód bez jakýkoliv úprav jen tak pro studii:

<!-- (c) by Khamos, www.khamos.wz.cz | verze 1.4 -->
<!-- další info v souboru info.txt -->
<?php
$codepath=""; // cesta k obrázku s kódem
$datafile=""; // soubor kam se budou ukládat příspěvky
$codenumber=""; // kontrolní kód, musí být shodný s číslem na obrázku
?>
<form method="POST" action="guestbook.php">
Jméno:<br>
<input type="text" name="name" size="40"><br>
E-mail:<br>
<input type="text" name="email" size="40"><br>
Vzkaz:<br>
<input type="text" name="text" size="40"><br>
Opište kontrolní kód:<br>
<input type="text" name="code" size="10"> <img src="<?php echo "$codepath" ?>" border="0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Vložit" name="add">
</form>
<br>
<?
$fp = FOpen ("$datafile", "r");
$data = FRead ($fp, FileSize("$datafile"));
FClose($fp);
$file = "$datafile";
$time = date("j.n.Y");
if ($code == "$codenumber") {
$fp = fopen("$file", "w");
$write = "<a href=mailto:$email><img src=email.gif border=0></a>&nbsp;<i>$name napsal(a) dne $time:</i><br>$text<br><br>";
FWrite ($fp, $write.$data);
fclose($fp);
}
include("$file");
?>


Vše jsem udělal podle návodu a i včetně atributy souboru pro oprávnění do kterého se zapisuje data z odeslání formuláře. Problém je v tom že po vypsání formuláře (i správného kódu) nevypíše se žádná chybová hláška a ani to nezapíše data do souboru .. soubor má pořád 0kb a je opravdu prázdný!

Když v total commanderu napíšu do soubru nějaký text, skutečně se zobrazí i na webu pod formulářem, ale z prohlížeče po odeslání dat z formuláře to nechce zapsat data do souboru ...

Už jsem si i hrál s nastavením atribut 7777 a žádná sláva .. Hosting na kterém to testuji je ENDORA.CZ


Už si s tím nevím opravdu rady, přitom kontrolní kód je správný + vyrobený obrázek a cesta k souboru + atribut...


Případně pokud by někdo nevěděl o něčem jednoduchém kde by byla případně i příloha souboru ? :)
Chro
Profil
Zkus místo otevírací značky <? použít <?php. Ne vždy je tzv. zkrácený tag povolen a skript se nevykoná.
Jan Tvrdík
Profil
Tipuji Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals)]
Joker
Profil
TechniX:
V první řadě, kolem proměnných se nedělají uvozovky.

Dál, jsou někde definované proměnné $name, $email, $time, $text?
Nemá to být $_POST["name"] atd.?

Přímý důvod toho problému asi bude: if ($code == "$codenumber"), opět, $code není definované ($_POST["code"]?), kromě toho kolem $codenumber nemají být uvozovky (ale nezpůsobí to chybu).
Předpokládám, že na ostrém webu v $codenumber je nějaký kód a ne prázdný řetězec. S prázdným řetězcem by to asi „fungovalo“, respektive nefungovalo, ale projevovalo by se to jinak.
TechniX
Profil
Máte pravdu je to celé špatně, jen tak zkusmo jsem odstranil if ($code == "$codenumber") a po máčknutí tačítka Vložit už to zapisuje do souboru, no paráda!! Ale fór je v tom že zapsané hodnoty z formuláře to nenapíše do souboru, jak kdybych žádné nezapisoval ...

Píše to jen:


napsal(a) dne 20.11.2013:


napsal(a) dne 20.11.2013:


napsal(a) dne 20.11.2013:


napsal(a) dne 20.11.2013:

Protože jsem to zkoušel 4x..


Je vidět že to je vše špatně vymyšlené od začátku, ale hlavně že je to publikované všude po celém internetu :(

=guestbook&g[oz]=1.4]Odkaz
baltazar
Profil *
Zkus něco dát do proměné $text = $_POST["text"]; Dej to nahoru a mělo by to fungovat. Nestudoval jsem kod podrobně, ale tohle je věc, kterou tam nevidím.


Za $time = date("j.n.Y"); dej $text = $_POST["text"];
TechniX
Profil
Tak to bylo beznadějné a nepovedlo se mi to opravit ... ale našel jsem konečně něco co funguje a splňuje účel, i když tam není nahrávání přílohy. Jinak super! :)


http://www.jakdelatweby.cz/php/diskuse.php

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:

0