Rozšířená funkce knihy hostů.
8 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Potřeboval bych pomoc, mám knihu hostů, je dost rozšířená, určitě jste se s ní setkali a potřeboval bych, aby byla chráněna moje přezdívka, prostě aby nikdo nemohl poslat příspěvek přes mou přezdívku. Tady je výpis souboru insert.php, kterej spracovává příspěvek a ukládá ho do souboru: <? if ($jmeno=="" || $email=="" || $popis==""): //kontrola zadaných udajů, pokud nebyly zadány všechny povinné údaje, do knihy se nic nezapíše echo "<center><br><table><tr><td class=cervene>musíte vyplnit všechny povinné údaje</td></tr></table></center>"; else: //včechny povinné údaje jsou zadány $name0 = HTMLSpecialChars($jmeno); $e_mail0 = HTMLSpecialChars($email); $web0 = HTMLSpecialChars($web); $name = "<table><tr><td class=jmeno>$name0</td></tr>"; //do proměnné "name" uloží Jméno, zformátuje jej pomocí tagu <FONT> a otevře nový řádek $e_mail = "<tr><td class=odkaz><A HREF=mailto:$e_mail0>$e_mail0</A></td></tr>"; //do proměnné "e_mail" uloží Email, zformátuje jej pomocí tagu <FONT>, přidá odkaz typu MAILTO a otevře nový řádek if ($web!="" && $web!="http://"): //pokud byl zadán Web, vytvoří proměnnou "www" $www = "<tr><td class=odkaz><A HREF=\"$web0\">$web0</A></td></tr>"; //do proměnné "www" uloží Web, zformátuje jej pomocí tagu <FONT>, přidá odkaz na danou stránku a otevře nový řádek endif; $cas = "<tr><td class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</td></tr>"; //do promenne "cas" uloží aktuální datum a čas ve formátu (př. 5. 11. 2000, 13:54:53), zformátuje a načne další řádek $tag = HTMLSpecialChars($popis); //změna konců řádků na tagy <BR> a ostraní znaky, které by mohly porušit formátování $br = str_replace("\n"," <BR> ", $tag); //všechny konce řádků nahradí tagem <BR> $slovo = Split("[[:blank:]]+", $br); for($y=0;$y<Count($slovo);$y++): if (Strlen($slovo[$y])<=40): if (EregI("^(www.*)", $slovo[$y])): $anchor = Ereg_Replace("^(www\..+\..{2,3})", "<a href=http://\\1>\\1</a> ", $slovo[$y]); elseif (EregI("^(http://.*)", $slovo[$y])): $anchor = Ereg_Replace("^(http://.+\..{2,3})", "<a href=\\1>\\1</a> ", $slovo[$y]); else: $anchor = $slovo[$y] . " "; endif; $popis2 .= $anchor; else: $delit = Ceil(StrLen($slovo[$y])/40); for($z=0;$z<$delit;$z++): $cast = Substr($slovo[$y], $z*40, 40); $popis2 .= $cast . " - "; endfor; endif; endfor; if ($popis2==""): $ulozit=false; else: $ulozit=true; endif; $bold1 = Str_Replace("<b>", "<b>", $popis2); $bold2 = Str_Replace("</b>", "</b>", $bold1); $italic1 = Str_Replace("<i>", "<i>", $bold2); $italic2 = Str_Replace("</i>", "</i>", $italic1); $under1 = Str_Replace("<u>", "<u>", $italic2); $under2 = Str_Replace("</u>", "</u>", $under1); $zprava = "<tr><td class=text><br>$under2</td></tr></table><HR size=1 color=black>\n";//do proměnné "www" uloží $popis2, zformátuje, přidá čáru, která bude oddělovat příspěvky a otevře nový řádek $write = StripSlashes($name . $e_mail . $www . $cas . $zprava); //do proměnné "write" uloží všechna data, která se budou zapisovat a odstraní escape sekvence if ($ulozit): if (File_Exists ("book.dat")): //existuje soubor book.dat $fp = FOpen ("book.dat", "r"); //otevře soubor book.dat pro čtení $data = FRead ($fp, FileSize("book.dat")); //přečte data ze souboru a uloží do proměnné "data" - kvůli tomu aby se zobrazoval poslední příspěvek nahoře FClose($fp); //zavře book.dat endif; $fp = FOpen ("book.dat", "w"); //otevře book.dat pro přepis nebo vytvoření FWrite ($fp, $write.$data); //zápis do souboru book.dat (nejprve aktuální příspěvek, poté předešlý obsah souboru book.dat) FClose ($fp); //zavře soubor book.dat endif; endif; ?> <head> <META HTTP-EQUIV="Refresh" CONTENT="0; URL=kniha.php3"> </head> No a tady mi jeden člověk poslal kód, tak jak ho mám upravit, aby to pod tim heslem fungovalo, tak jsem to tak udělal a ono to nefunguje. Tady je ten příspěvek společně s kódem od toho člověka. Ano, staci do souboru insert.php3 pridat podmniku, ktera zjisti, zda se nejedna se o "chranenou" prezdivku a popr. si vyzada zadani hesla: <? $zapsat = ""; $zakazano = Array("webmaster", "Moje Jmeno"); for ($i=0;$i<Count($zakazano);$i++): if (EregI($zakazano[$i], $prezdivka)):?> Pro tuto prezdivku musite zadat heslo:<br><br> <form action="" method="post"> <input type=text name=heslo> <input type=hidden name="jmeno" value="<?echo $prezdivka?>"> ..... zde obodbne jako JMENO pridejte dalsi polozky z puvodniho formulare <input type=submit> </form> <? $zapsat = "ne"; endif; endfor; ?> Jeste jednu podminku u zaverecenho zapisu if ($zapsat!= "ne" || ($zapsat=="ne" && $heslo=="to je VASE HESLO")): if (File_Exists ("book.dat")): $fp = FOpen ("book.dat", "r"); $data = FRead ($fp, FileSize("book.dat")); FClose($fp); endif; $fp = FOpen ("book.dat", "w"); FWrite ($fp, $write.$data); FClose ($fp); ?> <head> <META HTTP-EQUIV="Refresh" CONTENT="0; URL=kniha.php3"> </head> <?endif;?> Snad to bude fungovat. --------- Prosím pomocte jak to upravit aby to fungovalo, nebo navrhněte lepší řešení, díky moc.
-
Jo jinak ta kniha běží na mejch stránkách http://johny.unas.cz/kniha.html
-
dal bych tam javascript co overi hodnotu policka jmeno, a kdyz je shodny s tvym nickem, otevre okno ktery chce heslo .. po zadani presmeruje na stranku?mujnick=1&heslo=blabla a overis heslo a ten zdrojak se mi opravdu cist nechce :-(
-
Když já nevim jak to udělat :o(
-
Kdyžtak už to tu možete smazat, vyřešil jsem to po svom.
-
Pomoci podminky v PHP zabranit pouziti nicku. V tom snad neni problem :-)
-
Už je to vyřešené :o)
-
Johnpc: já to zkoušel se u tebe zapsat jako Johny a jde to :o)) (pak si to z tý knihy smaž)