php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.08.2005, 14:53  
Erfahrener Benutzer
 
Registriert seit: 07.07.2005
Beiträge: 150
sysop
sysop eine Nachricht über ICQ schicken
Standard stristr oder preg_match.....

folgendes passiert:

ich suche über den user_agent google, yahoo, msnbot etc heraus. der code

PHP-Code:
<?php
elseif (stristr(getEnv("HTTP_USER_AGENT"),'msnbot') == TRUE)
            {
                
$special_id "msnbo".get_rand_num(10); // Gast-ID (10-stellig) erstellen
                
$_SESSION['bot'] = 1;
            }

?>
scheint zu funktionieren, allerdings folgender code nicht:
PHP-Code:
<?php
elseif (preg_match('/msnbot/i',getEnv("HTTP_USER_AGENT")))
    {
        
$special_id "msnbo".get_rand_num(10); // Gast-ID (10-stellig) erstellen
        
$_SESSION['bot'] = 1;
    }
?>
wo liegt mein fehler ?
der vollständigkeit halber sei noch gesagt, dass es mit google oder yahoo klappt, nur mit msnbot nicht.
__________________
gruss sys
sysop ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.08.2005, 17:00  
Gast
 
Beiträge: n/a
Standard

Wie haste das denn jetzt gestet ?
An preg_match() liegt es nicht.
 
Alt 18.08.2005, 18:07  
Erfahrener Benutzer
 
Registriert seit: 07.07.2005
Beiträge: 150
sysop
sysop eine Nachricht über ICQ schicken
Standard

hallo

stristr() geht, preg_match geht nicht. komischerweise wird wie gesagt nur msnbot mit preg_match nicht gefunden, googl oder yahoo werden gefunden.
derzeit ist alles auf stristr().

mich würde nur interessieren, wo der unterschied ligt b.z.w. warum das eine geht, das andere nicht.
__________________
gruss sys
sysop ist offline  
Alt 18.08.2005, 20:56  
Gast
 
Beiträge: n/a
Standard

Toll, weis ich immer noch nicht wie du das getestet hast.
Aber auch egal ...
 
Alt 22.08.2005, 15:13  
Erfahrener Benutzer
 
Registriert seit: 07.07.2005
Beiträge: 150
sysop
sysop eine Nachricht über ICQ schicken
Standard

sorry

hier mal der ganze code der bot-abfrage:
PHP-Code:
<?php

$_SESSION
['bot'] = 0// erst mal nicht bot

            
if (stristr(getEnv("HTTP_USER_AGENT"),'google') == TRUE)
            {
                
$special_id "googl".get_rand_num(10); // Gast-ID (10-stellig) erstellen
                
$_SESSION['bot'] = 1;
            }
            elseif (
stristr(getEnv("HTTP_USER_AGENT"),'archiver') == TRUE)
            {
                
$special_id "archi".get_rand_num(10); // Gast-ID (10-stellig) erstellen
                
$_SESSION['bot'] = 1;
            }
            elseif (
stristr(getEnv("HTTP_USER_AGENT"),'firefly') == TRUE)
            {
                
$special_id "fireb".get_rand_num(10); // Gast-ID (10-stellig) erstellen
                
$_SESSION['bot'] = 1;
            }
            elseif (
stristr(getEnv("HTTP_USER_AGENT"),'msnbot') == TRUE)
            {
                
$special_id "msnbo".get_rand_num(10); // Gast-ID (10-stellig) erstellen
                
$_SESSION['bot'] = 1;
            }
            elseif (
stristr(getEnv("HTTP_USER_AGENT"),'slurp') == TRUE)
            {
                
$special_id "slurp".get_rand_num(10); // Gast-ID (10-stellig) erstellen
                
$_SESSION['bot'] = 1;
            }
            else
            {
                
$special_id "guest".get_rand_num(10); // Gast-ID (10-stellig) erstellen
            
}
?>
wie ich das teste:

nach der prüfung oben werden die special_id, ip-adresse, useragent und auch $_SESSION['bot'] durch tabs getrennt zu einem datensatz zusammengefasst und in eine datei geschrieben, die permanent aktualisiert wird. ausserdem bekommt der eintrag eine bestimmte lebensdauer mit (einstellbar in sekunden). zum speichern verwende ich 2 dateien. je nachdem, ob $_SESSION['bot'] 1 ist, eine datei für bots ansonsten eine datei für whoisonline.

zur kontrolle habe ich mir ein script geschrieben, dass mir die beiden dateien ausliest und den user_agent b.z.w die $_SESSION['bot'] und die entsprechnde ip zurückgibt.
alle ausser msnbot funktionieren fehlerfrei (vor allem google und yahoo/slurp sind regelmässig da) und werden als google und yahoo ausgegeben und auch in die richtige datei geschrieben.

ich hoffe, das war nun ausführlich genug. die scripte selbst sind recht umfangreich, ich will niemanden damit langweilen. mein problem ist, dass es eben bei 4 von 5 einträgen fehlerfrei klappt. auch nicht-bots, die die seite besuchen (das sind ca 100 am tag) werden fehlerfrei eingetragen und richtig zugeordnet.
__________________
gruss sys
sysop ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Andere Möglichkeit für stristr $before_needle citric acid PHP Tipps 2008 3 26.06.2008 01:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php stristr, stristr php, php preg_match_all vs stristr, php \oder preg_match\, php preg_match bots, preg_match google yahoo bot, php preg match bots, get_rand_num, php stristr(), php stristr -strstr, php preg_match http_user_agent, stristr funktioniert nicht, preg_match http_user_agent, php id stellige erzeugen, php preg_match elseif, google bot, http_user_agent, php, stristr, stristr vs. preg_match, preg_match bots, stristr() php

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:26 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.