Ankündigung

Einklappen
Keine Ankündigung bisher.

User Session - JavaScript funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • User Session - JavaScript funktioniert nicht

    Hallo zusammen,
    ich lerne aktuell PHP und jQuery und bin bei einem Login-Script auf zwei Probleme gestoßen (Hier beispielhaft zusammengefasst).

    1) Wenn ich aktuell das Passwort eingebe, lande ich auf der "Startseite" mit einem Beispiel-Button, der ein Alert auslösen soll.
    Allerdings funktioniert dieser Button erst, wenn ich die Seite nochmal neulade (vermutlich weil das jQuery Script die "zweite" Seite garnicht kennt? oder das die das Script anhält?).

    2) Aktuell lässt sich die Session ganz leicht austricksen, indem man ein zweites Loginscript baut, das die gleiche Sessionvariable (sagt man das so?) erzeugt, aber ein anderes Passwort fordert. Gibt es einen einfachen Weg, die Session zu überprüfen?

    Vielen Dank für eure Antworten schonmal.
    Anbei das Script:

    PHP-Code:
    <?php
        session_start
    ();
    ?>
    <!DOCTYPE html>
    <html lang="de">
    <head>
        <title>Test Login</title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
        <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
        <script type="text/javascript">
            $(function(){
                $('#button').on('click', function(){
                    alert('hallo');
                })
            });
        </script>
    </head>
    <body>
        <?php
        
    if(!isset($_SESSION['userid'])){
            if (isset(
    $_GET['login'])){
                if (
    $_GET['login'] == '1'){
                    
    $password 'Test';
                        
    $postpassword $_POST['password'];
                    if (
    $password == $postpassword) {
                        
    $_SESSION['userid'] = 'usersession';
                    } else{
                        
    $errorMessage "Passwort ungültig<br>";
                        echo 
    $errorMessage;
                    }
                }
            }
        }
        if(!isset(
    $_SESSION['userid'])) {
            echo 
    '<form action="?login=1" method="post">
                    <label>
                        Passwort
                        <input type="password" name="password">
                    </label>
                    <label>
                        <input type="submit" value="Abschicken">
                    </label>
                </form></body></html>'
    ;
            die(
    '');
        }
    ?>

    <div data-role="page">
        <div role="main" class="ui-content">
            <input type="button" name="" value="Alert" id="button">
        </div>
    </div>
    </body>
    </html>

  • #2
    Erstelle doch erst mal ein Login ohne Javascript unter Berücksichtigung des E.V.A.-Prinzips.

    Kommentar


    • #3
      1) Wenn ich aktuell das Passwort eingebe, lande ich auf der "Startseite" mit einem Beispiel-Button, der ein Alert auslösen soll.
      Allerdings funktioniert dieser Button erst, wenn ich die Seite nochmal neulade (vermutlich weil das jQuery Script die "zweite" Seite garnicht kennt? oder das die das Script anhält?).
      Das liegt vermutlich an Ressourcen die noch fertig geladen werden müssen.

      2) Aktuell lässt sich die Session ganz leicht austricksen, indem man ein zweites Loginscript baut, das die gleiche Sessionvariable (sagt man das so?) erzeugt, aber ein anderes Passwort fordert. Gibt es einen einfachen Weg, die Session zu überprüfen?
      Ich hoffe der Personenkreis der auf den Webserver Dateizugriff hat, ist beschränkt. Dann musst du dir darum auch keine Gedanken machen.
      "Software is like Sex, it's best if it's free." - Linus Torvalds

      Kommentar


      • #4
        Zunächst einmal danke für eure Rückmeldungen. Das EVA-Prinzip ist mir bekannt - ich weiß, dass das hier Spaghetticode ist, aber mir gehts hier jedoch nur um die Logik.
        Was kann ich daran ändern, dass dem unteren div das JavaScript bekannt ist? Ich hatte an ein Reload oder so gedacht, bin jedoch bislang nicht fündig geworden.

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          Erstelle doch erst mal ein Login ohne Javascript unter Berücksichtigung des E.V.A.-Prinzips.
          Ich würde dir auch genau das empfehlen. Der Code oben ist grauenhaft strukturiert und verstößt gegen E-V-A. Mach das mal sauber, und wenn alles in PHP funktioniert, dann kannst du es ja noch mit JS "verfeinern".
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Wie gesagt, darum geht es überhaupt nicht. Ich möchte einfach nur wissen, wie ich das JavaScript zum Laufen kriege.

            Kommentar


            • #7
              Was kann ich daran ändern, dass dem unteren div das JavaScript bekannt ist?
              Gar nicht. HTML und Javascript laufen beim Client ab. Du hast hier keinerlei Kontrolle, alles kann verändert oder ausgeschaltet werden.

              Kommentar

              Lädt...
              X