Loginsystem - Script in der Datenbank

  • Themenstarter Themenstarter skynic
  • Beginndatum Beginndatum
S

skynic

Hi,
ich habe mal wieder eine Frage zu demLoginsystem, also wie kann ich die Testbenutzerdaten(also das php script, was da ist) in die mysql Tabelle einfügen? Blicke da bei mir nicht richtig durch...
und dann wollte ich nochmal fragen was da rein kommt:
PHP:
$connectionid = mysql_connect ("localhost", "root", "");
bei localhost, weis ich was reinkommt aber bei "root" und bei "" was muss da "db_name" und "db_pw" rein?

Nic
 
1. "" = DB Server
2. "" = DB Benutzer
3. "" = DB Passwort
("Server","Benutzer","Passwort")

Ist damit deine Frage geklärt?
 
Zuletzt bearbeitet:
ja die eine frage wäre dann geklärt danke :)

aber wie füge ich die testbenutzer in die datenbank ein, also das ganze script



2. Einfügen von Testbenutzern in die Datenbank

Jetzt wollen wir einige Testbenutzer in die Datenbank einfügen. Da das Kennwort zusätzlich noch verschlüsselt werden soll, machen wir das mit einem Script.
PHP:
<?php 
// Definition der Benutzer 
$benutzer[0]["Nickname"] ="admin"; 
$benutzer[0]["Kennwort"] = "admin"; 
$benutzer[0]["Nachname"] = "Mustermann"; 
$benutzer[0]["Vorname"] = "Max"; 

$benutzer[1]["Nickname"] = "test"; 
$benutzer[1]["Kennwort"] = "abc"; 
$benutzer[1]["Nachname"] = "Kunze"; 
$benutzer[1]["Vorname"] = "Martin"; 

// Sie können an dieser Stelle beliebig viele Benutzer anlegen. 
// Achten Sie dabei nur auf die Fortführung der Nummer. 

