OHO Script wird öfters gerufen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • OHO Script wird öfters gerufen

    Hallo,
    ich habe folgendes Problem das ein PHP Code 4x ausgeführt wird obwohl er nur einmal gerufen werden sollte.

    In den Log Files sehe ich 4 Einträge mit der jeweiligen Suche


    PHP-Code:
    <?php 
    require_once("config.php");
    require_once(
    "include.php");
    $bd mysql_connect($mysql_hostname$mysql_user$mysql_password);
    mysql_select_db($mysql_database$bd);
    error_log(sprintf("Suche: " $q));
    $eintrag "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
    mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
    ?>
    Der Aufruf ist aus einer anderen Seite mit

    PHP-Code:
          <FORM ACTION="suche.php">
            <INPUT TYPE="text" NAME="q" VALUE="<?php echo $q ?>" SIZE=80>
            <INPUT TYPE="submit" VALUE="Suche" CLASS="BUTTON">
          </FORM>
    gelöst.
    Kann mir da jemand weiterhelfen ?

    Es sind auch keine meta-refresh oder java-script Umleitung oder sonstige Weiterleitungen.

    Wenn ich direkt die Url angebe -> wird einfach das Script 4x ausgeführt.
    da bin ich mit meinem Latein am Ende

    Gruß Thomas
    Zuletzt geändert von JR-EWING; 14.05.2005, 00:21.
    Spambot Falle
    Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

  • #2
    Muss man vor einem Insert einen Select machen ?
    PHP-Code:
    require_once("config.php");
    require_once(
    "include.php");
    $bd mysql_connect($mysql_hostname$mysql_user$mysql_password);
    mysql_select_db($mysql_database$bd);
    $sql mysql_query("SELECT * FROM {$prefix}suche WHERE suchtext = $q");
    if (
    mysql_num_rows($sql) == 0){
        
    $eintrag "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
        
    mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
    }
    ?> 
    Jetzt wird bloss einmal die Insert Anweisung ausgeführt.....

    Wenn mir jetzt einer erklären kann warum , wäre ich sehr dankbar.
    Spambot Falle
    Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

    Kommentar


    • #3
      kann nicht ganz nachvollziehen, was du da machst. Mag daran liegen, dass ich erst grade wieder @ home bin, aber vielleicht auch an einer fehlenden Beschreibung deines Vorhabens...

      Muss man vor einem Insert einen Select machen ?
      Rein technisch musst du es natürlich nicht.

      Aber du hast susätzlich eine if()-Abfrage in dein Script eingebaut. Vermutlich fängt die irgendwelche Fehlerhaften Scriptaufrufe ab. Kannst du in der Richtung mal dein Script untersuchen?

      Kommentar


      • #4
        Okay,
        mein Vorhaben ist die Suchergebnisse in die Datenbank zu schreiben.

        Dazu habe ich eine Seite index.php in die ich mit
        PHP-Code:
              <FORM ACTION="suche.php">
                <INPUT TYPE="text" NAME="q" VALUE="<?php echo $q ?>" SIZE=80>
                <INPUT TYPE="submit" VALUE="Suche" CLASS="BUTTON">
              </FORM>
        bei einer Suche das Script Suche.php aufrufe.

        Nun wird dieses Script aber leider 4 mal aufgerufen.

        Hier mal die ersten Zeilen der Suche.php
        PHP-Code:
        <?php 
        require_once("config.php");
        require_once(
        "include.php");
        $bd mysql_connect($mysql_hostname$mysql_user$mysql_password);
        mysql_select_db($mysql_database$bd);
        error_log(sprintf("Suche: " $q));
        $eintrag "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
        mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
        ?>

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" >
        <head> 
        usw.
        In meinen Logs sehe ich dann vier Einträge von.
        error_log(sprintf("Suche: " . $q));

        Gruß
        Thomas
        Zuletzt geändert von JR-EWING; 14.05.2005, 16:17.
        Spambot Falle
        Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

        Kommentar


        • #5
          Kannst du in der Richtung mal dein Script untersuchen?
          Haste denn jetzt mal Testausgaben gemacht, um das ganze näher zu lokalisieren? Das fehlt mir irgendwie immer noch!

          Kommentar


          • #6
            Wie meinst du das ?

            Ich hatte mal als erste Zeile in Suche.php eine Ausgabe mit
            error_log()

            wurde eben 4x ausgeben. Also es wird Suche.php viermal aufgerufen.
            Wie kann ich das denn besser lokalisieren ?
            Spambot Falle
            Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

            Kommentar


            • #7
              aufgerufen wird die datei ja vom browser. also musst du jetzt herausfinden, warum... Ich weiß nicht, was dein script großartig beinhaltet, daher kann ich dir da nicht mehr sagen. außer dass du mal entsprechende testausgaben machen musst.

              ist da evtl. ne weiterleitung o.ä. drin. wird die datei irgendwo aufgerufen, wo sie gar nicht gebraucht wird, ... Aber ich kann halt nur ins blaue reinraten.

              Kommentar


              • #8
                Hier mal der Code meiner htaccess


                PHP-Code:
                RewriteEngine on
                RewriteRule 
                ^(.*)-(.*).html index.php?c=$1
                RewriteRule 
                ^eintrag/([0-9]*).html http://www.domain.de/add_url.php?c=$1 [redirect]
                RewriteRule ^eintraghttp://www.domain.de/ [R=301] 
                Aufruf ganz normal über Browser

                http://www.domain.de/suche.php?q=tom

                PHP-Code:
                <?php 
                require_once("config.php");
                require_once(
                "include.php");
                $bd mysql_connect($mysql_hostname$mysql_user$mysql_password);
                mysql_select_db($mysql_database$bd);
                $sql mysql_query("SELECT * FROM {$prefix}suche WHERE suchtext = $q");
                if (
                mysql_num_rows($sql) == 0){
                    
                $eintrag "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
                    
                mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
                }
                ?>
                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
                <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" >
                <head>
                ....
                EDIT:
                url-erkennung ausgeschaltet by TobiaZ
                Zuletzt geändert von TobiaZ; 14.05.2005, 17:55.
                Spambot Falle
                Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

                Kommentar


                • #9


                  DU bist lustig! *lol* Jetzt aber Zack den Quelltext wieder raus, sonst muss ich dein Posting gemäß den Forenregeln zensieren...

                  Kommentar


                  • #10
                    Sorry,
                    aber ich habe da nichts besonders in dem Quellcode (Umleitung) oder so.
                    Also PHP am Anfang und danach ganz normale HTML Ausgabe.

                    Das PHP wird halt 4x durchlaufen.
                    Was soll ich denn Posten, damit mir da einer helfen kann.
                    bzw. Was soll ich mit error_log ausgeben ?
                    Gibt es irgendeine Request Nummer die ich ausgeben könnte ?
                    Spambot Falle
                    Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

                    Kommentar

                    Lädt...
                    X