Kuddelmuddel im var Vergleich

vinc5nt

Erfahrenes Mitglied
Hallo,

der Titel ist nicht unbedingt der beste, aber ich weiß nicht unter welchem Titel ich mein Problem ansonsten am Trefflichsten bezeichnen könnte. Also, ich möchte einen Login für mein PHP-AdminPanel. Hierfür benutz ich z.Zt. aus Jux und Dollerei *.dat Datein und keine MYSQL Dbs. Formular template wird in admin.php included; Name & Passwort werden angegeben; action=login wird ausgeführt - diese Funktion sieht wie folgt aus ... dabei sei noch erwähnt, dass die login funktion auf eine user.dat zugreift um Benutzernamen und passwort auszulesen.

PHP:
	$user_file="user.dat";
	$user_content=file($user_file,"r"); 	//file() - one line is one array
	$user_number=count($user_content);

if($action=="login") 
		{
		if($user_content) 
			{
			for($i = 1; $i < $user_number; $i++)
				{
				$user_file_name = $user_content[0];
				$user_file_password = $user_content[1];
				echo $user_file_name;
				echo $user_file_password;
				echo $form_login_name;
				}
			} else 
			{
			echo "user.dat doesn't exist!";
			}
			
		if($user_file_name == $form_login_name) //User exists?
			{
			if($form_login_password == $user_file_password) //Password right? 
				{
				echo "logged in!";
				} else
				{
				echo "<div align=\"center\"><table width=\"645\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
				echo "	<tr bgcolor=\"#333333\">";
				echo "		<td width=\"200\">";
				echo "		<div align=\"center\"><font color=\"#FFFFFF\" size=\"1\" face=\"Arial, Helvetica, sans-serif\">lichtkasten.adminpanel</font></div></td>";
				echo "		<td>&nbsp;</td>";
				echo "	</tr>";
				echo "  <tr bgcolor=\"#CCCCCC\">";
				echo "		<td><font color=\"#000000\" size=\"1\" face=\"Arial, Helvetica, sans-serif\">The password you've entered is wrong!</font></td>";
				echo "		<td>&nbsp;</td>";
				echo "	</tr>";
				echo "</table></div>";
				}
			} else
			{
			echo "<div align=\"center\"><table width=\"645\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
			echo "	<tr bgcolor=\"#333333\">";
			echo "		<td width=\"200\">";
			echo "		<div align=\"center\"><font color=\"#FFFFFF\" size=\"1\" face=\"Arial, Helvetica, sans-serif\">lichtkasten.adminpanel</font></div></td>";
			echo "		<td>&nbsp;</td>";
			echo "	</tr>";
			echo "  <tr bgcolor=\"#CCCCCC\">";
			echo "		<td><font color=\"#000000\" size=\"1\" face=\"Arial, Helvetica, sans-serif\">User doesn't exist!</font></td>";
			echo "		<td>&nbsp;</td>";
			echo "	</tr>";
			echo "</table></div>";
			}
		}


Gruß & Dank,
vincent
 
der Titel ist nicht unbedingt der beste, aber ich weiß nicht unter welchem Titel ich mein Problem ansonsten am Trefflichsten bezeichnen könnte. Also, ich möchte einen Login für mein PHP-AdminPanel. Hierfür benutz ich z.Zt. aus Jux und Dollerei *.dat Datein und keine MYSQL Dbs. Das Formular template wird in admin.php included; Name & Passwort werden angegeben; action=login wird ausgeführt - diese Funktion sieht wie folgt aus ... dabei sei noch erwähnt, dass die login funktion auf eine user.dat zugreift um Benutzernamen und passwort auszulesen.

Schön doch wo ist dein Problem?
Ich habe jetzt keine Lust den ganzen Code zu kopiern [..], um dieses Problem selbst herauszufinden.
Also könntest du vielleicht eine Beschreibung deines Problems liefern ;).

Ich hoffe nur,dass deine Datein keine sensiblen Informationen enthalten, denn man kann sie sich ja ganz normal im Browser anschauen.
 
Wenn du eh mit textdateien arbeitest dann mach es halt sauber ;D

