PHP MVC Sessions

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

  • #16
    Du hast ja den Text, der die fehlerhafte Stelle ausgaben soll, auskommentiert. So sieht man natürlich nix.

    Kommentar


    • #17
      Zitat von h3ll Beitrag anzeigen
      Du hast ja den Text, der die fehlerhafte Stelle ausgaben soll, auskommentiert. So sieht man natürlich nix.
      korrekt, wenn der teil nämlich nicht auskommentiert ist, verschwindet der button um den text überhaupt abzuschicken.

      Ich weiß es ist etwas viel verlangt. Ich würde den gesamten code gerne auf Gitlab stellen. Würdest du ihn dir vl ansehen?

      Kommentar


      • #18
        Du sollst dir ja auch den ausgegebenen HTML-Code anschauen und nicht irgendwelche Buttons.

        Wenn du möchtest, dass jemand anders die Arbeit für dich macht, musst du ein Jobangebot erstellen. Ich wäre aber nicht interessiert, da ich schon einen Vollzeitjob als Programmierer habe und Programmierforen als meine Freizeitbeschäftigung sehe.

        Kommentar


        • #19
          wie soll ich mir die Ausgabe ansehen, wenn der button auf den ich klicken muss, damit das Formular per POST übersendet wird nicht angezeigt wird ?

          ich mach das nur just for fun und zur übung.

          und BTW:
          Einen Mitarbeiter der Firmencodes postet wird wohl nicht lange seinen Job haben. Also ich würde ihn sofort kündigen und wenn möglich sogar entlassen.

          Kommentar


          • #20
            Zitat von jenny258 Beitrag anzeigen
            wie soll ich mir die Ausgabe ansehen, wenn der button auf den ich klicken muss, damit das Formular per POST übersendet wird nicht angezeigt wird ?
            Unter Google Chrome und Firefox: Rechtsklick und "View Page Source".

            Zitat von jenny258 Beitrag anzeigen
            ich mach das nur just for fun und zur übung.

            und BTW:
            Einen Mitarbeiter der Firmencodes postet wird wohl nicht lange seinen Job haben. Also ich würde ihn sofort kündigen und wenn möglich sogar entlassen.
            Es ist egal wofür du den Code machst. Das spielt überhaupt keine Rolle.

            Kommentar


            • #21
              da bekomme ich fehler bei meinen rollen. ich seh mir das mal.

              Es ist ärgerlich, dass ich da nicht selber drauf gekommen bin.

              Danke dir

              Kommentar


              • #22
                an den Rollen lag es nicht

                Jetzt bekomme ich wieder einen neuen Fehler und es wird überhaut kein Token mehr erzeugt:

                string(17) "sess CONTROLLER: " bool(false) string(10) "POST TOKEN" string(233) "Header bereits gesendet in A:\Meine Programme\Ampps\www\mvcJennyNeu\app\views\layouts\navbar.php in Zeile 47 Redirect nicht moeglich, klicken Sie daher statt dessen

                in der Navbar ist nur der Link:

                <li class="nav-item">
                <a class="nav-link" href="<?php echo URLROOT; ?>/users/create">Registrieren</a>
                </li>


                private static function sessionStart(){

                /* if( empty(session_id()) && !headers_sent()){
                session_start();
                } */

                if( session_status() !== PHP_SESSION_ACTIVE ){
                if (!headers_sent($filename, $linenum)) {
                session_start();

                // Wahrscheinlich wollen Sie hier eine Fehlermeldung auslösen
                }
                else {

                echo "Header bereits gesendet in $filename in Zeile $linenum\n" .
                "Redirect nicht moeglich, klicken Sie daher statt dessen <a ";

                //exit;
                }
                }
                }



                Ich werde wohl wieder mit der Session Helper Funktion arbeiten. Dort werden mir zumindest die tokens erzeugt.

                umbauen kann ich es ja immer wieder zum testen.

                danke nochmal für deine Hilfe

                Kommentar


                • #23
                  Seit #3 scheint sich der Code ja doch schon wieder verändert zu haben, was es unübersichtlich und nicht einfach nachvollziehbar macht.

                  Grundsätzlich sei gesagt, dass ein headers already sent bereits durch ein einfaches Leerzeichen oder eine Leerzeile geworfen werden kann.

                  Beispiel, richtig:
                  PHP-Code:
                  <?php
                  session_start
                  ();
                  Beispiel, (kann Fehler werfen!):
                  PHP-Code:

                  <?php
                  session_start
                  ();
                  Bereits eine Leerzeile vor dem Öffnenden PHP-Tag kann zu diesem Fehler führen.
                  https://www.php-rocks.de/thema/65-ca...eady-sent.html

                  Du müsstest Deine Codes am besten auch mal in PHP-Tags hier im Editor packen, dann sind die besser zu lesen.

                  Kommentar


                  • #24
                    Zitat von ArneDrews Beitrag anzeigen
                    Seit #3 scheint sich der Code ja doch schon wieder verändert zu haben, was es unübersichtlich und nicht einfach nachvollziehbar macht.

                    Grundsätzlich sei gesagt, dass ein headers already sent bereits durch ein einfaches Leerzeichen oder eine Leerzeile geworfen werden kann.

                    Beispiel, richtig:
                    PHP-Code:
                    <?php
                    session_start
                    ();
                    Beispiel, (kann Fehler werfen!):
                    PHP-Code:

                    <?php
                    session_start
                    ();
                    Bereits eine Leerzeile vor dem Öffnenden PHP-Tag kann zu diesem Fehler führen.
                    https://www.php-rocks.de/thema/65-ca...eady-sent.html

                    Du müsstest Deine Codes am besten auch mal in PHP-Tags hier im Editor packen, dann sind die besser zu lesen.
                    oh stimmt, ich werde das in Zukunft in Tags packen. Vielen Dank.

                    Bei mir ist es leider wohl ein anderes Problem. Es befindet sich kein Leerzeichen. Leider.

                    session_start() befindet sich in der Session Klasse in einer eigenen Methode.
                    Dieselbe Klasse funktioniert bei einem einfachen externen LoginScript problemlos. Das Problem kann demnach "fast" nicht an der Klasse ansich liegen.

                    Alles was ich bisher versucht habe, hat mir nicht weitergeholfen. Bekomme immer wieder den selben Fehler.

                    Kommentar


                    • #25
                      session_start() befindet sich in der Session Klasse in einer eigenen Methode.
                      Dieselbe Klasse funktioniert bei einem einfachen externen LoginScript problemlos. Das Problem kann demnach "fast" nicht an der Klasse ansich liegen.
                      Es hat doch auch niemand gesagt, dass es unmittelbar in der Nähe von session_start() sein muss!
                      Bevor - ob lange oder kurz davor spielt keine Rolle - session_start() loslegen möchte, ist bereits eine Ausgabe an den Browser gesendet worden! Das Leerzeichen war nur ein Beispiel, es kann alles andere mögliche sein.
                      Du wirst Deine Scripte von Beginn an bis zum session_start() prüfen müssen. Irgendwo findet dort eine "Ausgabe" statt.

                      Kommentar


                      • #26
                        session_start() wird bis dato bei mir nur an zwei stellen genutzt. Zur Überprüfung der Tokens.

                        Die erste Ausgabe findet statt, wenn man auf den Link klickt der den View mit dem Formular lädt.
                        Header bereits gesendet in A:\Meine Programme\Ampps\www\mvcJennyNeu\app\views\layouts\navbar.php

                        Allerdings ist hier nirgendwo ein Leerzeichen Problem. Habe das schon mehrmals gecheckt.

                        Kommentar


                        • #27
                          Ich vermute dass du die Navigation ausgibst, bevor du die Session startest. Vor dem Start der Session darf aber keinerlei Ausgabe stattfinden.

                          Kommentar


                          • #28
                            Zitat von h3ll Beitrag anzeigen
                            Ich vermute dass du die Navigation ausgibst, bevor du die Session startest. Vor dem Start der Session darf aber keinerlei Ausgabe stattfinden.
                            es funktioniert jetzt tatsächlich wenn ich den token bereits vor der nav erzeuge.

                            Was mich jetzt aber doch noch interessieren würde. Wie könnte ich es bewerkstelligen, dass ich die session und den token direkt vom hidden field aus erzeugen kann.

                            Jetzt mache ich es so:

                            PHP-Code:
                            <input type="hidden" name="_token" value="<?php echo $sess;?>">
                            sauberer wäre der Code aber so:

                            PHP-Code:
                            <input type="hidden" name="_token" value="<?php echo Session::init()->setCsrf();?>">
                            Hast du da einen Tipp für mich oder geht es nur so wie ich es jetzt gemacht habe?

                            Kommentar


                            • #29
                              In der HTML-Ausgabe hat so eine Logik wie Session-Aufbau oder Token-Generierung usw. nichts verloren. Das ist das Gegenteil von sauberer Code, da das EVA-Prinzip nicht eingehalten wird.

                              Kommentar


                              • #30
                                Wir haben im Kurs gelernt, dass so eine Formularübertragung zumindest ein wenig sicherer wird ?

                                Ich hatte mein Projekt mit Laravel gemacht und auch dort nutze ich CSRF für die Übertragung von Formulardaten.

                                Kommentar

                                Lädt...
                                X