Anzeigen ob fremde Webseite Online ist ?

connor

Klammverzeichnis
27 Dezember 2009
850
52
Hallo ,

Ich möchte gern auf meiner Webseite anzeigen lassen , ob eine Fremde Webseite gerade erreichbar ist. Dieses möchte ich gern mittel einem grünen Punkt und einem roten Punkt grafisch darstellen.

Ich habe auch schon was ausprobiert aber das will einfach nicht funktionieren.

PHP:
<?php
$datei = "https://www.klamm.de/index.php";
$fp = fopen($datei,"r");
if (!$fp) { 
echo "Online !";
}
else {
echo "Offline";
} 
?>

Kennt einer eine Lösung die funktioniert ?

DANKE
gruß
connor
 
Blödsinn, natürlich funktioniert das, wie er es gepostet hat. fopen nutzt die Protocol Wrapper um die Daten abzurufen.

@connor: WAS funktioniert deiner Meinung nach nicht?
 
echt? dann sorry ... ich hab das anders in erinnerung.
aber ich bin auch noch eine lernende .-)
 
Eventuell ist allow_url_fopen deaktiviert?

Aber ich hab da auch mal was aus den Tiefen meiner Backups rausgesucht:
PHP:
<?php
	ob_start();
	$url = 'www.klamm.de';
	$width = 600;
	$time = 5*60;
?>
<script type="text/javascript">
//<![CDATA[
var countDownTime = 0;
var counter = null;
var delta = null;
var width = 0;
function countDown() {
  if (countDownTime>0) {
    countDownTime--;
    width += delta;
    counter.style.width = Math.round(width);
    window.setTimeout("countDown()", 1000);
  } else {
    counter.innerHTML = 'RELOADING';
    window.location.reload();
  }
}

function startCountDown(time) {
  countDownTime=time;
  counter = document.getElementById("countdown");
  delta = <?=$width?>/time;
  window.setTimeout("countDown()", 1000);
}
//]]>
</script>
<style type="text/css">
<!--
#outercountdown {
	background-color: #f00;
	border: 1px solid #000;
	height: 20px;
	margin: auto;
	width: <?=$width?>px;
}
#countdown {
	background-color: lightgreen;
	color: #0f0;
	font-weight: bold;
	height: 100%;
	text-align: center;
	width: 0;
}
.success { color: #0f0; }
.error { color: #f00; }
#container {
	background-color: #fff;
	border: 1px solid #000;
	margin: auto;
	padding: 5px;
	text-align: center;
	width: <?=$width+20?>px;
}
body {
	background-color: #e8e8e8;
}
//-->
</style>
<div id="container">
	Pinging <b><?=$url?></b><br />
	<div id="outercountdown"><div id="countdown"></div></div>

<?php
	$log = @file('ping.log');
	$max = 0+@count($log);
	$min = max(0,$max-20);
	for ($i=$min; $i<$max; $i++) {
		list($s, $u, $t) = explode('|', chop($log[$i]));
		printf("%02d | %s - No connect<br/>\n", $max-$i, @date('H:i:s', $t));
	}
	ob_flush();
	$fp = @fsockopen($url, 80, $errno, $errstr, 0.5);

	$f = @fopen('ping.log', 'a+');
	if ($f) {
		fputs($f, ((int)!empty($fp)).'|'.$url.'|'.time()."\n");
		fclose($f);	
	}

	if (!$fp) {
		echo '<div class="error">00 | '.@date('H:i:s')." - No connect</div>\n";
		echo "<script>startCountDown($time);</script>";
	} else {
		fclose($fp);
		echo '<div class="success">Connected to <b>'.$url.'</b> at <b>'.@date('H:i:s').'</b></div>';
	}
?>

</div>
Schon ewig alt und ich hab jetzt nur das Nötigste angepasst. Vielleicht hilft's ja...
 
@tleilax:
Ne Verbindung kriegst du aber häufig bei offline Webseiten noch.
Ein HEAD-Request wäre imo besser, um auch wirklich eine vernünftige Antwort abzuwarten. Positiver Nebeneffekt: 404 fällt sofort auf, auch, wenn die Seite online is. Und es kostet nicht viel Traffic, wenn man nur HEAD macht, anstatt alles zu laden.

Frage - falls es wer weiß: Wenn man, wie in Post #1, nur mit fopen und file_wrapper eine Verbindung aufmacht, aber nicht liest, wird dann schon ein Request gesendet? In diesem Fall wäre der Code aus Post #1 nicht zu empfehlen.
 
@tleilax:
Ne Verbindung kriegst du aber häufig bei offline Webseiten noch.
Ein HEAD-Request wäre imo besser, um auch wirklich eine vernünftige Antwort abzuwarten.
Stimmt schon, aber der Code hat damals (vor mehr als 5 Jahren) den bescheuerten Anforderungen, zu erkennen, wann klamm endlich wieder online ist, genügt. Zum Glück sind diese Zeiten längst passé und inzwischen würde ich es vermutlich auch anders lösen... :LOL: