OHO Script wird öfters gerufen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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.

    Comment


    • #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?

      Comment


      • #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
        Last edited by JR-EWING; 14-05-2005, 16:17.
        Spambot Falle
        Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

        Comment


        • #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!

          Comment


          • #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.

            Comment


            • #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.

              Comment


              • #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
                Last edited by TobiaZ; 14-05-2005, 17:55.
                Spambot Falle
                Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

                Comment


                • #9


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

                  Comment


                  • #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.

                    Comment

                    Working...
                    X