Seite 1 von 2

Richtiger Code zur Doku des Googlebot-Besuchs ???

Verfasst: 10.03.2007, 15:13
von inliner
Ich habe auf meiner Index-Seite folgenden Code zur Dokumentations des Googlebot-Besuchs seit 3 Monaten stehen:
<?php
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$domain = explode(".", $host); $domain_array = count($domain)-2;
if ($domain["$domain_array"] == "googlebot"){
$msg = "Googlebot-Besuch: " . date("d.m.Y H:i") . " | ";
$msg .= "IP-Adresse: " . $_SERVER['REMOTE_ADDR'] . " | ";
$msg .= "Hostname: " . gethostbyaddr($_SERVER['REMOTE_ADDR']) . "\n";

$Dateiname = "googlebot.txt";
$Datei = fOpen($Dateiname,"a+");
fPuts($Datei,$msg);
fClose($Datei);
}
?>

Die Datei googlebot.txt habe ich mit chmod auf 666 gesetzt.
Trotzdem erfolgt kein Eintrag in der Datei.

Was ist da falsch?
Die Seite hat übrigens PR 4

Edit:
Den Code habe ich gegoogelt und nicht selbst geschrieben.
Es handelt sich um die Seite: www.podologie-lauer.de

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 23.03.2007, 02:10
von inliner
Gibt es denn keinen im Forum, der mir eine Antwort geben kann?

Verfasst: 23.03.2007, 03:13
von To-Bi-As
Hi,

ersetze mal
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

durch
$host = gethostbyaddr("$_SERVER['REMOTE_ADDR']");

dann sollte es eigentlich gehen. REMOTE_ADDR ist ein String und da muss ein " oder ' drum rum.

Gruß.

Verfasst: 23.03.2007, 07:47
von auftragslinker
unsinn!
$_SERVER ist ein array mit dem Feld REMOTE_ADDR!

Versuch mal ein phpinfo(); um herauszufinden, ob diese Info auch wirklich in _SERVER steht. Den Namen des Array kann man nämlich in der PHP-Konfiguration ändern. Ansonsten einfach getenv('HTTP_USER_AGENT') abfragen, ob da (strpos > 0) ein "googlebot" drin vorkommt. Nicht immer lässt sich mit gethostbyaddr ein Wert erfragen, da nicht jede IP revers auflösbar ist, bzw. richtig revers aufgelöst wird.
Also quasi:

Code: Alles auswählen

if &#40;strpos&#40;getenv&#40;"HTTP_USER_AGENT"&#41;,"googlebot"&#41;>0&#41; &#123;
   $msg = "blabla";
   **msg in datei wegschreiben**
&#125;

@MOD: Bitte in Programmierung verschieben.

Verfasst: 23.03.2007, 08:47
von bangolo
der code funktioniert so einwandfrei, geht allerdings nur wenn der googlebot auch wirklich googlebot heißt und an der angegeben postion steht.

heißt der wirklich so würde der code auch gehen

Code: Alles auswählen

$host = gethostbyaddr&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;&#41;; 
if &#40;strstr&#40;$host, "googlebot"&#41;&#41;&#123; 
$msg = "Googlebot-Besuch&#58; " . date&#40;"d.m.Y H&#58;i"&#41; . " | "; 
$msg .= "IP-Adresse&#58; " . $_SERVER&#91;'REMOTE_ADDR'&#93; . " | "; 
$msg .= "Hostname&#58; " . gethostbyaddr&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;&#41; . "\n"; 
$Dateiname = "googlebot.txt"; 
$Datei = fOpen&#40;$Dateiname,"a+"&#41;; 
fPuts&#40;$Datei,$msg&#41;; 
fClose&#40;$Datei&#41;; 
&#125; 
wie immer führen viel wege nach Rom :wink:

Verfasst: 23.03.2007, 09:53
von otterstedt
Bist du sicher, dass der Googlebot in der Zeit da war?

Verfasst: 23.03.2007, 18:17
von chris21
Alternativ könntest Du Dir es auch leichter machen und https://www.crawltrack.fr einsetzen. Einwandfreie sehr brauchbare Statistiken für alle wichtigen Bots. :roll:

Wobei ich nie den eigenen Lerneffekt durch Selbst-Basteln stören will.

Verfasst: 23.03.2007, 19:37
von inliner
Danke zusammen, ich werde es ausprobieren und berichten.

Verfasst: 23.03.2007, 20:16
von bull

Code: Alles auswählen

$host = gethostbyaddr&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;&#41;;
if &#40;strstr&#40;$host, "googlebot"&#41;&#41;
&#123; 
Ich verstehe grundsätzlich nicht, aus welchem Grunde man einen Googlezähler in dieser Art und Weise implementiert, verlangsamt es doch i.d.R. den Seitenaufbau spürbar. Wenn man schon Google-Besuche vermittels gethostbyaddr zählen will, scheint ein PHP-Skript, das IP-Adressen aus Apache-Logfiles extrahiert, zählt und am Ende durch gethostbyaddr auflöst, als eine gangbare Alternative.

