Ankündigung

Einklappen
Keine Ankündigung bisher.

Login geht nicht

Einklappen

Neue Werbung 2019

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

  • Login geht nicht

    Hi Leute,
    hab ein Login Script mit Php, leider kommt jedesmal wenn ich irgendwas eingebe die Fehlermeldung die Felder wären leer.
    Ich find den Fehler einfach nicht..
    PHP-Code:
    <?php
    session_start
    ();
    /*
     *    Autor        : Dennis1993
     *    Copyright    : (c) 2011 by Dennis1993
     */ 
    define('SECURE'true);
    require_once(
    'config.php');

    /* Ausloggen */
    if(isset($_GET['logout']))
    {
        if(isset(
    $_SESSION['user_id']))
        {
            
    $_SESSION = array();
            
    session_destroy();
        }

        
    header('location: abgemeldet.html');
        exit();
    }


    /* Einloggen */
     
      
    $time 900;
      
    # Maximale Versuche
      
    $maxTrys 2;

      
    # Auswerten der Versuche, wenn über $maxTrys
      # $_SESSION['denied'] setzen und Versuche
      # zurücksetzen
      
    if(isset($_SESSION['trys']))
        if(
    $_SESSION['trys'] >= $maxTrys){
          
    $_SESSION['denied'] = time()+$time;
          unset(
    $_SESSION['trys']);
        }

      
    # Prüfen ob Wartezeit abgelaufen ist
      
    if(isset($_SESSION['denied']))
        if(
    $_SESSION['denied']-time() <= 0)
          unset(
    $_SESSION['denied']);
     

    if(isset(
    $_POST['send']))
    {
        
    $user_email mysql_real_escape_string(strip_tags(htmlentities(trim(htmlspecialchars($_POST['user_email'], ENT_QUOTES)))));
        
    $user_password mysql_real_escape_string(strip_tags(htmlentities(trim(htmlspecialchars($_POST['user_password'], ENT_QUOTES)))));
        
    $password md5($user_password);
        
    $error "";

          if(isset(
    $_SESSION['denied'])){
                  
    $error "<p style='color:red; font-weight:bolder;'>Du hast 3 mal das falsche Kennwort eingegeben!</p>";
                echo 
    "<script type='text/javascript'>alert('Bitte versuche es in ".ceil(($_SESSION['denied']-time())/60)." Minuten wieder.');</script>"
                echo 
    "<p style='background-color:yellow; color:red; margin:15px;'>Bitte versuche es in ".ceil(($_SESSION['denied']-time())/60)." Minuten wieder.</p>";

          } elseif(
    filter_var($user_emailFILTER_VALIDATE_EMAIL) && !empty($user_password))
        {
            
    $q $SQL->prepare('SELECT `id` FROM `user` WHERE `email` = ? AND `password` = ?');
            
    $q->bind_param('ss'$user_email$password);
            
    $q->execute();
            
    $q->store_result();
            
    $q->bind_result($user_id);

            if(
    $q->num_rows == 1)
            {
                
    $q->fetch();
                
    $_SESSION['user_id'] = $user_id;
                
    header('location: intern.php');
                
    $_SESSION['trys'] = 1;
                exit();
            }
            else
            {
                
    $error "<p style='color:red; font-weight:bold;'>Ihre Anmeldedaten sind nicht korrekt. Bitte wiederholen Sie Ihre Eingabe.</p>";
                if(isset(
    $_SESSION['trys']))
                    
    $_SESSION['trys'] = $_SESSION['trys'] + 1;
                  else
                    
    $_SESSION['trys'] = 1;
                    }
        }
        else
        {
            
    $error 'Bitte f&uuml;llen Sie alle Felder korrekt aus.';
        }
    }
    else
    {
        
    $error NULL;
        
    $user_email NULL;
    }

    ?>
    Das eingabefeld:
    Code:
       			      <h1>Einloggen</h1>
                      <p>Um in den Internen Bereich zugelangen, loggen Sie sich bitte hier ein:</p>
                      <br />
                      <?php echo $error; ?>
                    <form action="login.php" method="post">
                    <table cellpadding="1" cellspacing="4">
                        <tr>
                            <td><strong>E-Mail-Adresse:</strong>&nbsp;</td>
                            <td><input type="email" name="user_email" value="<?php echo $user_email; ?>" required placeholder=" E-Mail-Adresse" maxlength="255" size="30"/></td>
                        </tr>
                        <tr>
                            <td><strong>Passwort:</strong></td>
                            <td><input type="password" name="user_password" required placeholder=" Passwort" maxlength="50" size="30" /></td>
                        </tr><br />
    
                        <tr>
                            <td colspan="2"><input type="submit" name="send" value="Login" /></td>
                        </tr>
                    </table>
                    </form>
    Ich hoffe ihr könnt mir helfen!

    Danke für eure Hilfe

    Kann es sein, dass das Problem beim Server liegt?
    Die Mysql Datenbank ist vorhanden und es liegt auch ein Eintrag vor..

    Lg phphtmlcss

  • #2
    PHP-Code:
    mysql_real_escape_string(strip_tags(htmlentities(trim(htmlspecialchars($_POST['user_email'], ENT_QUOTES))))); 
    wow

    ...

    Sorry, aber ich fühle mich an dieser Stelle genötigt das so deutlich zu sagen: Das ist alles mist. Dein Code schreit mir entgegen, dass du absolut keine Lust hast die (an sich sehr gute) PHP-Dokumentation zu lesen. Wichtige Teile deines Codes sähen dann nämlich anders aus.

    md5() ist KEIN tolerables Mittel, Passwörter zu hashen. Genau so wenig wie SHA*!

    Es ist nicht mehr zeitgemäß, Anwendungslogik und Ausgabelogik zu kombinieren. Dadurch leidet die Wartbarkeit beider Komponenten. In der Regel folgen in PHP geschriebene Applikationen daher dem EVA-Muster, welches einen leicht nachvollziehbaren Datenfluss ermöglicht, besser wartbare Applikationen erzeugt und leichter von anderen Entwicklern verstanden wird. In der PHP-Welt hat sich hierauf aufbauend das (häufig falsch interpretierte) MVC-Muster [1] etabliert (siehe auch DCI oder ADR). Ganz einfach gesagt handelt es sich bei dem EVA-Muster um eine Aufteilung der Aktionen "Auswertung der Eingabeparameter", "Verarbeitung der damit verknüpften Anwendungslogik" und "Erzeugung und Übermittlung der Ausgabe". Oder vereinfacht: Erst Daten sammeln, dann daraus die Darstellung erzeugen und ausgeben. Die Verwendung einer Templateengine (mit Layout-Support) ist dafür Empfehlenswert - jedoch aber keine Voraussetzung.

    Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional. In einigen Fällen ist das Weglassen hilfreich:
    • Es können ungewollte Whitespaces am Ende einer Datei auftreten, durch die ein späteres setzen von headern be-/verhindert werden kann.
    • Außerdem verhindert dies, dass beim Output Buffering Whitespaces am Ende eines durch die eingebundenen Dateien erzeugten Parts.
    • Im PSR Standard (PSR-2) ist ?> sogar ausdrücklich verboten, wenn in einer Datei ausschliesslich PHP verwendet wird (2.2 Files).

    Kommentar


    • #3
      oh ok. Was sollte man anstatt von md5 hernehmen?
      und wo finde ich eine gute Anleitung für den Einstieg in PHP, wo ich auch lerne wie ich ein Login-Script richtig aufbaue?

      Kommentar


      • #4
        Zitat von phphtmlcss Beitrag anzeigen
        oh ok. Was sollte man anstatt von md5 hernehmen?
        http://php.net/manual/de/faq.passwor...words.fasthash

        Kommentar


        • #5
          Ok, danke für deine Hilfe!

          Kommentar


          • #6
            Moin,

            http://www.peterkropff.de
            Die Seite bietet einen guten Einstieg in die Webentwicklung.
            [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


            • #7
              PHP-Code:
              $user_email mysql_real_escape_string(strip_tags(htmlentities(trim(htmlspecialchars($_POST['user_email'], ENT_QUOTES))))); 
              Das sind nicht mal mehr Kanonen auf Spatzen, das sind Atomraketen auf Einzeller.

              Neben den genannten Tutorials findest du auch im Grundlagenthread eine Menge nützlicher Links und weitere empfehlenswerte Tutorials:
              http://www.php.de/php-einsteiger/489...rundlagen.html
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar

              Lädt...
              X