Help with simple email script please

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Dynamo

    Help with simple email script please

    Hi

    I have used the following script within a simple form email to prevent the form
    being used from an external url.
    <?php
    $referer = $_SERVER['HTTP_REFERER'];
    // Get the URL of this page
    $myurl= "http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_UR I"];
    // If the referring URL and the URL of this page don't match then
    // display a message and don't send the email.
    if ($referer != $myurl) {
    echo "You do not have permission to use this script from another URL.</br>";
    echo "Referer = $referer </br>";
    echo "This url = $myurl</br>";
    exit;
    }
    ?>
    I added the last 2 echo statements to see why there was always a mismatch and
    the email was never sent and found that:
    $referer = http://mydomain/myemailscript.php
    while
    $myurl = http://mydomain

    I can easily get round the problem by amending as follows:

    $myurl=$myurl . "/myemailscript.p hp" but is this correct? Is
    $_SERVER['HTTP_REFERER'] returning correctly?

    Regards
    Dynamo

  • iMedia

    #2
    Re: Help with simple email script please

    I have found that $_SERVER[HTTP_REFERRER] is not very reliable. I also
    came across a document or two that also stated the referrer variable is
    not reliable.

    $myurl could be more reliable if you use:

    if (!isset($_SERVE R['REQUEST_URI'])) {
    $_SERVER['REQUEST_URI'] =
    $_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];
    }

    $myurl =
    "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];

    A great resource:


    This is one I use:
    $page = $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    if (!eregi($page, $_SERVER['HTTP_REFERER'])){
    echo "You are not authorized...";
    }

    function eregi() helps to find the important "needle" in the string
    PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.


    Comment

    • iMedia

      #3
      Re: Help with simple email script please

      I have found that $_SERVER[HTTP_REFERRER] is not very reliable. I also
      came across a document or two that also stated the referrer variable is
      not reliable.

      $myurl could be more reliable if you use:

      if (!isset($_SERVE R['REQUEST_URI'])) {
      $_SERVER['REQUEST_URI'] =
      $_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];
      }

      $myurl =
      "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];

      A great resource:


      This is one I use:
      $page = $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
      if (!eregi($page, $_SERVER['HTTP_REFERER'])){
      echo "You are not authorized...";
      }

      function eregi() helps to find the important "needle" in the string
      PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.


      Comment

      • Tim Van Wassenhove

        #4
        Re: Help with simple email script please

        In article <1102785588.908 212.108970@z14g 2000cwz.googleg roups.com>, iMedia wrote:[color=blue]
        > I have found that $_SERVER[HTTP_REFERRER] is not very reliable. I also
        > came across a document or two that also stated the referrer variable is
        > not reliable.
        >
        > $myurl could be more reliable if you use:
        >
        > if (!isset($_SERVE R['REQUEST_URI'])) {
        > $_SERVER['REQUEST_URI'] =
        > $_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];
        > }
        >[/color]

        following this group, i once saw this one:

        function geturl()
        {
        $ports = array('https' => 443, 'http' => 80);
        $prefix = empty($_SERVER['HTTPS']) ? 'http' : 'https';
        $url = $prefix;
        $url .= $_SERVER['SERVER_PORT'] != $ports[$prefix] ? ':' . $_SERVER['SERVER_PORT'] : '';
        $url .= '://';
        $url .= $_SERVER['HTTP_HOST'];
        $url .= $_SERVER['REQUEST_URI'];
        return $url;
        )


        --
        Met vriendelijke groeten,
        Tim Van Wassenhove <http://www.timvw.info>

        Comment

        Working...