Hej,
Skulle vilja ha lite synpunkter på en funktion jag håller på med.
Lägesorientering: En användare som surfar runt på olika sidor kommer till en funktion som kräver inloggning. Användaren loggar in. Då ska personen självklart komma tillbaka till den sida han/hon nyss var på.
Så här har jag löst det hela:
<?php if($_SESSION["active"] == false) {
$redirect = explode("/", $_SERVER['PHP_SELF']);
$_SESSION["activepage"] = "http://".$_SERVER['HTTP_HOST']."/".$redirect[1]."/".$redirect[2];
}
?>
Min filosofi här är att jag tar reda på adressen på aktuell sida och fixar iordning en sträng som motsvarar den personen nyss besökt. Denna sträng lagrar jag sedan i en $_SESSION-variabel som jag läser av i inloggningsfunktionen som i sin tur skickar användaren tillbaka till ursprungssidan.
Är detta en bra lösning? :)
Kent.JMedlem sedan aug. 2001153 inlägg Låter som en ok lösning.
Du tappar dock querystringar med din funktion... De plockas upp med $_SERVER[QUERY_STRING].
Varför kör du explode?
ps.
$_SERVER['HTTP_REFERER'] bör undvikas
Kent.J skrev:
Du tappar dock querystringar med din funktion... De plockas upp med $_SERVER[QUERY_STRING].
Hur menar du "tappas bort"? :)
Kent.J skrev:
Varför kör du explode?
Bra fråga. Det blev så med de kunskaper jag hade. Tänkte kanske fel.
Kent.J skrev:
$_SERVER['HTTP_REFERER'] bör undvikas
Varför? Den skriver ju ut hela adressen så när som på "querisarna". Är inte det bra?
Kent.JMedlem sedan aug. 2001153 inlägg De sakerna du har efter filnamnet kommer försvinna när du skickar tillbaka dem.
http://www.server.com/fil.php?do=show blir http://www.server.com/fil.php
Så du bör även spara det.
$_SESSION["activepage"] = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
if($_SERVER['QUERY_STRING']>' ') $_SESSION["activepage"] .= "?".$_SERVER['QUERY_STRING'];
$_SERVER["HTTP_REFERER"] bör man undvika eftersom den kan vara tom då och då. Den hålls tom av program såsom t.ex Norton internet securtiy ...
Du kan kolla om den finns och isf använda den, men glöm inte att ha en fungerade backupfunktion bara :)
Tror jag förstår vad du är ute efter.
För varje sida kommer jag ju vara tvungen att skapa en unik redirect-sträng som jag matar $_SESSION med. Så långt tänker vi lika?
För alla sidor som inte har någon querystring kan man ju skriva som du har skrivit:
$_SESSION["activepage"] = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
På en sida som visar aktuella trådar i ett forum förekommer det ju två variabler i querystringen. Då skriver jag så här:
$_SESSION["activepage"] = "http://".$_SERVER['HTTP_HOST']."/".$redirect[1]."/".$redirect[2]."?threadID=".$_GET['threadID']."&forumID=".$_GET['forumID'];
Är inte det rätt?
Kan du ge ett kort förklarande exempel när if-satsen kommer till sin rätt? :)
if($_SERVER['QUERY_STRING']>' ') $_SESSION["activepage"] .= "?".$_SERVER['QUERY_STRING'];
Kent.JMedlem sedan aug. 2001153 inlägg Jo, det är väl rätt.
Men hur vet du att personen kommer ifrån en sida som visar en tråd. Tänk om personen kommer ifrån ett forum istället? Tänk ifall den kommer ifrån... ja... fantisera...
Därav är php_self + query_string både lättare o bättre o använda ... den tar ut hela adressen oavsätt vart man kom ifrån.