Autor Zpráva
k
Profil *
zdar co říkáte na todle? , nebo to není dobré řešení ??




function presmerovani($adresa = "index.php?"){
echo "<script>";
echo "window.location.replace("$adresa")";
echo "</script>";
}
tiso
Profil
Presmerovať môžeš priamo v PHP pomocou príkazu header, len nesmieš predtým odoslať žiaden výstup
Visitor
Profil *
tiso:
Celkem zajimave tema...

Ja to taky drive resil striktne pomoci headeru asi takhle:
header ('location: index.php');
die ('Pokračujte <a href="index.php">zde</a>.');

Kde die() zachranovalo pokud se nepovedlo presmerovani.

Ale dneska davam prednost reseni pomoci JS takto:
echo '<script language="JavaScript">window.location.href="index.php";</script>';
die ('Pokračujte <a href="index.php">zde</a>.');

A to predevsim kvuli tomu, ze treba OPERA ma detekci presmerovani a dve presmerovani v kaskade uz vyhodi specifickou chybovou stranku prohlizece kterou si nijak neosefuji (nepomaha ani die() vypis). Dalsi vec je ze si pomoci JS osefuji presmerovani do TOPu kdyz chybu vyhlasi iframe. je pekne mit nekolik vnorechny iframu s logovacim dialogem protoze chyby zjistuje vnorena stranka :)

Strach z toho ze uzivatel bude mit vypnuty JS nemam. Nestava se mi (nikdy se mi nestalo) ze by user "reklamoval" chybu aplikace ktera je zpusobena tim ze by si vypnul JS. To uz musi byt nejaky schizofrenik aby vsechno dychtive vypinal. Naopak sledovani headeru byva standardne zapnute.
tiso
Profil
Visitor - aký je dôvod presmerovávať 2x za sebou?
los
Profil *
Presmerovávať JavaScriptom, keď to ide pomocou HTTP hlavičky (kde má byť absolútna cesta, nie relatívna), nie je dobré riešenie. Navyše, location.replace nevytvorí záznam v histórii, takže tlačidlo Späť nefunguje očakávaným spôsobom.
Visitor
Profil *
tiso:
no je to treba v aplikaci...

stranka A odhali zes zadal chybne udaje a presmeruje te na stranku B. jak na potvoru stranka B zjisti ze ti vyprselo prihlaseni a presmeruje te na stranku C.

to je jen jednoduchy priklad. na webu nejsou jen HTML stranky ale delaji se v tom i ruzdne slozitejsi aplikace.
tiso
Profil
Visitor a čo takto:
1. stránka A obsahuje formulár, ktorý po odoslaní i spracúva a tak zistí že si zadal chybné údaje.
2. Keďže si ich odoslal až po vypršaní prihlásenia, tak Ťa:
2a. buď presmeruje na stránku B s prihlásením a potom naspäť na vyplnený formulár ktorý stačí odoslať,
2b. alebo miesto potvrdenia formulára zobrazí prihlasovací form aby si sa znovu prihlásil a po prihlásení ako v predchádzajúej možnosti zobrazí vyplnený form ktorý stačí odoslať.
3. Po správnom odoslaní formulára sa presmeruje na stránku C (prípadne znovu A) spolu s nejakým príznakom a zobrazí sa potvrdenie správneho vyplnenia formulára a podobne...

na webu nejsou jen HTML stranky ale delaji se v tom i ruzdne slozitejsi aplikace.
Nebav sa tu so mnou ako s 15-ročným harantom, ja už mám niečo za sebou...
Visitor
Profil *
tiso:
tak kdyz mas neco za sebou proc mi tu oponujes nad prikladem ktery jsme tu nadhodil? byl jen obrazny... na kazdy sebeslozitejsi priklad najdu alternatibu bez dvojiteho presmerovani. ale proste ber to jako fakt ze k dvojitemu presmerovani muze dojit. Treba pri komponentove implementaci... Nevidim do komponekty kterou pouzivam znam jen jeji interface :) Doufam ze me tu zase nechytis za slovo a budes akceptovat dvojite presmerovani jako fakt.
tiso
Profil
Visitor - ja to beriem tak že dvojité presmerovanie je chyba návrhu a dá sa to bez toho. To bolo celé. Nechcem Ťa chytať za slovo, ani sa hádať, je to skrátka môj názor.
k
Profil *
to znamená že je lepší používat header() na přesměrování .. ?? ale jak mám použít header když předtím mám už html znaky ? , ,
los
Profil *
Dvojité presmerovanie sa môže vyskytnúť, keď treba napr. prepojiť viacero aplikácií. To, že Opera po dvoch presmerovaniach na rôzne adresy zakape, sa mi zdá blbosť (skôr si myslím, že presmerovaní bolo viac než dve alebo boli na tú istú adresu a možno si ten redirect dala Opera do keše) - ale neviem, takéto bugy Opery ma nezaujímajú.

Úplne ******* majú presmerovanie spravené na http://www.t-mobile.sk/ pri dobíjaní kreditu na mobil: Tlačidlo pre dobitie kreditu je obsluhované JavaScriptom, takže bez JS ani ranu (to by až tak nevadilo, bude horšie). Po kliknutí sa odošle formulár a presmeruje sa na inú stránku pomocou HTTP hlavičky. Potom sa otvorí JavaScriptom ďalšie okno a pôvodná stránka je ďalej presmerovaná JavaScriptom. Keď má niekto v takomto guláši zapnuté blokovanie popup okien (čo je defaultné nastavenie), tak sa na konci pozerá na jedno okno s informáciou: Platbu realizujte v druhom okne. A kto by si myslel, že pomôže povolenie popup okien pre doménu t-mobile.sk, tak je tu ešte ďalšie prekvapenie - nové okno je otvárané na inej doméne: e-zones.sk. Ten človek, čo to spatlal, zjavne nebol pri zmysloch.
los
Profil *
Áno, header je lepší. Keď máš predtým nejaký výstup, tak by bolo lepšie zmeniť návrh aplikácie alebo kešovať výstup (http://sk.php.net/ob_start, ...).
jursky
Profil
super, konečne viem presmerovať
Toto téma je uzamčeno. Odpověď nelze zaslat.

0