Autor | Zpráva | ||
---|---|---|---|
Dranel Profil |
#1 · Zasláno: 5. 12. 2007, 00:33:35
Zdravím,
mám dotaz týkající se vyytvoření drobečkové navigace. Přibližně vím jak ($_SERVER[]) ale v praxi mi to nějak drhne. Nevím totiž, jak oříznout PHP SELF abych se dostal do nadřazené složky... Nebo se to snad dělá jinak? Neznáte někdo stránku, kde je to vysvětleno? PS: Hledal jsem |
||
Leinad Profil |
#2 · Zasláno: 5. 12. 2007, 14:56:15
Raději než PHP self bych použil $_SERVER['REQUEST_URI'] , ale řetězec se stejně řeže explode("dělící znak", "řetěžec");
|
||
Dranel Profil |
#3 · Zasláno: 5. 12. 2007, 17:19:49
Leinad
Thx (Thanks - Díky) |
||
Dranel Profil |
#4 · Zasláno: 5. 12. 2007, 17:27:38
Takže při adrese server.cz/neco/necojineho/soubor.php s kódem
$navigace = $_SERVER['REQUEST_URI']; $drobecky = explode("/", "$navigace"); to vypíše to co je za lomítkama? echo $drobecky[0]; // server.cz echo $drobecky[1]; // neco echo $drobecky[2]; // necojineho echo $drobecky[3]; // soubor.php |
||
Str4wberry Profil |
#5 · Zasláno: 5. 12. 2007, 17:39:17
Špione, proč si to nevyzkoušíš?
|
||
Dranel Profil |
#6 · Zasláno: 5. 12. 2007, 17:43:16
Str4wberry
Proč mi stále říkáš tajny spion, Jahoďáku? Už jsem tě o to jednou prosil. Proč to nevyzkouším, protože myslím že tam mám chybu - zdá se mi to moc lehký... |
||
Leinad Profil |
#7 · Zasláno: 5. 12. 2007, 18:04:48
$navigace = $_SERVER['REQUEST_URI'];
$drobecky = explode("/", "$navigace"); to vypíše to co je za lomítkama? echo $drobecky[0]; // server.cz echo $drobecky[1]; // neco echo $drobecky[2]; // necojineho echo $drobecky[3]; // soubor.php Je to tak, vyzkoušet by sis to mohl. Pozor pokud jsou v URL nepovolené znaky(mezera, čeština...) - urlencode a podobně. Ale pánové, proč se hádáte o jména? |
||
Mastodont Profil |
#8 · Zasláno: 5. 12. 2007, 18:23:52
$_SERVER['REQUEST_URI'] Proto používám raději: substr($_SERVER['REQUEST_URI'], strpos($_SERVER['PHP_SELF'],'index.php')) |
||
Dranel Profil |
#9 · Zasláno: 6. 12. 2007, 17:29:29
Mastodont, Leinad, Str4wberry
Tak jsem to tedy vyzhoušel a jak jsem myslel, nejde to. Nevypíše tototiž nic :( <?php $navigace = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['PHP_SELF'],'index.php')); $drobecky = explode("/", "$navigace"); echo $drobecky[0] . "<br>"; echo $drobecky[1] . "<br>"; echo $drobecky[2] . "<br>"; echo $drobecky[3] . "<br>"; ?> |
||
Dranel Profil |
#10 · Zasláno: 7. 12. 2007, 17:23:07
Pomozte pls...
|
||
Dranel Profil |
#11 · Zasláno: 8. 12. 2007, 15:29:55
Prosím kde mám chybu v tom kódu popřípadě čemu jsem neporozuměl? Předem dík za odpověď...
|
||
Dranel Profil |
#12 · Zasláno: 10. 12. 2007, 18:52:36
Takže. Dostal jsem se ke scriptu následujícímu:
<?php $navigace = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['PHP_SELF'],'index.php')); echo $navigace; $drobecek = explode("/", $navigace); foreach ($drobecek as $drobek) { echo "$drobek<br>\n"; } ?> Problém je bohužel v tom, že například při adrese www.server.cz/stranka/index.php?str=dovednosti mi to vypíše následující nesmysl: stranka/index.php?str=dovednostistranka index.php?str=dovednosti Kde mám prosím chyby? |
||
Mastodont Profil |
#13 · Zasláno: 10. 12. 2007, 19:32:58
Dranel
Já se ti musím omluvit za to, že jsem tě mystifikoval. Nevšiml jsem si totiž, že používáš tento styl adresování. Co jsem ti radil, to funguje při "hezkých" URL, čili když máš adresy typu: www.server.cz www.server.cz/clanky/clanek1 Soubor index.php tam samozřejmě je, ale prostě se v té adrese vůbec neuvádí. Ještě jednou - omlouvám se. |
||
Dranel Profil |
#14 · Zasláno: 10. 12. 2007, 22:31:19
Mastodont
A jiné řešení? Jestli ne tak se jdu konečně naučit mod_rewrite... |
||
echo Profil * |
#15 · Zasláno: 10. 12. 2007, 22:38:53
jine reseni - udelat drobecky z GET-u
|
||
Mastodont Profil |
#16 · Zasláno: 10. 12. 2007, 23:02:24
Dranel
Mod_rewrite se učit neumíš, stačí dát do .htaccess tohle: RewriteRule ^(.*)$ index.php [QSA,L] |
||
Dranel Profil |
#17 · Zasláno: 11. 12. 2007, 10:12:18
Mastodont
A to mi udělá co? Nemůžu skusit, jsme ve škole. |
||
Časová prodleva: 6 dní
|
|||
Dranel Profil |
#18 · Zasláno: 17. 12. 2007, 00:40:38
Mastodont
Tak jsem to přidal do .htaccess a na localhostu, kde to zkouším, mi to vypsalo Error :( |
||
BetaCam Profil |
#19 · Zasláno: 17. 12. 2007, 06:15:40
Tak jsem to přidal do .htaccess a na localhostu, kde to zkouším, mi to vypsalo Error :(
Tak tam skus tohle : RewriteRule ^(.*)$ /index.php [QSA,L] |
||
Mastodont Profil |
#20 · Zasláno: 17. 12. 2007, 08:43:42
Dranel
A máš tam RewriteEngine on ?? :) |
||
Dranel Profil |
#21 · Zasláno: 17. 12. 2007, 21:23:56
Mastodont
Ano mám tam: RewriteEngine on RewriteRule ^(.*)$ index.php [QSA,L] A při zadaní http://localhost/ to vypíše: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. |
||
Mastodont Profil |
#22 · Zasláno: 18. 12. 2007, 07:33:15
Dranel
A máš PHP ve Windows nebo na Linuxu? Na Win jsou tuším třeba ještě nějaké úpravy konfigurace Apache ... Zkus ještě ten zápis od BetaCama - ale u mně ten můj tvar chodí bez problémů. |
||
BetaCam Profil |
#23 · Zasláno: 18. 12. 2007, 07:51:56
Mastodont
A máš PHP ve Windows nebo na Linuxu? Na Win jsou tuším třeba ještě nějaké úpravy konfigurace Apache ... Já mám zkušenost zhruba takovou: Většinou projde na Unixu ( aspon mě ): RewriteEngine on RewriteRule ^$ /index.php [L] RewriteCond $1 !^(index\.php|css|upload|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /index.php/$1 [L] Většinou projde na Windowsu ( aspon mě ): RewriteEngine on RewriteRule ^$ index.php [L] RewriteCond $1 !^(index\.php|css|upload|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ index.php/$1 [L] Mám takové zkušenosti, ale jestli je to pravidlo to opravdu nevím :) |
||
Mastodont Profil |
#24 · Zasláno: 18. 12. 2007, 08:12:53
BetaCam
Aha, to je dost zajímavé!! Já mám PHP na Win, takže to by souhlasilo. |
||
Dranel Profil |
#25 · Zasláno: 18. 12. 2007, 09:44:37
BetaCam
RewriteEngine on RewriteRule ^$ index.php [L] RewriteCond $1 !^(index\.php|css|upload|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ index.php/$1 [L] Mohl bys mi to prosím okomentovat? Ať vím co to dělá... Dík |
||
BetaCam Profil |
#26 · Zasláno: 18. 12. 2007, 11:43:52 · Upravil/a: BetaCam
Dranel
1. tento můj zápis, který používám já byl použit pouze pro prezentování mé zkušenosti s mod_rewrite na různých systémech 2. tobě budou tyto pravidla zdřejmě k ničemu. Já je používám, protože se chci zbavit index.php v url. K ničemu jinému ty pravidla neslouží, když tedy nepočítám to, že tam mám zadáno co se nemá přepisovat. jinak zhruba : RewriteEngine on zapne mod_rewrite RewriteRule ^$ index.php [L] Pokud je prázdný požadavek podstrč index.php RewriteCond $1 !^(index\.php|css|upload|images|robots\.txt|favicon\.ico) Určuje co se nebude přepisovat RewriteRule ^(.*)$ index.php/$1 [L] Na jakýkoliv požadavek podstrč index.php/požadavek tedy při example.com/nejaky-pozadavek se podstrčí obsah z example.com/index.php/nejaky-pozadavek Já ovšem celou aplikaci řídím přes index.php což ovšem zrovna není tvuj případ. |
||
Časová prodleva: 8 dní
|
|||
Dranel Profil |
#27 · Zasláno: 26. 12. 2007, 14:14:09
Tak jsem nakonec vyplodil následující kód:
<?php $navigace = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['PHP_SELF'],'index.php')); $drobecek = explode("/", $navigace); echo "Nacházíte se zde: <a href='http://www.dranel.cz/'>Dranel.cz</a>"; foreach ($drobecek as $drobek) { echo " > "; echo "<a href='http://" . $_SERVER['HTTP_HOST'] . "/$drobek'>$drobek</a>"; } ?> Podívejte se sami (URL je dočasná - pokud nefunguje, skuste tuto) - je to skoro dokonalé. Bohužel však jenom skoro - jukněte schválně na adresy drobečků - první je v pořádku ale úvod mi nějak blbne... poradí někdo co s tím? |
||
djlj Profil |
#28 · Zasláno: 26. 12. 2007, 14:18:04
je to skoro dokonalé
No právě — je to bez diakritiky. |
||
Dranel Profil |
#29 · Zasláno: 26. 12. 2007, 14:23:33
djlj
Do prdele (sry) na to jsem zapoměl... tím pádem to asi dělám celý blbě... :-( Nechcete mě někdo navízt na tu správnou cestu? :-) |
||
Lion76 Profil * |
#30 · Zasláno: 26. 12. 2007, 17:51:36
Dranel
1. musis si vytvorit pole, kde budes mit nazvy stranek s diakritikou 2. musis vedet kolik je slov mezi lomitky 3. ten cyklus musi byt foreach($drobecky as $klic => $drobek), aby jsi mohl spojit nazvy stranek podle klice 4. v tom cyklus si vytvoris nove pole a budes tam ukladat $drobek 5. podminka musi byt if($klic == $pocet), promenna $pocet je pocet slov mezi lomitky, pokud se podminka bude rovna, tak posledni drobek bude prosty text, pokud se nebude rovnat, bude to odkaz 7. nazvy stranek dostanes pres $stranky[$klic] 8. odkazy dostanes pres <a href='http://".$_SERVER['HTTP_HOST']."/".implode("/", $pole)."/'>$stranky[$klic]</a> Treba to nekdo dela jinak, ale ja jsem to udelal takhle a jeste to mam pres db. |
||
Téma pokračuje na další straně.
|
0