Autor Zpráva
Ciso
Profil *
mam taky probelm, neviete mi niketo poradit kde (ale presne) v subore php.ini alebo http.conf nastavit to aby som nemusel definovat premennu? mam obycajnu guestbook a na hdd pri spustenom apache mi nefunguje. Vypisuje ze "undefined variable", ale ked ju uploadnem na server (konktretne webzdarma.cz), tak bez problemov funguje.
Diki moc
Wan-To
Profil *
Pošli sem na fórum kus skriptu, kde máš "undefined variable" a celé chybové hlášení.
Hugo
Profil
V php.ini nastav
error_reporting = E_ALL & ~E_NOTICE

a restartuj apache
ciso
Profil *
tak tu je kod:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HEAD><TITLE>:::Guestboook:::</TITLE>
</HEAD>
<body bgcolor="d2b48c">

<table border="1" bordercolor="brown" cellpadding="10" cellspacing="0" bgcolor="fff5ee" height="100%" width="885" align="left">
<td valign="top">
<font face="book antiqua" size="5" color="a52a2a">

<div class=text><CENTER><H1><div class=text>Kniha Návštev</H1></font>
<FORM METHOD=post>

<font face="arial">
<B>Meno:</B> <INPUT class=input NAME=meno><BR><BR>
<B>Mesto:</B> <INPUT class=input NAME=mesto><br><Br>
<B>e-mail:</B> <INPUT class=input NAME=mail><br><Br>
<B>Text správy:</B> <TEXTAREA NAME=sprava class=textarea COLS=40 ROWS=4></TEXTAREA><BR><INPUT class=input TYPE=Submit name=odoslane VALUE="odosli">&nbsp;&nbsp;<INPUT class=input TYPE=Reset VALUE="Vymaž"></FORM><HR></CENTER>
<?if ($odoslane==odosli):$subor = "board.body";
@$fp = FOpen($subor, "r");
@$obsah = FRead($fp, FileSize($subor));
@FClose($fp);if (($sprava=="") or ($meno=="")):echo "<font color='red'><H2> <div class=text>CHYBA!!! NEZADAL SI POTREBNÉ ÚDAJE!!! <BR>musí byť vyplnené meno aj text správy !!! Vyskúšajte ešte raz</H2></font>";
else: $fp = FOpen("board.body", "w");
FPutS($fp, "<B>".(HTMLSpecialCHars($meno))."</B>".Date(" d.m.Y o H:i"). ":<BR>\n");
Fputs($fp, "<u>".(HTMLSpecialCHars($mesto))."</u><br>\n");
Fputs($fp, "<i>".(HTMLSpecialCHars($mail))."</i><br>\n");
Fputs($fp, (HTMLSpecialCHars($sprava))."<P><hr>\n");
FPuts ($fp, "$obsah");FClose($fp);
@$fp = FOpen("board.body", "r");
@FPassThru($fp);
endif;
else:@$fp = FOpen("board.body", "r");
@FPassThru($fp);endif;
?>
</BODY>
</HTML>


a pise mi toto:
Notice: Undefined variable: odoslane in c:\program files\easyphp1-8\www\help\kniha\board.php on line 15

Notice: Use of undefined constant odosli - assumed 'odosli' in c:\program files\easyphp1-8\www\help\kniha\board.php on line 15

pre HUGO:
toto error_reporting = E_ALL & ~E_NOTICE nepomohlo.
juneau
Profil
<?if (@$odoslane== 'odosli'): $subor = "board.body";

timhle nahrad ten 15.radek ...

ta chybovka znamena, ze promenna $odoslane nema vubec zadnou hodnotu, respektive ji server vubec nezna a ty ji najednou porovnavas s nejakym textovym retezcem, coz byla druha chyba, protoze bez uvozovek lze zapisovat pouze cisla (resp true/false boolean hodnoty)

idealni podminka by tedy byla: if(isset($odoslane) && $odoslane == 'odosli') {...}

fce isset($a) vraci true nebo false, pokud je $a inicializovane (ale klidne prazdne... podivej se na fci empty($a) ). takovato podminka uz chybu nevyhodi.

a pouzivani jednoduchych uvozovek a dvojitych? v tomto pripade je idealni pouziti 'jednoduchych' uvozovek (ve zminovane podmince), protoze v takovem pripade server nezkouma, zda v danem textovem retezci je jeste nejaka $promenna a nezpracovava jej. trochu to tedy zrychluje jeho praci.

$den = 'utery';
$prom1 = 'Dnes je $den'; // Dnes je $den
$prom2 = "Dnes je $den"; // Dnes je utery

vice (a presneji) u pifa: http://www.php-weblog.com/archiv/2005/unor/3/nejcastejsi-chyby-zacatec niku-v-php-I.html
Ciso
Profil *
dik
Toto téma je uzamčeno. Odpověď nelze zaslat.