PDA

Bekijk Volledige Versie : Hulp gevraagd



Anno
25/06/03, 21:20
Met onderstaand script op al mijn pagina's kijk ik of google mijn site heeft
bezocht om te indexeren.
Nu weet ik uit een statistiek dat o.a. crawler10.googlebot.com dit doet.
Maar misschien is er ook wel een crawler8.google.com of meerdere.
Hoe moet ik dit verwerken in onderstaand script ?
Ik begin pas net met php en hulp hierbij is erg welkom

<?php
if(gethostbyaddr($_SERVER['REMOTE_ADDR'])==('crawler10.googlebot.com'))
$naartoe= "koko@planet.nl";
$onderwerp= "Zoekmachine";
$mailvan = "ram@ram.nl";
$host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$tekst = ("$host_name heeft pagina $PHP_SELF bezocht\n");
mail($naartoe,$onderwerp,$tekst,"FROM:$mailvan");
?>

John Bokma
25/06/03, 21:50
Anno wrote:

> Met onderstaand script op al mijn pagina's kijk ik of google mijn site heeft
> bezocht om te indexeren.
> Nu weet ik uit een statistiek dat o.a. crawler10.googlebot.com dit doet.
> Maar misschien is er ook wel een crawler8.google.com of meerdere.
> Hoe moet ik dit verwerken in onderstaand script ?
> Ik begin pas net met php en hulp hierbij is erg welkom
>
> <?php
> if(gethostbyaddr($_SERVER['REMOTE_ADDR'])==('crawler10.googlebot.com'))


if ( strpos( gethostbyaddr($_SERVER['REMOTE_ADDR']), "google" ) != 0 ) {
> $naartoe= "koko@planet.nl";
> $onderwerp= "Zoekmachine";
> $mailvan = "ram@ram.nl";
> $host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
> $tekst = ("$host_name heeft pagina $PHP_SELF bezocht\n");
> mail($naartoe,$onderwerp,$tekst,"FROM:$mailvan");
}

Gokje, ken PHP niet tot nauwelijks. strpos is ongelijk aan nul als in
remote_addr de string "google" voorkomt.

John

--
email: mail(at)johnbokma.com
home: http://johnbokma.com/

Rick
25/06/03, 21:50
"Anno" <anno-zerowegermee@wxs.nl> schreef in bericht
news:bdcrt0$l3o$1@reader11.wxs.nl...
> Met onderstaand script op al mijn pagina's kijk ik of google mijn site
heeft
> bezocht om te indexeren.
> Nu weet ik uit een statistiek dat o.a. crawler10.googlebot.com dit doet.
> Maar misschien is er ook wel een crawler8.google.com of meerdere.
> Hoe moet ik dit verwerken in onderstaand script ?
> Ik begin pas net met php en hulp hierbij is erg welkom
>
> <?php
> if(gethostbyaddr($_SERVER['REMOTE_ADDR'])==('crawler10.googlebot.com'))
> $naartoe= "koko@planet.nl";
> $onderwerp= "Zoekmachine";
> $mailvan = "ram@ram.nl";
> $host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
> $tekst = ("$host_name heeft pagina $PHP_SELF bezocht\n");
> mail($naartoe,$onderwerp,$tekst,"FROM:$mailvan");
> ?>
>
>
Je zou kunnen kijken of de substring van de host 'googlebot' bevat :)
--
Slechte webdesigners? Geef ze hier aan:
http://webdesignert.vectoris.nl/

John Bokma
25/06/03, 21:50
Verhip, vergat ik nog te vertellen dat je in het vervolg moet zetten in
je subject (onderwerp) *WAT* je wilt weten, niet dat je hulp nodig hebt,
dus:

PHP: hoe krijg ik mail als googlebot langskomt?

John

--
email: mail(at)johnbokma.com
home: http://johnbokma.com/

Daniel Tryba
25/06/03, 23:05
John Bokma <postmaster@castleamber.com> wrote:
> if ( strpos( gethostbyaddr($_SERVER['REMOTE_ADDR']), "google" ) != 0 ) {
[...]
> }
>
> Gokje, ken PHP niet tot nauwelijks. strpos is ongelijk aan nul als in
> remote_addr de string "google" voorkomt.