Verfasst: 24.03.2007, 04:30
von To-Bi-As
@auftragslinker
Hälst Du mich eigentlich für bescheuert ???

Klar ist $_SERVER ein Array(), $_SERVER['REMOTE_ADDR'] ist aber ein String. Und das habe ich gesagt, mehr nicht.

Und die besagten "" haben bei mir geholfen dass das benannte Script läuft. Also mußt Du nicht gleich von Unfug reden.

$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
heißt ausgewertet (bei mir) :
gethostbyaddr(111.222.333.444);

Das geht nicht,

sondern nur
gethostbyaddr("111.222.333.444");

da 111.222.333.444 ein String ist und auch so gekennzeichnet werden muß/soll.

Wie gesagt, ist nur meine Testumgebung.

Gruß.

Verfasst: 24.03.2007, 04:44
von net(t)worker
To-Bi-As hat geschrieben: Klar ist $_SERVER ein Array(), $_SERVER['REMOTE_ADDR'] ist aber ein String. Und das habe ich gesagt, mehr nicht.
Hmm...

schreibst du dann also auch

echo "$text";

?

hmm..

was wäre mit $dingsda, wenn man das per echo ausgeben will... müssen da " drum oder nicht?

:roll:

gut, man könnte jetzt vorher abfragen ob es sich um eine Zahl oder einen String handelt...

:roll:

ja, doch... könnte man wirklich tun.....

:roll:

naja... andererseits könnte man auch einfach kapieren dass eine Variable eine Variable ist und man dann auf die " verzichten kann, egal ob diese variable einen boolean, Integer oder String enthält... macht die ganze Sache ein wenig einfacher... :wink:

achja... solange ihr mit php eure ersten Erfahrungen macht... bitte nur auf webseiten auf denen kaum Traffic kommt oder einen eigenen Server... nur so könnt ihr sicherstellen, dass der Support eures Hosters das script nicht irgendwann einfach löscht.... ist mir schon 2 mal passiert.. also dass ich fremde phpscripte vom Support löschen lassen musste, weil die den gesamten Server in die knie gezwungen haben, und meine webseiten so nicht richtig erreichbar waren.... :evil:

Verfasst: 25.03.2007, 01:24
von inliner
Halt Mädels,
haut Euch nicht die Köppe ein.

Ich habe jetzt den Tipp von To-Bi-As mal eingebaut und schaue mir das mal ein paar Wochen an.

Verfasst: 25.03.2007, 04:33
von To-Bi-As
Hmm...

schreibst du dann also auch

echo "$text";

Nein das tue ich nicht, da ich es ja nicht an eine Funktion übergebe.

Aber bei gethostbyaddr() ist es bei mir nunmal so. Kann sein dass es bei anderen anders ist, gut, ok, aber bei mir ist es so wie ich es gesagt habe.

"haut Euch nicht die Köppe ein. "
Nö, warum auch. War nur ein Vorschlag von mir der genau so bei mir funktioniert hat. gethostbyaddr(111.222.333.444); wird bei mir geliefert und das ist falsch. Mag auf nem anderen Server anders sein. Und diese lustigen Posts von "net(t)worker" stecke ich da auch weg, er weiß noch nicht wer ich wirklich bin. Aber irren kann ich mich trotzdem...

Gruß,

Verfasst: 25.03.2007, 12:41
von net(t)worker
To-Bi-As hat geschrieben:Und diese lustigen Posts von "net(t)worker" stecke ich da auch weg, er weiß noch nicht wer ich wirklich bin. Aber irren kann ich mich trotzdem...
Hmm.... mir ist im grunde auch egal wer du bist... aber von PHP scheinst du nicht viel zu verstehen...

bei

gethostbyaddr("111.222.333.444");

übergibst du einen String, dort müssen natürlich " stehen, aber bei

gethostbyaddr($hostip);

übergibst du eine Variable, und da erkennt PHP selber dass diese einen String enthält...

Verfasst: 26.03.2007, 10:14
von auftragslinker
To-Bi-As hat geschrieben: ...er weiß noch nicht wer ich wirklich bin....
bleib mal locker, schon mal was von Netiquette gehört?

ein echo "$test"; is imho das gleiche wie echo $test; da innerhalb der doppelten anführungsstriche variablen geparsed werden! nur ein echo '$test'; würde statt des variableninhaltes ein $test ausgeben.
kommt von der bsh.


ein gethostbyaddr($host) wird als gethostbyaddr("127.0.0.1") geparsed!
dagegen ein gethostbyaddr("$host") funktioniert aber, widerspricht aber allen programmierregeln, die es auf der welt gibt! das würde höchstens (!)
sinn machen, wenn ich ein
gethostbyaddr("192.168.0.$rechnerderangesprochenwird");
bastele.