Login funktioniert nicht, sendet weiter zu fehler

cille

Erfahrenes Mitglied
Hi ho,
benutze das Login Script vom Tutorial hier,
aber mit meinen anpassungen.

Der fehler ist,
dass ich angeblich ein Falschen Usernamen und Password benutze,
aber dies kann nicht sein :).

Hier mal der Code:

system/login.php
PHP:
<?php  
ob_start();
// Datenbankverbindung aufbauen  
include("../config.php"); 
if (!mysql_select_db("model", $dbconnect))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  
$sql = "SELECT id, username, nachname, vorname, email, password FROM users WHERE (name like '".$_REQUEST["username"]."') AND (pass = '".md5($_REQUEST["password"])."')";  
$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_username"] = $data["username"];  
  $_SESSION["user_nachname"] = $data["nachname"];  
  $_SESSION["user_vorname"] = $data["vorname"];
	$_SESSION["user_email"] = $date["email"];

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

if (isset ($_REQUEST['logout'])) {
	echo "Sie haben sich erfolgreich ausgeloggt!";
}

ob_end_flush (); 
?>

show/interface.php
PHP:
<?php

if (isset ($_REQUEST["interface"])) {
	echo "Hier wird der Bereich -> Interface angezeigt!";
	include ("system/checkuser.php"); 
	include ("config.php"); 												// Datenbankzugriff 
  echo "<div style='text-align:left'><b>User ID: </b>".
			 $_SESSION["user_id"].
			 " | <b>Username:</b>".
			 $_SESSION["user_username"].
			 " | <b>Nachname: </b>".
			 $_SESSION["user_nachname"].
			 " | <b>Vorname:</b>".
			 $_SESSION["user_vorname"].
			 "</div>".
			 "<div style='text-align:right'><a href='logout.php'>Ausloggen</a></div>";
}


?>
system/checkuser.php
PHP:
<?php 
ob_start ();
session_start();
if (!isset ($_SESSION["user_id"])) { 
	header ("Location: index.php?intern");
} 
ob_end_flush (); 
?>
system/logout.php
PHP:
<?php 
// Wird ausgeführt um mit der Ausgabe des Headers zu warten. 
header ("Location: login2.php?logout=yes"); 
if (isset($_GET["logout"] && $_GET["logout"] == "yes")) {
	session_start (); 
	session_unset (); 
	session_destroy (); 
	echo "Sie haben sich erfolgreich ausgelogt!";
}

?>

Falls ihr euch wundert was "system/" und "show/" ist,
dass ist eine kleine Ordnung von mir,
dies soll ein kleines CMS werden ;).
Es wird alles über "index.php?login" bzw "index.php?logout" sein.

bitte um hilfe, dickes THX schonmal
 
hi,

in deinem system/login.php steht nach den Session Variablen :

PHP:
...
  header ("Location: index.php?interface");
} else {  
  header ("Location: ../index.php?fehler=1");  
} 
...

desweiteren steht in der system/logout.php was von einer login2.php

ist das so korrekt ?

MfG
paddz
 
Zuletzt bearbeitet:
paddz hat gesagt.:
hi,

in deinem system/login.php steht nach den Session Variablen :

PHP:
...
  header ("Location: index.php?interface");
} else {  
  header ("Location: ../index.php?fehler=1");  
} 
...

desweiteren steht in der system/logout.php was von einer login2.php

ist das so korrekt ?

MfG
paddz

hi ho,
danke für deine Antwort, dies mit der "login2.php" war ein versehen, wurde geändert auf "login.php", aber auf das oben genante weiß ich grade nicht, auf was du hinaus willst?
Könntest du dies mir bitte nochmal erklären, würde mich freuen.

mfg, cille
 
hi,

wenn das auslesen aus der Datenbank erfolgreich war, dann geht er nach
index.php?interface

wenn nicht dann nach
../index.php?fehler=1.

er geht also erst einen Ordner rauf, und dann ruft er die index.php auf.

kann mir zwar nicht vorstellen das das zu deinem Fehler führt,
aber sollte so warscheinlich nicht sein.

MfG
paddz
 
Hallo!

Was hat das "like" im SELECT-Query zu suchen?
Das Passwort mit in die WHERE-Klausel zu setzen, ist auch überflüssig (oder erwartest Du mehrere User mit dem gleichen Nick?).
Statt dessen würde ich das Passwort aus der Datenbank abfragen und dann mit dem gesendeten vergleichen..... mit wachsendem Query wächst auch das Sicherheitsrisiko.
Und wenn Du schon die Session-Variablen setzen willst, dann solltest Du vorher auch eine Session starten. ;)
Dass Du personenbezogene Daten in der Session speichern willst, würde ich als Dein User alles andere als schön finden..... eine UserID (für die Du offenbar keine Spalte in der Tabelle hast) würde voll und ganz ausreichen, alles andere kannst Du Dir dann bei Bedarf aus der Tabelle holen.