Nope, das een mooie valkuil van php. strpos retourneerd de index in de
string waar de substring begint of false. Als de string dus begint met
google dat retouneerd strpos 0 maar is de string dus wel aanwezig.
Hiervoor is !== en === bedacht welke ook nog eens rekening houd met het
type en niet alleen de waarde. In dit geval dus strpos()!==false

--

Daniel Tryba

Herbert Groot Jebbink
25/06/03, 23:20
John Bokma wrote:

> if ( strpos( gethostbyaddr($_SERVER['REMOTE_ADDR']), "google" ) != 0 )
> ...
> Gokje, ken PHP niet tot nauwelijks. strpos is ongelijk aan nul als in
> remote_addr de string "google" voorkomt.

even heerlijk miereneuken. Als remote_adr begint met 'google' krijg je 0
als waarde retour (immers de offset van 'google' in de string is 0) je
moet aftesten of de funktie wel of niet FALSE terug geeft, oftewel je
kodeerd dus iets als:

if ( strpos( gethostbyaddr($_SERVER['REMOTE_ADDR']), "google" ) <> FALSE
)

om er vervolgens ooit achter te komen dat dat ook fout is, de waarde 0
mag dan wat anders zijn dan de waarde FALSE, in een PHP afvraging is de
evaluatie van 0 wel FALSE. Het resultaat is wangedrochten als
onderstaand.

if (strpos($string1, $string2) === FALSE)
{
}
else {
....
}

if (!(strpos($string1, $string2) === FALSE))
{
....
}

if ( is_integer(strpos($string1, $string2)) )
{
...
}

if ( strpos('ikwordgek'.$string1, $string2) )
{
...
}

hgj

John Bokma
25/06/03, 23:20
Daniel Tryba wrote:

> John Bokma <postmaster@castleamber.com> wrote:
>
>>if ( strpos( gethostbyaddr($_SERVER['REMOTE_ADDR']), "google" ) != 0 ) {
>
> [...]
>
>>}
>>
>>Gokje, ken PHP niet tot nauwelijks. strpos is ongelijk aan nul als in
>>remote_addr de string "google" voorkomt.
>
>
> Nope, das een mooie valkuil van php. strpos retourneerd de index in de
> string waar de substring begint of false. Als de string dus begint met

Merde, natuurlijk, 0 is begin string :-(

> google dat retouneerd strpos 0 maar is de string dus wel aanwezig.

He he he, natuurlijk. De c-variant IIRC geeft -1 als niet gevonden.

> Hiervoor is !== en === bedacht welke ook nog eens rekening houd met het
> type en niet alleen de waarde. In dit geval dus strpos()!==false

Thanks, nu moet de OP er uit zijn :-)

John

--
email: mail(at)johnbokma.com
home: http://johnbokma.com/

Herbert Groot Jebbink
25/06/03, 23:20
Daniel Tryba wrote:

>> if ( strpos( gethostbyaddr($_SERVER['REMOTE_ADDR']), "google" ) != 0 )

> Hiervoor is !== en === bedacht welke ook nog eens rekening houd met het
> type en niet alleen de waarde. In dit geval dus strpos()!==false

ahum, dat is dus een stuk simpeler dan wat ik gaf ...

hgj

Anno
25/06/03, 23:35
Dit antwoord begrijp ik niet

"John Bokma" <postmaster@castleamber.com> schreef in bericht
news:1056570085.250525@halkan.kabelfoon.nl...
> Verhip, vergat ik nog te vertellen dat je in het vervolg moet zetten in
> je subject (onderwerp) *WAT* je wilt weten, niet dat je hulp nodig hebt,
> dus:
>
> PHP: hoe krijg ik mail als googlebot langskomt?
>
> John
>
> --
> email: mail(at)johnbokma.com
> home: http://johnbokma.com/
>

