Login klappt nicht!

ToWeR

Grünschnabel
Hallo Leute,

ich bin fleissig am lernen, aber mein Wissen ist noch nicht so ganz ausgereift um mit meinem Problem weiter zu kommen.

Und zwar habe ich eine Datenbank mit der tabelle "tower_users" die 3 Einträge hat.

1. Eintrag -> ID: 1 / User: ToWeR / PW: l*****h
2. Eintrag -> ID: 2 / User: Test / PW: T**t
3. Eintrag -> ID: 3 / User: LuKaS / PW: l***s

Von meiner Index.php (die Loginseite mit den Inputboxen), werden die Inhalte der Inputboxen $name und $passwd an die loginchk.php übermittelt.

Das Problem ist das ich beim Login sofort an die "error.php" weitergeleitet werde und ich stellte noch fest das nicht alle 3 Datensätze mit den eingegebenen Daten verglichen werdem. Ich weiss nicht was ich da falsch mache!

PHP:
<?php
include "./include/config.inc";

$host = "xxxxxx.xxxxxx.xxxxxx.de";
$user = "xxxxxx";
$password = "xxxxxx";
$dbname = "xxxxxx";
$tabelle = "tower_users";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * FROM $tabelle";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

$ausgabe = mysql_fetch_array ($result);
    
    if ($name == $ausgabe["username"] AND $passwd == $ausgabe["password"])
             {
                 HEADER("LOCATION: main.php");
             }
    else if ($name != $ausgabe["username"] AND $passwd != $ausgabe["password"])
             {
                 HEADER("LOCATION: error.php");
             }
?>

Wäre für schnelle Hilfe dankbar!
 
Du musst bei deiner SQL-Query Name und Passwort angeben, sonst nimmt er sämtliche Einträge aus der Tabelle, und wenn der erste nicht den Eingaben entspricht, wirst du weitergeleitet.
Außerdem darfst du bei, von Formularen übergebenen Variablen das $_POST['var'] bzw. $_GET['var'] nicht vergessen (PHP4).
Also:
PHP:
$sql = "SELECT * FROM ".$tower_users." WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."' ";
$result = @mysql_query($sql);
 
Hmm habe den Quellcode etwas verändert, sieht jetzt so aus:

PHP:
<?php
include "./include/config.inc";

$host = "xxx";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$tabelle = "tower_users";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * FROM ".$tower_users." WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."' ";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

$ausgabe = mysql_fetch_array ($result)

    
    if ($_POST["name"] == $ausgabe["username"] AND $_POST["passwd"] == $ausgabe["password"])
             {
                 HEADER("LOCATION: main.php");
             }
    else if ($_POST["name"] != $ausgabe["username"] AND $_POST["passwd"] != $ausgabe["password"])
             {
                 HEADER("LOCATION: error.php");
             }

mysql_close ($dbverbindung)
   
?>

Aber es klappt immernoch irgendwie nicht, weiss nicht wieso :(
 
PHP:
<?php 
/* Hab alles ausgebessert was mir aufgefallen ist,
   ob das jetzt wirklich , weis ich auch nicht, 
   da PHP absolut nicht meine Stärke ist! Einfach ausprobieren!
*/
include "./include/config.inc"; 

$host = "xxx"; 
$user = "xxx"; 
$password = "xxx"; 
$dbname = "xxx"; 
$tabelle = "tower_users"; 

$dbverbindung = mysql_connect ($host, $user, $password); 

	//Statt username und password natürlich die entsprechenden Feldnamen aus deiner Tabelle einsetzen.
	//Fehler meinerseits, es muss natürlich $tabelle heißen, "tower_users" ist nur der Wert
$dbanfrage = "SELECT * FROM ".$tabelle." WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."' "; 
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung); 

//Strichpunt vergessen!
$ausgabe = mysql_fetch_array ($result);

     
    if ($_POST["name"] == $ausgabe["username"] and $_POST["passwd"] == $ausgabe["password"]) 
             { 
                 HEADER("LOCATION: main.php"); 
             } 
    elseif ($_POST['name'] != $ausgabe['username'] or  $_POST['passwd'] != $ausgabe['password']) 
             { 
                 HEADER("LOCATION: error.php"); 
             } 

mysql_close ($dbverbindung) 
    
?>
 
Hi

wenn der User mit o.g. Statemant erfolgreich ermittelt wird, wird ja ein Datensatz angezeigt.

Die Abfrage auf Vorhandenseins dieses Datensatzes kann man ganz leicht mit

mysql_num_rows($result) feststellen.

ist dieser ==0, liegt keine eindeutiger Datensatz vor, bzw. Login ist fehlgeschlagen
ansonsten ist er eingeloggt und kann sich weiterbewegen.
 
Ich danke die für deine Hilfe, aber wenn ich den Username und das Passwort eingebe und mich versuche einzuloggen, dann werde ich immer an die "error.php" weitergeleitet...
 
Original geschrieben von Luzie
Hi

wenn der User mit o.g. Statemant erfolgreich ermittelt wird, wird ja ein Datensatz angezeigt.

Die Abfrage auf Vorhandenseins dieses Datensatzes kann man ganz leicht mit

mysql_num_rows($result) feststellen.

ist dieser ==0, liegt keine eindeutiger Datensatz vor, bzw. Login ist fehlgeschlagen
ansonsten ist er eingeloggt und kann sich weiterbewegen.

HI, danke für deine Antwort, könntest du mir den Code posten ? Wäre dir dankbar, bin noch etwas frisch was das PHP betrifft!

OK, HABE MEINEN FEHLER GEFUNDEN, LÄUFT JETZT, DANKE TROTZDEM FÜR DIE HILFE
 
Zuletzt bearbeitet:
trotzdem, so wäre die übliche Vorgehensweise

$rstotal = mysql_num_rows($result);
if($rstotal==0){
header("location:fehler.php");
}else{
header("location:ok.php");
}
 
Zurück