Login Script Erweiterung ?

Killer Zombie

Grünschnabel
Hallo @all,

ich habe das Login Script Tutorial von hier ( http://www.tutorials.de/tutorials9684.html ) in meiner Website integriert und muss sagen, das ich sehr zufrieden damit bin, jedoch ist mir ne kleinigkeit aufgefallen die fehlt, die doch recht wichtig (zumindest in meinen Augen ) ist. Und zwar fehlt eine Passwort ändern / editieren Funktion.

Leider bin ich selbst noch nicht soweit, dies selbst zu erstellen, deswegen wolte ich mal nachfragen, ob der Autor selbst des Tutorials (schöne grüße aus Gallinchen nach CB :-) ) oder ein anderer Experte da noch diese erweiterung coden könnte.

Über unterstützung wäre ich sehr erfreut :)

Danke im Voraus.

Killer Zombie
 
PHP-Fan hat gesagt.:
Frag die Daten einfach ab, und mit der UPDATE funktion (vorher ein Formular erstellen) änderst du es. Achte aber auf die md5 verschlüsselung. Wenn du es nicht hinbekommst, schreib mich mal im ICQ an: ***

Mfg,
@Killer Zombie: Wenn du es nicht hinbekommst, dann schreib das bitte hier, damit jeder was davon hat!
@PHP-Fan: Du magst zwar ein Fan von PHPsein, aber mit deinem Verhalten wird PHP kein Fan von dir, da der Grundgedanke etwas "aneckt" :D
 
Zuletzt bearbeitet von einem Moderator:
Jörg Rißmann hat gesagt.:
@Killer Zombie: Wenn du es nicht hinbekommst, dann schreib das bitte hier, damit jeder was davon hat!

Ja sorry das ich erst so spät Antworte... (muss ja auch mal arbeiten ;) )

Also ich bekomme es leider nicht alleine hin und es ist natürlich auch in meinen Intesse, das dann alle etwas davon haben :)

Killer Zombie
 
Mal eine kleine Anregung.

users.php
PHP:
<?php
$changesection="main";
if (isset($_POST['insert']))
 {
  $insert=$_POST['insert'];
 }
if (isset($insert))
 {
  if (isset($_POST['username']))
   {
    $username=$_POST['username'];
   }
  if (isset($_POST['password']))
   {
    $password=$_POST['password'];
   }
  if (isset($_POST['email']))
   {
    $email=$_POST['email'];
   }
  if (isset($_POST['userlevel']))
   {
    $userlevel=$_POST['userlevel'];
   }
  if ((!empty($username)) && (!empty($password)) && (!empty($email)))
   {
    $users=mysql_query("select * from users where username='$username'",$db);
    $user=mysql_fetch_assoc($users);
    if (empty($user))
     {
      if (empty($userlevel))
       {
        $userlevel=1;
       }
      $cryptedpassword=sha1($password);
      mysql_query("insert into users (username,password,email,userlevel) values ('$username','$cryptedpassword','$email','$userlevel')",$db);
      $changes[$changesection].='User <b>'.$username.'</b> has been inserted into database<br>';
      if (!isset($_SESSION['id']))
       {
        $users=mysql_query("select * from users where username='$username'",$db);
        $user=mysql_fetch_assoc($users);
        $_SESSION['id']=$user['id'];
        header("Location:index.php".$sessionparm);
       }
     }
    else
     {
      $changes[$changesection].='User could not be inserted into database<br>';
      $changes[$changesection].='Username <b>'.$username.'</b> already exists<br>';
      $changes[$changesection].='<hr>';
     }
   }
  else
   {
    $changes[$changesection].='User could not be inserted into database.<br>';
    if (empty($username))
     {
      $changes[$changesection].='Username missing<br>';
     }
    if (empty($password))
     {
      $changes[$changesection].='Password missing<br>';
     }
    if (empty($email))
     {
      $changes[$changesection].='eMail missing<br>';
     }
    $changes[$changesection].='<hr>';
   }
 }
