Beste

Ik zou graag een klein systeempje maken die een mail stuur naar mijn mail zodra Google op mijn site actief is. Ik zie op sommige fora die MyBB gebruiken dat Google online is. Dat leek mij ook interessant voor privé doeleinden.

Hoe doe ik dit?

Ik heb basis verstand van PHP. Het enige wat ik eigenlijk moet weten is hoe ik controleer of een bezoekers Google is. De mail sturen lukt mij wel. :)

Alvast bedankt!

Grt. Rody van de Pol
Is idd een optie. Maar hoe kan ik zeker weten dat het Google is?
Kan je nooit zeker weten. Of je moet alle IP-ranges kennen, wat mij onaandoenlijk lijkt. Iedereen kan namelijk useragents faken.
- Ariën - op 27/12/2015 21:02:29

Een kwestie van de user-agent uitlezen:
$_SERVER['HTTP_USER_AGENT'] en dan even zoeken naar de useragent van Google.
Google vult geen formulier in dus waar vraag je $_SERVER['HTTP_USER_AGENT'] op?
Je kan dit eigenlijk beter niet met php oplossen. Dit los je op met een linux of een python script (in cron) waarbij je je access.log in de gaten houdt en reageert zodra er een bot gelogd wordt.
Aad, wat heeft en formulier hiermee te maken?

Je kan prima in een 'recente bezoekers' databasetabel de spider van Google tonen aan de hand van de useragent.

Voor PHP geen probleem.
Ariën, $_SERVER['HTTP_USER_AGENT'] vraag je toch op nadat een formulier gepost is dacht ik....
Ik begrijp nu uit je reactie dat je gewoon op de index of meerdere pagina's $_SERVER['HTTP_USER_AGENT'] doet en die opslaat in de database. Is uiteraard een mogelijkheid maar vreet wel procestijd vooral als het druk is. Apache logt alles al voor je en dat kan je ook checken. Desgewenst kan je apache zo instellen dat (een deel van) de access.log meteen in database tabel(len) gestopt wordt. Dat bespaart dan weer processing van de code per pagina. Controlled by the CustomLog directive Zie http://dasunhegoda.com/apache-access-logs-to-mysql-database/953/
Ten eerste hebben we het over $_SERVER en géén $_POST. Verder staan useragents gewoon in de HTTP-headers bij elke request, dus processortijd kost het niks. Hij zet dit gegeven gewoon in de access_log. Deze realtime uitlezen kost wel processorkracht.
Ariën, 'recente bezoekers' databasetabel? Hij zet dit gegeven gewoon in de access_log??
Wie is 'Hij'?? TS?
Ik ben nu de draad kwijt.
Persoonlijk zou ik de volgende oplossing kiezen:
1. Apache middels de CustomLog directive zodanig instellen dat het gewenste gegeven met timestamp in de database komt.
2. Elke 5 minuten een Linux of Python cronscript runnen, een script dat de check uitvoert en een email stuurt.

Je hoeft dan niks met php en $_SERVER['HTTP_USER_AGENT'] te doen.
Ik bedoelde met 'hij' de webserver. In het voorbeeld gaat de TS uit van een bezoekerslijst waarin Google vermeld staat. Dus dan kan je daarvoor heel simpel de useragent van de GoogleBot voor gebruiken.

Dan hoef je geen CustomLog voor te gebruiken. Het kán wel, maar ik denk dat het een zwaardere belasting voor de server is om continu bij elke request een hoop records te inserten, dan een simpele toevoeging aan een access_log.

Python gebruiken lijkt mij sowieso een onnodige omweg. En mailen? Wat als Google nu opeens 1000 request doet? In een eigen 'recente users' table kan je ze herkennen aan een enkel bezoek, die je bijv. een timeout geeft van 5 minuten.
Maar hoe/wanneer insert je dan in die 'recente users' table? Alleen op je index pagina?

Reageren