Loginscript

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

  • Loginscript

    Hallo,

    ich bins mal wieder :P Jo also nachdem ich mir erstmal das Registrierscript gebastelt habe, bin ich nun dran das dazugehörige Loginscript zu baun. Ich hab das alles so geschrieben (Ich werds Kommentieren und ich hoffe ihr steigt dadurch ).


    Die verify.php:
    PHP-Code:
    <?php
    if(isset($_POST['login'])) // Damit nicht wieder dieser komische Undefnied Variable Fehler kommt
    if($_POST['login']) { // Wenn login dann...

        
    $email=$_POST['email'];
        
    $password=$_POST['password'];
        
        
    $error="";
        
        if(empty(
    $email)) $error.="Please enter your email."//...prüft er erstmal ob das email Formular leer ist...
        
    if(empty($password)) $error.="Please enter a password."//..und das bei dem password Formular ebenfalls...
        
        
    $result=mysql_query("SELECT * FROM `users` WHERE email='$email'"); // Wenn alles richtig ist dann Login...
        
    $row=mysql_num_rows($result);
        
        if(
    $row) {
            
            
    $result=mysql_query("SELECT * FROM `users` WHERE email='$email'");
            if(
    mysql_num_rows($result)) {
            
            
    $array=mysql_fetch_array($result);
            
            if(
    $password==$array[password]) {
            
                
    setcookie("email"$array['email'], time() + 60*60*24*7*4); // Cookie für Email setzen
                
    setcookie("password"$array['password'], time() + 60*60*24*7*4); // Cookie für Password setzen
                
    setcookie("userid"$array['userid'], time() + 60*60*24*7*4); // Cookie für userID setzen...
                
    header("Location: index.php?cid=frontpage"); // Nach Login afu die Frontpage weiterleiten
                
    exit();
                }
                elseif(
    $password!=$array[password]) {
                
    $error="You entered an invalid password. Please enter your real password."// Wenn Password aus dem Formular nicht dem Passwort in der Datenbank gleicht dann Fehler...
                
    }
            }
            else 
    $error="No user with the email ".$array[email]." avaiable."// Ebenfalls bei der E-Mail..
        
    }
    }
    if(isset(
    $loggedin)) // Damit kein Call undefinied variable error erscheint
    if($loggedin) {
        echo 
    '<meta http-equiv="refresh" content="1;URL=index.php?cid=frontpage">'$error 'Login successfull!'// Bei erfolgreichem Login weiterleiten auf die Frontpage.
    }
    ?>
    So ich hoffe ihr checkt das und könnt mir schonmal sagen was ich da denn falsch gemacht haben könnte

    Die account.php

    PHP-Code:
    <?php
    include("include/mysql.php");
    ?>
    <?php

    if(isset($loggedin)) {

        
    $result=mysql_query("SELECT * FROM `users` WHERE id='".$userid."'") or die(mysql_error());
        
    $array=mysql_fetch_assoc($result);
        
        
            
    $username=$array['name'];
            
    $email=$array['email'];
            
    $userid=$array['userid'];
        
    ?>
    HTML.....
    <?php } else { ?>
    HTML...
    <?php
    }
    ?>
    Das Problem hier ist ja das wenn ich meine Daten eingebe das dann einfach nichts passiert. Das Loginformular bleibt da und er zeigt auch kein Fehler an.

  • #2
    Das Problem hier ist ja das wenn ich meine Daten eingebe das dann einfach nichts passiert. Das Loginformular bleibt da und er zeigt auch kein Fehler an.
    Dann könnte es ggf helfen den HTML Quellcode des Forms zu sehen. Kannst du den mal posten ?
    Und warum das ?
    PHP-Code:
    if(isset($_POST['login'])) // Damit nicht wieder dieser komische Undefnied Variable Fehler kommt
    if($_POST['login']) { // Wenn login dann...
    //und nicht nur einfach ?
    if(isset($_POST['login'])){ // Damit nicht wieder dieser komische Undefnied 
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Hier der HTML Code:

      Das was angezeigt werden soll wenn man eingeloggt ist:
      Code:
      <table width="100%" border="0" cellspacing="0" cellpadding="2">
        <tr>
          <td>Logged in as $username (UserID: $userid) </td>
        </tr>
        <tr>
          <td><a href="index.php?cid=commandcenter&<?php echo SID; ?>">Command Center </a></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
      </table>
      Und hier ist der Code für das Loginformular:
      Code:
      <form method="post" action="index.php?cid=verify" name="login"><table width="100%" border="0" cellspacing="0" cellpadding="2">
        <tr>
          <td width="7%">E-Mail:</td>
          <td>
            <input name="email" type="text" id="email">
          </td>
        </tr>
        <tr>
          <td>Password:</td>
          <td><input name="password" type="password" id="password"></td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" name="login" value="Sign in">
          </td>
        </tr>
      </table>
      </form>

      Kommentar


      • #4
        Hat keiner eine Idee?

        Kommentar


        • #5
          Also - irgendwie 'n bisserl verquer, glaub...

          versuch's mal so:

          PHP-Code:

          <?php

          if(isset($_POST['login'])) { // Wenn login dann...

              
          $email=$_POST['email'];
              
          $password=$_POST['password'];
              
              
          $error="";
              
              if(empty(
          $email)) $error.="Please enter your email."//...prüft er erstmal ob das email Formular leer ist...
              
          if(empty($password)) $error.="Please enter a password."//..und das bei dem password Formular ebenfalls...
              
              
          $result=mysql_query("SELECT * FROM `users` WHERE email='$email'"); // Die Abfrage brauchste nur einmal

              
          if(mysql_num_rows($result)) {
                  
                  
          $array=mysql_fetch_array($result);
                  
                  if(
          $password==$array['password']) {
                  
                      
          setcookie("email"$array['email'], time() + 60*60*24*7*4); // Cookie für Email setzen
                      
          setcookie("password"$array['password'], time() + 60*60*24*7*4); // Cookie für Password setzen
                      
          setcookie("userid"$array['userid'], time() + 60*60*24*7*4); // Cookie für userID setzen...
                      
          header("Location: index.php?cid=frontpage"); // Nach Login auf die Frontpage weiterleiten
                      
          exit();
                      }
                      elseif(
          $password != $array['password']) {
                      
          $error="You entered an invalid password. Please enter your real password."// Wenn Password aus dem Formular nicht dem Passwort in der Datenbank gleicht dann Fehler...
                      
          }
                  }
                  else {
                         
          $error="No user with the email ".$array['email']." available."// Ebenfalls bei der E-Mail..
                  
          }
              
          }

          if(isset(
          $loggedin)) {
              echo 
          '<meta http-equiv="refresh" content="1;URL=index.php?cid=frontpage">'$error 'Login successful!'// Bei erfolgreichem Login weiterleiten auf die Frontpage.
          }
          ?>
          1. Fehler - hier haben Single-Quotes gefehlt:

          if($password==$array['password']) { // elseif($password != $array['password']) { //

          Du machst in Deinem Script die SQL-Abfrage doppelt - wozu? Wenn Du mit der ersten Abfrage die eMail-Adresse gefunden hast, kannst Du doch dasselbe Resultat zum Überprüfen des Passworts verwenden

          Ausserdem: die Variable $loggedin wird in Deinem Script nirgends gesetzt ??? Also kann auch die Weiterleitung (beim nochmaligen Aufruf des Scripts, nehm ich an, sollte das automatisch geschehen) gar nicht funktionieren.
          Zuletzt geändert von ursbrauchli; 31.08.2006, 01:00.

          Kommentar


          • #6
            Was mir so auffällt:
            Weder Passwort, Email noch Userid sollten in Cookies gespeichert werden!!

            Auch der Location-Header ist nicht korrekt.
            Wir werden alle sterben

            Kommentar


            • #7
              ... yepp - und Passwörter sollten auch nicht unverschlüsselt in der DB gespeichert werden...

              undundund...

              Kommentar


              • #8
                @ursbrauchli -die doppelte mysql-abfrage war natürlich quatsch, aber jetzt gar keine mehr?

                wenn wir schon mal dabei sind:
                passwort und email wird zwar auf leerheit überprüft aber nirgends eine fehlermeldung ausgegeben.

                Kommentar


                • #9
                  Hab' ich doch geändert, Max...

                  und - stimmt - die Fehlermeldung fehlt im Formular... oh well...

                  Kommentar

                  Lädt...
                  X