Hallo, ich habe gleich zwei Probleme und schon selbst in diversen Foren und auch hier gesucht .. komme aber nicht wirklich zu einer Lösung und hoffe nun hier auf Hilfe.
Mein erstes Problem liegt darin, das bei meinem Loginscript nicht auf die Groß und Kleinschreibung geachtet wird. In der Datenbank steht z.b "Benutzer", jedoch könnte man sich auch mit BENUTZER oder BeNuTzEr einloggen, dementsprechend wirft mir die Session auch diesen Namen aus. Ich möchte allerdings das die Groß und Kleinschreibung beim einloggen beachtet wird und sich nur mit dem eingeloggt werden kann was auch in der Datenbank steht, in dem Fall "Benutzer".
Ich prüfe den Login so:
Quote:
$username = sql_clean($_POST['username']);
$password = md5($_POST['password']);
$crypt_pass = ($password);
$sql1 = mssql_query("SELECT * FROM dbo.tUser WHERE sUserID = '".$username."");
$result1 = mssql_num_rows($sql1);
$sql2 = mssql_query("SELECT sUserPW FROM dbo.tUser WHERE sUserID = '".$username."'");
$result2 = mssql_fetch_row($sql2);
$sql3 = mssql_query("SELECT bIsBlock FROM dbo.tUser WHERE sUserID = '".$username."'");
$result3 = mssql_fetch_row($sql3);
if($result1 == '0') {
echo '<font color="red">Benutzername falsch!</font>';
}
elseif($result2[0] != $crypt_pass) {
echo '<font color="red">Passwort falsch!</font>';
}
elseif($result3[0] != 'True') {
echo '<font color="red">Dein Account wurde gebannt!</font>';
}
elseif($_GET['login'] != 'login' && $result1 == '0') {
echo '<font color="red">Anmeldung fehlgeschlagen. Bitte erneut versuchen!</font>';
} else {
setcookie("login", $username, time()+3600); # 1 Stunde gültig
$_SESSION['username'] = $username;
header('location: '.$_SERVER['PHP_SELF']);
}
|
Ich hab dazu nun diversen Sachen im Internet gefunden wie ich soll BINARY verwenden oder !== jedoch hat das alles nicht funktioniert. Ich hatte dieses Problem bereits 1x jedoch mit einer Mysql Datenbank dort hab ich statt für sql_clean einen anderen Befehl gehabt .. nur ist mir dieser leider entfallen.
Mein zweites Problem wäre eine Abfrage aus der Datenbank (Siehe Abb.).
Gewöhnliche Abfragen aus 1 Tabelle krieg ich soweit hin, das würde ungefähr so aussehen:
Code:
$rang = "SELECT nAuthID FROM dbo.tUser WHERE sUserID = '".$_SESSION['username']."'";
$rangresult = mssql_query($rang);
while($row = mssql_fetch_object($rangresult)) {
if($row->nAuthID == "9") {
echo 'Rang: Administrator';
} else {
echo 'Rang: Spieler';
}
}
Ich möchte nun aber vom eingeloggten User die "nUserNo" in der dbo.tUser ermitteln und mit der "nUserNo" soll dann der "cash" des Benutzer aus der dbo.tCash ausgelesen werden, allerdings nur wenn der Status auf True steht. Bei False soll nur nen Strich oder whatever ausgegeben werden. Bei mir sieht das dann so aus:
Code:
$selectid = "SELECT nUserNo FROM dbo.tUser WHERE sUserID = '".$_SESSION['username']."'";
$idresult = mssql_query($selectid);
while($row = mssql_fetch_object($idresult)) {
$coins = "SELECT cash FROM dbo.tCash WHERE userNo = '".$row->nUserNo."'";
$coinsresult = mssql_query($coins);
while($rowl = mssql_fetch_object($coinsresult)) {
echo 'Coins: '.$rowl->cash;
}
}
Zum einen funktioniert das ganze nur teilweise, zum anderen bin ich mir sicher das es so nicht auszusehen hat! Daher bräuchte ich auch an der Stelle mal Hilfe.
Ich würde mich freuen, wenn sich jemand dem anmimmt.