if (isset($_SESSION['id']))
 {
  if (isset($_POST['update']))
   {
    $update=$_POST['update'];
   }
  if (isset($_GET['delete']))
   {
    $delete=$_GET['delete'];
   }
  if (isset($_GET['edit']))
   {
    $edit=$_GET['edit'];
   }
  if (isset($update))
   {
    if (isset($_POST['userid']))
     {
      $userid=$_POST['userid'];
     }
    if (isset($_POST['username']))
     {
      $username=$_POST['username'];
     }
    if (isset($_POST['oldpassword']))
     {
      $oldpassword=$_POST['oldpassword'];
     }
    if (isset($_POST['newpassword']))
     {
      $newpassword=$_POST['newpassword'];
     }
    if (isset($_POST['newpassword2']))
     {
      $newpassword2=$_POST['newpassword2'];
     }
    if (isset($_POST['email']))
     {
      $email=$_POST['email'];
     }
    if (isset($_POST['userlevel']))
     {
      $userlevel=$_POST['userlevel'];
     }
    $users=mysql_query("select * from users where id='$userid'",$db);
    $user=mysql_fetch_assoc($users);
    if ((!empty($oldpassword)) && (!empty($newpassword)) && (!empty($newpassword2)))
     {
      $cryptedoldpassword=sha1($oldpassword);
      $cryptednewpassword=sha1($newpassword);
      if ($cryptedoldpassword==$user['password'])
       {
        if ($newpassword==$newpassword2)
         {
          mysql_query("update users set password='$cryptednewpassword' where id='$userid'",$db);
          $changes[$changesection].='Password for user <b>'.$user['username'].'</b> has been updated<br>';
         }
        else
         {
          $changes[$changesection].='Password could not be updated, Passwords do not match<br>';
         }
       }
      else
       {
        $changes[$changesection].='Password could not be updated, current Password incorrect<br>';
       }
     }
    $users=mysql_query("select * from users where id='$userid'",$db);
    $user=mysql_fetch_assoc($users);
    if ((!empty($username)) && ($username!=$user['username']))
     {
      $users=mysql_query("select * from users where username='$username'",$db);
      $user=mysql_fetch_assoc($users);
      if (empty($user))
       {
        mysql_query("update users set username='$username' where id='$userid'",$db);
        $changes[$changesection].='Username has been changed to <b>'.$username.'</b><br>';
       }
      else
       {
        $changes[$changesection].='Username could not be changed, username <b>'.$username.'</b> already exists<br>';
       }
     }
    $users=mysql_query("select * from users where id='$userid'",$db);
    $user=mysql_fetch_assoc($users);
    if ((!empty($email)) && ($email!=$user['email']))
     {
      mysql_query("update users set email='$email' where id='$userid'",$db);
      $changes[$changesection].='eMail has been changed to <b>'.$email.'</b><br>';
     }
    $users=mysql_query("select * from users where id='$userid'",$db);
    $user=mysql_fetch_assoc($users);
    if ((!empty($userlevel)) && ($userlevel!=$user['userlevel']))
     {
      mysql_query("update users set userlevel='$userlevel' where id='$userid'",$db);
      $changes[$changesection].='Userlevel has been changed to <b>'.$userlevel.'</b><br>';
     }
   }
  if (isset($delete))
   {
    $id=$_SESSION['id'];
    $users=mysql_query("select * from users where id='$id'",$db);
    $user=mysql_fetch_assoc($users);
    if (($user['userlevel']==255) || ($delete==$id))
     {
      $users=mysql_query("select * from users where id='$delete'",$db);
      $user=mysql_fetch_assoc($users);
      mysql_query("delete from news where userid='$delete'",$db);
      mysql_query("delete from users where id='$delete'",$db);
      $changes[$changesection].='User <b>'.$user['username'].'</b> has been deleted from database<br>';
      if ($delete==$id)
       {
        header("Location:index.php?subsite=logout.php".$sessionparm_header);
       }
     }
    else
     {
      $changes[$changesection].='Access denied!<br>';
     }
   }
  if (isset($edit))
   {
    $id=$_SESSION['id'];
    $users=mysql_query("select * from users where id='$id'",$db);
    $user=mysql_fetch_assoc($users);
    $accesslevel=$user['userlevel'];
    if (($accesslevel==255) || ($edit==$id))
     {
      $users=mysql_query("select * from users where id='$edit'",$db);
      $user=mysql_fetch_assoc($users);
      $changes[$changesection].='<form method="post" action="index.php?subsite=users.php'.$sessionparm_link.'">';
      $changes[$changesection].='<table class="vistable">';
      $changes[$changesection].='<tr><td>Username:</td><td><input type="text" name="username" value="'.$user['username'].'"></td></tr>';
      $changes[$changesection].='<tr><td>Old Password:</td><td><input type="password" name="oldpassword"></td></tr>';
      $changes[$changesection].='<tr><td>New Password:</td><td><input type="password" name="newpassword"></td></tr>';
      $changes[$changesection].='<tr><td>Confirm new Password:</td><td><input type="password" name="newpassword2"></td></tr>';
      $changes[$changesection].='<tr><td>eMail:</td><td><input type="text" name="email" value="'.$user['email'].'"></td></tr>';
      if ($accesslevel==255)
       {
        $changes[$changesection].='<tr><td>Userlevel:</td><td><input type="text" name="userlevel" value="'.$user['userlevel'].'"></td></tr>';
       }
      $changes[$changesection].='</table>';
      $changes[$changesection].='<input type="hidden" name="userid" value="'.$user['id'].'">';
      $changes[$changesection].='<input type="submit" name="update" value="Update User">';
      $changes[$changesection].='<input type="submit" name="cancel" value="Cancel">';
      $changes[$changesection].='</form>';
     }
    else
     {
      $changes[$changesection].='Access denied!<br>';
     }
   }
  else
   {
    $id=$_SESSION['id'];
    $users=mysql_query("select * from users where id='$id'",$db);
    $user=mysql_fetch_assoc($users);
    $accesslevel=$user['userlevel'];
    if ($accesslevel==255)
     {
      $changes[$changesection].='<form method="post" action="index.php?subsite=users.php'.$sessionparm_link.'">';
      $changes[$changesection].='<table class="vistable">';
      $changes[$changesection].='<tr><td>Username:</td><td><input type="text" name="username"></td></tr>';
      $changes[$changesection].='<tr><td>Password:</td><td><input type="password" name="password"></td></tr>';
      $changes[$changesection].='<tr><td>eMail:</td><td><input type="text" name="email"></td></tr>';
      $changes[$changesection].='<tr><td>Userlevel:</td><td><input type="text" name="userlevel"></td></tr>';
      $changes[$changesection].='</table>';
      $changes[$changesection].='<input type="submit" name="insert" value="Add User">';
      $changes[$changesection].='</form>';
     }
    $changes[$changesection].='<table class="vistable" border="1">';
    $changes[$changesection].='<tr><th>Username</th><th>eMail</th>';
    if ($accesslevel==255)
     {
      $changes[$changesection].='<th>Userlevel</th>';
     }
    $changes[$changesection].='<th colspan="2">Action</th></tr>';
    if ($accesslevel==255)
     {
      $users=mysql_query("select * from users order by username",$db);
      while ($user=mysql_fetch_assoc($users))
       {
        $changes[$changesection].='<tr><td>'.$user['username'].'</td><td>'.$user['email'].'</td><td>'.$user['userlevel'].'</td>';
        $changes[$changesection].='<td><a href="index.php?subsite=users.php&amp;edit='.$user['id'].$sessionparm_link.'">Edit</a></td>';
        $changes[$changesection].='<td><a href="index.php?subsite=users.php&amp;delete='.$user['id'].$sessionparm_link.'">Delete</a></td>';
        $changes[$changesection].='</tr>';
       }
     }
    else
     {
      $changes[$changesection].='<tr><td>'.$user['username'].'</td><td>'.$user['email'].'</td>';
      $changes[$changesection].='<td><a href="index.php?subsite=users.php&amp;edit='.$user['id'].$sessionparm_link.'">Edit</a></td>';
      $changes[$changesection].='<td><a href="index.php?subsite=users.php&amp;delete='.$user['id'].$sessionparm_link.'">Delete</a></td>';
      $changes[$changesection].='</tr>';
     }
    $changes[$changesection].='</table>';
   }
 }
