LogIn mit PHP und MySQL Probleme

also ich habe jetz
PHP:
<?php
$username = $_POST['name'];
$pwd = MD5($_POST['pwd']);
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$connID = mysql_connect ("localhost", "root", "test");
if (!mysql_select_db ("userdata", $connID))
{
  die ("Keine Verbindung zur Datenbank");
}
$sql = 'SELECT user,pass FROM acc WHERE user=".$username." AND pass=".$pwd."';

$result = mysql_query ($sql, $connID);
echo $sql;
$row = mysql_fetch_row("$result");
if (mysql_num_rows($result) == 1) {
 header("Location: geheime_seite.php");
} else
  header("Location: login_formular.php?fehler=1");



?>

und als antwort

SELECT user,pass FROM acc WHERE user=".$username." AND pass=".$pwd."
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\usrarea\login.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at C:\xampplite\htdocs\usrarea\login.php:16) in C:\xampplite\htdocs\usrarea\login.php on line 22
 
ok das lag an " und ' ´s

jetz sieht das Script so aus

PHP:
<?php
$username = $_POST['name'];
$pwd = MD5($_POST['pwd']);
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$connID = mysql_connect ("localhost", "root", "test");
if (!mysql_select_db ("userdata", $connID))
{
  die ("Keine Verbindung zur Datenbank");
}
$sql = 'SELECT user,pass FROM acc WHERE user="'$username" AND pass='"$pwd"'";

$result = mysql_query ($sql, $connID);
echo $sql;
$row = mysql_fetch_row("$result");
if (mysql_num_rows($result) == 1) {
 header("Location: geheime_seite.php");
} else
  header("Location: login_formular.php?fehler=1");



?>

und

mal wieder ..

Parse error: syntax error, unexpected T_VARIABLE in C:\xampplite\htdocs\usrarea\login.php on line 13

Zeile 13 ist

$sql = 'SELECT user,pass FROM acc WHERE user="'$username" AND pass='"$pwd"'";

langsam isses echt doof
 
Du darfst den Punkt als Verkettungs-Operator nicht vergessen:
PHP:
$sql = "SELECT user,pass FROM acc WHERE user='".$username."' AND pass='".$pwd."'";
</span></span>
 
ja stimmt danke

jetz kommt als antwort:

SELECT user,pass FROM acc WHERE user='test' AND pass='098f6bcd4621d373cade4e832627b4f6'
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\usrarea\login.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at C:\xampplite\htdocs\usrarea\login.php:16) in C:\xampplite\htdocs\usrarea\login.php on line 21

Zeile 17 ist $row = mysql_fetch_row("$result");
 
cool das sieht gut aus danke für die hilfe.

Aber das Problem ist wegal was ich eingeben , er sagt immer daten falsch, woran kannes liegen ?

PHP:
<?php
$username = $_POST['name'];
$pwd = $_POST['pwd'];
//Session starten
session_start ();

// Datenbankverbindung aufbauen
$connID = mysql_connect ("localhost", "root", "test");
if (!mysql_select_db ("userdata", $connID))
{
  die ("Keine Verbindung zur Datenbank");
}
$sql = "SELECT user,pass FROM acc WHERE user='".$username."' AND pass=md5('".$pwd."')";

$result = mysql_query ($sql, $connID);
$row = mysql_fetch_row($result);
if (mysql_num_rows($result) == 1)
{
 echo "Eingelogt";
  //header("Location: geheime_seite.php");
} else
 echo "Falsche dateb";
  //header("Location: login_formular.php?fehler=1");



?>
 
Also es wird jetzt geprüft ob als Ergebnis der Abfrage genau 1 Datensatz zurückgeliefert wird.

Entweder Du gibst bei der Anmeldung die falschen Daten ein (dann ist die Meldung OK) oder Du hast in der Tabelle die selben Daten mindestens 2 mal enthalten.

Prüfe doch mal die Tabelle die die Ameldedaten enthält.

P.S. Die Zeile $row = mysql_fetch_row($result); kannst Du eigentlich löschen bzw. diese solltest Du mit mysql_num_rows(.....) überschreiben.
 
was nu löschen oder ersetzen?

ich glaube es hängt am MD5 Hash

hab es mal ohne gemacht, also so das das passwort in klarschrift in der datenbank gespeichert , dann funktionier es
 
Stimmt es liegt am MD5.

Du schreibst in der SQL Abfrage :

PHP:
... AND pass=md5('".$pwd."')";

Das heißt aber nicht das das Passwort hier in den MD5 Hash umgewandelt wird, sondern er nimmt die Zeichen "md5" und hängt einfach den Inhalt von $pwd dran.

Wenn Dein Passwort "geheim" lautet, macht er einfach "md5geheim" draus
Du musst schreiben :

PHP:
...AND pass= '" .md5($pwd) ."'";

Blödsinn, was schreib ich da eigentlich.

Aber weiter oben hast Du mal den Inhalt der POST Variablen mit MD5 umgewandelt und dann an $pwd übergeben. Kann es sein das Du davon noch was stehen hast

Schick doch nochmal den kompletten Code wie er jetzt aussieht.
 
Zuletzt bearbeitet:
so hier ;)

Fangen wir langsam am.

register.php
PHP:
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
$site = $_POST['username'];


/*DB-DATEN*/
$db_user = "root";
$db_pass = "test";
$db_host = "localhost";
$db = "userdata";
$db_table = "acc";

$link = mysql_connect("$db_host", "$db_user", "$db_pass")
    or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("$db");
	$getitin = "INSERT INTO $db_table (user, pass, site) ".
    "VALUES ('".$user."', '".
      md5($pass)."', '".
       $site."', '".




        mysql_query($getitin)
          or die("Fehler beim erstellen des Acoounts <b>" .$user. "</b></br> ERROR: " . mysql_error());
         echo "Der Account für <b>" .$user. "</b> wurde erstellt.</br></br>";
         if(mkdir($site,7777));
           echo 'Ihr persönlicher Bereich auf dem Server wurde erstellt.</br>';
?>
</br>
Sie können sich jetz auf der <a href="login.php">LogIn Seite</a> anmelden oder
<a href="../index.html"> hier    </a>  zur Startseite gelangen.

login_formular.php
PHP:
<?php session_start (); ?>
<html> 
<head> 
  <title>Login</title> 
</head> 

<body> 
<?php 
if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
<form action="login.php" method="post"> 
  Name: <input type="text" name="name" size="20"><br> 
  Kennwort: <input type="password" name="pwd" size="20"><br> 
  <input type="submit" value="Login"> 
</form> 
</body> 
</html>

und

login.php
PHP:
<?php
$username = $_POST['name'];
$pwd = $_POST['pwd'];
//Session starten
session_start ();

// Datenbankverbindung aufbauen
$connID = mysql_connect ("localhost", "root", "test");
if (!mysql_select_db ("userdata", $connID))
{
  die ("Keine Verbindung zur Datenbank");
}
$sql = "SELECT user,pass FROM acc WHERE user='".$username."' AND pass= '" .md5($pwd) ."'";
$result = mysql_query ($sql, $connID);
$row = mysql_fetch_row($result);
if (mysql_num_rows($result) == 1)
{
 echo "Eingelogt";
  //header("Location: geheime_seite.php");
} else
 echo "Falsche dateb";
  //header("Location: login_formular.php?fehler=1");



?>
 
Zurück