String und User Agent prüfen

Lesezeit: 4 Minuten

String und User Agent prufen
Batfan

Ich versuche, ein PHP-Snippet einzurichten, das überprüft, ob 2 Bedingungen erfüllt sind, und wenn ja, gibt es etwas Text aus. Die Bedingungen sind:

  1. Dass die Abfragezeichenfolge einem bestimmten Wert entspricht.
  2. Dass der Browser Firefox ist.

Es überprüft die Abfragezeichenfolge ordnungsgemäß, scheint jedoch für den Browser (Benutzeragenten) nicht zu funktionieren. Siehe unten:

<?php

function get_user_browser()
{
    $u_agent = $_SERVER['HTTP_USER_AGENT'];
    $ub = '';
    if(preg_match('/Firefox/i',$u_agent))
    {
        $ub = "firefox";
    }
    else
    {
        $ub = "other";
    }

} 

if (isset($_GET['print']) && $_GET['print'] != "" && $ub = 'firefox') 
{
    $pg = $_GET['print'];
    if (!file_exists('1')) 
    {
        echo '<b>It worked!</b>';
    }
}
else 
{
    echo '';
}

?> 

Jede Hilfe wäre dankbar.

  • if (isset($_GET[‘print’]) && $_GET[‘print’] != “” && $ub = ‘firefox’), meinst du = oder ==?

    Benutzer743234

    25. Mai ’11 um 16:19

1641744615 96 String und User Agent prufen
Naftali

Dies ist, was ich mache, um das Zeug zu überprüfen:

if(strlen(strstr($_SERVER['HTTP_USER_AGENT'],"Firefox")) <= 0 ){ // if not firefox

  //do something

}

Und in Ihren Code eingefügt:

function get_user_browser()
{
    $u_agent = $_SERVER['HTTP_USER_AGENT'];
    $ub = '';
    if(strlen(strstr($u_agent,"Firefox")) > 0 ){ 

      $ub = 'firefox';

    }
    else {
      $ub = 'other';
    }

    return $ub;
} 

if (isset($_GET['print']) && $_GET['print'] != "" 
                          && get_user_browser() == 'firefox') 
{
    $pg = $_GET['print'];
    if (!file_exists('1')) 
    {
        echo '<b>It worked!</b>';
    }
}
else 
{
    echo '';
}

  • @Neal – Cool. Das prüft, ob der Browser nicht Firefox ist. Wie überprüfe ich, ob es Firefox ist? Und wie integriere ich das in mein Skript?

    – Batfan

    25. Mai ’11 um 16:18

  • @Batfan eine Minute krank füge es hinzu

    – Naftali

    25. Mai ’11 um 16:18

  • @Batfan Ich habe auch die if-Anweisung aus der Funktion behoben

    – Naftali

    25. Mai ’11 um 16:21

  • “Hinweis: Wenn Sie nur feststellen möchten, ob eine bestimmte Nadel im Heuhaufen vorkommt, verwenden Sie stattdessen die schnellere und weniger speicherintensive Funktion strpos().” (Quelle: php.net/manual/en/function.strstr.php)

    – Drei Jahre alt

    29. November ’21 um 12:53

Hier ist, was ich verwende;

function getBrowser() 
{ 
    $u_agent = $_SERVER['HTTP_USER_AGENT']; 
    $bname="Unknown";
    $platform = 'Unknown';
    $version= "";

//First get the platform?
if (preg_match('/linux/i', $u_agent)) {
    $platform = 'linux';
}
elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
    $platform = 'mac';
}
elseif (preg_match('/windows|win32/i', $u_agent)) {
    $platform = 'windows';
}

// Next get the name of the useragent yes seperately and for good reason
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) 
{ 
    $bname="Internet Explorer"; 
    $ub = "MSIE"; 
} 
elseif(preg_match('/Firefox/i',$u_agent)) 
{ 
    $bname="Mozilla Firefox"; 
    $ub = "Firefox"; 
} 
elseif(preg_match('/Chrome/i',$u_agent)) 
{ 
    $bname="Google Chrome"; 
    $ub = "Chrome"; 
} 
elseif(preg_match('/Safari/i',$u_agent)) 
{ 
    $bname="Apple Safari"; 
    $ub = "Safari"; 
} 
elseif(preg_match('/Opera/i',$u_agent)) 
{ 
    $bname="Opera"; 
    $ub = "Opera"; 
} 
elseif(preg_match('/Netscape/i',$u_agent)) 
{ 
    $bname="Netscape"; 
    $ub = "Netscape"; 
} 

// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
    // we have no matching number just continue
}

// see how many we have
$i = count($matches['browser']);
if ($i != 1) {
    //we will have two since we are not using 'other' argument yet
    //see if version is before or after the name
    if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
        $version= $matches['version'][0];
    }
    else {
        $version= $matches['version'][1];
    }
}
else {
    $version= $matches['version'][0];
}

// check if we have a number
if ($version==null || $version=="") {$version="?";}

return array(
    'userAgent' => $u_agent,
    'name'      => $bname,
    'version'   => $version,
    'platform'  => $platform,
    'pattern'    => $pattern
);

} 

können Sie sich auch anschauen;

https://github.com/donatj/PhpUserAgent

Ich kann Ihren Code nicht sehen, der die Funktion aufruft, und daher funktioniert $ub in Ihrer Bedingung nicht.

<?php

$u_agent = $_SERVER['HTTP_USER_AGENT'];
$ub = 'other';
if(preg_match('/Firefox/i',$u_agent))
{
    $ub = "firefox";
}

if (isset($_GET['print']) && $_GET['print'] != "" && $ub == 'firefox') {
$pg = $_GET['print'];
if (!file_exists('1')) {
echo '<b>It worked!</b>';
}
} 
else {
echo '';
}
?> 

  • Ich habe den obigen Code ausprobiert und er zeigt immer noch den Text in allen Browsern an.

    – Batfan

    25. Mai ’11 um 16:20

  • Ich sehe kein Problem mit der Überprüfung des Browsers, es sei denn, es gibt irgendwo ein Problem mit Ihrem Code in der Bedingung 🙂 Ich habe es erfolgreich getestet.

    Benutzer743234

    25. Mai ’11 um 16:24

  • Es könnte ein Problem mit meinem Zustand gegeben haben. Neals Antwort schien jedoch zu funktionieren. Danke

    – Batfan

    25. Mai ’11 um 16:33

.

224040cookie-checkString und User Agent prüfen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy