Autor | Zpráva | ||
---|---|---|---|
Santino Corleone Profil * |
#1 · Zasláno: 16. 1. 2006, 19:26:39
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 |
#2 · Zasláno: 16. 1. 2006, 19:44:09
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 * |
#3 · Zasláno: 16. 1. 2006, 19:58:23
|
||
Martin Profil |
#4 · Zasláno: 16. 1. 2006, 20:06:05
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 * |
#5 · Zasláno: 16. 1. 2006, 20:19:43
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 |
#6 · Zasláno: 16. 1. 2006, 20:25:44
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 |
#7 · Zasláno: 16. 1. 2006, 20:26:43
To s tím chybějícím souborem by imho celkem odpovídalo popsanému chování.
|
||
Santino Corleone Profil * |
#8 · Zasláno: 16. 1. 2006, 20:28:33
Ten soubor tam ale fakt je. Ale snad by se měl sám vytvořit, kdyby tam nebyl, ne?
|
||
Santino Corleone Profil * |
#9 · Zasláno: 16. 1. 2006, 20:30:48
A ty hlavičky taky nepomohly.
|
||
WanTo Profil |
#10 · Zasláno: 16. 1. 2006, 20:33:09
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 * |
#11 · Zasláno: 16. 1. 2006, 20:36:10
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 |
#12 · Zasláno: 16. 1. 2006, 20:38:33
Co třeba globální proměnné? Nemůže být problém tam?
|
||
WanTo Profil |
#13 · Zasláno: 16. 1. 2006, 20:40:32 · Upravil/a: WanTo
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 |
#14 · Zasláno: 16. 1. 2006, 20:47:41
Peca
Myslím, že by v tom problém mohl být |
||
Santino Corleone Profil * |
#15 · Zasláno: 16. 1. 2006, 20:50:50
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 |
#16 · Zasláno: 16. 1. 2006, 20:53:17
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 |
#17 · Zasláno: 16. 1. 2006, 20:54:26
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 |
#18 · Zasláno: 16. 1. 2006, 20:58:44
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 |
#19 · Zasláno: 17. 1. 2006, 00:37:22
Tak že by přece? :-)
|
||
peta Profil * |
#20 · Zasláno: 17. 1. 2006, 09:04:39
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 |
||
Časová prodleva: 14 dní
|
|||
Santino Corleone Profil * |
#21 · Zasláno: 31. 1. 2006, 16:13:21
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 |
#22 · Zasláno: 31. 1. 2006, 17:29:08
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 ;). |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0