Hallo,
ich habe folgenden Code in meinem Buch kombiniert:
----
<?
$ja = '*ja*';
$nein = '*nein*';
function search4links($url, $fPtr)
{
static $urlBuffer;
if(isset($urlBuffer[$url])) return 0;
$urlBuffer[$url] = 1;
echo("Durchsuche $url<br>\n");
flush();
$meineSeite = @implode("", @file($url));
if(!$meineSeite) return 0;
$existing = false
// Links suchen
preg_match_all("/\href=("|')(.*)(\1)/isU", $meineSeite, $ausgabe);
$anzahlLinks = 0;
foreach($ausgabe[2] as $link)
{
if(preg_match("/(bildungszentrum-hyperkinetik.de|bz-h.de)/i", $link))
$existing = true;
if(!preg_match("/(http)/i", $link))
{
if(!$link[0] == "/")
{
if(!preg_match("/(http://.*)/(.*).(.*)$/siU", $url, $mUrl))
{
$anzahlLinks += search4links($url."/".$link);
}
else
{
$anzahlLinks += search4links($mUrl[1]."/".$link);
}
}
else
{
preg_match("/(http://.*)//siU", $url, $mUrl);
$anzahlLinks += search4links($mUrl[1]."/".$link, $fPtr);
}
}
}
if($existing)
$query = "UPDATE parnter (check) VALUES ('".mysql_escape_string ($ja)."') WHERE adresse LIKE $url";
if($insert = @mysql_query("$query")) {
echo '<p align="center"><b>Abfrage erfolgreich</b><br><br><a href="organizer.php"><- zurück</a></p>';
else
$query = "UPDATE parnter (check) VALUES ('".mysql_escape_string ($nein)."') WHERE adresse LIKE $url";
if($insert = @mysql_query("$query")) {
echo '<p align="center"><b>Abfrage erfolgreich</b><br><br><a href="organizer.php"><- zurück</a></p>';
return $anzahlLinks;
}
if(isset($_POST[url]))
echo "\n\n<br><br>Links gefunden: ".search4links($_POST[url], fopen("$datei", "a");
);
?>
-----
und den Code habe ich getetstet. Allerdings habe ich jetzt versucht, ihn auf einer Frameseite zu testen (er soll die Links, die auf meine Seite gehen zählen, wenn da sind *ja* in die Tabelle schreiben, wenn nein *nein*.
Allerdings zählt er in einem Frameset und auf einer Seite nur die in einem Verzeichnis bzw. in einem Frameset liegenden Dateien, ich möchte aber, dass alle Dateien aufgerufen und gecheckt werden. Jetzt habe ich dazu folgenden Code gefunden:
-----
<?
// Verzeichnisse ausgeben
function echo_dirs($sDir)
{
if(!$oDir = @dir($sDir))
{
echo("<i>Konnte das Verzeichnis $sDir nicht zum Lesen öffnen</i><br>\n");
return;
}
while(is_string($sFile = $oDir->read()))
{
if($sFile[0] == ".") continue;
if(is_dir($sDir.$sFile))
{
echo("<blockquote><b>$sFile</b><br>\n");
echo_dirs($sDir.$sFile."/");
echo("</blockquote>\n");
}
else
{
echo("$sFile<br>");
}
}
}
echo_dirs("./");
?>
-----
Nun habe ich aber keine Ahnung, wie ich das kombinieren kann. Wäre euch sehr dankbar, wenn ihr mir helfen könntet...
Danke schon jetzt *vordemquellcodeverzweifel*
Stephan