Avatar billede g1mzee Nybegynder
16. juni 2009 - 08:54 Der er 12 kommentarer

login: gå til samme side man kom fra.

Hej eksperter.
Jeg står med et lille problem som jeg ikke lige kan se løsningen på. Så håber lidt at i kan hjælpe mig.

Det jeg gerne vil have er at når man logger ind på min side, så bliver man sendt til den side man kom fra. Så f.eks. hvis man skal til at gennemføer sin bestilling, så skal man være logget ind, men når man så er logget ind så vil jeg gerne have at den går til den side den lige fra på. Sådan man ikke skal til at finde det sted igen..
Håber i kan se hvad det er jeg mener.

- Schumacher
Avatar billede majbom Novice
16. juni 2009 - 09:04 #1
hvor du sender brugeren videre til login-siden kan du jo tage sidens url med (altså siden man er på) og så bruge den til at se hvor brugeren kom fra, så du kan sende vedkommende tilbage igen...

håber det gav mening :)
Avatar billede repox Seniormester
16. juni 2009 - 09:05 #2
Brug dine sessions.

Den løsning jeg kører er noget ala:

<?php

//user::LoggedIn() tjekker om brugeren er logget ind
if(!user::LoggedIn())
{
    $_SESSION["currentPage"] = basename($_SERVER["PHP_SELF"]);
    header("Location: login.php");
    exit;
}

?>

Og din loginfunktion kan så have noget ala:
<?php

//pseudo kode der tjekker login
//når brugeren så er blevet logget ind:
if(isset($_SESSION["currentPage"]))
{
    $page = $_SESSION["currentPage"];
    unset($_SESSION["currentPage"]);
    header("Location: ".$page);
    exit;

}

?>
Avatar billede Slettet bruger
16. juni 2009 - 09:09 #3
På alle mine undersider har jeg følgende 2 variabler (du skal anvende sessions for at det virker):
$_SESSION['retur-then'] = $_SESSION['retur-now'];
$_SESSION['retur-now']  = $_SERVER['REQUEST_URI'];

retur-then indeholder den forrige side du var på.
retur-now indeholder den side du er på lige nu.

Når logon er gennemført, redirecter du brugeren tilbage til den oprindelige side via disse 2 linier:

$referer = $_SESSION['retur-then'];
header("Location:$referer");
Avatar billede expnet Seniormester
16. juni 2009 - 09:09 #4
jamen det du kan gøre er at lave et input felt i din login formular som kunne hedde "replyurl" og hente url'en de sidst var på med denne her: $_SERVER['HTTP_REFERER'];
Avatar billede g1mzee Nybegynder
16. juni 2009 - 09:31 #5
tak for de hurtige svar.
Jeg sad nemlig og legede med noget lignede, og jeg vidste ikke lige hvad der var den smarteste måde at gøre det på.
men jeg sad med min lærer og prøvede og der fik vi det også til at virke. Men den der $_SERVER['HTTP_REFERER']; stødte vi også på, men den virkede ikke ?.. noget specielt der skal til før den virker ?
Avatar billede g1mzee Nybegynder
16. juni 2009 - 09:34 #6
mhh, syntes bare det virker lidt meget at skulle lave en session for hver side, uden nogen grund, for det er jo ikke altid man skal bruge denne function.. så det er en masse unødvendig arbejde for serveren..
Avatar billede g1mzee Nybegynder
16. juni 2009 - 09:35 #7
det var til kfisker indlæg.
Avatar billede majbom Novice
16. juni 2009 - 09:47 #8
-> #7 - gør som repox skriver, det var det samme jeg mente - havde bare ikke lige tid til at skrive et eksempel :)
Avatar billede repox Seniormester
16. juni 2009 - 09:50 #9
Hvis du er af den opfattelse at serveren vil overbebyrdes, fordi du sætter en session eller ti på hver enkelte side, så bør du skifte serveren ud.
Sessions bliver ændret og bearbejdet hele tiden på mange forskellige websites - sessions er virkelig smarte.

$_SERVER["HTTP_REFERER"] virker kun vist klienten sender den med, hvilket der ikke altid er garanti for. PHP skriver selv i deres dokumentation ( http://www.php.net/manual/en/reserved.variables.server.php ) :
The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.
Avatar billede g1mzee Nybegynder
16. juni 2009 - 10:17 #10
#9. Det er ikke fordi jeg tror den crasher på den måde. men, hvis man ikke skal bruge det til noget ?
Men ja, du kan nok godt have ret, også lidt i den vej jeg havde tænkt mig at gøre, men det var bare om det var unødvendigt trafik.
Men så er det jo godt jeg kan få svar her ;)..
Avatar billede repox Seniormester
16. juni 2009 - 10:25 #11
Du skal jo netop bruge det?
Du skal bruge det til at implementere den funktionalitet du ønsker.

Jeg ved ikke om 'trafik' var det ord du mente at benytte, men en session skaber ikke trafik (udover den cookie der benyttes). Alt data er jo gemt serverside og behandles serverside.
Avatar billede g1mzee Nybegynder
16. juni 2009 - 11:06 #12
Ja så var trafik nok ikke det rigtige ord, det kan jeg godt se :).. heh. .
- men jeg prøver det lige dit forslag der !.. tak for det..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester