Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlerhinweis

Einklappen

Neue Werbung 2019

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

  • Fehlerhinweis

    Hallo Leute,

    ich bin komplett neueinsteiger in PHP und habe über ein Tutorial versucht ein Login nachzubauen.
    Irgendwie funktioniert das ganze nicht richtig und bräcuhte ien bissen Support.
    Problem: Im Firefox wechselt das Script nach den 3s ohne das ich was eingegeben habe
    Und im Chrome funktioniert es bekomme aber folgenden Hinweis "Notice: Undefined index: page in C:\xampp\htdocs\Loginscript\index.php on line 8".
    Ich hoffe mir kann jemand erklähren wo der Fehler ist.

    Gruß CX

    Mein Code schaut folgendermaßen aus:

    index.php
    PHP-Code:
    <?php
    session_start
    (); 
    $verhalten 0;

    if(!isset(
    $_SESSION["username"]) and !isset($_GET["page"])) {
    $verhalten 0;
    }
    if(
    $_GET["page"] == "log") {

    $user $_POST["user"];                
    $passwort $_POST["passwort"];

    if(
    $user == "gott" and $passwort == "toll") {  
    $_SESSION["username"] = $user;
    $verhalten 1;
    } else {
    $verhalten 2;
    }
    }
    ?>

    <html>
        <head>
            <title>Login</title>
            <meta charset="UTF-8" />
            <?php
            
    if($verhalten == 1) {
            
    ?>
                <meta http-equiv="refresh" content="3; URL=seite2.php" />
            <?php
            
    }
            
    ?>
        </head>
        <body>
            <?php
                
    if($verhalten == 0) {
            
    ?>
            Bitte logge dich ein:<br />
            <form method="post" action="index.php?page=log">
                    User:<input type="text" name="user" /><br />
                Passwort:<input type="password" name="passwort" /><br />
                         <input type="submit" value="Einloggen" />
            </form>
            <?php
            
    }
            if(
    $verhalten == 1) {
            
    ?>
            Du hast dich richtig eingelogt und wirst nun weitergeleitet...
            <?php
            
    }
            if(
    $verhalten == 2) {
            
    ?>
            Du hast dich nicht richtig eingeloggt, <a href="index.php">zurück</a>.
            <?php
            
    }
            
    ?>
        </body>
    </html>
    l
    ogout.php
    PHP-Code:
    <?php

    session_start
    ();
    session_destroy();
    ?>
    <html>
        <body>
            <h3>Du bist nun ausgeloggt.</h3>
            
        </body>
    </html>
    seite2.php
    PHP-Code:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION["username"])) {
    ?>
    <html>
        <head>
            <title>Mein Bereich</title>
            <meta charset="UTF-8" />
        </head>
        <body>
            <h1>Hallo <?php echo $_SESSION["username"]; ?></h1>
            <a href="logout.php">Ausloggen</a>
        </body>
    </html>
    <?php
    } else {
    ?>
    Bitte erst einloggen, <a href="index.php">hier</a>.
    <?php
     
    }
     
    ?>

  • #2
    bitte reformatieren deinen code mithilfe von code tags:
    [php] oder [html]
    dann kann man ihn auch lesen.

    Kommentar


    • #3
      Das Script mit dem "Verhalten" kommt mir bekannt vor, sieh dich hier mal ein bisschen um, das Script wurde letztens erst behandelt.

      edit: nevermind, handelte sich um ein anderes Problem.
      <meta http-equiv="refresh" content="3; URL=seite2.php" />
      http://de.selfhtml.org/html/kopfdaten/meta.htm
      [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
      [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

      Kommentar


      • #4
        Hallo
        @moma
        Hatte eigentlich den Code in Tags gesetzt, warum das nicht gefunzt hat...??? weiß net. Aber werd mal drauf auchten

        @VPh
        Ja ich hab schon gesehen das das Thema login schon mal da war. aber irgendwie bringt mich das nicht weiter. Da gabs andere Probleme wenn ich das richtig gelesen habe.


        Na ich schau mal ob ich es irgendwie raus bekomm mit Hilfe des Debugging Leitfaden

        Gruß CX

        Kommentar


        • #5
          Zitat von CreatorX Beitrag anzeigen
          Hallo
          @moma
          Hatte eigentlich den Code in Tags gesetzt, warum das nicht gefunzt hat...??? weiß net. Aber werd mal drauf auchten

          @VPh
          Ja ich hab schon gesehen das das Thema login schon mal da war. aber irgendwie bringt mich das nicht weiter. Da gabs andere Probleme wenn ich das richtig gelesen habe.


          Na ich schau mal ob ich es irgendwie raus bekomm mit Hilfe des Debugging Leitfaden

          Gruß CX
          So dala, hab die richtige Darstellung gefunden (hier im Forum)
          Aber bekomme immer noch beim aufrufen der Index.php im Browser die Notice angezeigt.
          Und im editor macht er mir nen rotes Kreuz vor die Zeile.

          Ich bin gerad völlig planlos

          Hab auch mal nen sreenshot vom browser gemacht.

          Was ich nur komisch finde das bei anderen in den Tutorials das im Browser richtig angezeigt wird.
          Hab mir auch schon überlegt ob es an irgendwelchen configs im xampp liegen kann.

          ich hoffe mir kann jemand die sache mal erklähren. Ich find die meldung im browser echt nervig.

          Gruß CX

          [IMG]C:\Users\Creator\Pictures\temp[/IMG]
          Angehängte Dateien

          Kommentar


          • #6
            Notice: Undefined index: page in C:\xampp\htdocs\Loginscript\index.php on line 8".
            PHP-Code:
            if(!isset($_SESSION["username"]) and !isset($_GET["page"])) { 
                
            $verhalten 0

            if(
            $_GET["page"] == "log") { 
            Du willst (letzte Zeile) den Inhalt von $_GET["page"] vergleichen, ohne vorher zu prüfen ob es überhaupt exisitiert, was eben nicht der Fall ist, daher die Notice.

            Und rücke deinen Code bei den if sauber ein, das ist so ja kaum lesbar was da zusammengehört.

            PHP-Code:
            if (!isset($_SESSION["username"]) and !isset($_GET["page"])) { 
                
            $verhalten 0


            if (
            $_GET["page"] == "log") { 

                
            $user $_POST["user"];                 
                
            $passwort $_POST["passwort"]; 
                
                if (
            $user == "gott" and $passwort == "toll") {   
                    
            $_SESSION["username"] = $user
                    
            $verhalten 1
                } else { 
                    
            $verhalten 2
                } 

            EDIT: Eben fällt mir auf .. verwendest du GET und POST gemeinsam? Glaube nicht das das gut geht bzw. such dir besser ein anderes Tutorial fürs Erste mal.
            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


            • #7
              Zitat von CreatorX Beitrag anzeigen
              [IMG]C:\Users\Creator\Pictures\temp[/IMG]
              ich hab noch kein zugriff auf dein C:\ -> foglich brint mir der pfad nichts.
              auf dem anderen bild seh ich gar nichts, ist wesentlich zu klein.

              deinen code köntest du mal in code tags packen, und welche notice bekommst du?
              // sorry ist ja schon gemacht.

              Kommentar


              • #8
                HAllo Leute,

                @hausl
                Aaah. ok. dann werd ich mal versuchen da eine Abfrage vorher einzubauen.
                Was mich nur wundert, ich hab das Problem bei verschiedenen scripten. immer wenn ich mit $_GET oder $_POST arbeite.
                Bei denen in Tutorials funktionieren die codes ja auch so... ???? Frag mich was ich da falsch machen

                @Codelesbarkeit
                sorry ich beschäftige mich mit PHP seit 5 Tagen und muß mir erst mal ne richtige Schreibweise angewöhnen.


                @moma
                ich hab doch den screenshot draufgeladen, ja, leider kann ich ncihts dafür das man da nicht viel sieht. das bild was ich gespeichert habe ist in ner super quali. sorry


                Gut werd mal schaun wie ich da weiterkomme.

                Gruß CX

                Kommentar


                • #9
                  Bei denen in Tutorials funktionieren die codes ja auch so... ????
                  Du kannst PHP knebeln und zB Notices (bzw. so ziemlich alles) unterdrücken lassen, das macht man oft am Produktivsystem so, da kann man die Logs zB nach Fehlern durchsuchen. Für die Entwicklung ist das ein no-go, man soll Fehler behandeln und nicht totschweigen.

                  Oft kommen hier Anfänger und dann heißt es zB "Wenn ich mein Script ausführe bekomme ich nur eine weiße Seite" ... -> genau!

                  Das ist zB auch ein Merkmal.. wenn du dieses Zeichen-> @ in Tutorials siehst, dann nimm ein anderes Tutorial, denn das ist der "Fehlerunterdrückungs-Operator" (glaub der heißt echt so ) .
                  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


                  • #10
                    HAllo hausl,

                    ja ok, das klingt logisch. In der Entwicklungsphase ist es wohl Sinnvoll. Also ist die einzig sinnvolle Möglichkeit den Hinweis im Browser nicht zu erhalten die Abfrage vorher einzubauen.
                    Oder??
                    Irgendwann wird das schon funktionieren.

                    GM

                    Kommentar


                    • #11
                      Richtig, das gehört sich auch so, das man zuerst prüft ob ein Wert vorhanden ist bevor man schaut was darin enthalten ist.

                      Siehe isset() oder empty()
                      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


                      • #12
                        Hallo Leute,

                        habe das Problem jetzt so gelöst:
                        Das hier ist die funktionierende index.php
                        Restlichen Dateien unverändert.

                        Gruß CX
                        @hausl
                        ist das mit den if´s so besser?

                        PHP-Code:
                        <?php

                        session_start
                        ();
                        $verhalten 0;

                        if(!isset(
                        $_SESSION['username']) AND !isset($_GET['page'])) {
                        $verhalten 0;
                        }

                        if (isset(
                        $_GET['page']) && $_GET['page'] == 'log') {
                        $user =$_POST['user'];
                        $passwort $_POST["passwort"];

                        if(
                        $user == 'gott' AND $passwort == 'toll') {
                        $_SESSION['username'] = $user;
                        $verhalten 1;
                        }else {
                        $verhalten 2;
                        }
                        }


                        ?>
                        <html>
                        <head>
                            <title>Login</title>
                            <?php
                            
                        if($verhalten == 1) {
                            
                        ?>
                                <meta http-equiv="refresh" content="3; URL=seite2.php" />
                            <?php
                            
                        }
                            
                        ?>
                        </head>
                        <body>
                            <?php
                                
                        if($verhalten == 0) {
                                
                        ?>
                                Bitte logge dich ein:<br />     <!-- hier beginnt HTML Bereich -->
                                <form method="post" action="index.php?page=log">
                                    USER:       <input type="text" name="user" /><br />
                                    PASSWORT:   <input type="password" name="passwort" /><br />
                                    <input type="submit" value="Einloggen" />
                                </form>

                                <p><a href="register.php">Noch nicht dabei? Jetzt registrieren</a></p>
                                <?php
                                
                        }
                            if(
                        $verhalten == 1) {
                            
                        ?>
                            Du hast dich richtig eingeloggt und wirst nun weitergeleitet
                            <?php
                            
                        }
                            if(
                        $verhalten == 2) {
                            
                        ?>
                            Du hast dich nicht richtig eingeloggt, <a href="index.php">zur&uuml;ck</a>.
                            <?php
                            
                        }
                             
                        ?>

                        </body>
                        </html>

                        Kommentar

                        Lädt...
                        X