// Aufbau der Datenbankverbindung 
$connectionid  = mysql_connect ("localhost", "root", ""); 
if (!mysql_select_db ("LoginSystem", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

// Zuerst alle Datensätze löschen um keine Dopplungen zu bekommen. 
mysql_query ("DELETE FROM benutzerdaten"); 

// Daten eintragen 
while (list ($key, $value) = each ($benutzer)) 
{ 
  // SQL-Anweisung erstellen 
  $sql = "INSERT INTO ". 
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ". 
  "VALUES ('".$value["Nickname"]."', '". 
                       md5 ($value["Kennwort"])."', '". 
                       $value["Nachname"]."', '". 
                       $value["Vorname"]."')"; 
  mysql_query ($sql); 

  if (mysql_affected_rows ($connectionid) > 0) 
  { 
    echo "Benutzer erfolgreich angelegt.<br>\n"; 
  } 
  else 
  { 
   echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
  } 
} 
?>
 
@skynic:
Aus dem was du hier schreibst schließe ich, dass du dich mit PHP scheinbar noch nie beschäftigt hast. Bitte nimm mir das nicht böse, aber beschäftige dich lieber erstmal mit den Grundlagen von PHP. Du hast sonst von dem ganzen keinen Nutzen!

Das Script welches dir dort vorliegt brauchst du nur im Browser ausführen. Es baut selbstständig eine Verbindung zur Datenbank auf und richtet die Testbenutzer ein. Das natürlich nur, sofern die korrekten Zugangsdaten im Script angegeben wurden. Da dieses Tutorial als Denkansatz dienen soll und kein komplettes LoginSystem darstellt, ist auch keine Administrationsoberfläche oder ein RegistrierungsScript dabei.
 
ja ich weis, dass ich noch anfänger bin aber das script is das beste, was ich finden konnte was dem entspricht, was ich suche, mehr brauch ich auch nich

ich hoffe trotzdem ihr könnt mir bei ein anderen Fehler weiterhelfen

da ist jetzt ein bisschen was hinzugefügt, weil es mit 2 user ebenen sein soll aber es zeigt noch fehler an

Parse error: parse error in /member_area/login.php on line 40
muss noch irgendwo etwas hinzugefügt werden?

hier mal das geänderte script



Tabelle
PHP:
CREATE TABLE benutzerdaten ( 
  Id Int(11) NOT NULL auto_increment,
  Priv Int(1) NOT NULL default '', 
  Nickname VarChar(50) NOT NULL default '', 
  Kennwort VarChar(50) NOT NULL default '', 
  Nachname VarChar(50) NOT NULL default '', 
  Vorname VarChar(50) NOT NULL default '', 
  PRIMARY KEY (Id) 
)

Testbenutzer
PHP:
<?php 
// Definition der Benutzer 
$benutzer[0]["Nickname"] = "admin"; 
$benutzer[0]["Kennwort"] = "admin"; 
$benutzer[0]["Nachname"] = "Mustermann"; 
$benutzer[0]["Vorname"] = "Max";
$benutzer[0]["Priv"] = "1";

$benutzer[1]["Nickname"] = "test"; 
$benutzer[1]["Kennwort"] = "abc"; 
$benutzer[1]["Nachname"] = "Kunze"; 
$benutzer[1]["Vorname"] = "Martin";
$benutzer[1]["Priv"] = "2";


// Sie können an dieser Stelle beliebig viele Benutzer anlegen. 
// Achten Sie dabei nur auf die Fortführung der Nummer. 

// Aufbau der Datenbankverbindung 
$connectionid  = mysql_connect ("localhost", "root", ""); 
if (!mysql_select_db ("LoginSystem", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

// Zuerst alle Datensätze löschen um keine Dopplungen zu bekommen. 
mysql_query ("DELETE FROM benutzerdaten"); 

// Daten eintragen 
while (list ($key, $value) = each ($benutzer)) 
{ 
  // SQL-Anweisung erstellen 
  $sql = "INSERT INTO ". 
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ". 
  "VALUES ('".$value["Nickname"]."', '". 
                   md5($value["Kennwort"])."', '". 
                       $value["Nachname"]."', '". 
                       $value["Vorname"]."')"; 
  mysql_query ($sql); 

  if (mysql_affected_rows ($connectionid) > 0) 
  { 
    echo "Benutzer erfolgreich angelegt.<br>\n"; 
  } 
  else 
  { 
   echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
  } 
} 
?>

formular.php
PHP:
<?php session_start (); ?> 
<html> 
<head> 
  <title>Login</title> 
</head> 

<body> 
<?php 
if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
<form action="login.php" method="post"> 
  Name: <input type="text" name="name" size="20"><br> 
  Kennwort: <input type="password" name="pwd" size="20"><br> 
  <input type="submit" value="Login"> 
</form> 
</body> 
</html>

login.php
PHP:
<?php 
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "root", ""); 
if (!mysql_select_db ("LoginSystem", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 
  $_SESSION["user_priv"] = $data["Priv"]; 

  //Abfrage
if($_SESSION["user_priv"]==1){ 
  //zeige nur Memberbereich 
  header ("Location: intern.php"); 
}elseif($_SESSION["user_priv"]==2){ 
  //zeige Council-Bereich
  header ("Location: intern2.php") 
} 
else 
{ 
  header ("Location: formular.php?fehler=1"); 
} 
?>

checkuser.php
PHP:
<?php 
session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
  header ("Location: formular.php"); 
} 
?>

intern.php und intern2.php
PHP:
<?php 
include ("checkuser.php"); 
?> 
<html> 
<head> 
  <title>Interne Seite</title> 
</head> 
<body> 
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br> 
  Nickname: <?php echo $_SESSION["user_nickname"]; ?><br> 
  Nachname: <?php echo $_SESSION["user_nachname"]; ?><br> 
  Vorname: <?php echo $_SESSION["user_vorname"]; ?> 
  <hr> 
  <a href="logout.php">Ausloggen</a> 
</body> 
</html>

logout.php
PHP:
<?php 
// Wird ausgeführt um mit der Ausgabe des Headers zu warten. 
ob_start (); 

session_start (); 
session_unset (); 
session_destroy (); 

header ("Location: formular.php"); 
ob_end_flush (); 
?>
 
Ja, 2 Fehler habe ich entdeckt. In der testdaten.php zur Eintragung der Benutzer erstellst du zwar das Array korrekt für den Wert Priv, fügst diesen aber in der Datenbank nicht ein. So müsste der abschnitt aussehen:
PHP:
// Daten eintragen 
while (list ($key, $value) = each ($benutzer)) 
{ 
  // SQL-Anweisung erstellen 
  $sql = "INSERT INTO ". 
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname, Priv) ". 
  "VALUES ('".$value["Nickname"]."', '". 
                   md5($value["Kennwort"])."', '". 
                       $value["Nachname"]."', '". 
                       $value["Vorname"]."', '".
                       $value["Priv"]."')";
  mysql_query ($sql); 

  if (mysql_affected_rows ($connectionid) > 0) 
  { 
    echo "Benutzer erfolgreich angelegt.<br>\n"; 
  } 
  else 
  { 
   echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
  } 
}

Der nächste Fehler liegt in der login.php. Hier das gleiche Spiel. Du versuchst zwar richtig auf den Wert zuzugreifen mit $data["Priv"], liest den Wert aber aus der Datenbank nicht aus. So müsste es aussehen:
PHP:
$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname, Priv ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql);
 
danke :)

aber 1 Fehler ist immer noch irgendwo in der login.php
Parse error: parse error in member_area/login.php on line 45 - wäre die letzte Zeile
PHP:
<?php 
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("", "", ""); 
if (!mysql_select_db ("", $connectionid)) 
{ 
  die ("No connection to database."); 
} 

$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname, Priv ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 
  $_SESSION["user_priv"] = $data["Priv"]; 

  //Abfrage
if($_SESSION["user_priv"]==1){ 
  //zeige nur Memberbereich 
  header ("Location: intern.php"); 
}elseif($_SESSION["user_priv"]==2){ 
  //zeige Council-Bereich
  header ("Location: intern2.php") 
} 
else 
{ 
  header ("Location: formular.php?fehler=1"); 
} 
?>
 
Mhhh bin mir nicht ganz sicher, aber könnte es daran liegen, dass ein Semikolon fehlt?
PHP:
header ("Location: intern2.php")
 
Zurück