else
 {
  $changes[$changesection].='<form method="post" action="index.php?subsite=users.php'.$sessionparm_link.'">';
  $changes[$changesection].='<table class="vistable">';
  $changes[$changesection].='<tr><td>Username:</td><td><input type="text" name="username"></td></tr>';
  $changes[$changesection].='<tr><td>Password:</td><td><input type="password" name="password"></td></tr>';
  $changes[$changesection].='<tr><td>eMail:</td><td><input type="text" name="email"></td></tr>';
  $changes[$changesection].='</table>';
  $changes[$changesection].='<input type="submit" name="insert" value="Register User">';
  $changes[$changesection].='</form>';
 }
?>

Dieses Script ist gross und macht eine Menge. Und zwar sozusagen alles was mit meinen Usern zu tun hat.
Ruft ein nicht eingeloggter User dieses Script auf, findet er sich im Registrierungs-Formular.
Ist der User eingeloggt kommt es darauf an ob er Admin ($accesslevel==255) oder nicht ist.
Dem Admin werden dort alle User angezeigt, diese koennen editiert und geloescht werden. Weiterhin kann der Admin weitere User anlegen.
Ein normaler User sieht nur seine eigenen Daten und kann diese editieren oder auch seinen User loeschen.

Bei der Programmierung habe ich Wert darauf gelegt, dass beim Edit- oder Delete-Link nicht die Moeglichkeit besteht einfach die ID auszutauschen. Soll heissen, ein normaler User kann nur auf seine eigenen Daten zugreifen. Alles andere wird vom Script nicht zugelassen.
 
