Login-Script Probleme

PC Freak

Erfahrenes Mitglied
Bin PHP-Einsteiger und arbeite derzeit an einem Login-Bereich

habe eine Datei, welche die eingegebenen Login Informationen überprüft. Ich erhalte jedoch folgende Fehlermeldung beim einloggen:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web51/html/ebook-flatrate/login.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web51/html/ebook-flatrate/login.php:21) in /var/www/web51/html/ebook-flatrate/login.php on line 41

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

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

$sql = "SELECT ". 
    "Id, Vorname, Nachname, UserMail, Strasse, Hausnummer, PLZ, Wohnort, Land ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(UserMail like '".$_REQUEST["email"]."') 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_vorname"] = $data["Vorname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_usermail"] = $data["UserMail"]; 
  $_SESSION["user_strasse"] = $data["Strasse"]; 
  $_SESSION["user_hausnummer"] = $data["Hausnummer"]; 
  $_SESSION["user_plz"] = $data["PLZ"]; 
  $_SESSION["user_wohnort"] = $data["Wohnort"]; 
  $_SESSION["user_land"] = $data["Land"]; 

  header ("Location: Kunden/index.php"); 
} 
else 
{ 
  header ("Location: index.php"); 
} 
?>
 
Hi PC-Freak

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web51/html/ebook-flatrate/login.php on line 21

Es scheint als hättest du einen Fehler in deiner mysql_query.
Häng bitte an das query mal ein "or die(mysql_error());" dran.

also mysql_query(blabla) or die(mysql_error());


Warning: Cannot modify header information - headers already sent by (output started at /var/www/web51/html/ebook-flatrate/login.php:21) in /var/www/web51/html/ebook-flatrate/login.php on line 41

Ich nehme an du includest diese Datei in die index.php.
Es darf vor session_start() keine Ausgabe stattfinden, also schreib am besten das session_start ganz an den Anfang der index.php oder buffer mit ob_start die Ausgaben.



Noch etwas:
$_REQUEST["email"] direkt in einem SQL Statement ist eine gefährliche Sache ->
SQL injections.
Also bitte schau, dass du es mit mysql_real_escape_string entschärfst.

Und bei deinem SQL statement kannst du auch anstatt jeden Teil mit einem "." abzu trennen einfach durchschreiben, denn php ignoriert diese Whitespaces sowieso ;)


Grüße Simon
 
Vielen Dank

buffern war nicht nötig, allerdings jetzt ;)

ich komm per login in den gewünschten Bereich, doch oben erscheint die folgende Fehlermeldung:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/web51/html/ebook-flatrate/Kunden/index.php:8) in /var/www/web51/html/ebook-flatrate/Kunden/checkuser.php on line 2

die folgende Datei wird oben im gewünschten Bereich includet:

checkuser.php

PHP:
<?php 
session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
  header ("Location: index.php"); 
} 
?>

PHP:
<?php 
include ("checkuser.php"); 
?>

Wie buffer ich? diese Anleitung hilft mir irgendwie nicht.
 
Holla

schreib doch mal bitte das session_start einfach ganz an den Anfang deines Scripts.
Also noch vor allem anderen, dann musst es auch nicht buffern ;)
Es ist nicht gerade zu empfehlen, da es auch das Script verlangsamt.
 
Zurück