Warum tuts mein Login-script nicht?

Kalma

Erfahrenes Mitglied
Hey,

ich habe ein Login-Script gebaut, das über 2 Datenbanken geht... Nur leider will das nicht :(

Es soll für bands und locations sein. Wenn der User Locations ausgewählt hat, wird aus Locations ausgelesen, sonst aus bands.

Hier mein formular:
http://dfmusik.de/index.php?section=mlogin

Und hier das Script zum einloggen
PHP:
<?php
	//posten
	$nickname					= $_POST['nickname'];
	$passwort					= $_POST['passwort'];
	$loginas					= $_POST['loginas'];
	
	//passwort verschlüsseln
	$passwort					= md5($passwort);
	
	
	//prüfen, ob id oder email angegeben wurde
	
	//wenn das korrekt ist, ist die abfrage nach id
	if ($loginas == "band")
		{
			if (preg_match("=^[0-9]+$=i",$nickname)) 
				{
					$Result = mysql_query("SELECT
																		*
														 		 FROM
														 		 		bands
														 		 WHERE
														 		 		`id`='$nickname'
														 		 AND
														 		 		`passwort`='$passwort'
														 		 LIMIT 1");
				}
			else
				{			
					$Result = mysql_query("SELECT
																		*
														 		 FROM
														 		 		bands
														 		 WHERE
														 		 		`email`='$nickname'
														 		 AND
														 		 		`passwort`='$passwort'
														 		 LIMIT 1");			
				}			 		
		}
	else
		{
			if (preg_match("=^[0-9]+$=i",$nickname)) 
				{
					$Result = mysql_query("SELECT
																		*
														 		 FROM
														 		 		locations
														 		 WHERE
														 		 		`id`='$nickname'
														 		 AND
														 		 		`passwort`='$passwort'
														 		 LIMIT 1");
				}
			else
				{			
					$Result = mysql_query("SELECT
																		*
														 		 FROM
														 		 		locations
														 		 WHERE
														 		 		`email`='$nickname'
														 		 AND
														 		 		`passwort`='$passwort'
														 		 LIMIT 1");			
				}		
		}
		
		if (mysql_num_rows($Result) > 0)
			{
				$data	= mysql_fetch_array($Result);
				
				$_SESSION["m_id"]				= $data['id'];
				$_SESSION["m_name"]			= $data['name'];
			
				header ("location: ?section=index");
			}
		else
			{
				header("location: ?section=bands");
			}
?>


Außerdem soll der einzuloggende noch zwischen ID/Email entscheiden können. Das heißt, er soll entweder seine ID angeben oder seine Email-Adresse.

Aber irgendwie das bei mir nicht :(


David
 
Was genau heisst "geht nicht"? An welcher Stelle hängts?

Übrigens solltest du ein "mysql_real_escape_string()" über die Werte laufen lassen, die du in das SQL packst. Wir wollen ja kein SQL-Injection erlauben ;)

Azi
 
ehm also
diese Abfragen was du da machst sind eigentlich naja überflüssig es würde auch ein ganz simples

Code:
SELECT * FROM bands WHERE `email`='$nickname' OR `id`='$nickname'  AND passwort`='$passwort' LIMIT 1

Code:
SELECT * FROM locations WHERE `email`='$nickname'  OR `id`='$nickname'  AND passwort`='$passwort' LIMIT 1

tun :)

da muss er nicht erst auswählen ob ID oder email sondern er selektiert beides.
Und da es ja im normalfall eindeutig sein sollte *wie solls den sonst gehen* haste auch beides ohne dem umständlichen regex
 
Zuletzt bearbeitet:
LIMIT 1 kann man auch weglassen, da ja nur ein Ergebnis zurückgeliefert werden kann (solange email in der DB als unique deklariert ist).
 

Neue Beiträge

Zurück