Anno
25/06/03, 23:35
Ik denk dat ik wel verder kom met eregi om te kijken of "google" in de naam
voorkomt.


"Anno" <anno-zerowegermee@wxs.nl> schreef in bericht
news:bdcrt0$l3o$1@reader11.wxs.nl...
> Met onderstaand script op al mijn pagina's kijk ik of google mijn site
heeft
> bezocht om te indexeren.
> Nu weet ik uit een statistiek dat o.a. crawler10.googlebot.com dit doet.
> Maar misschien is er ook wel een crawler8.google.com of meerdere.
> Hoe moet ik dit verwerken in onderstaand script ?
> Ik begin pas net met php en hulp hierbij is erg welkom
>
> <?php
> if(gethostbyaddr($_SERVER['REMOTE_ADDR'])==('crawler10.googlebot.com'))
> $naartoe= "koko@planet.nl";
> $onderwerp= "Zoekmachine";
> $mailvan = "ram@ram.nl";
> $host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
> $tekst = ("$host_name heeft pagina $PHP_SELF bezocht\n");
> mail($naartoe,$onderwerp,$tekst,"FROM:$mailvan");
> ?>
>
>

John Bokma
25/06/03, 23:50
Anno wrote:

> Dit antwoord begrijp ik niet

Dat vreesde ik al :-). Tip [1] zet je bericht *onder* waar je op reageert.

> "John Bokma" <postmaster@castleamber.com> schreef in bericht
> news:1056570085.250525@halkan.kabelfoon.nl...
>
>>Verhip, vergat ik nog te vertellen dat je in het vervolg moet zetten in
>>je subject (onderwerp) *WAT* je wilt weten, niet dat je hulp nodig hebt,
>>dus:
>>
>>PHP: hoe krijg ik mail als googlebot langskomt?

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Dit was mijn suggestie
voor het onderwerp van de vraag van de berichtplaatser. Help hij doet
het niet, Hulp, wie kan helpen, Help enz dat zijn allemaal *slechte*
onderwerpen. Stel je voor dat de krant alleen maar kopjes als "Nieuws"
zou gebruiken, overal :-(.

John

--
email: mail(at)johnbokma.com
home: http://johnbokma.com/

John Bokma
25/06/03, 23:50
Anno wrote:

> Ik denk dat ik wel verder kom met eregi om te kijken of "google" in de naam
> voorkomt.

Nee, nee en nog eens nee :-). Voor een constante string ga je geen
reguliere expressie gebruiken. Overhead en onzin. Die strpos doet
precies wat je wilt, lees de andere antwoorden en zeker de correctie op
mijn onjuiste post.

John

--
email: mail(at)johnbokma.com
home: http://johnbokma.com/

Daniel Tryba
26/06/03, 00:05
Herbert Groot Jebbink <hgj@xs4all.nl> wrote:
>> In dit geval dus strpos()!==false
>
> ahum, dat is dus een stuk simpeler dan wat ik gaf ...

De (!(...===false)) viel nog wel mee, de is_integer() was wel innovatief
maar die andere 2: bah! :)

--

Daniel Tryba

Daniel Tryba
26/06/03, 00:05
John Bokma <postmaster@castleamber.com> wrote:
>> Nope, das een mooie valkuil van php. strpos retourneerd de index in de
>> string waar de substring begint of false. Als de string dus begint met
>
> Merde, natuurlijk, 0 is begin string :-(

Wees gerust, je bent niet de enige die daar ooit is ingetrapt.

>> google dat retouneerd strpos 0 maar is de string dus wel aanwezig.
>
> He he he, natuurlijk. De c-variant IIRC geeft -1 als niet gevonden.

Het is zeer jammer om een signed int(etc) te moeten gebruiken voor zulk
een onderscheid, zeker aangezien de lengte van een string niet kleiner
dan 0 kan zijn (en nee ik wil niets over pointers horen :) en je dus de
helft van het return type practisch niet gebruikt.

>> Hiervoor is !== en === bedacht welke ook nog eens rekening houd met het
>> type en niet alleen de waarde. In dit geval dus strpos()!==false
>
> Thanks, nu moet de OP er uit zijn :-)

