Ridrejtimi i Php në faqe. Si të ridrejtoni një përdorues në një faqe tjetër

Le të themi se dëshironi të shfaqni faqen https://example.com/final.php për përdoruesit që lundrojnë në faqen https://example.com/initial.php. Kjo mund të bëhet duke përdorur disa metoda PHP, JavaScript dhe HTML. Në këtë artikull, ne do të mbulojmë secilën nga metodat që mund të përdorni për të ridrejtuar PHP në një faqe tjetër.

Këtu janë disa variabla që do të përdorim:

Përdorimi i funksionit PHP header() për të ridrejtuar një URL

Nëse dëshironi të shtoni një ridrejtim nga fillestar.php në final.php, mund të vendosni kodin e mëposhtëm në faqen e internetit fillestare.php. Ai dërgon një kokë të re vendndodhjeje në shfletues:

Këtu ne përdorim kokën e funksionit PHP () për të krijuar ridrejtimin. Ju duhet ta vendosni këtë kod përpara çdo HTML ose teksti. Përndryshe, do të merrni një mesazh gabimi se titulli tashmë është dërguar. Ju gjithashtu mund të përdorni bufferimin e daljes për të parandaluar këtë gabim të dërgimit të titujve. Shembulli i mëposhtëm tregon këtë teknikë të ridrejtimit të PHP në veprim:

Për të kryer një ridrejtim duke përdorur funksionin header(), funksioni ob_start() duhet të jetë funksioni i parë në skriptin PHP. Kjo do të parandalojë që të ndodhin gabime në kokë.

Si masë shtesë, mund të shtoni die() ose exit() menjëherë pas ridrejtimit të kokës në mënyrë që pjesa tjetër e kodit të faqes së internetit të mos ekzekutohet. Në disa raste, robotët e kërkimit ose shfletuesit mund të mos i kushtojnë vëmendje treguesit në kokën e vendndodhjes. Cilat janë kërcënimet e mundshme për sigurinë e sitit:

Për të qenë të qartë: die() ose exit() nuk kanë të bëjnë me ridrejtimet. Ato përdoren për të parandaluar ekzekutimin e pjesës tjetër të kodit në faqen e internetit.

Kur ridrejtoni në një faqe në PHP, rekomandohet të përdorni URL absolute kur specifikoni vlerën e kokës së vendndodhjes. Por URL-të relative do të funksionojnë gjithashtu. Ju gjithashtu mund ta përdorni këtë veçori për të ridrejtuar përdoruesit në sajte ose faqe të jashtme të internetit.

Dalja e kodit të ridrejtimit të JavaScript duke përdorur funksionin PHP echo().

Kjo nuk është një zgjidhje e pastër PHP. Megjithatë, është gjithashtu efektive. Ju mund të përdorni funksionin PHP echo() për të nxjerrë kodin JavaScript që do të trajtojë ridrejtimin.

Nëse përdorni këtë zgjidhje, nuk do t'ju duhet të përdorni buferimin e daljes. Kjo gjithashtu parandalon gabimet që lidhen me dërgimin e titujve.

Më poshtë janë disa shembuj që përdorin metoda të ndryshme JavaScript për të ridrejtuar nga faqja aktuale në një tjetër:

E vetmja pengesë e kësaj metode të ridrejtimit në një faqe tjetër PHP është se JavaScript funksionon në anën e klientit. Dhe vizitorët tuaj mund të kenë JavaScript të çaktivizuar.

Përdorimi i meta etiketave HTML për ridrejtim

Ju gjithashtu mund të përdorni HTML bazë për të kryer ridrejtimin. Mund të duket joprofesionale, por funksionon. Dhe nuk duhet të shqetësoheni nëse JavaScript është çaktivizuar në shfletuesin tuaj ose keni dërguar më parë një gabim në kokë:

Mund të përdorni gjithashtu rreshtin e fundit nga shembulli i mëparshëm për të rifreskuar automatikisht faqen çdo "n" sekonda. Për shembull, kodi i mëposhtëm do të rifreskojë automatikisht faqen çdo 8 sekonda:

konkluzioni

Në këtë artikull, unë shikova tre metoda të ndryshme të ridrejtimit të indeksit php, së bashku me avantazhet dhe disavantazhet e tyre. Metoda specifike për t'u përdorur varet nga objektivat e projektit.

Përkthimi i artikullit "Si mund të bëj një ridrejtim në url të ndryshëm përpara ngarkimit të faqes në PHP" nga ekipi miqësor i projektit.

Mire keq

(PHP 4, PHP 5, PHP 7)

header - Dërgo kokën HTTP

Përshkrim

header (string $header [, bool $replace = TRUE [, int $http_response_code ]]) : i pavlefshëm

header() përdoret për të dërguar kokën HTTP. Specifikimi »HTTP/1.1 ka një përshkrim të detajuar të titujve HTTP.

Mos harroni se funksioni header() mund të thirret vetëm nëse klientit nuk i është dërguar ende asnjë të dhënë. Kjo do të thotë, ai duhet të vijë i pari në dalje nuk duhet të ketë etiketa HTML, rreshta bosh, etj. Shumë shpesh, një gabim ndodh kur, kur lexoni kodin me funksione skedari si përfshirja ose kërkesa, ka hapësira ose rreshta bosh në kod që shtypen përpara se të thirret header(). Të njëjtat probleme mund të lindin kur përdorni PHP/HTML në të njëjtin skedar.


