Submit Button killt meine Session

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

  • 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
    Was ist für dich denn eine "komplett eingeloggte" session? Hast du session_start() auf allen beteiligten seiten aufgerufen? woher weißt du, dass die session nicht fortgeführt wird?
    This is what happens when an unstoppable force meets an immovable object.

    Kommentar


    • #3
      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();
            
      // 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\'"
      );}
           
      ?>
      Zuletzt geändert von OrangeStripes; 19.02.2012, 17:31.

      Kommentar


      • #4
        Dann übergebe die Session-Id im Form mit.

        PHP-Code:
        <input type="hidden" name="<?= session_name(); ?>" value="<?= session_id(); ?>" />

        Kommentar


        • #5
          Zitat von TriphunEM Beitrag anzeigen
          Dann übergebe die Session-Id im Form mit.

          PHP-Code:
          <input type="hidden" name="<?= session_name(); ?>" value="<?= session_id(); ?>" />
          session.use_trans_sid ??

          Nee..
          Besser den Bock beheben, als verschlimmbessern.
          Wir werden alle sterben

          Kommentar


          • #6
            so... ich konnte einige probleme beheben, aber das mit der sessionweiterleitung mit dem button noch nicht.

            PHP-Code:
               <?php error_reporting(-1); 
                     
            ini_set('display_errors'TRUE); 
                  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);    
                     
            $_SESSION['ergebnis'] = $ergebnis;
                  if (
            mysqli_num_rows($_SESSION['ergebnis']) > 0) {    
               while (
            $entry $_SESSION['ergebnis']->fetch_object()) {
                     
            $remix $entry->contest1;}}
                  if (
            $remix == 'wagsville'){
                     
            $REMIXER['wagsville'] = true;}
              elseif (
            $remix == 'reed'){
                     
            $REMIXER['reed'] = true;}}
                else {
                  
            ?>
               <form action='<?php echo $_SERVER["PHP_SELF"]; ?>' 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\'"
            );}
                  
            ?>
            dazu kommt noch das problem das er irgendwie nicht mit mysql verbindet, da ich in der spalte contest1 den namen wagsville drinstehen habe, und er mir trotzdem den VOTE Button anzeigt.

            Kommentar


            • #7
              verschlimmbessern? Wenn du dein SessionId nirgendwo zwischenspeicherst (in Cookies z.b.), was bei dir wohl nicht der Fall ist, dann musst du deine SessionID in der Url oder eine Input übergeben - das ist völlig normal.

              Kommentar


              • #8
                er kickt mich trotzdem raus

                Kommentar


                • #9
                  Zitat von TriphunEM Beitrag anzeigen
                  verschlimmbessern? Wenn du dein SessionId nirgendwo zwischenspeicherst (in Cookies z.b.), was bei dir wohl nicht der Fall ist, dann musst du deine SessionID in der Url oder eine Input übergeben - das ist völlig normal.
                  Das kann PHP auch automatisch.
                  Nur müsste man vorher den Bock/Bug beheben/entfernen.
                  (bzw. wissen, was man da tut)
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Ja, und wenn er es nicht konfiguriert hat gehts nur so. Klar kann er sich das merken. Via Cookie (solange Cookies im Browser aktiviert sind) oder per DB (umständlich). Wenn es nicht um SEO geht, dann ist es das sichereste die Session in der URL zu übergeben.

                    Aber wenn wenn es so nicht geht, da ist es echt was daneben. Mal die PHP-Logs gecheckt?

                    Kommentar


                    • #11
                      oder per DB (umständlich)
                      Umständlich?
                      !UNMÖGLICH!

                      Wenn es nicht um SEO geht, dann ist es das sichereste die Session in der URL zu übergeben.
                      Dein Verständnis von Sicherheit und mein Verständnis von Sicherheit scheinen sich grundlegend zu unterscheiden.
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        In wiefern?

                        Mit "sicherste" meine ich das die Session-ID definitiv transportiert wird. Oder willst du mir was anderes sagen

                        Kommentar


                        • #13
                          Zitat von TriphunEM Beitrag anzeigen
                          In wiefern?
                          Unmöglich ist unmöglich, belege du mir, dass es per DB möglich ist.

                          Zitat von TriphunEM Beitrag anzeigen
                          Mit "sicherste" meine ich das die Session-ID definitiv transportiert wird. Oder willst du mir was anderes sagen
                          Zuverlässigkeit ==! Sicherheit

                          Aber auch die SID in URL Akzeptanz ist abschaltbar. Und ist auch auf vielen Systemen per default deaktiviert. Es werden stetig mehr.
                          Von "Zuverlässigkeit in der Funktion" also keine Spur.

                          Außerdem reißt man damit das Scheunentor der "versehentlichen Sessionübernahme" weit auf.
                          (falls es erlaubt ist)
                          Wir werden alle sterben

                          Kommentar


                          • #14
                            Du meinst also die Session-ID in der URL zu übergeben ist unsicherer als via Cookie?
                            Jawoll!

                            Das glaubst Du doch selbst nicht?
                            Doch wohl.


                            Wenn ein Benutzer sein Login nicht mit einem Ausloggen und dem dazugehörigen zerstören der Session vornimmt, ist das sein Problem.
                            Jaja...
                            Die User und ihre Neigung sich auszuloggen....


                            Das ist aber völlig unabhängig in welcher Art die Session weitergegeben wird.
                            Ja!

                            Und eine Session-ID ist immer nur Clientgültig.
                            Hä?

                            Also wenn ich dir einen Link schicke wo meine Session-ID drin steht und du den Link öffnest, ist meine Sitzung für dich trotzdem gestorben.
                            Blanker Unsinn!
                            Es sei denn, SUHOSIN ist aktiv

                            Und das mit den Datenbanken ist auch weiterhin Unsinn.
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              Zu deiner Datenbank, übrigens ich nutze es deas selber nicht, weil ich es auch schwachsinn finde, aber es geht -> Chris Shiflett ▪ Storing Sessions in a Database

                              Kommentar

                              Lädt...
                              X