Login Formular

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

  • #16
    Also ich würde dir schon empfehlen die Ausgabe des Forms in einer Bedingung zu machen. Noch ne Verständnisfrage: Der Code, den du hier gepostet hast, gehört schon in test2.php ?
    PHP-Code:
    if(isset($_POST['name_des_senden_buttons'])){
        
    //Form wurde abgeschickt
    }else{
        
    //Form wurde nicht abgeschickt und muss ausgegeben werden
        //also kommt dein echo hier rein
        
    exit; //damit ganz sicher nicht mehr gemacht wird als das Form ausgeben

    Diesen Code würde ich ziemlich on top in dein File schreiben.Noch bevor du sonst irgendeine Prüfung machst.
    Ausserdem solltest du bei solchen Codes aufpassen, dass nicht doch die Abfrage zur DB ausgeführt wird
    PHP-Code:
    if ($_POST['username'] == "")
        {
          echo 
    '<div class="fehlermeldung">Benutzername eingeben</div>'
        }
          
        elseif (
    $_POST['passwort'] == "")
        {    
        echo 
    '<div class="fehlermeldung">Passwort eingeben</div>';
        }elseif(isset(
    $_POST['username']) && isset($_POST['passwort'])){
            
    $sql "SELECT * FROM userdaten WHERE name = '".($_POST['username'])."' AND passwort = '".md5($_POST['passwort'])."' ";
            
    $query mysql_query($sql) or die("Query nicht erfolgreich.");
        } 
    Wenn du es so schreibst wird die Abfrage nicht gemacht wenn eines der beiden Felder oder beide nicht ausgefüllt worden sind.
    Bei deine vorherigen Version hättest du ggf einfach Abfragen mit leeren Strings oder false gemacht.

    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


    • #17
      Ich hab dir doch mein Login Script per Mail geschickt und gesagt, wie du es machen sollst. Warum machst du es dann wieder so unsauber?


      PHP-Code:
      <?php
      if (Formular_wurde_gesendet)
      {
       
      // Daten aus DB holen
       
      if (passwort == pw_aus_db)
        {
         
      header("Location: http:/www.abc.de/seite2.php");
         exit;
        }
        else 
      $fehler "Falsches PW";
      }
      ?>

      <html>

      <!--
      Hier die Ausgabe des Formulars, ganz normal mit html
      -->
      <?php
      // Ausgabe der Fehler-Variable
      echo $fehler;
      ?>

      </html>

      Oben in dem PHP Teil, wird kein echo gemacht.
      Nur geprüft, wenn das Formulat abgeschickt wurde, und wenn alles OK dann Weiterleitung.
      Das einzige echo ist die Ausgabe der Fehler Var im html Teil.
      Zuletzt geändert von matzinger; 17.02.2006, 10:37.

      Kommentar


      • #18
        hatte es nicht hinbekommen kann ich denn variablen $fehler1, $felher2 mit jeweiligen ausgabe festelegen, und wie du gesagt hast im html teil ausgeben? also beide reinschreiben mit echo .. gibt er dann nur die var aus, die er in der schleife erreicht hat, oder würde er beide ausgeben ? oder muss man es als array machen?

        Kommentar


        • #19
          Kannste machen wie du möchtest, mit oder ohne Array.
          Du willst doch was lernen, dann teste doch was ausgegebe wird und bastle ein bisschen rum.

          Kommentar


          • #20
            also ich habs mal umgebaut:

            PHP-Code:
            <?php 
            error_reporting
            (E_ALL);

            session_start();

            if(!isset(
            $_SESSION['user_ip'])){ $_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR']; }
            if(
            $_SESSION['user_ip'] != $_SERVER['REMOTE_ADDR'])
            {
            $fehlermeldung '<div class="fehlermeldung">Ihre IP geh&ouml;rt nicht zu der verwendeten Session.</div>';
            session_destroy();
            unset(
            $_SESSION);
            }
            // DB einbinden
            include('db.php');

            // Prüfung ob button drückt
            if(isset($_POST['anmelden']))
            {
            $sql "SELECT * FROM userdaten WHERE name = '".($_POST['username'])."' AND passwort = '".md5($_POST['passwort'])."' ";
                
            $query mysql_query($sql) or die("Query nicht erfolgreich.");
                
                if(
            $row mysql_fetch_array($query))
                {
                  
            $_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
                  
            $_SESSION['user_name'] = $row['name'];
                  
            $_SESSION['user_id'] = $row['id'];
                  
            $_SESSION['user_email'] = $row['email'];
               
                  
            header('Location: absolute.php');
                 exit; 
            }
            if (
            $_POST['username'] == "")
                {
                  
            $fehler '<div class="fehlermeldung">Benutzername eingeben</div>'
                }
                  
                elseif (
            $_POST['passwort'] == "")
                {    
                
            $fehler'<div class="fehlermeldung">Passwort eingeben</div>';
                }
                  elseif (
            $_POST['username'] !="" && $_POST['passwort'] !="")
                  {
                  
            $fehler ='<div class="fehlermeldung">Benutzername oder Passwort nicht korrekt</div>'
                  }

            ?> 

                <html>
                <head>
                <title>login</title>
                <link rel="stylesheet" href="style.css" type="text/css">
                </head>
                <body bgcolor="#CCCCCC" text="#000099" link="#000066">
                <div align="center"><img src="logo.jpg" width="270" height="270"> </div>
                <table width="23%" border="1" cellspacing="0" cellpadding="0" align="center" bordercolor="#000000">
                  <tr> 
                     <td align="center" bordercolor="#000000" bgcolor="#003366">
            <font face="Verdana, Arial, Helvetica, sans-serif" color="#000099" size="2"><b><font color="#CCCCCC">
            Anmeldung</font></b></font><font color="#CCCCCC"><br>
                  </font>
                  <form action="test3.php" method="post">
                  <font face="Verdana, Arial, Helvetica, 
            sans-serif" size="2" color="#CCCCCC">
                  Username :<input type="text" name="username" size="20" class="input">
                  <br>
                  <br>
                  Passwort :<input type="password" name="passwort" size="20" maxlength="20" class="input">
                  <br>
                  </font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><br>
                  <input type="submit" name="anmelden" value="anmelden" class="button">
                  </font> 
                  </form>
                  </td>
                  </tr>
                  </table>
                  <table width="23%" border="0" cellspacing="0" cellpadding="0" align="center" height="29">
                  <tr> 
                  <td> 
                  </td>
                  </tr>
                  </table>
            <?php
                
            echo $fehler
            ?> 

            </body>
            </html>
            geht auch soweit. die fehlermeldungen werden ausgegeben und werde auf die seite weiter geleitet. aber am anfang wenn ich die seite aufrufe steht dort:

            Notice: Undefined variable: fehler in /homepages/42/d104861460/htdocs/test/test3.php on line 80


            das ist die zeile echo $felher;

            kennt er sie da noch nicht genau oder was bedeutet das?

            kann ich auch irgendwie testen, ob die session auch wirklich gestartet ist ?
            Zuletzt geändert von flisch; 18.02.2006, 09:33.

            Kommentar


            • #21
              ja - er kennt die Variable $fehler nicht, da die if-Abfrage nicht true ergibt.

              Abhilfe: vor der if-Abfrage: $fehler = "";

              Kommentar


              • #22
                Ist ziemlich unsicher, wenn du die IP als User-Id verwendest.
                Könnte ja sein, dass mehrere User gleiche IP haben.

                Kommentar


                • #23
                  Bitte unverzüglich und RÜCKWIRKEND an unsere Regeln halten: Code umbrechen!

                  Kommentar


                  • #24
                    so das funktioniert jetzt. aber wenn ich auf die seite ausgabe1.php
                    weitegeleitet werde klappt es nicht, ich habe davor ne abfrage geschrieben:

                    PHP-Code:
                    <?php
                    if(isset($_SESSION['user_name']))
                    {
                    echo 
                    '<h1>Testseite - mit Login</h1>';
                    echo 
                    '<p>Login erfolgreich</p>';
                    }
                    else
                    {
                    echo 
                    '<h1>Testseite - mit Login</h1>';
                    echo 
                    '<p>Bitte melden Sie sich an, um den Inhalt zu sehen.</p>';
                    }
                    ?>
                    bekomme halt nur den Fehler Bitte melden Sie sich an, um den Inhalt zu sehen. angezeigt.

                    Woran kann das liegen? Ist die Session nicht aktiv ?

                    Kommentar


                    • #25
                      hast Du denn session_start(); am Anfang der Seite?

                      Kommentar

                      Lädt...
                      X