Autor Zpráva
Santino Corleone
Profil *
Naprogramoval jsem si návštěvní knihu. Kód mám napsanej na sto procent dobře. je to návštěvní kniha bez databází, ale se zápisem do souboru .dat. Na mym počítači mi to funguje, zkusil jsem to dát i na webzdarma, tam to taky funguje, když to dám ale na placenej hosting, kterej mám na blueboard, tak to prostě nefunguje. Nenaskočí ani chybová hláška, když nevyplním nějaké povinné pole. Stránka se prostě refreshuje, ale nic se nezmění. Atribut toho souboru, do kterého se zapisuje, jsem samozřejmě nastavil i na zápis.

Nemáte s tím prosím někdo nějaké zkušenosti, jak postupovat? Všehno mám dobře, někde mi to funguje a někde ne.

Děkuju
Martin
Profil
Když máš všechno dobře, tak se špatně radí. Co sem dát odkaz na soubor se scriptem? Odkaz na stránku, kde ti to nefunguje?
Santino Corleone
Profil *
www.santino-corleone.com/guestbook.php

Tam ale stejně asi nic neuvidíš, když je to v php.
Martin
Profil
Tam ale stejně asi nic neuvidíš, když je to v php.
Tak proč sem nedáš ten tvůj script?

zkus přidat do tagu form atribut action, vím, že když se to odesílá samo na sebe, tak to funguje, ale action by tam mělo být
Santino Corleone
Profil *
Tak to je ono:


<?
if ($odeslano=="ano"):
if ($jmeno=="" || $email=="" || $popis==""):
echo "<br /><font class=chyba>musíte vyplnit všechny povinné údaje<br /></font>";
else:
$name = "<font class=jmeno>$jmeno</font><br />\n";
$e_mail = "<a class=odkaz href=mailto:$email>$email</a><br />\n";
if ($web!=""):
$www = "<a class=odkaz href=\"$web\">$web</a><br />\n";
endif;
$cas = "<font class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</font><br />\n";
$popis2 = NL2BR(HTMLSpecialChars($popis));
$zprava = "<br /><font class=text>$popis2</font><br /><br /><hr color=\"#ffd700\"><br />\n\n";
$write = StripSlashes($name . $e_mail . $www . $cas . $zprava);

if (File_Exists ("books.dat")):
$fp = FOpen ("books.dat", "r");
$data = FRead ($fp, FileSize("books.dat"));
FClose($fp);
endif;

$fp = FOpen ("books.dat", "w");
FWrite ($fp, $write.$data);
FClose ($fp);
endif;
endif;
?>
<hr color="#ffd700"><br />
<?
if (File_Exists ("books.dat")):
$fp = FOpen ("books.dat", "r");
FPassThru($fp);
endif;
?>
WanTo
Profil
Zkus tam vložit tyto hlavičky (z php.net):
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // datum v minulosti
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// vždy upraven
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0

Taky je možné, že nemáš vytvořený datový soubor...
WanTo
Profil
To s tím chybějícím souborem by imho celkem odpovídalo popsanému chování.
Santino Corleone
Profil *
Ten soubor tam ale fakt je. Ale snad by se měl sám vytvořit, kdyby tam nebyl, ne?
Santino Corleone
Profil *
A ty hlavičky taky nepomohly.
WanTo
Profil
No tak zkus přistoupit k mé oblíbené metodě ladění a do každé podmínky si nacpat nějaké echo a schválně co to napíše :)
Santino Corleone
Profil *
No, já nemyslím, že to by pomohlo, když už mi to funguje na webzdarma. To bude asi něco s tím datovým souborem. Nejde mi do něj zapisovat. Ale nevím proč, když ho mám nastavenej chmod na 777.
Peca
Profil
Co třeba globální proměnné? Nemůže být problém tam?
WanTo
Profil
Peca
To si nemyslím...

Ještě zkus všude místo books.dat napsat ./books.dat.

Taky se podivej do logu, jestli k nim máš přístup.
Martin
Profil
Peca
Myslím, že by v tom problém mohl být
Santino Corleone
Profil *
to ./books.dat nepomohlo. A ty globální proměnné musím ještě nastudovat, nevím pořádně ani co to je. (v PHP jsem začátečník)
WanTo
Profil
Peca
Martin
Asi bude. Když jsem se totiž na kód podíval, viděl jsem, že když je nastavená $jmeno atd, tak to vypíše chybu. Jenže úplně na začátku je $odeslano == "ano" které bude pravděpodobně prázdné.

Takže by mělo stačit všude dopsat $_POST
WanTo
Profil
A ty globální proměnné musím ještě nastudovat, nevím pořádně ani co to je.
Tím se myslí to, že k datům z formuláře nepřistupuješ pomocí $jmeno, ale pomocí $_POST["jmeno"]. ($_GET)
Martin
Profil
http://www.php.net/manual/en/language.variables.predefined.php
k proměnným, které jsi dostal z formuláře, přistupuj pomocí $_get["promenna"], eventuelne $_post["promenna"]. Nedoporucuji ti zápis
$_request["promenna"], ktery zahrnuje post, get a snad i cookie a session.
Peca
Profil
Tak že by přece? :-)
peta
Profil *
Peca
to se da zjistit jednoduse :)
pred radek
if ($jmeno=="" || $email=="" || $popis==""):
nasouka
echo "<hr>jmeno = ".$jmeno."<br>mail = ".$email."<br>popis = ".$popis."<hr>";
a hned vi, jestli se neco odesila nebo ne.

Ale pravdepodobne to bude ono :)

Santino Corleone
Ja mam treba demicko takovouto 1-strankovou file book
http://peter-mlich.wz.cz/x/g3/PPguest3.php
PHP http://peter-mlich.wz.cz/x/g3/PPguest3.txt
Santino Corleone
Profil *
Přesně tady to Phentermine mi chodí na stránky a spamuje mi guestbook http://www.santino-corleone.com/guestbook.php
Asi nebudete vědět, jak si s tím poradit, když si s tím neporadíte ani na Jakpsatweb, co?
djlj
Profil
Santino Corleone
Já jsem si dal do scriptu kontrolu, kolikrát se ve vkládaném příspěvku objevuje "http://". Pokud je to víc než desetkrát, příspěvek je automaticky vyhodnocen jako spam a nevloží se ;).
Toto téma je uzamčeno. Odpověď nelze zaslat.