Session Problem

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

  • Session Problem

    hallo

    ich habe nen kleines Problem !

    Also ich habe hie rnen formular :

    PHP-Code:

    <?php
    session_start 
    ();
    if (!isset (
    $_SESSION["user_id"]))
    {
    header ("Location: formular.php");
    }
    require(
    "connect.inc.php");

    $abfrage "SELECT * FROM benutzerdaten Where id=" $_SESSION['user_id'];
    $ergebnis mysql_query($abfrage);
    if (
    mysql_errno()) die ("MySQL-Error: " mysql_error());
    $ergebnis1 mysql_fetch_array($ergebnis);

    if(isset(
    $_POST['Super']))
    header('Location: test1.php');

    if(isset(
    $_POST['']))
    header('Location: test1.php');

    ?>
    <html>
    <body text="#000000" link="white" alink="white" vlink="white" bgcolor="#808080">
    <center>
    <table border="1">
    <tr>
    <td align="center" Colspan="2" width="300">Test</td>
    </tr>
    <tr>
    <td align="center">
    <form action="" method="post">
    <?


    $Mine = "1";
    $tab1 = "benutzerdaten"; 

    if($_SESSION["test"] == "1")
      { 
        echo '<INPUT type="submit" NAME="" VALUE="gesperrt"></form>';
      }
      else 
        { 
        echo '<INPUT type="submit" NAME="Super" VALUE="go"></form>';
        }
      if (isset($_POST['Super']))
      {
        $updateABC = "UPDATE `".$tab1."` SET `BauenR` = `BauenR` + '".$Mine."' WHERE ID ='".$_SESSION['user_id']."'";
        $update = mysql_query($updateABC);
        $_SESSION["test"] = "1";
      }
    ?>
    </td></tr>
    </table>
    </form>
    </body>
    </html>
    damit registrie r ich eine session , klappt auch soweit !

    nun will ich per cronjob ( extra datei ) nachfragen :

    wenn Feld = 0 , dann lösche session variable


    PHP-Code:

    <?
    require("connect.inc.php");

    $abfrage = "SELECT * FROM benutzerdaten";
    $ergebnis = mysql_query($abfrage);
    if (mysql_errno()) die ("MySQL-Error: " . mysql_error());
    $ergebnis2 = mysql_fetch_array($ergebnis);

    if($ergebnis2['Tick'] == "0")
      { 
        session_destroy ("test");
      }

    ?>

    er löscht die session variable nicht ! Weiss wer warum ?


    Mfg launebear

  • #2
    Warum so umständlich?

    Guck dir DELETE von mysql an...

    *verschieb*

    Kommentar


    • #3
      ich fand es als eine einfach lösung

      nur leider kann ich nun mit " delete von mysql " nichts anfangen !


      wo ist bei mir der fehler ?

      in der fomular datei oder in der cronjob datei ?

      Kommentar


      • #4
        der fehler bei dir ist, dass dir die grundlagen fehlen. Guck dir auf schattenbaum an, wie man die abfrage vernünftig auswertet.

        Stichwort Schleife.

        Versuch deinen code mal sinnvoll nachzuvollziehen.

        BTW:

        was soll das hier:
        wenn Feld = 0 , dann lösche session variable

        und das hier:
        { session_destroy ("test");

        Kommentar


        • #5
          Re: Session Problem

          Original geschrieben von launebaer

          er löscht die session variable nicht ! Weiss wer warum ?
          Ja, php.net weiß es -> -> http://www.php.net/manual/en/functio...on-destroy.php lese dazu auch die User Contributed Notes

          Kommentar


          • #6
            Allein der Begriff Session-Variable ist schon absolut fehl am Platze.

            Kommentar


            • #7
              Original geschrieben von TobiaZ
              Allein der Begriff Session-Variable ist schon absolut fehl am Platze.
              Ähm... wie nennst du sie denn

              Kommentar


              • #8
                ok , dann muss ich weiter suchen ! Dienen sollte das ganze dazu ;

                wenn ich einen button ganz schnell hintereinander drücke , macht er auch mehrfach die eintragung in die db !



                Das wollt ich eben verhindern !



                Danke für die Antworten


                mfg launebaer

                Kommentar


                • #9
                  wenn ich einen button ganz schnell hintereinander drücke , macht er auch mehrfach die eintragung in die db !
                  Dann solltest du DAS unterbinden. und nicht im nachhinein irgendwas löschen.

                  @asp: weiß gar nicht wirklich, was er vor hat.

                  Kommentar


                  • #10
                    ich glaube wen ich mich hier falsch ausdrücke ist das auch klar , da ich kein Profi bin wie du " TobiaZ "

                    Als Anfänger kann es schon mal passieren das man Wörter benutzt die falsch am platze sind !



                    Wie ich das klicken unterbinde weiss ich ! Es funktioniert eben nur nicht wenn mann " SEHR " schnell den Button drückt ( dann führt er die Aktion so oft aus wie ich drücke ) man muss eben nur schnell genug sein


                    ich hatte es so das beim drücken ein Feld in der DB aud 1 gesetzt wird und der Button erst wieder erscheint wenn die 1 eine 0 geworden ist !

                    Das wiederum klappt auch , wenn man nur einmal klickt !



                    so wirklich helfen mir die Antworten daher nicht !

                    Aber nochmal Danke das ihr Anworten tut !

                    Mfg launebaer

                    Kommentar


                    • #11
                      Wie ich das klicken unterbinde weiss ich ! Es funktioniert eben nur nicht wenn mann " SEHR " schnell den Button drückt ( dann führt er die Aktion so oft aus wie ich drücke ) man muss eben nur schnell genug sein
                      also da müsste man schneller sein, als mysql, und das ist schlichtweg unmöglich, da die befehle nacheinander abgearbeitet werden. musst also noch an deinem db-layout arbeiten.

                      Lass das ganze session-gedöns mal weg und stell das feld user-id (oder wie immer es heißt) ZUSAMMEN mit dem tick-feld (da wo 0/1 drin steht) auf unique.

                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ
                        Lass das ganze session-gedöns mal weg und stell das feld user-id (oder wie immer es heißt) ZUSAMMEN mit dem tick-feld (da wo 0/1 drin steht) auf unique.
                        Was soll das nützen? Ich sehe keinen einzigen INSERT befehl

                        @ersteller
                        Aber was mir einfällt... setze doch einfach der tabelle einen timestamp hinzu und stelle eine WHERE klausel bedingung, welches die aktuelle zeit größer sein muss, als die der gespeicherten DB-zeit.. natürlich in verbindung von ID

                        könnte so aussehen:

                        PHP-Code:
                         $updateABC "

                        UPDATE `"
                        .$tab1."` 

                        SET `BauenR` = `BauenR` + '"
                        .$Mine.",
                                last_time=DATE_ADD(NOW(), INTERVAL 4 SECOND) 

                        WHERE ID ='"
                        .$_SESSION['user_id']."'
                             AND last_time < NOW()"

                        Zuletzt geändert von xManUx; 14.12.2004, 23:07.

                        Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                        sondern mit den Augen das Manual zu lesen.

                        Kommentar


                        • #13
                          wo erwähnte ich insert? Falls ichs getan habe, dann mach n Update draus. ist in dem fall ja egal.

                          Kommentar


                          • #14
                            Original geschrieben von TobiaZ
                            wo erwähnte ich insert? Falls ichs getan habe, dann mach n Update draus. ist in dem fall ja egal.
                            Kann auch sein, dass ich mal wieder durchblicke. Aber IMHO denke ich, dass das Unique nicht wirklich sein Problem behebt.

                            Wie ich es jetzt von Dir verstanden habe:

                            Er soll sein Tick-Feld auf Unique setzen? Aber das würde ja bedeuten...
                            Oder ist es im MySQL möglich, das Unique so zu setzen, dass nicht eine Spalte das Unikat ist, sondern die Kombination aus mehreren Spalten alles zusammen ein Unikat bilden?

                            Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                            sondern mit den Augen das Manual zu lesen.

                            Kommentar


                            • #15
                              Oder ist es im MySQL möglich, das Unique so zu setzen, dass nicht eine Spalte das Unikat ist, sondern die Kombination aus mehreren Spalten alles zusammen ein Unikat bilden?
                              hehe
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X