@ reptiler

Das sieht ganz gut aus und es hört sich auch toll an, aber jedoch happert es leider an der Anpassung bei mir :(

Die DB verbindung fehlt in deinen Code, dann gibt es keine Mail Addy, Benutzer Level in den Login Script... (brauch ich eigentlich auch garnicht^ ^ )

Tja schade, vielleicht kannst du es ja noch entsprechend anpassen, ansonsten trotzdem danke.

Killer Zombie
 
Sorry fuer die verspaetete Antwort, bin aber grad aus dem Urlaub zurueck.
Bin fuer eine Woche mal fix auf die Filipinen ruebergesprungen. Waren ja nur 2 Stunden Flug.

Die DB-Verbindung ist nicht im Script, da ich dafuer ein seperates Script habe, welches in der index.php includet wird. Auch das hier gepostete Script wird in der index.php includet, daher besteht die Verbindung zur DB schon wenn das Script ablaeuft.
Das mit den Userleveln ist in dem Script recht wichtig, da ich anhand dessen erkenne ob ein User Admin ist oder nicht. Das wird z.B. beim Loeschen benoetigt und auch bei der Anzeige der User.
Ansonsten kann der Rest eigentlich recht einfach entfernt werden.

Vielleicht finde ich am Wochenende mal die Zeit alles was Du nicht brauchst rauszuschmeissen, dann hast Du aber keine Moeglichkeit mehr zu unterscheiden ob Admin oder nicht. Dann sieht jeder User nur sich selbst und kann nur sich selbst editieren/loeschen.
 

Neue Beiträge

Zurück