Aktivierung

  • Themenstarter Themenstarter Sweetiegeraet
  • Beginndatum Beginndatum
Hallo,

hab noch eine Frage.

Wie kann ich das da nun noch einbauen, dass der USer nur eingelogt wird, wenn der Status auf y steht:

Das habe ich bis jetzt so gemacht:

PHP:
	$sql = "SELECT
				*
			FROM
				userdata
			WHERE
				benutzername = '".strtolower(addslashes($_POST['benutzername']))."'
			";
 
Im Login-Script checkst Du nicht nur das Passwort, sondern auch den Status.
Wenn der Status N ist, dann setzt die die Session-Variablen nicht.
 
Wenn ich dich nun richtig verstanden habe, dann muss ich das so machen oder?

PHP:
	$sql = "SELECT
				*
			FROM
				userdata
					SET
					Aktiviert = 'Y',
						WHERE
						benutzername = '".strtolower(addslashes($_POST['benutzername']))."'
			";
 
Sweetiegeraet hat gesagt.:
Wenn ich dich nun richtig verstanden habe, dann muss ich das so machen oder?

PHP:
	$sql = "SELECT
				*
			FROM
				userdata
					SET
					Aktiviert = 'Y',
						WHERE
						benutzername = '".strtolower(addslashes($_POST['benutzername']))."'
			";
Was soll denn das SET da?
Zum einen glaube ich nicht, dass man SET in einem SELECT machen kann, und falls doch macht es hier absolut keinen Sinn.
Du brauchst an der Query nichts aendern, Du musst nur den eingetragenen Wert ueberpruefen, genau wie Du es mit dem Passwort machst.

Und nochwas: Warum verunstalten eigentlich alle Ihre SQL-Abfragen so? Das ist doch schrecklich.
 
Hmm ich habe das Skript nicht selber geschrieben für das Login.

Hier mal das was ich bis jetzt habe:

PHP:
//Verbindung herstellen und Datenbank auswählen
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Bei dem Verbindungsaufbau mit der Datenbank ist ein Fehler aufgetreten.<br>MySQL hat folgende Fehlermeldung ausgegeben: <tt>".mysql_error()."</tt><br>Bitte probieren Sie es später noch einmal.");
mysql_select_db(MYSQL_DATABASE) OR die("Die Verbindung mit der Datenbank konnte zwar hergestellt werden, jedoch gab es Probleme beim Auswählen der Datenbank.<br>MySQL hat folgende Fehlermeldung ausgegeben: <tt>".mysql_error()."</tt><br>Bitte Probieren Sie es später noch einmal.");

//Fehlerarray definieren
$error = array();

if(isset($_POST['login']) AND ($_POST['benutzername']) AND ($_POST['passwort']))
{
	//Daten zu dem Benutzer aus der Datenbank holen
	$sql = "SELECT
				*
			FROM
				userdata
			WHERE
				benutzername = '".strtolower(addslashes($_POST['benutzername']))."'
			";
	$result = mysql_query($sql);
	$_data = mysql_fetch_assoc($result);
	
	//Überprüfen, ob Benutzername existiert
	if(empty($_data))
	{
		$error = "Der Benutzername existiert nicht.";
	}
	else
	{
		if($_data['falschlogin'] > 5)
		{
			$sql = "UPDATE
						userdata
					SET
						falschlogin = '0',
						gesperrt = '1'
					WHERE
						benutzername = '".$_data['benutzername']."'
					";
			$return = mysql_query($sql);
			$error = "Sie haben sich mehr als 5&nbsp;mal falsch eingeloggt. Ihr Benutzerkonto ist nun aus Sicherheitsgründen gesperrt, bitte wenden Sie sich an einen Administrator.";
		}
		elseif($_data['gesperrt'])
		{
			$error = "Ihr Benutzerkonto ist gesperrt, bitte wenden Sie sich an einen Administrator.";
		}
		//Passwort überprüfen
		elseif($_data['passwort'] === md5($_POST['passwort']))
		{
			$sql = "UPDATE
						userdata
					SET
						lastlogin = NOW(),
						lastid = '".addslashes($_SERVER['REMOTE_ADDR'])."',
						falschlogin = '0'
					WHERE
						benutzername = '".addslashes($_data['benutzername'])."'
					";
			$result = mysql_query($sql);
			if(!$result) die(mysql_error());
			$sql = "REPLACE INTO user_online
					(
						benutzername,
						lastmove
					)
					VALUES
					(
						'".addslashes($_data['benutzername'])."',
						'".time()."'
					)
					";
			mysql_query($sql) or die(mysql_error());
			// Login zählen
 				$sql = "UPDATE  
 						userdata
				
				SET
 				 zaehler = zaehler + 1
				
				WHERE
				  benutzername = '".addslashes($_data['benutzername'])."'
					";
						$result = mysql_query($sql);
						if(!$result) die(mysql_error());
			//und Benutzerdaten in Session schreiben
			foreach($_data as $key => $value)
			{
				if($key == "id" || $key == "passwort") continue;
				if(empty($value)) $_SESSION[$key] = false;
				$_SESSION[$key] = $_data[$key];
			}
			//Login Daten festlegen:
			$_SESSION['login'] = time();
$sql = "DELETE FROM  guests_online WHERE guest_ip = '".$_SERVER["REMOTE_ADDR"]."'"; 
mysql_query($sql) OR die(mysql_error());			
header("Location: communiX.php".SID);
		}
		else
		{
			$sql = "UPDATE
						userdata
					SET
						falschlogin = '". ++$_data['falschlogin'] ."'
					WHERE
						benutzername = '". $_data['benutzername'] . "'
					";
			$return = mysql_query($sql);
			$error = "Falsches Passwort.";
		}
	}
}

