Datenbankfeld abfragen

Henselmania

Mitglied
Hallo,
folgedes Probelm:
Auf meiner Loginseite soll eine Abfrage eingebaut werden, und zwar wenn sich ein User mit Pw anmeldet soll bevor der Login ausgeführt wird ob der Account aktiviert ist ist.

Zur Login.php
PHP:
<?php 
// Session starten
session_start ();

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "user", "pw"); 
if (!mysql_select_db ("db", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname, Mail ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"];
  $_SESSION["user_mail"] = $data["Mail"];

  header ("Location: intern.php"); 
} 
else 
{ 
  header ("Location: index.php?fehler=1"); 
} 
?>

Hier muss nun eine DB abfrage rein ob z.B. User ADMIN freigeschaltet ist.
Dafür habe ich in der DB ein Feld mit dem Namen Aktiv erstellt wo als Standart "N" eingetragen ist. Nun soll die Abfrage schauen ob das Feld bei dem User auf "Y" steht wenn ja login wenn nein message Nicht freigeschaltet ! Checke deine Mails...

Hab schon rum probiert doch komm ich nicht drauf.
 
Du hast doch schon eine Datenbankabfrage in deinem Script.
Du musst nur das Query entsprechend ändern (SELECT is_active FROM ... WHERE u_id = ...).
Dann musst du das Ergebnis auswerten (mysql_fetch_(object/array) und dann eine einfache if-Abfrage einbauen - Fertig!
 
Frage einfach zusätzlich die Information ab, ob der Benutzer bereits freigeschaltet ist oder nicht und prüfe diesen Wert bevor der Benutzer als angemeldet gilt.
 
Könnte es so gehen ?

PHP:
// Session starten
session_start ();

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "user", "pw"); 
if (!mysql_select_db ("db", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
}  
$rechtsql   = 'SELECT * FROM user WHERE Nickname=".$_REQUEST["name"]."';
    $rechtquery = mysql_query($rechtsql);
    $x          = mysql_fetch_array($rechtquery);
    
        if($x['Aktiv'] == Y)
{ 
$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname, Mail ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"];
  $_SESSION["user_mail"] = $data["Mail"];

  header ("Location: intern.php"); 
} 
else 
{ 
  header ("Location: index.php?fehler=1"); 
}  
        else{
 header ("Location: index.php?fehler=2"); }
 
Wieso fügst du nicht bei der vorhandenen Query einfach noch

PHP:
"AND active=1"

oder so ein. Ist der User nicht aktiv findet auch kein Login statt.

PHP:
$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname, Mail ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."') AND
     active=1;"
 
Ich hätte den Status mit abgefragt, etwa:
PHP:
$query = '
	SELECT
	        `Id`,
	        `Nickname`,
	        `Nachname`,
	        `Vorname`,
	        `Mail`,
	        `Aktiv`
	  FROM
	        `benutzerdaten`
	  WHERE
	        `Nickname` = "'.mysql_real_escape_string($_POST['name'].'"
	    AND `Kennwort` = "'.md5($_POST['pwd']).'"
	';
$result = mysql_query($query);
if( $row = mysql_fetch_assoc($result) ) {
	if( $row['Aktiv'] == 'Y' ) {
		// …
	} else {
		echo 'Ihr Benutzerkonto wurde noch nicht freigeschaltet.';
	}
} else {
	echo 'Benutzername und/oder Passwort stimmen nicht überein.';
}
 
So habe den Code jetzt geändert hat auch ohne Fehlermeldung funktioniert. Doch nun kann ich mich nicht mehr anmelden....
Kann eigentlich nur an den IF- Anweisungen liegen oder ?

PHP:
<?php 
// Session starten
session_start ();

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "user", "pw"); 
if (!mysql_select_db ("db", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$query = ' SELECT `Id`, `Nickname`, `Kennwort`, `Titel`, `Nachname`, `Vorname`, `Aktiv` FROM `benutzerdaten` WHERE
            `Nickname` = "'.mysql_real_escape_string($_POST['name']).'" AND `Kennwort` = "'.md5($_POST['pwd']).'"';
$result = mysql_query($query);
if( $row = mysql_fetch_assoc($result) ) {
    if( $row['Aktiv'] == 'Y' ) {
        if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"];
  $_SESSION["user_mail"] = $data["Mail"];

  header ("Location: intern.php"); 
    } else {
        header ("Location: index.php?fehler=1");
    }
} else {
    header ("Location: index.php?fehler=2");
}  
 
} 
?>
 
Das Problem ist er leitet mich nicht um zur Intern.php um. sondern ich bleibe immer auf der index.php seite. ohne das was passiert.

Hab jetzt noch mal nach Fehlern gesucht aber leider nichts gefunden ! Kann es sein das er an der header Umleitung stehen bleibt ?
 
Zuletzt bearbeitet:
Zurück