Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] HTTP_REFERER

Chris Kruidenier
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
    eserved.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

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