Was bedeutet dieses Code-Stück

Kalma

Erfahrenes Mitglied
Hey,
ich habe aus meinem Buch ein Listing zum Testen kopiert, und mir auch mal den Code angeguckt. In dem Login Script stand eine solche Schreibweise beim Übergeben der Variablen, von der ich nicht weiß, was sie zu bedeuten hat:

PHP:
$username = $_POST['username'] ? $_POST['username'] : false;
$password = $_POST['password'] ? $_POST['password'] : false;

Ich verstehe den hinteren Teil nicht:
PHP:
? $_POST['username'] : false;
? $_POST['password'] : false;


Wär cool, wenn mir das jemand erklären könnte :)

David
 
Danke für die schnellen Antworten.

So, dieses Script ist es, aus dem ich diesen Code-Teil habe:
PHP:
<?php
  /* Session initialisieren */
  session_start();
  
  /* übergebene Variablen auslesen */
  $username = $_POST['username'] ? $_POST['username'] : false;
  $password = $_POST['password'] ? $_POST['password'] : false;

  if($username && $password)
  {
    /* verschlüsseltes Passwort erzeugen */
    $encrypted = md5($username,$password);  
    
    include('../inc/database.inc.php');
    $connection = mysql_connect($db['host'],$db['uid'],$db['pwd']);
    if($connection)
    {
      if(mysql_select_db($db['db']))
      {
        $sql = "SELECT id FROM user WHERE (username = '$username') AND (password = '$encrypted') AND (active = 'true')";
        $result = mysql_query($sql);
        if($result && (@mysql_num_rows($result) > 0))
        {
          $row = mysql_fetch_row($result);
          $_SESSION['authenticated'] = true;
          $_SESSION['user_id'] = $row[0];
          $_SESSION['username'] = $username;
        }
        else
        {
          $_SESSION['authenticated'] = false;
        }
      }
    }
  }
  
  /* Umleitung */
  header('Location: index.php');
?>



Hat das jetzt im Prinzip nen Vorteil, wenn ich das so schreibe:
PHP:
  $username = $_POST['username'] ? $_POST['username'] : false;
  $password = $_POST['password'] ? $_POST['password'] : false;

und nicht so:
PHP:
  $username = $_POST['username'];
  $password = $_POST['password'];

MfG
David
 
Was ist denn das für ein Buch... tztztz. Erstens sollte man Daten die vom benutzer kommen nie ungeprüft an die Datenbank weitergeben (Stichwort: SQL-Injektion), zweitens sollte man prüfen, ob die (in diesem Fall $_POST-)Variable überhaput existiert. Der "Vorteil" bei der Version ist, dass wenn der User kein Passwort oder Usernamen eingegeben hat, der Login-Vorgang gar nicht durchgeführt wird, sondern gleich mittels [phpf]header[/phpf] auf die index.php weitergeleitet wird...
PHP:
<?php
  /* Session initialisieren */
  session_start();
  
  /* übergebene Variablen auslesen */
  $username = isset($_POST['username']) ? trim($_POST['username']) : false;
  $password = isset($_POST['password']) ? trim($_POST['password']) : false;

  // Wenn Username und Passwort gesetzt (ungleich false), dann führe Login durch...
  if($username !== false && $password !== false)
  {
    /* verschlüsseltes Passwort erzeugen */
    $encrypted = md5($username,$password);  
    
    include('../inc/database.inc.php');
    $connection = mysql_connect($db['host'],$db['uid'],$db['pwd']);
    if($connection)
    {
      if(mysql_select_db($db['db']))
      {
        $sql = "SELECT id FROM user WHERE (username = '".mysql_real_escape_string($username)."') AND (password = '".mysql_real_escape_string($encrypted)."') AND (active = 'true')";
        $result = mysql_query($sql);
        if($result && (@mysql_num_rows($result) > 0))
        {
          $row = mysql_fetch_row($result);
          $_SESSION['authenticated'] = true;
          $_SESSION['user_id'] = $row[0];
          $_SESSION['username'] = $username;
        }
        else
        {
          $_SESSION['authenticated'] = false;
        }
      }
    }
  }
  
  /* Umleitung */
  header('Location: index.php');
?>
 
Zuletzt bearbeitet:
Hey,


Was ist denn das für ein Buch... tztztz. Erstens sollte man Daten die vom benutzer kommen nie ungeprüft an die Datenbank weitergeben (Stichwort: SQL-Injektion), zweitens sollte man prüfen, ob die (in diesem Fall $_POST-)Variable überhaput existiert.

Das ist das ziemlich bestbewertete Buch, auf jeden Fall bei Amazon^^...

Das war ja jetzt auch nix, was man wirklich einsetzen kann, nur son Beispiel.


Aber danke :)

David
 
Zurück