Zkouším zprovoznit návštěvní knihu bez databáze, jen se zápisem do souboru book.dat. Ten zápis jsem ošetřil takhle:
<?
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 ("book.dat")):
$fp = FOpen ("book.dat", "r+");
$data = FRead ($fp, FileSize("book.dat"));
FClose($fp);
endif;
$fp = FOpen ("book.dat", "r+");
FWrite ($fp, $write.$data);
FClose ($fp);
endif;
endif;
?>
<hr color="#ffd700"><br />
<?
if (File_Exists ("book.dat")):
$fp = FOpen ("book.dat", "r+");
FPassThru($fp);
endif;
?>
U mě na počítači mi to funguje, když to ale nahraju na server, nic se nezapíše. Nevíte jak to napravit?
Díky
chmod 777 na ten soubor book.dat
chmod 777 už mám a stejně to nefunguje.
Myslim ze na WZ neni povolena funkce "FOpen" se mi zda ze sem to tu nekde cetl ktere fce zde nejdou... ale nejsem si ted uplne jisty..
Tak ne to byl "popen"
vypis:
Z bezpečnostních důvodů není možné povolit na serveru úplnou sadu možností PHP. Proto uvádíme seznam zakázaných funkcí:
* Úplně: exec, system, passthru, set_time_limit, error_log, ini_set, dl, popen, pfsockopen, openlog, syslog, readlink, symlink, link, leak
* Omezeny jsou: souborové a adresářové funkce (na práci se soubory pouze ve Vašem adresáři), funkce mail (platí omezení na 10 odeslaných e-mailů na jednom účtu za hodinu).
fopen() funguje
..nezapomnel si pripsat mod?
fopen("soubor", "mod");
1. r+ (čtení - otevření souboru pro čtení a zápis od začátku).
2. r (čtení - otevření souboru pouze pro čtení od začátku).
3. w+ (zápis - soubor se otevře pro zápis a čtení od začátku. Pokud soubor existuje, bude vymazán. Jestliže neexistuje pokusí se ho vytvořit).
4. w (zápis- soubor se otevře pouze pro zápis od začátku. Pokud existuje, bude vymazán. Jestliže neexistuje pokusí se ho vytvořit).
5. a (soubor bude otevřen pouze pro doplnění nového zápisu za konec již existujicího (předešlého) zápisu. Jestliže soubor neexistuje, pokusí se ho vytvořit).
6. a+ (soubor bude otevřen pro doplnění nového zápisu a čtení. Zápis začne od konce předešlého zápisu. Když soubor neexistuje, púokusí se ho vytvořit.
7. b (pro rozlišení binárních a textových souborů v systému Windows musíme nastavit tento mód).
8. x - vytvoří a otevře soubor
a co chmod 777 na adresar, ve kterem je soubor ulozen?
Já to ale nemám na webzdarma, mám to na blueboard - placený
Jen tak pro zajímavost jsem si to nakopíropval na svůj účet na webzdarma a tam to funguje. Ale na www.santino-corleone.com to nefunguje. Vážně nevím, co s tím. Asi budu muset kontaktovat provozovatele hostingu.
A nemas nahodou chyby v modech u fopen()?
AD uvodni prispevek:
1) if (File_Exists ("book.dat")): $fp = FOpen ("book.dat", "r+"); $data = FRead ($fp, FileSize("book.dat"));FClose($fp); endif;
prvni fopen pouze cte (resp. otevira pro cteni) ze souboru (od zacatku), nastav mod na "r".
2) $fp = FOpen ("book.dat", "r+"); FWrite ($fp, $write.$data); FClose ($fp);
druhy fopen zapisuje do vyprazdneneho (resp. noveho) souboru, mod "w".
3) if (File_Exists ("book.dat")): $fp = FOpen ("book.dat", "r+"); FPassThru($fp); endif;
treti fopen cte opet ze souboru od zacatku, opet staci mod "r". Mozna misto fpassthru() by bylo lepsi pouzit readfile(), ale vysledek je prakticky stejny...
Já to vyzkouším, ale je divný, že u mě na kompu to funguje, na webzdarma to funguje, ale na www.santino-corleone.com to nefunguje.
Tak tím to nebylo, pořád to nefunguje.
a ktera fce ti vrati jakou chybu? Neni na tom serveru fce fwrite() zakazana?
No, mě se žádná chyba nevrací. Mě se prostě nestane nic. No a po zakázanejch funkcích jsem pátral a nic jsem nenašel, mám to na hosting.blueboard.cz.
jestli to jinde funguje a tam ne, tak s tim se nejspis budes muset obratit opravdu na adminy blueboardu...