Gruss Dr Dau
 
jo er geht gleich auf die fehlerseite,
kann das sein das nicht korrekt geprüft wird,
hier nochmal der Code um zu Prüfen:
PHP:
$sql = "SELECT id, username, nachname, vorname, email, password FROM users WHERE (username like '".$_REQUEST["username"]."') AND (password = '".md5($_REQUEST["password"])."')";

Ist da was falsch, restliche codes sind ja oben ;)

mfg, cille

jo Dr. Dau habe dein Ratschlag beherzigt,
nun sieht das script so aus:
PHP:
<?php  
ob_start();
// Datenbankverbindung aufbauen  
include("../config.php"); 
if (!mysql_select_db("model", $dbconnect))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  
$sql = "SELECT id, username, nachname, vorname, email, password FROM users WHERE (username WHERE '".$_REQUEST["username"]."') AND (password = '".md5($_REQUEST["password"])."')";  
$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_start();
  header ("Location: ../index.php?interface");
} else {  
  header ("Location: ../index.php?fehler=1");  
} 

if (isset ($_REQUEST['logout'])) {
	echo "Sie haben sich erfolgreich ausgeloggt!";
}

ob_end_flush (); 
?>

aber es funktioniert noch immer nicht :(
 
Zuletzt bearbeitet:
hi,

@DrDau

er hat eine UserID in der Tabelle:

PHP:
$sql = "SELECT id, username, nachname,  ...

also das wär nicht das Problem.

@ chille

Da steht oben aber was anderes :rolleyes: .

Im Script oben prüfst du mit name und pass, nicht mit username und passwort.

Vileicht ist das der Fehler.

MfG
paddz
 
PHP:
$sql = "SELECT id, username, nachname, vorname, email, password FROM users WHERE username = '".$_REQUEST["username"]."'";   
$result = mysql_query ($sql);   

if (mysql_num_rows ($result) > 0)   
{   
  // Benutzerdaten in ein Array auslesen.   
    $data = mysql_fetch_array ($result);   
    if($data["password"] == md5($_REQUEST["password"])) {
        session_start();
  // Sessionvariablen erstellen und registrieren   
        $_SESSION["user_id"] = $data["id"]; 
     
        header ("Location: ../index.php?interface"); 
    } else {
        echo "Falsches Passwort!";
    }
} else {
    header ("Location: ../index.php?fehler=1");   
}
@paddz, das ist zu 99,9% keine UserID sondern die ID des Datensatzes. ;)

[edit]
@cille, ausserdem solltest Du unbedingt mysql_real_escape_string() im Query anwenden.
[/edit]
 
Zuletzt bearbeitet:
Dr Dau hat gesagt.:
@paddz, das ist zu 99,9% keine UserID sondern die ID des Datensatzes. ;)

Naja die ID des Datensatzes ist wie die UserID einmalig oder ^^.
Also deshalb verwende ich die ID des Datensatzes als UserID. (Is das falsch?)

Auserdem wird sie als user_id in der Session gespeichert ^^.

PHP:
 $_SESSION["user_id"] = $data["id"];

MfG
paddz
 
Hi ho,
Danke da tut sich was,
weiß jetzt wie du es gemeint hast,
und die User ID ist die ID im Datensatz ;D

Aber jetzt erfolgt erneut ein fehler, was auf deins zurückführt:
PHP:
<?php  
ob_start();
// Datenbankverbindung aufbauen  
include("../config.php"); 
if (!mysql_select_db("model", $dbconnect))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  
$sql = "SELECT id, username, nachname, vorname, email, password FROM users WHERE username = '".$_REQUEST["username"]."'";   
$result = mysql_query ($sql);   

if (mysql_num_rows ($result) > 0)   
{   
  // Benutzerdaten in ein Array auslesen.   
    $data = mysql_fetch_array ($result);   
    if($data["password"] == md5($_REQUEST["password"])) {
        session_start();
  // Sessionvariablen erstellen und registrieren   
        $_SESSION["user_id"] = $data["id"]; 
     
        header ("Location: ../index.php?interface"); 
    } else {
        echo "Falsches Passwort!";
    }
} else {
    header ("Location: ../index.php?fehler=1");   
ob_end_flush (); 
?>

hänge schon seit 2h an diesem **** login :(

[EDIT]:
Achso die Fehlermedung:
Code:
Parse error: parse error, unexpected $end in C:\Programme\xampp\htdocs\projekte\Webdesign\system\login.php on line 28

mhh eine } klammer hat gefehlt,
aber er leitet noch immer zum fehler über :(
 
Zuletzt bearbeitet:
Zurück