Vraag & Antwoord

Webprogrammeren & scripting

[PHP] HTTP_REFERER

7 antwoorden
  • Een formulier wordt verzonden m.b.v. een php-script. Daarin controleer ik of het script wordt aangeroepen vanuit de juiste URL (het orderformulier). Ik gebruik hiervoor de code:[code:1:bd4a60074f] $vorige_url = getenv("HTTP_REFERER"); [/code:1:bd4a60074f] Ik vergelijk nu $vorige_url met de URL van het orderformulier en geef een foutboodschap terug als er een verschil is. Vanuit mijn eigen PC's werkt dat perfect, echter bij enkele andere gebruikers blijft $vorige_url leeg! Heeft iemand een idee hoe dat komt en hoe dit op te lossen is?
  • Misschien met $_SERVER["HTTP_REFERER"]? Waarschijnlijk heb je thuis een andere PHP-versie dan je host draait... - Bas
  • getenv zou echter moeten werken vanaf PHP versie 3... Let wel op: $_SERVER is in versie 4.1.0. geintroduceerd. In eerdere versies kan je $HTTP_SERVER_VARS gebruiken. Probeer inderdaad eerst even $_SERVER['HTTP_REFERER'];
  • Ik heb zelf geen server! Alles gebeurt op de server van de Host.
  • Het is niet gegarandeerd dat HTTP_REFERER wordt meegegeven in de request. Bovendien bieden sommige browsers de mogelijkheid om deze waarde niet mee te sturen of om deze te wijzigen. Met andere woorden: niet volledig vertrouwen op deze waarde. Zie ook: http://nl3.php.net/reserved.variables
  • Wel Annie dat is jammer. Ik dacht HTTP_REFERER te gebruiken om na te gaan of mijn mailverwerker wel werd aangeroepen vanuit de juiste URL. Of ben ik te paranoïa? In ieder geval allen hartelijk bedankt voor de reacties!
  • Alternatief: Op de pagina waar je vandaan komt zet je het volgende in het formulier: [code:1:ad04b04a9b] <input type="hidden" name="referer" value="<?=$_SERVER['SCRIPT_FILENAME']; ?>" /> [/code:1:ad04b04a9b] En dan op de controlepagina doe je bijvoorbeeld: [code:1:ad04b04a9b] <?php if ($_POST['referer'] == "blabla.php") { //doe dit } else { echo "Donder op!"; } ?> [/code:1:ad04b04a9b] Ik weet niet zeker of je met $_SERVER['SCRIPT_FILENAME'] de huidige url kan aanroepen, anders was het een andere gepredefineerde variabele.. Zo kan het dus ook :wink:

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.