Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlerhinweis

Einklappen

Neue Werbung 2019

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

  • CreatorX
    hat ein Thema erstellt Fehlerhinweis.

    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
     
    }
     
    ?>

  • CreatorX
    antwortet
    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>

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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()

    Einen Kommentar schreiben:


  • CreatorX
    antwortet
    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

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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 ) .

    Einen Kommentar schreiben:


  • CreatorX
    antwortet
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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.

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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.

    Einen Kommentar schreiben:


  • CreatorX
    antwortet
    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

    Einen Kommentar schreiben:


  • CreatorX
    antwortet
    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

    Einen Kommentar schreiben:


  • VPh
    antwortet
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    bitte reformatieren deinen code mithilfe von code tags:
    [php] oder [html]
    dann kann man ihn auch lesen.

    Einen Kommentar schreiben:

Lädt...
X