Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Submit Button killt meine Session

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

  • [Erledigt] Submit Button killt meine Session

    Hallo,

    folgendes:

    Ich habe eine eingeloggte Session, und möchte darüber eine Änderung in Mysql vornehmen sobald der submitbutton gedrückt wird:

    PHP-Code:
    mysql_query("UPDATE blabla SET bla='blablub' WHERE UID=\'%s\' AND PW=\'%s\'"); 
    nun ist dort folgendes problem:

    sobald ich den submitbutton drücke, haut er mich aus der session raus, obwohl auf der folgeseite exakt der selbe code wie in der anfangsseite drin steht (komplette eingeloggte session).

    kann es am form liegen?

    PHP-Code:
    <form action='voting.php' method='post'>
    <
    input type='Submit' value='VOTE'/>
    </
    form


  • #2
    Zitat von OrangeStripes Beitrag anzeigen
    kann es am form liegen?
    Nein.

    Alles weitere würde auf vermutungen basieren weil es aus dem bisschen Code nicht ersichtlich was da in deinen Scripts genau passiert.

    Kommentar


    • #3
      Zitat von OrangeStripes Beitrag anzeigen
      kann es am form liegen?
      Jein.

      Wenn die Session nicht wieder aufgenommen werden kann, weil zB.
      Code:
      session.use_cookies =	Off
      session.use_only_cookies =	Off
      eingestellt ist, mußt Du das entweder korrigieren (beide Variable auf On setzen) oder im Script dafür sorgen, daß der Client session_name() und session_id() per GET oder POST mitschickt.

      Letzteres bezeichnet man auf Denglish als Fallback. PHP bietet dafür nach dem session_start() die Konstante SID an, die Du bei GET verwenden kannst.

      Du könntest auch session.use_trans_sid auf 1 setzen, hast dann aber diverse Probleme bei Javascript u/o bei header('Location: ').

      Falls Du Windows verwendest: ein beliebter Fehler ist da ein fehlender oder falscher session.save_path. PHP darf/kann dann das session file nicht schreiben, weil der Pfad falsch ist oder windows was dagegen hat, wenn sich PHP dort verewigen möchte.

      Kommentar


      • #4
        Zeig uns doch mal den relevanten Code für die Session.
        Kaum macht man's richtig, schon geht's

        Kommentar


        • #5
          Crossposting http://www.php-resource.de/forum/php...e-session.html
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #6
            also... es soll ein mysql basiertes votingscript werden, aber wie gesagt, er haut mich immer aus meiner laufenden session. das erkenn ich daran, dass wenn ich eingeloggt bin und den VOTE Button drücke, ich nichtmehr eingeloggt bin und das script nicht weiter ausgeführt wird, da ich ja nicht online bin.


            PHP-Code:
            <?php

                     session_start
            ();
                     
            session_regenerate_id(TRUE);
                  
            // login
                     
            error_reporting(0);     
                  if (isset(
            $_POST['UID']) && isset($_POST['PW']) &&
                     
            $_POST['UID'] != '' && $_POST['PW'] != '') {
                     
            $db mysqli_connect('localhost''root''''boss');
                     
            $sql sprintf(
                     
            'SELECT * FROM spielunken WHERE UID=\'%s\' AND PW=\'%s\'',
                     
            mysqli_real_escape_string($db$_POST['UID']), 
                     
            mysqli_real_escape_string($db$_POST['PW']));
                     
            $ergebnis mysqli_query($db$sql);
                  if (
            mysqli_num_rows($ergebnis) > 0) {    
               while (
            $Groups $ergebnis->fetch_object()) {
                     
            $Gruppe $Groups->Gruppe;}}
                  if (
            $Gruppe == 'member')  {
                     
            $_SESSION['member'] = true;}
              elseif (
            $Gruppe == 'dj') {
                     
            $_SESSION['dj'] = true;}
              elseif (
            $Gruppe == 'artist') {
                     
            $_SESSION['artist'] = true;}}
                  if (
            $_SESSION["member"] == true) {
                echo 
            '<p class="Welcome">Hello! you are logged 
                     as <strong>member</strong>... 
                     <a href="os-config-logout.php.php" style="color: #FFF;">logout
                     </a></p>'
            ;} 
              elseif (
            $_SESSION["dj"] == true) {
                echo 
            '<p class="Welcome">Hello! you are logged as <strong>DJ</strong>... 
                     <a href="os-config-logout.php" style="color: #FFF;">logout</a></p>'
            ;}
              elseif (
            $_SESSION["artist"] == true) {
                echo 
            '<p class="Welcome">Hello! you are 
                     logged as <strong>artist</strong>... 
                     <a href="os-config-logout.php" style="color: #FFF;">logout</a></p>'
            ;}
                else { 
                   
            ?>
            <form action="os-login.php" method="post" >
                     <input type="text" size="22" maxlength="26"
                     name="UID" class="inputformat" value="Username"/>
                     <input type="password" size="16" maxlength="50"
                     name="PW" class="inputformat" value="Password"/>
                     <input type="submit" value="LOGIN" />
                     register as  
                     <a href="os-registration-member.php" 
                     style="color: #FFF;">MEMBER</a>
                     or apply as a <a href="os-registration-dj.php" 
                     style="color: #FFF;">DJ</a>
                     </form>
            <?php 
                  
            ?>
                 
            <?php 
                  
            // Votebutton
                  
            if (mysqli_num_rows($ergebnis) > 0) {    
               while (
            $entry $ergebnis->fetch_object()) {
                     
            $remix $entry->contest1;}}
                  if (
            $remix == 'wagsville'){
                     
            $REMIXER['wagsville'] = true;}
              elseif (
            $remix == 'reed'){
                     
            $REMIXER['reed'] = true;}
                else {
                 
            ?>
               <form action='voting.php' method='post'>
                     <input type='Submit' value='VOTE'/></form>
            <?php }
                  if (
            $REMIXER["wagsville"] == true){
                echo 
            'you already have voted';}
              elseif (
            $REMIXER["reed"] == true) {
                echo 
            'you already have voted';}
                else {
            $result mysql_query("UPDATE spielunken SET contest1 = 'wagsville'
                     WHERE UID=\'%s\' AND PW=\'%s\'"
            );}
                 
            ?>
            sry fürs crossposting, wollte eigentlich heut nacht noch fertig werden, aber kam keine antwort.

            Kommentar


            • #7
              Zum Thema Sessions gibt es hier einen WIKI-Artikel.
              Kaum macht man's richtig, schon geht's

              Kommentar


              • #8
                inwiefern soll mir das sessionwiki helfen?

                welcher punkt spielgelt mein problem wieder?

                Kommentar


                • #9
                  Na ja, offensichtlich sind die beiden Befehle
                  PHP-Code:
                  session_start();
                  session_regenerate_id(); 
                  nicht ausreichend. Vermutlich musst per "ini_set" weitere Einstellungen vornehmen. Daher der Hinweis auf den WIKI-Artikel...
                  Kaum macht man's richtig, schon geht's

                  Kommentar


                  • #10
                    das script läuft auf allen seiten einwandfrei, nur nicht wenn ich den button drücke. wenn ich in der session eingeloggt bin und auf voting.php gehe, dann bin ich noch eingeloggt, wenn ich dies aber über den button mache, werde ich gekickt.

                    Kommentar


                    • #11
                      okay ich hab mal

                      PHP-Code:
                      error_reporting(-1); 
                      ini_set('display_errors'TRUE); 
                      gemacht, und siehe da, ein monsterfehlercode^^

                      Code:
                      Notice: Undefined variable: ergebnis in C:\xampp\htdocs\sites\config-voting1.php on line 3
                      
                      Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\sites\config-voting1.php on line 3
                      
                      Notice: Undefined variable: remix in C:\xampp\htdocs\sites\config-voting1.php on line 6
                      
                      Notice: Undefined variable: remix in C:\xampp\htdocs\sites\config-voting1.php on line 8
                      
                      Notice: Undefined variable: REMIXER in C:\xampp\htdocs\sites\config-voting1.php on line 15
                      
                      Notice: Undefined variable: REMIXER in C:\xampp\htdocs\sites\config-voting1.php on line 17
                      jetzt meine frage... wie kommt es das er $ergebnis nicht findet?

                      wäre es sinnvoll die variable ergebnis in der session zu speichern?

                      als

                      PHP-Code:
                      $_SESSION['ergebnis'] = $ergebnis

                      Kommentar


                      • #12
                        Zitat von OrangeStripes Beitrag anzeigen
                        das script läuft auf allen seiten einwandfrei,
                        Offenbar nicht:
                        nur nicht wenn ich den button drücke.
                        Es liegt nicht am Knopf sondern am Script.

                        Wat is nu mit Deiner session config? Kommt da noch ne Info oder soll ich dieses und Deine nächsten Themen meiden, weil man Dir alles erst mühsam aus den Zähnen ziehen muß?

                        Kommentar


                        • #13
                          das ist meine aktuelle config. ich hoffe das gibt mehr input

                          meine website liegt im ordner C:\xampp\htdocs

                          Code:
                          Session Support 	enabled
                          Registered save handlers 	files user sqlite
                          Registered serializer handlers 	php php_binary wddx
                          
                          session.auto_start	Off	Off
                          session.bug_compat_42	On	On
                          session.bug_compat_warn	On	On
                          session.cache_expire	180	180
                          session.cache_limiter	nocache	nocache
                          session.cookie_domain	no value	no value
                          session.cookie_httponly	Off	Off
                          session.cookie_lifetime	0	0
                          session.cookie_path	/	/
                          session.cookie_secure	Off	Off
                          session.entropy_file	no value	no value
                          session.entropy_length	0	0
                          session.gc_divisor	100	100
                          session.gc_maxlifetime	1440	1440
                          session.gc_probability	1	1
                          session.hash_bits_per_character	5	5
                          session.hash_function	0	0
                          session.name	PHPSESSID	PHPSESSID
                          session.referer_check	no value	no value
                          session.save_handler	files	files
                          session.save_path	C:\xampp\tmp	C:\xampp\tmp
                          session.serialize_handler	php	php
                          session.use_cookies	On	On
                          session.use_only_cookies	Off	Off
                          session.use_trans_sid	0	0

                          Kommentar


                          • #14
                            Zitat von OrangeStripes Beitrag anzeigen
                            das ist meine aktuelle config. ich hoffe das gibt mehr input
                            Falsch:
                            Code:
                            session.use_cookies		On	On
                            session.use_only_cookies	Off	Off
                            session.use_trans_sid		0	0
                            Richtig wäre:
                            Code:
                            session.use_cookies	On	On
                            session.use_only_cookies	On	Off
                            session.use_trans_sid		0	0
                            Sonst kann die Session ausschließlich nur dann wieder aufgenommen werden, wenn der Client den Session Keks netterweise angenommen und auch beim nächsten Klick zurückschickt.

                            php.ini ändern und apachen neu starten:
                            Code:
                            session.use_only_cookies = On
                            Zur Sicherheit, ob die Session auch wirklich aufgenommen werden konnte, auf den Folgeseiten:
                            PHP-Code:
                            session_start();
                            if (empty(
                            $_COOKIE[session_name()])
                             die(
                            'Keks fehlt'); # oder n netterer Text 
                            Das Session Handling mit Keks ist wesentlich einfacher als ohne.

                            Auf der Startseite ist $_COOKIE ggf. noch leer, weil der Client da den Keks erst bekommt.

                            Kommentar


                            • #15
                              was passiert dann mit den leuten die kekse deaktiviert haben? können die dann das gleiche machen wie die leute die es aktiviert haben?

                              Kommentar

                              Lädt...
                              X