php login

Mhh geht so jetzt, aber irgendwie auch doch nicht, weil es halt so iust, dass es drauf an kommt, ob ich if ($aktiv == False) oder if ($aktiv == True) schreibe, bei dem einen mal loggt er ganz normal ein, bei demn anderen nicht, egal welchen wert mein aktiviert in der datenbank hat!

Logisch. Ohne dich jetzt angreifen zu wollen. Aber dein Quelltext ist großer mist. Am besten lernst du zunächst ein wenig PHP anhand von Änderungen in fremden Scripts(aber bitte ohne diese nach Veränderung als "selfmade" zu verkaufen) oder durch die Doku/Bücher.

Woher nimmst du zB die Variablen "$username" und "$aktiv"?
Das Query, welches prüfen soll, ob der User aktiviert wurde, wird nie ausgeführt und führt somit immer zu einem Fehler.
Zudem würde ich das ganze in eine Abfrage packen, denn deine erste Abfrage liefert die alle Einträge, wo das Feld "nickname" den gleichen Inhalt hat wie $username -> ok, denke ich, denn du wirst einen Usernamen ja nicht doppelt vergeben.
Deine zweite Abfrage jedoch würde alle User aus der Datenbank suchen, die bei Feld "aktiv" den gleichen Inhalt haben, wie "$aktiv" -> totaler Schwachsinn.
Gehen wir davon aus, du hast das Feld aktiv als ENUM mit den Werten "0", "1" deklariert - 0 für deaktiviert, 1 für aktiviert. Das tut jedoch bei der Abfrage noch nichts zur Sache, da wir uns erst einmal einen User mit dem Username raussuchen und dort wollen wir die Felder "Nickname" und "aktiv" wissen. LIMIT 1 bedeutet ganz einfach, dass nur maximal 1 Ergebnis ausgegeben werden soll - falls durch manuelle Änderungen in der DB vielleicht doch ein Username doppelt vorhanden sein sollte.

PHP:
$result = mysql_query("SELECT Nickname, aktiv from Benutzerdaten WHERE Nickname='$username' LIMIT 1");

Anhand dieser Abfrage könntest du nun weitermachen. Wir überprüfen zunächst, ob es überhaupt einen Usernamen mit dem Namen gibt:

PHP:
if(mysql_num_rows($result) == 1) {
   // Username ist vorhanden, dazu gleich mehr
} else {
  // Username nicht vorhanden:
  print("Dieser User existiert nicht!");
}

Ist der Username nun vorhanden, müssen wir die Daten aus der Datenbank "behandelbar" machen. Wir wählen uns dafür die Methode des ASSOCs, da diese für Anfänger die einfachsten und übersichtlichste Methode ist.

PHP:
$result_as = mysql_fetch_assoc($result);

Nun stehen die Inhalte der Felder in dem Array "$result_as" jeweils unter dem Schlüsselnamen wie auch der Name des Feldes ist.
Nun kannst du überprüfen, ob der User aktiviert ist:

PHP:
if($result_as['aktiv'] == 1) {
  // User ist aktiviert, logge ein
} else {
  // User ist nicht aktiviert, schreibe:
  print("Du bist leider noch nicht aktiviert");
}

Sooo.... nun hast du zumindest den Inhalt deines Scriptes in einer ordentlichen Reihenfolge. Das ganze als eines sollte eigentlich auch funktionieren (ohne Gewähr!).

Jetzt musst du natürlich noch das Passwort überprüfen lassen und genau das wird nun deine Aufgabe sein, dies zu realisieren. Dann weisst du gleich, ob du meinen Quelltext verstanden hast ;)

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

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

$sql = "SELECT * FROM `Benutzerdaten` WHERE `Nickname`='$name' AND `Kennwort`='$pwd' AND `aktiviert`=1"; 
$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"]; 

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

So funktioniert es jetzt! ^^
 
@Dark Ranger: Ich wuerde Dir, in Deinem Interesse, dazu raten aus Deinen Beitraegen die Zugangsdaten zu Deiner Datenbank zu entfernen.
Mir sind da gleich mehrere Beitraege aufgefallen, also guck am besten nochmal alles durch wo Du hier Code gepostet hast.
 
Zurück