Lista e parametrave

Rreshti i titullit.

Ka dy koka të veçanta. Njëra prej tyre fillon me " HTTP/" (rasti nuk është i rëndësishëm) dhe përdoret për të dërguar një kod statusi HTTP. Për shembull, nëse serveri i uebit Apache është i konfiguruar në mënyrë që kërkesat për skedarë që nuk ekzistojnë të trajtohen nga një skript PHP (duke përdorur direktivën Dokumenti i gabimit), ndoshta do të dëshironi të siguroheni që skripti gjeneron kodin e saktë të statusit.

Një tjetër lloj i veçantë i kokës është "Vendndodhja:". Në këtë rast, funksioni jo vetëm që e dërgon këtë kokë në shfletues, por gjithashtu i kthen atij një kod statusi RIDIREJTO(302), nëse kodi nuk është vendosur më parë 201 ose 3xx.

Zëvendësoni

Parametri opsional i zëvendësimit përcakton nëse titulli i mëparshëm i ngjashëm ose titulli i të njëjtit lloj duhet të zëvendësohet. Si parazgjedhje, titulli do të zëvendësohet, por nëse kaloni FALSE , mund të specifikoni shumë tituj të të njëjtit lloj. Për shembull:

Http_kodi_përgjigje

Detyron një kod përgjigjeje HTTP. Vini re se kjo do të funksionojë vetëm nëse vargu i kokës nuk është bosh.

Vlerat e kthimit

Ky funksion nuk kthen një vlerë pas ekzekutimit.

Lista e ndryshimeve Shembuj

Shembulli #1 Dialogu i shkarkimit

Nëse dëshironi të paralajmëroni përdoruesin që të ruajë të dhënat që dërgohen, si p.sh. një skedar PDF i krijuar, mund të përdorni kokën »Content-Disposition, i cili zëvendëson emrin e rekomanduar të skedarit dhe bën që shfletuesi të shfaqë një dialog shkarkimi.

Shembulli #2 Direktivat për të punuar me cache

Skriptet PHP shpesh gjenerojnë përmbajtje dinamike që nuk duhet të ruhen nga shfletuesi i klientit ose ndonjë program ndërmjetës siç janë serverët proxy. Ju mund të detyroni cache-in të çaktivizohet në shumë proxy dhe shfletues duke kaluar titujt:

Shënim:

Në disa raste, faqet tuaja nuk do të ruhen nga shfletuesi, edhe nëse nuk i keni kaluar këto tituj. Shfletuesit kanë cilësime të caktuara me të cilat përdoruesi mund të ndryshojë rrjedhën normale të cachimit dhe ta çaktivizojë atë. Duhet të anashkaloni çdo cilësim që mund të ndikojë në ruajtjen e skriptit duke dërguar titujt e mësipërm.

Përveç kësaj, për rastet kur përdoren sesionet, mund të vendosni cilësimet e konfigurimit session_cache_limiter() dhe sesioni.cache_limiter. Këto cilësime mund të përdoren për të gjeneruar automatikisht titujt e kontrollit të memorizimit.

Shënime

Shënim:

Titujt do të aksesohen dhe shfaqen vetëm nëse SAPI që po përdorni i mbështet ato.

Shënim:

Për të zgjidhur këtë problem, mund të ruani daljen e skriptit. Në këtë rast, të gjitha të dhënat dalëse do të ruhen në server derisa të jepet një komandë e qartë për përcjelljen e të dhënave. Ju mund ta kontrolloni bufferimin manualisht duke përdorur funksionet ob_start() dhe ob_end_flush(), ose duke vendosur direktivën output_buffering në skedarin e konfigurimit php.ini, ose duke rregulluar konfigurimin e serverit në përputhje me rrethanat.

Shënim:

Linja e titullit të statusit HTTP gjithmonë do t'i dërgohet së pari klientit, pavarësisht nëse thirrja përkatëse e funksionit header() ishte e para apo jo. Kjo gjendje mund të mbishkruhet duke thirrur header() me një linjë të re statusi sa herë që mund të dërgohen titujt HTTP.

Shënim:

Ekziston një gabim në Microsoft Internet Explorer 4.01 që e pengon këtë të funksionojë. Nuk ka rrugëdalje. Microsoft Internet Explorer 5.5 gjithashtu e ka këtë gabim, por tashmë mund të rregullohet duke instaluar Service Pack 2 ose më të lartë.

Shënim: Nëse aktivizohet modaliteti i sigurt, do t'i shtohet uid-i i skriptit mbretëri pjesët WWW-Vërteto header (përdoret për vërtetimin HTTP).

Shënim:

Specifikimi HTTP/1.1 kërkon një URI absolute si argumentin » Location:, duke përfshirë skemën, emrin e hostit dhe rrugën absolute, megjithëse disa klientë janë të aftë të pranojnë URI relative. Ju mund të ndërtoni vetë një URI absolute duke përdorur $_SERVER["HTTP_HOST"] , $_SERVER["PHP_SELF"] dhe dirname() :




Top