Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Session

Einklappen

Neue Werbung 2019

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

  • Problem mit Session

    Moin, ich versuch grad was über eine Session zu prüfen, also if - else.

    PHP-Code:
    <?php
    session_set_cookie_params
    (100);
    session_start();

    mysql_connect("xxx""xxx","xxx") or die ("Keine Verbindung moeglich");
    mysql_select_db("xxx") or die ("Die Datenbank existiert nicht.");

    $a 'http://www.xxx.de';
    $b $a.$_SERVER['REQUEST_URI'];
    $c 'http://www.xxx.de/upload/banner_1.jpg';
    $d '/upload';
    if(!isset(
    $_SESSION['counter_ip']))
    {
    echo 
    $row->viewcounter ;

    else
    {
    $sql mysql_query("UPDATE img set viewcounter = viewcounter + 1 WHERE linklink = '".$b."'");
    $_SESSION['counter_ip'] = true;
    echo 
    $row->viewcounter ;
    }
    ?>
    Es geht hierbei um einen Viewcounter. Ich möchte das der nicht durch Reloaden erhöht wird. Daher möchte ich eine Session setzen und der Counter wird um 1 erhöht. Beim Reloaden halt nicht mehr.

    Aber das hier kann ja gar nicht so klappen, da er gar nicht erhöhen kann, da die Session ja schon da ist. Gibts da Möglichkeiten?

  • #2
    lege beim Erhöhen des Counters eine Variable im Session Array an, mit bestimmten Inhalt - vorher prüfst du, ob diese Variable in der Session existiert und den Wert für "Counter ist bereits erhöht" hat. Damit kannst du relativ einfach auf Reload reagieren.

    Also kurz nochmal :

    prüfen ob Variable für "Counter erhöht" existiert in Session-Array und den Wert hat -

    Wenn nein : Counter erhöhen, Variable mit Wert in Session-Array ablegen

    Wenn ja : Counter nicht erhöhen, weil es ein Reload war...

    Kommentar


    • #3
      Uff sorry, versteh ich jetzt gar nicht. Muss das so kompliziert sein?
      Wieso kann das nicht so gehen wie in meinem Code oben...

      Kann mir einer einen Code-Ansatz geben?

      Kommentar


      • #4
        PHP-Code:
        session_start();
        if (!isset(
        $_SESSION['counter']) OR $_SESSION['counter']!=='1') {
           
        $_SESSION['counter']='1';
           .... 
        //counter erhöhen
        }
        // else -> Counter ist schon erhöht worden 
        der Code ist kürzer als die Erklärung

        Kommentar


        • #5
          Danke, aber irgendwie zählt der trotz der eingegebenen 100 Sekunden nach jedem Reload den Counter hoch:

          PHP-Code:
          <?php 
          session_set_cookie_params
          (100); 
          session_start();

          mysql_connect("xxx""USER212221","xxx") or die ("Keine Verbindung moeglich");
          mysql_select_db("xxx") or die ("Die Datenbank existiert nicht.");

          $a 'http://www.xxx.de';
          $b $a.$_SERVER['REQUEST_URI'];
          $c 'http://www.xxx.de/upload/banner_1.jpg';
          $d '/upload';

          if (!isset(
          $_SESSION['counter']) OR $_SESSION['counter']!=='1'

          $_SESSION['counter']='1';
          $sql mysql_query("UPDATE img set viewcounter = viewcounter + 1 WHERE linklink = '".$b."'"); 
          echo 
          $row->viewcounter 
          }  
          else 

          echo 
          $row->viewcounter 

          ?>

          Kommentar


          • #6
            nö .. kann er mit dem Code ja gar nicht ...


            wo kommt $row->viewcounter her ? .. in dem Code steht kein "Select" dort fragst du nichts aus der Datenbank ab

            Kommentar


            • #7
              Achso, mit Counter meinst du die Spalte...

              Ich probiers mal...

              Kommentar


              • #8
                nee - .. bitte trenne erstmal deine Begrifflichkeiten

                session-Verwaltung hat erstmal nix mit der Datenbank zu tun.

                WEnn ich mich bei meinem Session-Code da nicht vertan habe, dann geht der genau 1 mal in den THEN-Zweig, und danach existiert der Eintrag im Session_array und er übergeht diesen Code, sodass der Counter nicht erhöht wird.

                Wenn du das nach 100 Sekunden "ungeschehen" machen willst, musst du eben die Variable aus dem Session-Array löschen, nachdem mindestens 100 Sekunden vergangen sind - auch das kannst du wieder mit einer weiteren Variablen im Session-Array feststellen (Timecode dort speichern, gucken, ob 100 Sekunden vergangen sind durch Vergleich - wenn ja, dann die beiden Session_variablen löschen , sonst nix machen

                Kommentar


                • #9
                  Ich kann in eagle275 Beispiel keinen Sinn erkennen. Wenn Du einen Reload erkennen willst, musst Du immer einen Testwert mitsenden (bei dem Link oder Submit) und diesen mit der Session vergleichen bzw. ihn reinschreiben. Anders kann das gar nicht gehen. Du kannst die Session nicht mit sich selbst abgleichen, was soll da für eine Erkenntnis rauskommen?!

                  Letztlich ist das Prinzip ähnlich wie bei einem Captcha.

                  [edit]

                  Ach ich sehe, es geht um nen Besucherzähler.

                  PHP-Code:
                  session_start();

                  if (empty (
                  $_SESSION['counted'])) {
                    
                    
                  // UPDATE
                    // ..
                    
                    
                  $_SESSION['counted'] = true;

                  So wird ein Schuh draus.

                  Kommentar


                  • #10
                    joa - ob nun true oder ne 1 .. prinzipiell egal ... jetzt muss er nur noch die 100 sekunden einbauen - oder sollte das mit dem cookie-parameter da schon ausreichend sein?

                    Kommentar


                    • #11
                      @suicidus

                      Du willst mit einer Variablen $row->viewcounter arbeiten, aber du initialisierst diese nirgendwo, sprich es fehlt eine select Query wo du überhaupt den Wert der in $row->viewcounter erst abfragen musst.
                      Wie willst du denn mit einem Wert arbeiten der noch gar nicht existiert.

                      Schreibe dir bzw. mache dir doch so einen Ablauf erst mal auf Papier, danach ist das in Programmcode viel leichter umzusetzen.

                      So wird das jedenfalls nichts.

                      Gruß Litter

                      [EDIT]
                      versuche mal bitte deinen Threadtitel zu ändern "Problem mit Session" ist sowas von nichtssagend. Versuche den Threadtitel annähernd deiner Problemstellung anzupassen. Danke davon hat die Nachwelt die eine Boardsuche verwendet bedeutend mehr.

                      Kommentar

                      Lädt...
                      X