Autor | Zpráva | ||
---|---|---|---|
Jan Vonka Profil |
#1 · Zasláno: 11. 8. 2012, 15:00:47
Zdravým,
potřeboval bych poradit jak vytvořit funkci která by zobrazovala kód pouze u přihlášených lidí, ale je v tom háček, měl bych například: {logout} <form id="accessControl" method="post" action="{$links_admin}/login.php"> <table> <tr> <td>User:</td> <td><input type="text" name="login_nick" /></td> </tr> <tr> <td>Heslo:</td> <td><input type="password" name="login_password" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Přihlásit" /></td> </tr> </table> </form> {/logout} {login} <form id="accessControl" method="post" action="{$links_admin}/logout.php"> <table> <tr> <td>User:</td> <td>{$user}</td> </tr> <tr> <td></td> <td><input type="submit" value="Odhlásit" /></td> </tr> </table> </form> {/login} a aby pokud by byl člověk přihlášený zobrazil by se kód pouze mezi {login} a {/login} a pokud odhlášený tak mezi {logout} a {/logout} funkci která by to řešil jsem už si udělal ale funguje pouze pokud to je v jednom řádku, né v pokud je to na více řádcích a to takovouhle: <?php if(@$_SESSION['admin']=="Admin") { $file_out = preg_replace("#<!--\[admin\](.*)-->#", "\\1", $file_out); } else { $file_out = preg_replace("#<!--\[admin\](.*)-->#", "", $file_out); } /* kód mezi <!--[!admin] a --> zobrazit jen bez přihlášení */ if(@$_SESSION['admin']=="Admin") { $file_out = preg_replace("#<!--\[!admin\](.*)-->#", "", $file_out); } else { $file_out = preg_replace("#<!--\[!admin\](.*)-->#", "\\1", $file_out); } ?> doufám že to nepíšu moc složitě a že mi rozumíte :D napadlo mě řešení pomocí komentářů ale to se mi moc nelíbí... děkuji za každou radu ;) |
||
ShiraNai7 Profil |
#2 · Zasláno: 11. 8. 2012, 15:11:38
Jan Vonka:
Do reg. výrazů si přidej modifikátor "m" (za ukončovací #). |
||
Jan Vonka Profil |
#3 · Zasláno: 11. 8. 2012, 15:30:20
Jsem to teďka zkoušel ale stále nefunguje... pochopil jsem to správně?
if(@$_SESSION['admin']=="Admin") { $file_out = preg_replace("#<!--\[admin\](.*)-->#m", "\\1", $file_out); } else { $file_out = preg_replace("#<!--\[admin\](.*)-->#m", "", $file_out); } |
||
alan113 Profil * |
#4 · Zasláno: 12. 8. 2012, 10:45:49
skus podmínku s isset..nebo možná bude lepší empty
|
||
Jan Vonka Profil |
#5 · Zasláno: 12. 8. 2012, 14:43:45
? to jsem nějak nepochopil... ta podmínka je ok ale ta funkce $file_out = preg_replace("#<!--\[admin\](.*)-->#m", "\\1", $file_out); je nějaká vadná...
|
||
peta Profil |
#6 · Zasláno: 14. 8. 2012, 09:30:27
Jaky je string?
Co v nem potrebujes jak nahradit? Proc se ptam? Protoze string nabizis {logout}... Ale reg. vyraz mas "#<!--\[admin\](.*)-->#m" To v tom stringu neni. Takze je problem neresitelny. Nebo si mame ten kod vycarovat pomoci kristalove koule? <?php // http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php $str = " <!-- admin --> Toto je admin <!-- /admin --> <!-- user --> Toto je user <!-- /user --> "; $reg0 = "/###/"; $reg1 = "/<!-- (###) -->(.*)<!-- \/\\1 -->/s"; $a = "admin"; $str1 = preg_replace(preg_replace($reg0,$a,$reg1),"\2",$str); echo $str1; echo ' - - - '; $a = "user"; $str2 = preg_replace(preg_replace($reg0,$a,$reg1),"\2",$str); echo $str2; //$str2 = preg_replace($reg,"\2",$str); ?> Jinak muj postup byl: google = preg_replace multiline html comment |
||
Časová prodleva: 12 let
|
0