Restricting a Certain User-Agent from Accessing a Page?

Discussion in 'Programming' started by Melvinng, Mar 14, 2008.

  1. #1
    How do I restrict a every User-Agent from accessing one page on my site, except for one?

    I don't want to put the restriction on everypage just 1 .php page?

    Or is there a way to restrict people from accessing a php page from typing it in?

    Regards,
     
    Melvinng, Mar 14, 2008 IP
  2. rkquest

    rkquest Well-Known Member

    Messages:
    828
    Likes Received:
    23
    Best Answers:
    0
    Trophy Points:
    140
    #2
    One way is you can create a login script for that page. It's very usual thing. Once logged in, save session then the user is in..

    Or

    You can check the IP address of the user. If it is the IP of the allowed user, let him in, if not redirect. Here's a sample.

    
    if ($_SERVER['REMOTE_ADDR']!='xxx.xxx.xxx.xxx') {
        header("Location: index.php");
        exit();
    }
    
    PHP:
    Where xxx.xxx.xxx.xxx is the IP of the allowed user.
     
    rkquest, Mar 14, 2008 IP
  3. proxywhereabouts

    proxywhereabouts Notable Member

    Messages:
    4,027
    Likes Received:
    110
    Best Answers:
    0
    Trophy Points:
    200
  4. Barti1987

    Barti1987 Well-Known Member

    Messages:
    2,703
    Likes Received:
    115
    Best Answers:
    0
    Trophy Points:
    185
    #4
    If what you are looking for is browser detection (user agent), then the above two suggestions will not work:

    
    <?php
    /*****************************************************************
    
        File name: browser.php
        Author: Gary White
        Last modified: November 10, 2003
        
        **************************************************************
    
        Copyright (C) 2003  Gary White
        
        This program is free software; you can redistribute it and/or
        modify it under the terms of the GNU General Public License
        as published by the Free Software Foundation; either version 2
        of the License, or (at your option) any later version.
        
        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details at:
        http://www.gnu.org/copyleft/gpl.html
    
        **************************************************************
    
        Browser class
        
        Identifies the user's Operating system, browser and version
        by parsing the HTTP_USER_AGENT string sent to the server
        
        Typical Usage:
        
            require_once($_SERVER['DOCUMENT_ROOT'].'/include/browser.php');
            $br = new Browser;
            echo "$br->Platform, $br->Name version $br->Version";
        
        For operating systems, it will correctly identify:
            Microsoft Windows
            MacIntosh
            Linux
    
        Anything not determined to be one of the above is considered to by Unix
        because most Unix based browsers seem to not report the operating system.
        The only known problem here is that, if a HTTP_USER_AGENT string does not
        contain the operating system, it will be identified as Unix. For unknown
        browsers, this may not be correct.
        
        For browsers, it should correctly identify all versions of:
            Amaya
            Galeon
            iCab
            Internet Explorer
                For AOL versions it will identify as Internet Explorer (AOL) and the version
                will be the AOL version instead of the IE version.
            Konqueror
            Lynx
            Mozilla
            Netscape Navigator/Communicator
            OmniWeb
            Opera
            Pocket Internet Explorer for handhelds
            Safari
            WebTV
    *****************************************************************/
    
    class browser{
    
        var $Name = "Unknown";
        var $Version = "Unknown";
        var $Platform = "Unknown";
        var $UserAgent = "Not reported";
        var $AOL = false;
    
        function browser(){
            $agent = $_SERVER['HTTP_USER_AGENT'];
    
            // initialize properties
            $bd['platform'] = "Unknown";
            $bd['browser'] = "Unknown";
            $bd['version'] = "Unknown";
            $this->UserAgent = $agent;
    
            // find operating system
            if (eregi("win", $agent))
                $bd['platform'] = "Windows";
            elseif (eregi("mac", $agent))
                $bd['platform'] = "MacIntosh";
            elseif (eregi("linux", $agent))
                $bd['platform'] = "Linux";
            elseif (eregi("OS/2", $agent))
                $bd['platform'] = "OS/2";
            elseif (eregi("BeOS", $agent))
                $bd['platform'] = "BeOS";
    
            // test for Opera        
            if (eregi("opera",$agent)){
                $val = stristr($agent, "opera");
                if (eregi("/", $val)){
                    $val = explode("/",$val);
                    $bd['browser'] = $val[0];
                    $val = explode(" ",$val[1]);
                    $bd['version'] = $val[0];
                }else{
                    $val = explode(" ",stristr($val,"opera"));
                    $bd['browser'] = $val[0];
                    $bd['version'] = $val[1];
                }
    
            // test for WebTV
            }elseif(eregi("webtv",$agent)){
                $val = explode("/",stristr($agent,"webtv"));
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
            
            // test for MS Internet Explorer version 1
            }elseif(eregi("microsoft internet explorer", $agent)){
                $bd['browser'] = "MSIE";
                $bd['version'] = "1.0";
                $var = stristr($agent, "/");
                if (ereg("308|425|426|474|0b1", $var)){
                    $bd['version'] = "1.5";
                }
    
            // test for NetPositive
            }elseif(eregi("NetPositive", $agent)){
                $val = explode("/",stristr($agent,"NetPositive"));
                $bd['platform'] = "BeOS";
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
    
            // test for MS Internet Explorer
            }elseif(eregi("msie",$agent) && !eregi("opera",$agent)){
                $val = explode(" ",stristr($agent,"msie"));
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
            
            // test for MS Pocket Internet Explorer
            }elseif(eregi("mspie",$agent) || eregi('pocket', $agent)){
                $val = explode(" ",stristr($agent,"mspie"));
                $bd['browser'] = "MSPIE";
                $bd['platform'] = "WindowsCE";
                if (eregi("mspie", $agent))
                    $bd['version'] = $val[1];
                else {
                    $val = explode("/",$agent);
                    $bd['version'] = $val[1];
                }
                
            // test for Galeon
            }elseif(eregi("galeon",$agent)){
                $val = explode(" ",stristr($agent,"galeon"));
                $val = explode("/",$val[0]);
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
                
            // test for Konqueror
            }elseif(eregi("Konqueror",$agent)){
                $val = explode(" ",stristr($agent,"Konqueror"));
                $val = explode("/",$val[0]);
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
                
            // test for iCab
            }elseif(eregi("icab",$agent)){
                $val = explode(" ",stristr($agent,"icab"));
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
    
            // test for OmniWeb
            }elseif(eregi("omniweb",$agent)){
                $val = explode("/",stristr($agent,"omniweb"));
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
    
            // test for Phoenix
            }elseif(eregi("Phoenix", $agent)){
                $bd['browser'] = "Phoenix";
                $val = explode("/", stristr($agent,"Phoenix/"));
                $bd['version'] = $val[1];
            
            // test for Firebird
            }elseif(eregi("firebird", $agent)){
                $bd['browser']="Firebird";
                $val = stristr($agent, "Firebird");
                $val = explode("/",$val);
                $bd['version'] = $val[1];
                
            // test for Firefox
            }elseif(eregi("Firefox", $agent)){
                $bd['browser']="Firefox";
                $val = stristr($agent, "Firefox");
                $val = explode("/",$val);
                $bd['version'] = $val[1];
                
          // test for Mozilla Alpha/Beta Versions
            }elseif(eregi("mozilla",$agent) && 
                eregi("rv:[0-9].[0-9][a-b]",$agent) && !eregi("netscape",$agent)){
                $bd['browser'] = "Mozilla";
                $val = explode(" ",stristr($agent,"rv:"));
                eregi("rv:[0-9].[0-9][a-b]",$agent,$val);
                $bd['version'] = str_replace("rv:","",$val[0]);
                
            // test for Mozilla Stable Versions
            }elseif(eregi("mozilla",$agent) &&
                eregi("rv:[0-9]\.[0-9]",$agent) && !eregi("netscape",$agent)){
                $bd['browser'] = "Mozilla";
                $val = explode(" ",stristr($agent,"rv:"));
                eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent,$val);
                $bd['version'] = str_replace("rv:","",$val[0]);
            
            // test for Lynx & Amaya
            }elseif(eregi("libwww", $agent)){
                if (eregi("amaya", $agent)){
                    $val = explode("/",stristr($agent,"amaya"));
                    $bd['browser'] = "Amaya";
                    $val = explode(" ", $val[1]);
                    $bd['version'] = $val[0];
                } else {
                    $val = explode("/",$agent);
                    $bd['browser'] = "Lynx";
                    $bd['version'] = $val[1];
                }
            
            // test for Safari
            }elseif(eregi("safari", $agent)){
                $bd['browser'] = "Safari";
                $bd['version'] = "";
    
            // remaining two tests are for Netscape
            }elseif(eregi("netscape",$agent)){
                $val = explode(" ",stristr($agent,"netscape"));
                $val = explode("/",$val[0]);
                $bd['browser'] = $val[0];
                $bd['version'] = $val[1];
            }elseif(eregi("mozilla",$agent) && !eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent)){
                $val = explode(" ",stristr($agent,"mozilla"));
                $val = explode("/",$val[0]);
                $bd['browser'] = "Netscape";
                $bd['version'] = $val[1];
            }
            
            // clean up extraneous garbage that may be in the name
            $bd['browser'] = ereg_replace("[^a-z,A-Z]", "", $bd['browser']);
            // clean up extraneous garbage that may be in the version        
            $bd['version'] = ereg_replace("[^0-9,.,a-z,A-Z]", "", $bd['version']);
            
            // check for AOL
            if (eregi("AOL", $agent)){
                $var = stristr($agent, "AOL");
                $var = explode(" ", $var);
                $bd['aol'] = ereg_replace("[^0-9,.,a-z,A-Z]", "", $var[1]);
            }
            
            // finally assign our properties
            $this->Name = $bd['browser'];
            $this->Version = $bd['version'];
            $this->Platform = $bd['platform'];
            $this->AOL = $bd['aol'];
        }
    }
    ?>
    
    PHP:
    Source: http://apptools.com/phptools/browser/

    or

    http://www.free-php-scripts.net/P/Geo_IP

    Peace,
     
    Barti1987, Mar 14, 2008 IP
  5. Christian Little

    Christian Little Peon

    Messages:
    1,753
    Likes Received:
    80
    Best Answers:
    0
    Trophy Points:
    0
    #5
    Why not just use .htaccess to prompt for a username and password? That way you are guaranteed to keep the spiders and unauthorized people out.
     
    Christian Little, Mar 14, 2008 IP
  6. rkquest

    rkquest Well-Known Member

    Messages:
    828
    Likes Received:
    23
    Best Answers:
    0
    Trophy Points:
    140
    #6
    In that case he doesn't need all the code you gave. Remember he just needs to restrict all and allow one. This will be more efficient.

    
    if ($_SERVER['HTTP_USER_AGENT'!='Konqueror']) {
        header("Location: index.php");
        exit();
    }
    
    PHP:
    This will restrict all browsers except for Konqueror. But I don't see any reasons for doing this. Probably when the TS said user agent, he refers to the IP. That is more likely.

     
    rkquest, Mar 14, 2008 IP