Euer Login Script

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

  • Euer Login Script

    Hallo Leute,

    ich habe das Login Tutorial von eurer Seite durchgeschaut http://www.php-resource.de/tutorials/read/38/1/ habe jedoch eine Frage:

    Ich habe eine login.php, eine logged_in.php und eine logout.php..... okay soweit alles verstandlich. Aber bei diesem Code:


    PHP-Code:
    if (!logged_in()) 
        echo 
    '<form method="post" action="login.php"> 
            <label>Benutzername:</label><input name="username" type="text"><br> 
            <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br> 
            <input name="login" type="submit" id="login" value="Einloggen"> 
        </form>'

    else 
        echo 
    '<a href="logout.php">Ausloggen</a>'
    echo 
    '<a href="logged_in.php">Check</a>'
    klaro, wenn die negation von login erfüllt ist ^^ also wenn man nicht eingeloggt ist, wird das Loginformular angezeigt und wenn man eingeloggt ist wird ein Link zum ausloggen angezeigt.

    Heißt das auf deutsch, dass ich diese Abfrage in jede Seite reinhaue, die Passwortgeschützt sein soll? Ja, oder?
    Und den HTML Code der ausgegeben werden soll wenn man eingeloggt ist setze ich einfach in den Elsefall als echo, oder?
    -Am Anfang war das Wort-

    Ich habe fertig mit Abi ^^

  • #2
    Ich will gleich noch eine Frage zur strukturierung und Richtigkeit hinterher stellen. In der Login.php wird durch ein echo ein Anmeldeformular ausgegeben:

    PHP-Code:
    echo '<form method="post" action="login.php"> 
                        <label for="username">Benutzername:</label><input id="username" name="username" type="text" value="Username"></input><br></br> 
                        <label for="userpass">Passwort: </label><input id="userpass" name="userpass" type="password" value="Passwort"></input><br></br> 
                        <input name="login" type="submit" id="login" value="Einloggen"></input> 
                        </form>'

    Das sieht alleine aber noch etwas unstrukturiert aus. Deswegen frage ich mich ob es vom Code und von der strukturierung her richig ist wenn ich eine Tabelle folgendermaßen einfüge:

    PHP-Code:
    echo '<form method="post" action="login.php"> 
    <table>
        <tr>
            <td>
            <label for="username">Benutzername:</label>
            </td>
            <td>
            <input id="username" name="username" type="text" value="Username"></input>
            </td>
        </tr>
        <tr>
            <td>
            <label for="userpass">Passwort: </label>
            </td>
            <td>
            <input id="userpass" name="userpass" type="password" value="Passwort"></input>
            </td>
        </tr>
    </table> 
    <input name="login" type="submit" id="login" value="Einloggen"></input> 
    </form>'

    Und um noch eine kleine Frage zu stellen: Was ist eigentlich, bzw. besteht ein Unterschied zwischen <td> und <th>?
    -Am Anfang war das Wort-

    Ich habe fertig mit Abi ^^

    Kommentar


    • #3
      Original geschrieben von Lexus_Ks
      Und um noch eine kleine Frage zu stellen: Was ist eigentlich, bzw. besteht ein Unterschied zwischen <td> und <th>?
      td = table data
      th = table head

      Code:
      <tr><th>User_id</th><th>username</th></tr>
      <tr><td>1</td><td>bla</td></tr>
      <tr><td>2</td><td>blabla</td></tr>
      etc. nur mal als Beispiel...



      Zum Rest:
      Es wäre wesentlich besser, wenn du in jedem Skript oben eine globale Datei includieren würdest. Dann musst du der nur mitteilen, dass die aktuelle Website ein Login benötigt (z.B. define('LOGIN', true)) und in der globalen Datei, fragst du dann ab

      PHP-Code:
      if (isset($_POST['do_login'])) {
        
      do_login();
      }

      if (
      defined('LOGIN')) {
        if (!
      logged_in) {echo 'form'}

      da kannst du dann auch einen Datenbank connect reinschreiben, falls der nötig ist, globale Funktionen (die Funktionen für den Login zum Bleistift)


      jedes andere Skript würde dann einfach nur so aussehen
      PHP-Code:
      // falls Login nötig
      define('LOGIN'true);

      // das auf jeden Fall
      require_once('global.inc.php'); 


      und brich dein Formular um, kein Scollbalken auf 1024-Auflösung!

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Könntest du das für mich jetzt nochmal erläutern? Sorry bin Anfänger. Also meine Möglichkeit sähe so aus:

        PHP-Code:
        if (!logged_in()) 
            echo 
        'Du bist nicht eingeloggt'
        else 
            echo 
        'Inhalt der Seite';//Alternativ zum Echo ein PHP Script(jenachdem was man hier braucht) 
        Und warum umbrechen? Mein Formular wird doch durch eine Tabelle automatisch umgebrochen -___- ich habe bei mir keine Scrollbalen gesehen.


        Ich verstehe diesen Codeschnipsel von dir nicht -_-

        PHP-Code:
        if (isset($_POST['do_login'])) {
          
        do_login();
        }

        if (
        defined('LOGIN')) {
          if (!
        logged_in) {echo 'form'}

        Also isset überprüft ob eine Variable existiert oder nicht und gibt dann jeweils True oder false zurück.... áber was bedeutet das in der Klammer $_POST['do_login'] ?
        Und was istz dieses do_login?

        Und bei der zweiten If Abfrage: Was ist defined? Habe jetzt nur "define" (ohne d) gefunden und das weist einer Konstante durch den Namen einen Wert zu -_- Sorry bin grad voll verwirrt. Würdest du den Code mal auseinandernehmen udn Schritt für Schritt erklären?
        -Am Anfang war das Wort-

        Ich habe fertig mit Abi ^^

        Kommentar


        • #5
          Original geschrieben von Lexus_Ks
          Und warum umbrechen? Mein Formular wird doch durch eine Tabelle automatisch umgebrochen -___- ich habe bei mir keine Scrollbalen gesehen.
          Bei mir nicht (Firefox, ein nicht gerade seltener Browser...)

          du weißt, dass ich hier von deinem Post im Forum rede?!


          Okay, diesmal ohne Konstante, sondern mit Funktionsaufruf ... ist mMn etwas schöner, aber egal
          Also dein(e) Skript(e) sieht(/sehen) so aus:
          PHP-Code:
          <?php

          require_once('./global.inc.php');

          // Wenn Login benötigt wird
          Login();

          ?>
          Die Website
          oder eben ohne Login(), wenn kein Login benötigt wird


          und in der global.inc.php ist das drin
          PHP-Code:
          <?php

          $db 
          mysql_connect();
          session_start();

          function 
          logged_in() {
              if (!empty(
          $_SESSION['username'])) {
                  return 
          true;
              } else {
                  return 
          false;
              }
          }


          /*
              Wird aufgerufen, wenn der User zum Sehen der Seite eingeloggt sein muss
              (muss natürlich vor JEDER Ausgabe im Skript aufgerufen werden!)
          */
          function Login() {
              
          // Wenn der User schon eingeloggt ist, kann das Skript weiterlaufen
              
          if (logged_in()) {
                  return 
          true;
              }
              
              
              
          // Wurde das Formular abgeschickt?
              
          if (isset($_POST['do_login'])) {
                  
          // Richtige Daten?
                  
          if (!empty($_POST['username']) && !empty($_POST['password'])
                          && 
          $_POST['username'] == "ghostgambler" && $_POST['password'] == "xxx") {
                      
                      
          // prevent Session-Hijacking, einfach mal übernehmen ... ist etwas komplizierter
                      
          $_SESSION = array();
                      
          session_regenerate_id(true);
                      
          $_SESSION = array();
                      
                      
                      
          /*
                          Die Daten in die Session schreiben, wird auch in logged_in() benutzt um
                          rauszufinden, ob der User eingeloggt ist. Beim Ausloggen einfach
                          unset($_SESSION['username']) oder $_SESSION['username'] = "" machen
                      */
                      
          $_SESSION['username'] = "ghostgambler";
                      
                      return; 
          // normales Skript weiter ausführen, da korrektes Login
                  
          } else {
                      
          $errmsg "Falscher Username oder falsches Kennwort";
                  }
              }

              
          // Der User ist nicht eingeloggt, oder es trat ein Fehler auf
              
          if (isset($errmsg)) {
                  echo 
          '<p style="color:red;">' htmlentities($errmsg) . '</p>';
              }
              
              
          // Formular anzeigen, mit Header und Footer
              
          ?>
              <html><body>
              <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
                  <input type="text" name="username" />
                  <input type="password" name="password" />
                  <input type="submit" value="do_login" />
              </form>
              </body></html>
              <?php
              
          // normales Skript NICHT weiter ausführen
              
          die();
          }


          // mehr oder weniger optionale Zeilen
          if (isset($_POST['do_login'])) {
              
          Login();
          }


          ?>
          da musst du dann natürlich noch deine Überprüfung reinbasteln, aber ich hatte jetzt recht wenig Lust das Tutorial erneut zu lesen nur um die den Code auf dem Silbertablett zu servieren ^^,

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar

          Lädt...
          X