?>

Und was meinst du mit der SQL abfrage was ist denn an der? Meinst du wegen dem einrücken?
 
Genau dieses Einruecken. Das gefaellt mir einfach nicht, scheint aber total in zu sein.
Ich find das blaeht den Code unnoetig auf.
 
JA aber wo muss ich das mit dem abfragen rein machen, dass mit dem Aktiv oder nicht Aktiv?
 
Das ist ein wirklich haessliches Script muss ich mal anmerken.
Du koenntest es so machen:
PHP:
if ($_data["Aktiviert"]=="y")
{
 foreach($_data as $key => $value)
            {
                if($key == "id" || $key == "passwort") continue;
                if(empty($value)) $_SESSION[$key] = false;
                $_SESSION[$key] = $_data[$key];
            } 
}
 
Hallo,

hmm wenn ich das so machen wie du das gesagt hast, dann bringt es gar nichts :-(

So habe ich das nn gemacht:

PHP:
//Verbindung herstellen und Datenbank auswählen
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Bei dem Verbindungsaufbau mit der Datenbank ist ein Fehler aufgetreten.<br>MySQL hat folgende Fehlermeldung ausgegeben: <tt>".mysql_error()."</tt><br>Bitte probieren Sie es später noch einmal.");
mysql_select_db(MYSQL_DATABASE) OR die("Die Verbindung mit der Datenbank konnte zwar hergestellt werden, jedoch gab es Probleme beim Auswählen der Datenbank.<br>MySQL hat folgende Fehlermeldung ausgegeben: <tt>".mysql_error()."</tt><br>Bitte Probieren Sie es später noch einmal.");

//Fehlerarray definieren
$error = array();

if(isset($_POST['login']) AND ($_POST['benutzername']) AND ($_POST['passwort']))
{
	//Daten zu dem Benutzer aus der Datenbank holen
	$sql = "SELECT
				*
			FROM
				userdata
			WHERE
				benutzername = '".strtolower(addslashes($_POST['benutzername']))."'
			";
	$result = mysql_query($sql);
	$_data = mysql_fetch_assoc($result);
	
	//Überprüfen, ob Benutzername existiert
	if(empty($_data))
	{
		$error = "Der Benutzername existiert nicht.";
	}
	else
	{
		if($_data['falschlogin'] > 5)
		{
			if ($_data["Aktiviert"]=="y") 
{ 
foreach($_data as $key => $value) 
            { 
                if($key == "id" || $key == "passwort") continue; 
                if(empty($value)) $_SESSION[$key] = false; 
                $_SESSION[$key] = $_data[$key]; 
            } 
} 

			$sql = "UPDATE
						userdata
					SET
						falschlogin = '0',
						gesperrt = '1'
					WHERE
						benutzername = '".$_data['benutzername']."'
					";
			$return = mysql_query($sql);
			$error = "Sie haben sich mehr als 5&nbsp;mal falsch eingeloggt. Ihr Benutzerkonto ist nun aus Sicherheitsgründen gesperrt, bitte wenden Sie sich an einen Administrator.";
		}
		elseif($_data['gesperrt'])
		{
			$error = "Ihr Benutzerkonto ist gesperrt, bitte wenden Sie sich an einen Administrator.";
		}
		//Passwort überprüfen
		elseif($_data['passwort'] === md5($_POST['passwort']))
		{
			$sql = "UPDATE
						userdata
					SET
						lastlogin = NOW(),
						lastid = '".addslashes($_SERVER['REMOTE_ADDR'])."',
						falschlogin = '0'
					WHERE
						benutzername = '".addslashes($_data['benutzername'])."'
					";
			$result = mysql_query($sql);
			if(!$result) die(mysql_error());
			$sql = "REPLACE INTO user_online
					(
						benutzername,
						lastmove
					)
					VALUES
					(
						'".addslashes($_data['benutzername'])."',
						'".time()."'
					)
					";
			mysql_query($sql) or die(mysql_error());
			// Login zählen
 				$sql = "UPDATE  
 						userdata
				
				SET
 				 zaehler = zaehler + 1
				
				WHERE
				  benutzername = '".addslashes($_data['benutzername'])."'
					";
						$result = mysql_query($sql);
						if(!$result) die(mysql_error());
			//und Benutzerdaten in Session schreiben
			foreach($_data as $key => $value)
			{
				if($key == "id" || $key == "passwort") continue;
				if(empty($value)) $_SESSION[$key] = false;
				$_SESSION[$key] = $_data[$key];
			}
			//Login Daten festlegen:
			$_SESSION['login'] = time();
$sql = "DELETE FROM  guests_online WHERE guest_ip = '".$_SERVER["REMOTE_ADDR"]."'"; 
mysql_query($sql) OR die(mysql_error());			
header("Location: communiX.php".SID);
		}
		else
		{
			$sql = "UPDATE
						userdata
					SET
						falschlogin = '". ++$_data['falschlogin'] ."'
					WHERE
						benutzername = '". $_data['benutzername'] . "'
					";
			$return = mysql_query($sql);
			$error = "Falsches Passwort.";
		}
	}
}

?>
 
Du hast es auch an einer absolut unsinnigen Stelle eingefuegt.
Such mal im Script nach
//und Benutzerdaten in Session schreiben
Dahinter steht bereits ein Teil von dem was ich gepostet hab, ich hab nur etwas drumrum gebacken.
Das musst Du dann auch so machen.
 
Zurück