session vernünftig per post übergeben

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

  • session vernünftig per post übergeben

    ich suche eine vernünftige weise sessions per post zu übergeben da bin ich auf den post/getmischmasch gestossen den man wahrscheinlich nict verwenden sollte:
    PHP-Code:
    <form action="upload.php?".SIDmethod="post" enctype="multipart/form-data"
    dann noch über das mit den hidden feld:

    PHP-Code:
       <input type="hidden" namesession_name() valuesession_id()> 
    dann hab ich noch gelesen dass man session_id() und session_name () nicht in formularen verwenden sollte, wie gehts dann richtig???

  • #2
    Naja, also ob du jetzt GET oder POST benutzt bleibt dir überlassen...
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Re: session vernünftig per post übergeben

      entweder hast du in der php.ini trans_id an, dann brauchst du gar nichts an deinem Formular machen,

      wenn nicht, musst du die Session_id ggf. (d.h. wenn sie nicht per Cookie übergeben wird), in dein Formular einbasteln.
      Dafür gibt es z.B. die Konstante SID, deren Inhalt '' bei der Übertragung durch Cookies ist, bei einem Post-Formular ganz einfach
      PHP-Code:
      <form action="skript.php?<?php echo SID?> method="post">
      bei einem Get Formular, musst du dann wohl doch auf session_name und session_id zurückgreifen, aber das ist ja auch nicht weiter schlimm, denn bookmarken kann sich der User den Link dann nicht mit SID
      also
      PHP-Code:
      <form action="skript.php" method="get">
      <input
        type="hidden"
        name="<?php echo session_name(); ?>"
        value="<?php echo session_id(); ?>"
        />

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        ehrlich gesagt verstehe ich der Grund für "session per POST" überhaupt nicht.
        warum get das mit normalen session übergabe nicht?

        wenn du deine session daten an eine andere domane liefern möchtest, dann bringt dir session_id auch nichts, weil die sessiondaten sowieso auf einem anderem server liegen.
        Slava
        bituniverse.com

        Kommentar


        • #5
          Original geschrieben von Slava
          ehrlich gesagt verstehe ich der Grund für "session per POST" überhaupt nicht.
          warum get das mit normalen session übergabe nicht?
          session-ID per Post

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Original geschrieben von ghostgambler
            session-ID per Post
            ich habe noch nie gesehen, dass bei einer einstellung in PHP.INI
            session.use_coockies und session.use_trans_sid gleichzeitig abgeschaltet waren.
            sogar bei defaulteinstelung von php3 hat wenigstens eine von beiden Eigenschaften iengeschaltet gehabt.
            Also wenigstens aus diesem Grund, kann ich nicht ganz verstehen warum das nötig ist, sich über session_id zu kümern
            Slava
            bituniverse.com

            Kommentar


            • #7
              per POST scheint es jetzt zu funzen aber per get funzt es noch nicht

              das müsste eigentlich korrekt sein oder:
              PHP-Code:
              <a href="controlpanel.php?"<?php echo SID?> >Controlpanel</a>;

              Kommentar


              • #8
                PHP-Code:
                //das " gehört hinterdrann und ausserdem würde ichg noch ein strip_tags() einbauen, um die SID nicht einfach ungesehen einzubauen
                <a href="controlpanel.php?<?php echo strip_tags(SID); ?>">Controlpanel</a>;
                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  nö funtz auch nicht in der url wird nur controlpanel.php? angezeigt wenn ich draufklicke und sessionvariablen wie zB:$_SESSION['user'] sind auch nicht da.

                  Kommentar


                  • #10
                    Dann gib mal die relevanten Codestellen, wo du den Link zusammenbaust.

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      PHP-Code:
                      <?php
                      output_add_rewrite_var
                      (session_name(), session_id());
                      und keine Kopfschmerzen
                      Slava
                      bituniverse.com

                      Kommentar


                      • #12
                        @Slava: wie und wo muss ich die zeile einbinden, was macht sie??

                        bofh.php //die amin login überprüfung

                        PHP-Code:
                        <?php
                            
                        function logon($name$pass){
                                require (
                        "dbvars.php");
                                
                        $link mysql_connect($dbhost,$dbuser,$dbpass);
                                
                                if (!
                        $link) die("no database connection");
                                
                        $pass md5($pass);
                                if (
                        mysql_select_db("bofh"$link)){
                                
                        $query=mysql_query sprintf "SELECT * 
                          FROM bofh
                         WHERE name ='%s' AND pass ='%s'  " 
                        ,$name ,$pass));
                         
                        $result = @mysql_fetch_array($query) or die('<p align="center">data not found'.
                                 
                        '<br><a href="index.php">Zurück</a></p>');

                         if(
                        $pass == $result['pass']) {        
                                
                        $_SESSION['user']="bofh";}
                                } else die(
                        "dreck");
                                
                        }

                          if (isset(
                        $_POST['orly'], $_POST['owl']))
                                            {
                                    
                        logon(addslashes($_POST['orly']),
                                                  
                        addslashes($_POST['owl']));


                         if(
                        $_SESSION['user']=="bofh") {
                                        
                                        echo 
                        $_SESSION['user'];
                                        echo 
                        "<p>\n";
                                        echo 
                        "Willkommen im Adminbereich <br />\n";
                                        
                        // Die Session-ID nicht vergessen
                                        
                        echo "    <a href=\"bofh.php?section=admin&amp;".SID."\">Repeat</a>\n";
                                        echo 
                        "    <a href=\"bofh.php?section=admin&amp;action=logout&amp;".SID."\">Ausloggen</a>\n";
                                         
                        ?><a href="controlpanel.php?<?php echo strip_tags(SID); ?>">Controlpanel</a> <?php
                                        
                        echo "</p>\n";
                                        
                                    
                                    } else {
                                  
                            
                                             echo 
                        "<p>\n";
                                             echo 
                        "    Ungültiges Password.\n";
                                             echo 
                        "</p>\n";
                                    }
                        ?>

                        controlpanel.php //enthält derzeit nur debugmessages, seuftz

                        PHP-Code:
                        <?php

                         
                        echo $_SESSION;
                        echo  
                        $_SESSION['user'];
                         
                        ?>

                        Kommentar


                        • #13
                          direckt nach dem session_start().
                          und nimm alle SID anhänge aus dem formular und den links weg.
                          am bestens schaust du documentation an:
                          http://de2.php.net/manual/en/functio...ewrite-var.php
                          Slava
                          bituniverse.com

                          Kommentar


                          • #14
                            jetzt wird die session mitübergeben doch bei
                            PHP-Code:
                            echo  $_SESSION['user']; 
                            wird im controlpanel nix ausgegeben

                            Kommentar

                            Lädt...
                            X