if + session verändert POST zu GET bei Formularen

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

  • if + session verändert POST zu GET bei Formularen

    PHP-Code:
    Formular
    <form ...  method="post"><input type="hidden" ... SESSIONID>...<img src="bild.php"...></form>

    ------------------------------------------------------
    1. Version


    if(isset($_POST['senden'])) {
        
    $name $_POST['name'];
    ....
    }

    URL nach abschicken des Formulars
    http://www.mi-ernst.de/gaestebuch.php5?sh=3&page=0&ba=5

    --------------------------------------------------------
    2. Version

    if(isset($_POST['senden'])) {
        if(
    $_SESSION[SECURITY_CODE] == md5($_POST['sicherheit'])){
            
    $name $_POST['name'];
    ...
    }
    }

    URL nach abschicken des Formulars:
    http://www.mi-ernst.de/gaestebuch.php5?
    sh=3&page=0&ba=5&miernst=150acdff356475cf76eb4a55f98e114b&
    name=&email=&text=Eintrag%204&sicherheit=&senden=senden 
    Im Formular steckt ein Bild mit dynamischen Sicherheitscode. Die Session realisier ich über URL. In der Bilddatei speicher ich den Sicherheitscode in der Session als md5. Wieso finde ich jetzt jedoch wenn ich die $_SESSION Variable abfragen will das ganze Formular im GET Bereich. Mach ich die if nicht, kommt's normal in der POST Variablen.

    Session wird über URL realisiert!

    MfG Markus
    Zuletzt geändert von markusschmitt; 16.09.2004, 12:12.

  • #2
    Wieso finde ich jetzt jedoch wenn ich die $_SESSION Variable abfragen will das ganze Formular im GET Bereich. Mach ich die if nicht, kommt's normal in der POST Variablen.
    bitte was???

    Kommentar


    • #3
      kann dir nicht folgen
      welche If meinst du?
      wie sieht dein $_SESSION Array aus?
      was sagt phpinfo(); nach dem Absenden des Formulares?

      Ich brauche ja nicht zu erwähnen wenn du die SessionID als Link übergibst kann ich diese bookmarken und sogar jemand anderen weiterschicken.....
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        Original geschrieben von Payne_of_Death
        Ich brauche ja nicht zu erwähnen wenn du die SessionID als Link übergibst kann ich diese bookmarken und sogar jemand anderen weiterschicken.....
        Was nützt dir das, wenn die Session abgelaufen ist

        Kommentar


        • #5
          Also ich schicke obiges Formular ab.

          Wenn ich
          if($_SESSION... einbaue bekomm ich alle Formulardaten über GET (doof für längeren Text)

          Baue ich diese IF nicht ein bekomm ich die Formulardaten mit POST kann aber den Sicherheitscode in der Session nicht mit dem übergebenen Code in der POST vergleichen.

          Warum?

          Das mit der ?SESSIONID will ich über mod_rewrite lösen. (Verhindert natürlich die Angabe der ID in den Links nicht). Die Session ist auch bloss für die Statistik und kein Sicherheitsbereich.

          MfG Markus

          Kommentar


          • #6
            PHP-Code:

            //meinst du das hier?
            if(isset($_POST['senden'])) {
                if(
            $_SESSION[SECURITY_CODE] == md5($_POST['sicherheit'])){
                    
            $name $_POST['name'];
            ...
            }

            //möchtest du sagen das nach der zweiten if bedingung $_POST['name'] 
            //nicht mehr gültig ist und name nur noch mit $_GET[]
             
            angesprochen werden kann
            mfg
            marc75

            <Platz für anderes>

            Kommentar


            • #7
              Was nützt dir das, wenn die Session abgelaufen ist
              und vorallem ist das absolut keine neue erkenntnis. wer sich nicht ausloggt und id weiter gibt, ist selber schuld.
              OffTopic:
              Aber poste den kommentar am besten in jeden zweiten Thread im Forum


              Wenn ich
              if($_SESSION... einbaue bekomm ich alle Formulardaten über GET (doof für längeren Text)
              wieso sollte das so sein? das eine hat mit dem anderen gar nichts zu tun.

              Kommentar


              • #8
                ich würde sagen: im 2. Fall hast du eine Form OHNE Angabe von method, daher ...

                Prüfe mal, oder stellt die Seite online

                Kommentar


                • #9
                  möchtest du sagen das nach der zweiten if bedingung $_POST['name']
                  nicht mehr gültig ist und name nur noch mit $_GET[]
                  angesprochen werden kann?
                  Haargenau so ist es. Ich peil net Warum. Wieso wird aus POST, GET nur weil ich $_SESSION abfrag?

                  MfG Markus

                  Kommentar


                  • #10
                    Ist online. Mit BUG
                    www.mi-ernst.de/gaestebuch.php5

                    MfG Markus

                    Kommentar


                    • #11
                      Sicher dass Du da nicht irgendwo ein "Header('Location: ...')" drin hast?
                      Weil erst macht er ein POST und springt dann zur anderen Seite mit GET
                      [Test] MySQL cli Emulator

                      Kommentar


                      • #12
                        Danke für den Tip, schau gerade den Code durch.

                        MfG Markus

                        Kommentar


                        • #13
                          Ne dürft nicht sein.

                          Hier mal der Code
                          PHP-Code:
                          <?php
                          require_once($_SERVER['DOCUMENT_ROOT']."/include.php5");
                          require_once(
                          $_SERVER['DOCUMENT_ROOT']."/klassen/class_browsemenu.inc.php5");
                          require_once(
                          $_SERVER['DOCUMENT_ROOT']."/klassen/class_temp.inc.php5");


                          if(isset(
                          $_POST['senden'])) {
                              if(
                          $_SESSION[SECURITY_CODE] == md5($_POST['sicherheit'])) {
                                  
                          $name $_POST['name'];
                                  
                          $email $_POST['email'];
                                  
                          $text $_POST['text'];
                                  
                          $now strtotime("now");
                                  if(
                          strlen($text) != 0) {
                                      
                          $sql "INSERT INTO ".TABLE_PREFIX."geaestebuch (CreateTime, Name, email, Text)
                          VALUES('"
                          .$now."', '".$name."', '".$email."', '".$text."')";
                                      
                          $mysql->insert($sql);
                                      
                          $mysql->disconnect();
                                      
                          header("Location:gaestebuch.php5"); // hier werden doch
                          // alle POST Variablen gekillt oder etwa nicht? (schutz vor aktuallisierung)
                                      
                          exit;
                                  } 
                              }
                          }
                          $temp = new Template($_SERVER['DOCUMENT_ROOT'].'/templates/layout.tpl');
                          $sql "SELECT * FROM ".TABLE_PREFIX."geaestebuch ORDER BY Id DESC";
                          $back $mysql->select($sql);
                          $count $size sizeof($back);
                          if(
                          $size != 0) {
                              
                          $browse = new BrowseMenu($back,NUMBER_OF_RECORDS,NUMBER_OF_PAGES);
                              
                          $browse->check('gaestebuch.php5');  //hier werden alle POST Variablen aufgegriffen und in GET umgewandelt.
                          // aber der Code steht doch weiter hinten und wird erst gar nicht ausgeführt da ich oben ja weg headere.
                              
                          $menu $browse->createMenue('gaestebuch.php5',
                          DESCRIPTION_OF_PREV,DESCRIPTION_OF_NEXT,DESCRIPTION_OF_START,DESCRIPTION_OF_END);
                          MfG Markus

                          Kommentar


                          • #14
                            such Dir mal nen Proxy Tool raus was die ganzen HTTP Header loggt und schaue es Dir da mal an.
                            Es wir gleich eine Location Header geschickt nach dem Post.
                            Und an dem Code Ausschnitt kann ich so nichts weiter erkennen. Kenne weder Deine Includes noch was da sonst so passiert.
                            [Test] MySQL cli Emulator

                            Kommentar


                            • #15
                              $browse->check('gaestebuch.php5'); //hier werden alle POST Variablen aufgegriffen und in GET umgewandelt.
                              was soll das bezwecken?

                              // aber der Code steht doch weiter hinten und wird erst gar nicht ausgeführt da ich oben ja weg headere.
                              Was du natürlich mehrfach überprüft hast?

                              Kommentar

                              Lädt...
                              X