Avatar billede kgp43 Nybegynder
18. april 2005 - 21:23 Der er 7 kommentarer og
1 løsning

Referer error

Hejsa,

Jeg har en underlig fejl.
Denne kode plejer at virke, men det gør den ikke mere - ved ikke hvad der er gået galt.

Jeg bruger normal 'getenv("HTTP_REFERER")' til at få referer, men har ændret det en smule, så det er lettere at opdage fejlen.

Klik op "download":
http://savefile.com/filehost/projects.php?pid=637472

$referer = "http://savefile.com/filehost/projects.php?pid=637472 ";
if (substr($referer, 0, 56) != "http://www.savefile.com/filehost/projects.php?pid=$pid") {
    //header("Location: /filehost/projects.php?pid=$pid");
    echo getenv("HTTP_REFERER");
    exit();
}

- Den stopper selvom referer er korrekt. Hvorfor?
Avatar billede kgp43 Nybegynder
18. april 2005 - 21:29 #1
Avatar billede bromer Nybegynder
18. april 2005 - 21:31 #2
Det er ikke en særlig køn måde at gøre det på. Hvis det er din referer kan du vel benytte $_GET['pid'] og bare sammenligne den mod $pid eller hvad?
Avatar billede kgp43 Nybegynder
18. april 2005 - 21:33 #3
ahhhh, har fundet fejlen.
Koden virker ikke hvis brugeren skriver http://savefile.com/f....
de skal bruge www (http://www.savefile.com/...)

er der nogen der har en ide til en løsning, der virker til begge?
Avatar billede bromer Nybegynder
18. april 2005 - 21:36 #4
Hvad er det egentlig du vil? Indholdet af refererer er jo noget som browseren sætter så du kan ikke stole på det, hvis du ønkser at lave noget sikkert ud fra den information.
Avatar billede kgp43 Nybegynder
18. april 2005 - 21:36 #5
bromer: det vil ikke forhindre brugeren at linke directe til side2 (projects2.php), hvilket jeg ikke vil have.

Dette er min kode:
$referer = getenv("HTTP_REFERER");
if (substr($referer, 0, 56) != "http://www.savefile.com/filehost/projects.php?pid=$pid") {
    header("Location: /filehost/projects.php?pid=$pid");
}

- Hvordan skal jeg lave det så brugeren både kan bruge http://save... og http://www.sa... ?

Kunne selvfølgelig lave to, eller et bruge OR, men findes der ikke en smartere måde?
Avatar billede kgp43 Nybegynder
18. april 2005 - 21:38 #6
bromer: Har brug for at forhindre brugeren i at linke direkte til projects2.php (eller projects3.php + 4). Denne metode forhindre dette, er dog ikke sikker på om den er sikker nok.

Brugeren skal gå via projects.php
Avatar billede kgp43 Nybegynder
18. april 2005 - 21:42 #7
løste det på denne måde, men det er ikke nogen køn løsning.
forbedringer er velkomne.

//Get referer
$referer = getenv("HTTP_REFERER");

//Removing "http://" and www from referer
$referer = str_replace("http://www.", "", $referer);
$referer = str_replace("http://", "", $referer);
$referer = str_replace("www.", "", $referer);

//Check to see if the user came from the right page, if not then we redir him to the project page - no fooling around here
if (substr($referer, 0, 45) != "savefile.com/filehost/projects.php?pid=$pid") {
    header("Location: /filehost/projects.php?pid=$pid");
}
Avatar billede kgp43 Nybegynder
08. maj 2005 - 01:52 #8
problemet løst.
anvendte sessions i stedet :)
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