Muntje was om 23:31 schijnbar nog niet gevallen :)

--

Daniel Tryba

Inc. A.
26/06/03, 02:05
Daniel Tryba wrote:
>> He he he, natuurlijk. De c-variant IIRC geeft -1 als niet gevonden.
>
> Het is zeer jammer om een signed int(etc) te moeten gebruiken voor
> zulk een onderscheid, zeker aangezien de lengte van een string niet
> kleiner dan 0 kan zijn (en nee ik wil niets over pointers horen :) en
> je dus de helft van het return type practisch niet gebruikt.

Alleen kunnen standaardstrings volgens mij een lengte van 0.5*MAXINT of
meer toch niet aan, dus dat maakt niet heel veel uit.
Je kunt het ook op de windows-api manier doen: gewoon -1 aan UNsigned
ints toekennen.
Eigenlijk is het meest eenvoudig toch wel gewoon een 1-based-array
gebruiken. (-:
--
Inca

robert
26/06/03, 07:35
John Bokma <postmaster@castleamber.com>:
> Voor een constante string ga je geen reguliere expressie
> gebruiken. Overhead en onzin.

En dat komende van een Perl-progger! ;)

--
robert

Ronald Klip
26/06/03, 09:20
John Bokma schreef:
> Anno wrote:
>
> > Ik denk dat ik wel verder kom met eregi om te kijken of "google" in de naam
> > voorkomt.
>
> Nee, nee en nog eens nee :-). Voor een constante string ga je geen
> reguliere expressie gebruiken. Overhead en onzin. Die strpos doet
> precies wat je wilt, lees de andere antwoorden en zeker de correctie op
> mijn onjuiste post.

Gebruik dan niet strpos(), maar strstr() .

--
groet, Ronald

Jan Ehrhardt
26/06/03, 09:20
Ronald Klip in nl.internet.www.server-side (Thu, 26 Jun 2003 09:08:25
+0200):

>John Bokma schreef:
>> Anno wrote:
>>
>> > Ik denk dat ik wel verder kom met eregi om te kijken of "google" in de naam
>> > voorkomt.
>>
>> Nee, nee en nog eens nee :-). Voor een constante string ga je geen
>> reguliere expressie gebruiken. Overhead en onzin. Die strpos doet
>> precies wat je wilt, lees de andere antwoorden en zeker de correctie op
>> mijn onjuiste post.
>
>Gebruik dan niet strpos(), maar strstr() .

Maak er dan maar stristr() van. (G|g)ooglebot ...

Jan
--
Dropdown and pushup menu's - http://cgi.monitor.nl/cms.html

Ronald Klip
26/06/03, 09:35
Jan Ehrhardt schreef:
> Ronald Klip :
> >John Bokma schreef:
> >> Anno wrote:
> >>
> >> > Ik denk dat ik wel verder kom met eregi om te kijken of "google" in de naam
> >> > voorkomt.
> >>
> >> Nee, nee en nog eens nee :-). Voor een constante string ga je geen
> >> reguliere expressie gebruiken. Overhead en onzin. Die strpos doet
> >> precies wat je wilt,
> >
> >Gebruik dan niet strpos(), maar strstr() .
>
> Maak er dan maar stristr() van. (G|g)ooglebot ...

Ik had mijn potsje al gecanceld omdat ik in de manual dit las : "Note:
If you only want to determine if a particular needle occurs within
haystack , use the faster and less memory intensive function strpos()
instead. "

strpos() is overigens net als strstr() hoofdlettergevoelig.

--
groet, Ronald

John Bokma
26/06/03, 13:35
robert wrote:
> John Bokma <postmaster@castleamber.com>:
> > Voor een constante string ga je geen reguliere expressie
> > gebruiken. Overhead en onzin.
>
> En dat komende van een Perl-progger! ;)

*juist* van een Perl-progger, *juist*

John

--
email: mail(at)johnbokma.com
home: http://johnbokma.com/