Login script

coReDaRk

Mitglied
Also ich hab das Login system mal nachgebaut aber ich bekomme immer ne mysql fehler meldung, die ich mir überhaupt net erklären kann o_O

PHP:
<?php
// Session starten
session_start ();
include("connection.php");

$sql = "SELECT ".
    "id, nickname, e-mail, vorname ".
  "FROM ".
    "user ".
  "WHERE ".
    "(nickname like '".$_REQUEST["name"]."') AND ".
    "(passwort = '".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_e-mail"] = $data["e-mail"];
  $_SESSION["user_vorname"] = $data["vorname"];

  header ("Location: indexint.php");
}
else
{
  header ("Location: index.php");
}
?>

hier noch die fehler meldung die kommt wenn ich mich einloggen will:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web91/html/sadn/sadn/die3/login.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/web91/html/sadn/sadn/die3/login.php:15) in /srv/www/htdocs/web91/html/sadn/sadn/die3/login.php on line 30


mfg dark_544
 
Dein Query ist auch falsch aufgebaut:
PHP:
$sql = "SELECT  
    id, nickname, e-mail, vorname 
  FROM 
    user 
  WHERE 
    (nickname like '".$_REQUEST["name"]."') AND 
    (passwort = '".md5 ($_REQUEST["pwd"])."')";
 
Gut na dann hab ich mal ne Frage: Warum machstes' überhaupt anders? Hier gibts bestimmt hundert Tutorials über Login-Scripts.
 
Mach doch erstmal
PHP:
echo mysql_error();
nach dem Query und sage, was er schreibt.
Vielleicht hast Du ja einen Feld- oder Tabellennamen falsch geschrieben.
Ich habe am Ende meiner Querys immer ein Semikolon, weiß jetzt aber nicht, ob das nötig ist.
 
Mhh ich bin mir nicht so sicher, aber verträgt MySQL einen Bindestrich im Feldnamen? Oder zumindest die SQL-Abfrage an sich? Du könntest versuchen den Feldnamen mal in SingleQuotes zu setzen.
PHP:
 $sql = "SELECT  
    id, nickname, `e-mail`, vorname
  FROM
    user
  WHERE
    (nickname like '".$_REQUEST["name"]."') AND
    (passwort = '".md5 ($_REQUEST["pwd"])."')";
 
Hi!

wie wäre es damit?

Code:
$sql = "SELECT id, nickname, e-mail, vorname,passwort FROM user WHERE nickname like '$_REQUEST["name"]' AND  passwort = 'md5($_REQUEST["pwd"])'";


Du solltest vielleicht "passwort" vorher selektieren bevor du in der Spalte "passwort" suchst. oder?

Gruß,
tY
 
Die ' ' waren falsch gesetzt und die Strings zu verbinden is überflüssig.
versuch das mal so:
PHP:
<?php 
// Session starten 
session_start (); 
include("connection.php"); 

$sql = "SELECT  
    id, nickname, e-mail, vorname  
  FROM  
    user 
  WHERE  
    (nickname like '".$_REQUEST["name"]."') AND 
    (passwort = 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_e-mail"] = $data["e-mail"]; 
  $_SESSION["user_vorname"] = $data["vorname"]; 

  header ("Location: indexint.php"); 
} 
else 
{ 
  header ("Location: index.php"); 
} 
?>
 
jou thx für die ganzen antworten

also der fehler is behoben, aber kam sofort der nächste.

wenn er jetzt auf die interne seite umleitet kommt dieser fehler:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /srv/www/htdocs/web91/html/sadn/sadn/die3/indexint2.php:2) in /srv/www/htdocs/web91/html/sadn/sadn/die3/checkuser2.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /srv/www/htdocs/web91/html/sadn/sadn/die3/indexint2.php:2) in /srv/www/htdocs/web91/html/sadn/sadn/die3/checkuser2.php on line 2

der quelltext von meiner checkuser.php:

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


mfg und danke nochmal für die schnellen antworten
 
Du mußt Checkuser.php einbinden, bevor Du auch nur irgendeine andere Ausgabe mit echo o.ä. machst. Dazu gehören auch evtl. auftretende Fehlermeldungen, die z.B. wg. nicht gesetzter Variablen von PHP selbst ausgespuckt werden.
 
Zurück