also hier ist nen textbasierendes login verfahren und sowas von einfach ;D

PHP:
<?
/* die klasse useracc (user.class.php) */
class useracc{
	var $username;
	var $userpass;

	function useracc($username,$userpass){
		$this->username = md5($username);
		$this->userpass = md5($userpass);
	}
}
?>

somit hätten wir schonmal ein user Objekt

nun kommen wir mal zum eigentlichen regestrieren eines users
PHP:
<?
include("user.class.php");
$userfile = "users.dat";

$users = array();
/* hier können wir nun einfach mehrere zeilen machen pro zeile = 1 user */
$users[] = new useracc("sonic","test"); 
$users[] = new useracc("sonic2","geheim"); 

$filedata=serialize($users);
$handel=fopen($userfile,"w+b");
fwrite($handel,$filedata);
fclose($handel);
?>
soweit sogut
wenn wir diese datei nun aufgerufen haben , haben wir nun 2 neue user

und nun zum eigentlichen login
PHP:
<?
include("user.class.php");
$userfile = "users.dat";
/* wir nehmen den usernamen ja über das formular hier hab ichs nun einfach mal hart reingeschrieben */
$username="sonic"; 
$userpass="test";

$handle=fopen($userfile,"r");
$contents = fread($handle, filesize ($userfile));
fclose ($handle);
$users = unserialize($contents);

foreach($users as $value){
	if($value -> username == md5($username) && $value -> userpass == md5($userpass)){
		$login = true;
		break;
	}
}
if($login)
	echo "eingelockt";
?>

der vorteil liegt auf der hand
erstens ist alles verschlüsselt falls einer das file in die hand bekommt! ;)
2tens
arbeiten wir mit objekten :D
und 3tens mit serialize *G*

der einzigste punkt ist nur der
wenn ein neuer user hinzugefügt werden muss dann müsste man noch eine add.user.php bauen die praktisch das vorhandene array erweitert und wieder speichert

PHP:
<?
include("user.class.php");
$userfile = "users.dat";

$handle=fopen($userfile,"r");
$contents = fread($handle, filesize ($userfile));
fclose ($handle);
$users = unserialize($contents);

/* hier können wir nun einfach mehrere zeilen machen pro zeile = 1 user */
$users[] = new useracc("sonic3","geheim2"); 

$filedata=serialize($users);
$handel=fopen($userfile,"w+b");
fwrite($handel,$filedata);
fclose($handel);

wenn nun alle user eingetragen wären (also alle 3) dann würde der inhalt der textdatei so aussehen
die user
$users[] = new useracc("sonic1","passwort1");
$users[] = new useracc("sonic2","passwort2");
$users[] = new useracc("sonic3","passwort3");

und der inhalt der textdatei
PHP:
a:3:{i:0;O:7:"useracc":2:{s:8:"username";s:32:"796873118d0c2e835fe0336982444f0e";s:8:"userpass";s:32:"64397c8527190222aa6d61b3c23f8e84";}i:1;O:7:"useracc":2:{s:8:"username";s:32:"8d1bb5260862fede1562a07fc77c2ba7";s:8:"userpass";s:32:"0a4ff18a7d23f8b3ded5eaf93104ac88";}i:2;O:7:"useracc":2:{s:8:"username";s:32:"6c0854121d162314d47e46cbd3048e0b";s:8:"userpass";s:32:"e0f61246b3f652d58ded238249476589";}}
 
Zuletzt bearbeitet:
wow.... sauberes Teil!

Ich merke aber, dass ich noch ne Menge zu lernen hab. Vielleicht sollte ich dafür einen neuen Thread eröffnen, oder die Such-Funktion benutzen, aber kann mir einer so außem Ärmel ein tolles PHP Buch nennen - eines das auch als Nachschlagewerk zu gebrauchen ist. Mir kostet es so wie ich z.Zt. PHP betreibe (Trial & Error) einfach zuviel Zeit :)

dank & Gruß,
vincent
 
iwo quark
machs anders
wennde ne frage hast meld dich bei mir im icq:72410480
nachschlagen brauchste meistens nicht
ist eigentlich ens easy ;D
und zur not tut es google :)
 
Zurück