redirect tilbage til siden brugeren kom fra

Tags:    php

Hej

Jeg sidder og laver en lille projekt, hvor brugeren kan tilføje en eller flere varer til en indkøbskurv.

Mit problem er, at ikke lige kan finde ud af, at redirecte brugeren tilbage til siden som brugeren kom fra efter submit, hvis for eksempel:

1. der ikke blev tilføjet noget til indkøbskurven
2. der blev tilføjet flere varer end der er på lager !

Jeg mener ikke at jeg kan gøre brug af $_SERVER["PHP_SELF"], da min kode ikke er på samme side som formularen.

Jeg tror selv, at løsningen er at "fange" URL'en og stoppe den ned i en $variabel og "hægte" den på en header - noget i stil med dette:

header('location:../".$siden_som_brugeren_kom_fra."');

Men hvordan får jeg fat i URL'en ?

På forhånd tak for hjælpen

EDIT:

Efter, at have gravet lidt mere i emnet, så ser det ud til, at jeg kan bruge:

$_SERVER["REQUEST_URI"];





Indlæg senest redigeret d. 23.08.2014 14:42 af Bruger #16670
4 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Som du selv nævner så skal du benytte din URI.

Du skal sende din URL med i dit request som en parameter i urlen, så reponset ved hvor brugeren skal sendes hen i tilfælde af at der sker fejl som du også selv nævner. I PHP skal du bruge funktionen urlencode() til at den bliver formateret korrekt.

Det vil komme til at se noget lignende sådan her ud i dit link.


Fold kodeboks ind/udPHP kode 


Du kan altså kigge om der er fejl i dit respons, og altså kigge på $_GET['back'] variablen hvor brugeren skal navigeres hen, og du kan derved gøre noget lignende:

Fold kodeboks ind/udPHP kode 



EDIT: tilføjet eksempel med header('Location: ...')





Indlæg senest redigeret d. 23.08.2014 17:08 af Bruger #8782
Hej igen

@Jens

Tak for dit forslag. Mens jeg ventede på svar, så prøvede jeg selv at gøre noget og jeg fandt frem til noget, som sikkert må betegnes som "redneck-kode", men det virker altså og det er uden brug af urlencode().

på min produkt detalje side har jeg indsat:
Fold kodeboks ind/udPHP kode 


og på siden hvor min php kode tester brugerens input har jeg indsat:
Fold kodeboks ind/udPHP kode 


Så mangler jeg bare, at finde ud af, hvordan jeg kan vise en fejlmeddelelse når brugeren blive redirected ! - jeg forestillede mig, at jeg kunne bruge sessions til dette men, det giver, i skrivende stund, en del problemer for mig da:

1. session'en er tom første gang brugeren kommer til min produkt detalje side og derfor giver en undefined index - fordi session'en jo er tom.

Jeg havde i første omgang forsøgt at sætte $_SESSION['fejlmeddelelse']; til $_SESSION['fejlmeddelelse']) = ""; men så vises fejlmeddelelserne ikke !

2. session'en som indeholder fejlmeddelelsen skal fjernes, så den ikke vises hvis brugeren kigger på et andet produkt

ja, jeg er vist ude i noget med unset($_SESSION['fejlmeddelelse']);, men jeg er dog ikke lige helt på det rene med hvordan jeg skal implementere koden !

Nå, men det ud til at der er lidt at "hygge" sig med...








1. session'en er tom første gang brugeren kommer til min produkt detalje side og derfor giver en undefined index - fordi session'en jo er tom.

den er ikke tom!!, den existerer ikke, prøv at se hvad isset kan gøre for dig :)

Fold kodeboks ind/udKode 



js sletning af $_SESSION['fejlmeddelelse'] kan gøres med unset som du er inde på
du kan også bare sætte det til en tom string, afh af hvordan du coder det, men unset er nok det pæneste




Indlæg senest redigeret d. 24.08.2014 07:28 af Bruger #16075
Hej

@Ronny

Jeg fulgte dit kode forslag og pakkede min $_SESSION['fejlmeddelelse']; ind i en if-statement og tjekket om den er sat

(Warning: lettere irrelevant sidebemærkning)
en af mine medstuderende ynder tit at sige: (når jeg og andre "kode-klovne" sidder og ikke kan forstå at tingene ikke virker) "tjek om den er der !" - når han siger sådan, så ved vi jo godt hvad vi lige har glemt at gøre...

Jeg elsker når han siger sådan, for jeg føler han formår at få gjort programmering, som godt kan virke lidt abstrakt/diffust til tider, til noget håndgribeligt - altså noget man kan føle og røre ved med fingrene også selvom det kun foregår oppe i hovedet.

Nå, jeg ævler løs !

Jeg brugte også unset($_SESSION['fejlmeddelelse'] ; og her var jeg altså lige lidt i tvivl om hvordan og ikke mindst hvor jeg skulle bruge den, da jeg ikke lige kunne se hvordan den kunne bruges på samme side som isset() ?

Jeg mener: der går jo lidt kage i logikken synes jeg, hvis man siger:

"vis sessionen, hvis den eksisterer ellers fjern den (unset)

Min løsning var at indsætte den på min produktoversigtsside, så når brugeren kommer dertil, så vil den unsette sessionen hvis den er sat og derved, så vil brugeren ikke se den gamle fejlmeddelelse på en side for et andet produkt/vare.

produktoversigtsside.php
Fold kodeboks ind/udPHP kode 


Det ser ud til at virke ganske glimrende og så går jeg ud fra, at det er sådan man gør - eller ?





t