Autor | Zpráva | ||
---|---|---|---|
Question Profil * |
#1 · Zasláno: 22. 8. 2005, 18:03:39
Zdravím. Taká vec. Ku všetkým stránkam sa dostávam cez "index.php?adresar=blabla&subor=blabla" tak, že cez index.php vyriešim hlavičku a menu (proste všetky tie veci ktoré sa opakujú na každej stránke) a potom cez include vložím obsah konkrétneho súboru. Problém ktorý tu chcem načrtnúť je čisto teoretický :-) Ak by niekto za takéhoto stavu napísal do url adresu konkrétneho súboru (napr. http://blabla/adresar/subor.php), tak samozrejme to vypíše riadne blbosti, lebo okrem toho, že v tých súboroch nie sú žiadne tagy <html>, jazyk. kódovanie, štýly, <body>... sú tam aj občas volania niektorých php funkcií (takže vypíše že call to undefined function). Čiže by som potreboval do hlavičky každého súboru vložiť napr. funkciu header. Vymyslel som niečo takéto:
<?php @Header("Location: http://".$_SERVER['HTTP_HOST']."/index.php?url='".$_SERVER['PHP_SELF'] ."'") ?> (u mňa vypíše potom niečo v zmysle: "http://localhost/index.php?url='/bunka/uvod.php'") 1. aký je rozdiel medzi ['HTTP_HOST'] a ['SERVER_NAME'] ??? lebo s localhostom to fičí rovnako len neviem ako sa to bude správať keď tam bude niečo v zmysle http://question.host.sk/ (--> príklad) 2. a je nutné aby v časti ".php?url='/.../*.php'" boli tie úvodzovky (' ') ??? ak použijem len <?php @Header("Location: http://".$_SERVER['HTTP_HOST']."/index.php?url=".$_SERVER['PHP_SELF']" ) ?> tak to vypíše chybu 3. a aj to prvé lomítko "url='/bunka" mi tam tiež vadí, ale to je ten najmenší problém Takže poraďte už ako to header upraviť tak ako som popísal ale aby to zas nebolo moc dlhé a už vôbec nie aby to bolo na niekoľko riadkov. Prípadne iné riešenie ako cez header ale toto sa mi zdá celkom v pohode. Dík |
||
krteczek Profil |
#2 · Zasláno: 22. 8. 2005, 18:57:01
Já to řeším tak, že na index.php definuji proměnnou:
a na začátek každé stránky dávám něco takového:
krteczek |
||
Question Profil * |
#3 · Zasláno: 22. 8. 2005, 22:05:33
No ale presne takému niečomu by som sa asi chcel vyhnúť, lebo to vyzerá dosť zložito a neverím že to nejde jednoduchšie.
|
||
janex Profil * |
#4 · Zasláno: 23. 8. 2005, 00:32:15
Já používám na začátku
if (!isset($page['id'])) ErrorHandler('403'); ... Pokud nejsou zapnuty register_globals (jako že už snad nikde nejsou), tak v tom nevidím problém. |
||
Leo Profil |
#5 · Zasláno: 23. 8. 2005, 00:37:00
Pokud vam jde jen o to, aby nikdo nemohl primo volat vase castecne skripty, elegantni reseni je dat je do te casti adresarove struktury, kam se dostane vas php skript (aby mohl udelat include) ale uz ne prohlizec pres http. Leo
|
||
Question Profil * |
#6 · Zasláno: 24. 8. 2005, 21:38:26
...dat je do te casti adresarove struktury, kam se dostane vas php skript (aby mohl udelat include) ale uz ne prohlizec pres http. Leo
volakde som cital ze na internete sme si vsetci rovni a preto si budeme tykat :) pokial si to myslel ako radu pre viacerych ludi tak povazuj predchadzajucu vetu za bezpredmetnu :) ... takze ako si myslel ten header?? to akoze mam dat tym adresarom nejake crazy mena?? alebo ako?? |
||
Leo Profil |
#7 · Zasláno: 24. 8. 2005, 22:12:05
"takze ako si myslel ten header?? to akoze mam dat tym adresarom nejake crazy mena?? alebo ako??"
Zadny header, proste soubor vnitrni.php bude v te casti webserveru, kam se dostane vas PHP skript, ale kam se nedostane prohlizec pres http protokol. Slusnejsi webhosting to ma automaticky - pres ftp se prihlasite do adresare na serveru, kde je teprve jako podadresar root webu. Leo |
||
Question Profil * |
#8 · Zasláno: 24. 8. 2005, 22:22:43
takze mam sa na to pri navrhu stranky vykaslat?? netreba nic do tych "ciastkovych" skriptov pridavat??
|
||
Jasper Profil * |
#9 · Zasláno: 24. 8. 2005, 22:36:05
Ja bych mel taky jeden problem s funkci header.
Mam udelanou tuto funkci: function logout() { session_destroy(); header("Location: index.php"); }; A na webzdarma mi funguje, ale na IC to nejde a vypise se toto: Warning: Cannot modify header information - headers already sent by (output started at /disk1/home/ic/e4b-2005/www/index.php:23) in /disk1/home/ic/e4b-2005/www/funkce.php on line 407 ten řádek 407 je prave ten s tou funkci header |
||
Leo Profil |
#10 · Zasláno: 24. 8. 2005, 22:39:34
Chyba headers already sent znamena, ze se pokousite zmenit HTTP hlavicku az pote, co do prohlizece byl poslan vlastni vystup (kus stranky) - nejcasteji jde o to, ze pred volanim session_start, header, nebo setcookie mate nejaky prazdny radek, znak, apod. Leo
|
||
Jasper Profil * |
#11 · Zasláno: 24. 8. 2005, 22:52:06
Ale na WZ to funguje bez problemu. Proste jak kliknu na odhlasit, tak se provede tato podminka
elseif($sekce=="logout"): logout(); A zavola se tato funkce function logout() { session_destroy(); header("Location: index.php"); }; |
||
Leo Profil |
#12 · Zasláno: 24. 8. 2005, 23:01:04
A kompletni zacatek kodu te stranky by nebyl? Urcite nezacinate elseif, Leo
|
||
Jasper Profil * |
#13 · Zasláno: 24. 8. 2005, 23:04:31
Tak to bude asi spatne naprogramovane. Ja nejprve zobrazim hlavicku stranky, menu, hlavicku obsahu a az pak je ta rozhodovaci konstrukce, ktere zavola tu funkci logout. Ale nevim jak to mohlo na wz fungovat...
BTW. neni nejaka jina a spolehliva moznost jak presmerovat tu stranku? |
||
Jasper Profil * |
#14 · Zasláno: 24. 8. 2005, 23:21:31
Jeste dodam ze tu hlavicku menu a tak zobrazuju ne pomoci php ale je to ciste html, jestli to ma nejaky vliv...
|
||
krteczek Profil |
#15 · Zasláno: 25. 8. 2005, 02:51:50
na začátek dejte:(první řádek souboru)
<?php ob_start(); ?> a na konec:(poslední řádek souboru) <?php ob_end_flush();?> a mělo by to začít fungovat bez chyb... krteczek |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0