Jakob Schneider: Indexer-Script läuft offline, aber nicht online

Moin Leute,

Ich hab mir ein kleines Script geschrieben, was die Metatags meiner html-Seiten indexiert.
Hier mal der Quellcode:

<?PHP

function show_dir($dir, $pos=2)
{
    if($pos == 2)
    {
        echo "<hr>";
    }

$handle = @opendir($dir);
    while ($file = @readdir ($handle))
    {
        if (eregi("^.{1,2}$",$file))
        {

continue;

}

if(is_dir($dir.$file))
        {
            printf ("% ".$pos."s <span style='font-weight:bold;'>%s</span>\n", "|-", $file);
            show_dir($dir.$file."/", $pos + 3);

}
        else
        {
            //printf ("% ".$pos."s %s\n", "|-", $file);
             if(!is_dir($file))
             {
            $aktuelledatei=$dir.$file;

print '<span style="font-color:red;font-weight:bold;">|- '.$dir.$file.'</span>';

if(ereg('.htm$',$aktuelledatei))
             {

print " <span style='font-style:italic'>wird indexiert</span>";

//MYSQL-Daten

/* Datenbankserver - In der Regel die IP */
  $db_server = "localhost";

/* Datenbankname */
  $db_name = "";

/* Datenbankuser */
  $db_user = "";

/* Datenbankpasswort */
  $db_passwort = "";

$dbconn = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");

$db_waehlen = @MYSQL_SELECT_DB($db_name);

$dateiurl=$aktuelledatei;
$metas = get_meta_tags($dateiurl);

$words="";
$desc="";
$insertwords="";

while(list($key, $val) = each($metas))
{
if($key=="keywords")
{
$words=$val;
//$words=strtolower($words);
$words = explode(",",$words);

}

if($key=="description")
{
$desc=$val;

}

}

for($x=0;$x<count($words);$x++)
{
$insertwords.=$words[$x].' ';
}

print'<br><table style="border-width:1px;border-style:solid;border-color:#000000;width:95%;"><tr><td>';
print $insertwords;
print '</td></tr>';
print '<tr><td>';
print $desc;
print'</td></tr></table>';
print'<br>';

$insertquery="INSERT INTO suche (url,keywords,description) VALUES ('$dateiurl','$insertwords','$desc');";
$result=mysql_query($insertquery,$dbconn);

if($result)
{
print '<span style="color:maroon;text-decoration:underline;">Datensatz erfolgreich hinzugefuegt</span><br><hr style="width:95%;text-align:center;border-width:1px;border-color:#000000;border-style:solid;"><br>';
flush();
}
else
{
print '<span style="color:maroon;font-weight:bold;">Beim Hinzufuegen des Datensatzes ist ein Fehler aufgetreten</span><hr><br>';
flush();
}
}

}
         print '<br>';
          }
        }
    }
    @closedir($handle);

if($pos == 2)
    {
        echo "<hr>";
    }
?>

<?

if($action=="logout")
{
session_destroy();
session_unregister('index');
}

if($pass=="oppapattikirgi"&&!session_is_registered('index'))
{
session_register('index');
}
else
{
print 'Willkommen zum HTML-Indexer<br>Zur Neuindexierung der Seiten wird das Admin-Passwort benötigt<br>';
print '<form name="form1" action="'.$PHP_SELF.'" method="post"><input type="password" name="pass"> <input type="submit" name="submit" value="Einloggen">';
}

if(session_is_registered('index')&&$action!='logout')
{
print 'Sie sind erfolgreich eingeloggt, mit der Neuindexierung wird begonnen... | <span class="spansurveymainlinks"><a href="'.$PHP_SELF.'?action=logout">Logout</a></span>';
show_dir("");  //Zwischen "" kann man einen Ordner angeben
}

?>

Wenn ich das Script offline laufen lasse, werden die Seiten indexiert. Online kommt zwar die Loginbestätigung, aber das script ist dann sofort fertiggeladen und fängt noch nicht mal mit der Indexierung an.

Weiß jemand eine Lösung?

LG Jakob

--
Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
  1. Hi,

    Hier mal der Quellcode:

    bitte *niemals* komplette Scripts posten. Nie.

    Wenn ich das Script offline laufen lasse, werden die Seiten indexiert. Online kommt zwar die Loginbestätigung, aber das script ist dann sofort fertiggeladen und fängt noch nicht mal mit der Indexierung an.

    Was für Debug-Ausgaben und Untersuchungen hast Du durchgeführt?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      sorry erstmal wegen des Codes - Ich hab erst nach dem Posten gemerkt, dass er ja eigentlich zu lang ist...

      Also: das Script gibt die Dateinamen von Ordnerinhalten und Unterordnern aus und indexiert die jeweiligen Dateien.

      Das List-Script habe ich von hier: http://www.dclp-faq.de/q/q-code-verzeichnis.html. Soeben habe ich proviert, ob das Listscript alleine (also ohne meinen Code) funktioniert, jedoch geht das auch nicht.

      Könnte es sein, dass das Listen durch Scripts vom Provider abgestellt ist?

      LG Jakob

      --
      Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
      1. Hi,

        Ich hab den Fehler, jedoch brauche ich noch eine korrekte Lösung :-).

        Am Ende des Scripts steht folgende Zeile:

        show_dir("special/");

        Zwischen den Anführungszeichen kann man einen Ordnernamen angeben, ich habe einfach keinen Namen dazwischengeschrieben, dann wurde vom Stammverzeichnis aus indexiert.

        Wenn ich einen Ordnernamen angebe, funktioniert das Script.

        Was muss ich angeben, damit das Stammverzeichnis ausgewählt wird (("") geht ja nicht...)

        LG Jakob

        --
        Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
        1. Hi,

          Was muss ich angeben, damit das Stammverzeichnis ausgewählt wird (("") geht ja nicht...)

          a) was ist für Dich das Stammverzeichnis?
          b) Wie geht das Script mit dem übergebenen Argument um, was macht es damit?

          Verstehen ist alles.

          Cheatah

          --
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Hi,

            mit Stammverzeichnis meine ich das Hauptverzeichnis meiner HP (also wo die Index-Datei für die Atartseite vorliegt).

            Das Script listet aus dem Parameter (also Ordner) die Inhalte samt Unterverzeichnissen auf.

            LG Jakob

            1. Hi,

              mit Stammverzeichnis meine ich das Hauptverzeichnis meiner HP (also wo die Index-Datei für die Atartseite vorliegt).

              also Document-Root. Wenn Du mit Dateien arbeitest, ist das Stammverzeichnis allerdings ein anderes - nämlich die Wurzel der Festplatte[1].

              Das Script listet aus dem Parameter (also Ordner) die Inhalte samt Unterverzeichnissen auf.

              Wie _genau_ geht es mit dem Parameter um? Nein, ich möchte nicht, dass Du es mir erklärst, sondern einfach nur, dass Du Dich damit solange beschäftigst, bis Du es genau verstehst.

              Cheatah

              [1] Mehr oder weniger. Filesysteme sind hochgradig komplex.

              --
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. Hi,

                Ich habe die Behandlung ja verstanden - deswegen kann ich mir den Fehler ja nicht erklären (beim Anpassen online hats ja funktionert).

                Aber da die Ordner bei direkter Ordnerangabe indexiert werden, ist mein Problem eigentlich schoin gelöst...

                Danke für die Hilfe!

                LG Jakob