• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

login lässt mich nicht rein

KIUNES

New member
Hy ich sitz jetzt hier schon seit 2stunden an diesem banalen login und der lässt mich trotz richtiger zugangsdaten nicht rein, sieht einer den fehler?

PHP:
if($_GET['action']=="login"){
$loginname = $_POST['loginname'];
$passwort = $_POST['passwort'];
$passwort = md5($passwort);
$sql = mysql_query("SELECT * FROM ava_users WHERE username='$loginname' AND password='$passwort' AND activate='1'");
$login_check = mysql_num_rows($sql);

if($login_check > 0){
    while($row = mysql_fetch_array($sql)){
	$user_id = $row['id'];
	 setcookie("admin_username", $loginname, time()+60*60*24*100);
	 setcookie("admin_code2", $passwort, time()+60*60*24*100);
	 setcookie("admin_userid2", $user_id, time()+60*60*24*100);
    }
}
else{
$error = "<span style='font-size:11px; color:#b40101; font-family:Arial;'><b>Anmeldung fehlgeschlagen</b><br /><br />Entweder ist ihr Account gesperrt oder das Passwort ist falsch!</span>";
}
}
 
mein gott ihr immer mit eurem sql-injection :) ich schütz das später schon, muss aber erstmal funzen ;)

Wie kann ich mir das denn anzeigen lassen?
 
mein gott ihr immer mit eurem sql-injection :) ich schütz das später schon, muss aber erstmal funzen ;)
Das haben sich die Entwickler von Joomla, wordpress, BB Board usw usf. wahrscheinlich auch gedacht, ist natürlich mies für die Leute, die solche Skripte nutzen müssen, denn du wirst hinterher kaum alle Stellen finden, wo sowas möglich wäre.

Und wir sind hier ein Forum, in dem auch Anfänger lesen/schreiben - und die müssen lernen, dass bei so Code sofort die Alarmglocken schrillen müssen.

Wie kann ich mir das denn anzeigen lassen?
ich glaub der Befehl in PHP für sowas lautet echo
 
Bei deiner Abfrage kann sich jeder per SQL-Injection einloggen.

Mal was generelles zum debugen:
- lass dir dein SQL-String ausgeben und probiere den über phpMyAdmin aus. Vielleicht liefert der dir schon kein Ergebnis zurück.
- schreib nach jeder zeile nen eindeutiges echo (zb echo 1; ... echo 2; ... echo 3;) dann siehst du welchen weg dein Script nimmt. Überleg dir warum es dass tut, lass die entscheidene variablen ausgeben (am besten mit var_dump()).
 
Eine ganz einfache Methode hier Injections zu verhindern wäre:
PHP:
if($_GET['action']=="login"){
	$loginHash = md5($_POST['loginname'] . ":" . $_POST['passwort']);
	$sql = mysql_query("SELECT * FROM ava_users WHERE loginHash='$loginHash' AND activate='1'");
	$login_check = mysql_num_rows($sql);
	
	if($login_check > 0){
		while($row = mysql_fetch_array($sql)){
		$user_id = $row['id'];
		$loginname = $row['username'];
		$passwort = $row['password'];
		setcookie("admin_username", $loginname, time()+60*60*24*100);
		setcookie("admin_code2", $passwort, time()+60*60*24*100);
		setcookie("admin_userid2", $user_id, time()+60*60*24*100);
	}
}
else{
	$error = "<span style='font-size:11px; color:#b40101; font-family:Arial;'><b>Anmeldung fehlgeschlagen</b><br /><br />Entweder ist ihr Account gesperrt oder das Passwort ist falsch!</span>";
	}
}
 
sicher dass username/pw stimmen?
probiers mal mit:
Username: 1' OR 1 --
Passwort: roflcopter

scnr
 
Zurück
Oben