Erreichbar heißt in diesem Sinne, ob man als normaler Nutzer auf die Website zugreifen kann.
Wir nutzen dazu die PHP-Funktion fsockopen(), um zu überprüfen, ob eine Verbindung zur Website hergestellt werden kann.
Um sicher zu stellen, dass auch wirklich ein Nutzer die Index-Seite ansehen kann, machen wir von der Funktion fwrite() Gebrauch, indem wir einen GET-Request schicken.
Funktion:
Code php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?php
/**
* @author ComFreek http://www.tutorials.de/members/comfreek.html
* @license Free software but if you like this code snippet, you can make a link!
* http://www.tutorials.de/members/comfreek.html
*/
/**
* Checks if a website or file is available
* @param string $WebsiteURL The website URL or file to check
* @param boolean $GETRequest='true' If you pass TRUE, a GET request will also be made
* @param int $Port='80' The port to use in fsockopen()
* @param $Timeout='5' The timeout in seconds to use in fsockopen()
*
* @return boolean Returns TRUE if the handle of fsockopen() (if $GETRequest=true and fwrite()) was valid
*
* @uses fsockopen()
* @uses fwrite()
* @uses fclose()
*/
function WebsiteAvailable($WebsiteURL, $GETRequest=true, $Port=80, $Timeout=5)
{
$ErrorNumber = NULL;
$ErrorMessage = "";
$FileHandle = @fsockopen($WebsiteURL, $Port, $ErrorNumber, $ErrorMessage, $Timeout);
if ($FileHandle)
{
if ($GETRequest)
{
$HTTPString = "GET / HTTP/1.1\r\n";
$HTTPString .= "Host: ".$WebsiteURL."\r\n";
$HTTPString .= "Connection: Close\r\n\r\n";
$WrittenBytes = @fwrite($FileHandle, $HTTPString);
fclose($FileHandle);
if ($WrittenBytes>0)
return true;
else
return false;
}
fclose($FileHandle);
return true;
}
else
{
return false;
}
}
?> |
Hinweis: Ihr müsst den Präfix http:// weglassen!
Ihr könnt aber auch eine SSL-Verbindung mit dem Präfix ssl:// oder TLS-Verbindung herstellen. Ein Blick in das PHP-Manual lohnt sich auf jeden Fall!
Hinweis: Ihr könnt ssl:// und tls:// nur nutzen, wenn OpenSSL mit einkompiliert wurde!
Der erste Parameter enthält die URL ohne jede weitere Verzeichnisstrukturen oder Dateiangaben! z.B. www.google.de
Der zweite Parameter bestimmt, ob ein GET-Request zusätzlich zu fsockopen() ausgeführt werden soll.
Der dritte Parameter bestimmt den Port.
Und der vierte Parameter gibt das Timeout in Sekunden an.
Beispiele:
PHP-Code:
# Nur mit benötigten Parametern
# Mit GET-Request, 80 als Portnummer und 5 Sekunden als Timeout
var_dump( WebsiteAvailable("www.google.de") );
# Mit GET-Request, 80 als Portnummer und 10 Sekunden als Timeout
var_dump( WebsiteAvailable("www.example.invalid"), true, 80, 10);
# SSL-Verwendung
var_dump( WebsiteAvailable("ssl://www.example.com") );
Falls Ihr einen Verbesserungsvorschlag oder andere Anregungen habt, postet doch einen Kommentar!
Außerdem Danke an Felix Jacobi und Bratkartoffel für die Verbesserungsvorschläge!


Bereiche
Kategorien
Forum - Programming
tutorials.de-Systemmitteilung