Gå til innhold

[løst] header(Location: Referer) problem med form data


Anbefalte innlegg

Har ett problem med en funksjon for lesing av data send fra en form. Dette funker flott i FF og IE, men Opera og Safari har problemer. Noen som vet hva det kommer av? Her er koden jeg bruker:

 

index.php:

<form action="handle.php" method="post" name="myform">

<a href="result.php" onClick="document.myform.submit();">Send data</a>

 

handle.php:

// Behandle sendt data og gå tilbake til referende side.

header('Location: '.$_SERVER['HTTP_REFERER']);

 

result.php

echo 'data ble motatt, takk';

 

I FF og IE blir dataen behandlt av handle.php, og man blir så sendt til result.php men i Opera og Safari kommer man rett til result.php uten at handle.php behandler dataen først.

 

 

Edit: Ja, je vet det finnes alternative løsninger som kan se bedre ut å bruke, men "handle.php" blir brukt til så mye at jeg gjerne vil beholde dens måte og sette header location på.

 

Edit2: Denne er nå løst ved og legge med destinasjonen som input hidden der hvor siden ikke skal returnere til referer.

Endret av pulse
Lenke til kommentar
Videoannonse
Annonse
Det er virkelig ikke smart å bruke $_SERVER['HTTP_REFERER'], da en del kjører med denne avslått og det er ikke alltid den funker som den skal. Anbefaler deg heller å sette location via $_GET e.l. ;)
Jet vet, og fremdeles ønsker jeg å bruke denne funksjonen, er det noen som vet hva som er galt i forhold til Opera og Safari?
Lenke til kommentar
Hvis index.php peker til handle.php, så skal jo refereren peke tilbake til index.php, ikke result.php. Ser ikke helt hvor den result.php kommer inn i bildet her, så det må være noe kode du har utelatt.
Ingen kode utelatt, prøv det, jeg vet det er rart, men det fungerer :) ...dog bare i FF og IE...
Lenke til kommentar
Gjest Slettet+1298342134

alec1, koden virker, men er dog litt forvirrende.

Du bruker en link for å sende formet dit det skal med litt javascript, og den samme linken skal sende deg til result.php samtidig. Dette virker, men er vel noe unødvendig?

 

OG header('location.. i handle.php sender deg til index.php igjen ikke til result.php så den er veldig unødvendig her.

 

Uten at jeg har testet dette i opera/safari vil jeg tro at dette ikke virker fordi du har en link som skal sende dataen til en side og sende "deg" til result med en gang.

 

Kanskje det virker om du setter href="#" i linken din og location i handle.php til result.php ikke tilbake til index.php.

Lenke til kommentar
Kanskje det virker om du setter href="#" i linken din og location i handle.php til result.php ikke tilbake til index.php.

Ja, det virker. Men poenget er at jeg vil beholde "handle.php" som den er. Kanskje det bare er slik at Opera og Safari ikke støtter denne metoden. Vel, får kanske heller bare bruke metoden dersom man har FF eller IE, og droppe litt funksjonalitet for resten.

 

Takker for svar :)

Lenke til kommentar

Grunnen til at det ikke fungerer i Opera/Safari er rett og slett fordi du har logiske feil i koden din. Refer skal alltid peke tilbake til siden man kom fra - hvilket er index.php.

 

Forstår at du vil ha koden som den er, men om du ikke gjør noen endringer kan du ikke forvente at den vil fungere i Opera/Safari. Beklager.

 

Og som du sikkert vet: alle som måtte surfe med reffers avslått (uansett nettleser) vil det heller ikke fungere for.

 

Hva med å fjerne lenken og legge til videresenings-adressen som et post felt?

<input type="hidden" value="result.php" />

<input type="submit" value="Send data" />

Lenke til kommentar
Grunnen til at det ikke fungerer i Opera/Safari er rett og slett fordi du har logiske feil i koden din. Refer skal alltid peke tilbake til siden man kom fra - hvilket er index.php.

 

Forstår at du vil ha koden som den er, men om du ikke gjør noen endringer kan du ikke forvente at den vil fungere i Opera/Safari. Beklager.

 

Og som du sikkert vet: alle som måtte surfe med reffers avslått (uansett nettleser) vil det heller ikke fungere for.

 

Hva med å fjerne lenken og legge til videresenings-adressen som et post felt?

<input type="hidden" value="result.php" />

<input type="submit" value="Send data" />

Det med referer avslått forstår jeg ikke poenget med å gjøre? Er det noen som virkelig gjør det? Og da er det jo itilfelle bare å skru den på igjen om man vil ha det til å fungere :) Men ja, det er mulig å lage en slik sak, kommer til å kikke på en slags semi løsning i fremtiden som kan dra nytte av denne (<input type="hidden" value="result.php" />) dersom den er satt, ellers følge referer, for jeg vil jo gjerne støtte dem største nettleserene :)

Endret av pulse
Lenke til kommentar

Det er nettleseren selv som må sende inn refer-adressen til serveren. En del tenker at slik informasjon har serveren strengt tatt ikke noen grunn til å vite - spiller jo ikke noen rolle for diskusjon.no om jeg kom hit via google, hw.no eller andre kilder? Poenger er jo at jeg er her! Noen bedrifter kan f.eks. ha streng politikk på dette, og dermed ha slått av all slik informasjon.

 

En annen sak er at refers er lett å endre på - det er jo tross alt nettleseren som bestemmer hva som skal stå der. Så utifra sikkerhetsmessige grunner bør man aldri validere på hva som står i refers-feltet. (Dette gjelder forøvrig også bruk av <input type="hidden"> -felter. Også informasjonen her kan brukeren selv manipulere, om han/hun virkelig ønsker det. Men dette faller litt utenfor ditt bruksområde - jeg antar det ikke er krise om noen tukler med refers, og dermed havner et annet sted?

 

Håper du finner en løsning for Opera og Safari, er jo dumt hvis de som bruker disse nettleserne bare kommer til en blank skjerm ...

Lenke til kommentar

Det gjør ingenting om det endres nei, eneste som skjer er at dem ikke får utført den handlingen dem prøver på, og havner på feil side. Derimot vil jeg si det er i mange tilfeller kjekt å vite hvor folk kommer fra. F.eks om dem kommer fra google, kan man hente ut søkeordene som ble brukt, og highlighte dem på siden sånn at det er lettere å finne frem til det man søkte etter. Men det er vel ikke opp til meg og bestemme hva andre skal gjøre uansett :p Det som er poenget er at om folk skrur av JavaScript, referer, cookies og andre saker så har jeg dessverre ikke kapasitet til å tilfredsstille disse gruppene. Det er ille nok å få ting til å funke i dem største nettleserene...

 

Edit: Finner nok en løsing for disse nettleserene, dem kommer til riktig side, men data sendt bilr ikke håndtert, så man må legge inn ting manuelt på svarsiden istedet for at det går automatisk :) Men det er helt klart en høy prioritering å i alle fall få med Opera. Har ikke funnet noen version av Safari som kjører på ubuntu enda, så er litt vanskelig å få testet denne. Det samme gjelder forøvrig IE7.

Endret av pulse
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...