mein script wird doppelt ausgeführt

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

  • mein script wird doppelt ausgeführt

    hi,

    ich habe ein zähl-snippet der webstatistiksoftware BBCLONE in die index.php meines DRBGuestbook eingefügt und bekomme jezt pro seitenaufruf 2 hits.

    hier ist die index.php:

    (sorry ich kriegs nichtt besser formatiert hin)

    PHP-Code:
    <?php

    /****************************************************************************

     * DRBGuestbook

     * [url]http://www.dbscripts.net/guestbook/[/url]

     * 

     * Copyright © 2007-2008 Don B

     ****************************************************************************/

    // bbclone snippet here

    // define("_BBC_PAGE_NAME", get_bloginfo("name") . wp_title("/", false));
     
    define("_BBC_PAGE_NAME""Guestbook");
     
    define("_BBCLONE_DIR""../webseiten/bbclone/");
     
    define("COUNTER"_BBCLONE_DIR."mark_page.php");
     if (
    is_readable(COUNTER)) include_once(COUNTER);

    // end bbclone snippet


    $base_url "./";

    require_once(
    dirname(__FILE__) . '/includes/utils.php');

    require_once(
    dirname(__FILE__) . '/includes/challenge.php');

    require_once(
    dirname(__FILE__) . '/includes/guestbook.php');

    require_once(
    dirname(__FILE__) . '/includes/views.php');

    require_once(
    dirname(__FILE__) . '/config.php');

    require_once(
    dirname(__FILE__) . '/strings.php');



    // Confirm that application is fully installed

    confirm_install();



    // Handle actions

    if(isset( $_GET["action"] )) {

        

        
    $action $_GET["action"];

        

        switch(
    $action) {

            

            case 
    "challengeimage":

                
    outputChallengeImage();

                break;

            

            default:

                die(
    "Invalid request.");

                break;

            

        }

        

    } else if(isset( 
    $_POST["action"] )) {

        

        
    $action $_POST["action"];

        

        switch(
    $action) {

            

            case 
    "add":

            

                
    // Undo magic_quotes

                
    if(get_magic_quotes_gpc()) {

                    
    $_POST stripslashes_recursive($_POST);

                }

            

                if(!
    is_banned($_SERVER['REMOTE_ADDR']) && guestbook_add($_POST)) {

                    
    include_from_template('added.php');

                } else {

                    
    show_entries_page();

                }

                break;

                

            default:

                

                
    show_entries_page();

                break;

            

        }

        

    } else {



        
    show_entries_page();

        

    }



    ?>
    Zuletzt geändert von Dilandau; 29.10.2008, 16:29.
    mobilis in mobili

  • #2
    Hast du schon geprüft ob das Script mehrmals pro Request ausgeführt wird?

    Kommentar


    • #3
      Hast du vielleicht Firebug an?

      Der doppelt bei mir auch die Requests

      Kommentar


      • #4
        danke für eure antworten.

        Original geschrieben von onemorenerd
        Hast du schon geprüft ob das Script mehrmals pro Request ausgeführt wird?
        wie kann ich das prüfen?


        firebug sagt mir nix. ich benutze das bbclone-snippet schon fuer viele andere sachen und da läufts korrekt. blos im gästebuch wills nicht.
        mobilis in mobili

        Kommentar


        • #5
          Schreibe "echo 1;" vor "// Handle actions".

          Kommentar


          • #6
            ich habe geschrieben

            PHP-Code:
            // Confirm that application is fully installed

            confirm_install();


            echo 
            1;


            // Handle actions 
            und das ergebnis war eine kleine 1 links oben in der fensterecke. offenbar wird es nur einmal ausgeführt. aber wo liegt dann das problem? kann es sein das die returncodes am zeilende was zur sache tun - im geposteten codebeispiel seiht man doch das ueberall blos nicht im snippet leerzeilen eingefügt worden sind, also jeder returncode doppelt gezählt hat?
            Zuletzt geändert von Dilandau; 29.10.2008, 18:20.
            mobilis in mobili

            Kommentar


            • #7
              outputChallengeImage() macht doch sicher das was der Name vermuten läßt - ein Captchabild ausgeben. Dazu gehört es, nach der Ausgabe das Script zu beenden. Die echo-Anweisung von eben hätte das Bild kaputt machen müssen, der Browser hätte es nicht anzeigen dürfen. Da ich aber nicht weiß, wie dein Script noch aufgerufen wird, ersetzen wir jetzt das echo mal durch

              error_log("1\n", 3, $_SERVER['DOCUMENT_ROOT'].'/log.txt');

              und dann schaust mal in log.txt rein, nachdem du das Script einmal augerufen hast. Ich wette, das stehen zwei oder mehr Einsen drin.

              Wenn du letztlich festgestellt hast, dass das Script mehrmals aufgerufen wird, mußt du dafür sorgen, dass der Zähler nur einmal, nämlich beim eigentlichen Webseiten-Request erhöht wird. Der Code zum Zählen muß also in das if-else-Konstrukt eingewoben werden - nicht in jeden Fall, aber evtl. in mehrere.

              Kommentar


              • #8
                ok, DANKE, es war genauso wie du vermutet hast. ich verstehe zwar nicht ganz wieso ein teil des scripts zweimal dran kommt und ein andere nur einmal aber jezt habe ich das snippet in die letzte else sektion eingebaut und jezt wird nur 1 besuch gezählt.

                aber mit ist noch ein problem eingefallen: wenn jemand das gäste buch aufruft, wird er gezählt. und wenn sich jemand ins buch einträgt, kann er nacher wieder auf die ansicht der beitragsliste zureuckschalten. dabei wird er dann nochmal gezählt. das selbe dürfte passiern wenn jmd im gästebuch blättert, ein hit pro unterseite. also wie kann ich machen dass der besuch des gästebuches nur 1x gezählt wird? brauche ich dafür cookies oder geht das auch anders? so ne art reload sperre oder so. aber eigentlich sollte bbclone selbst eine reload sperre haben!

                heideho,
                Dilly
                Zuletzt geändert von Dilandau; 29.10.2008, 20:55.
                mobilis in mobili

                Kommentar

                Lädt...
                X