LogIn mit PHP und MySQL Probleme

r3ddragon

Mitglied
Ich versuche mir eine Login seite mit PHP und MySQL zu bauen nur leider bin ich noch nicht sehr erfahren. Vielleicht könnt ihn mir helfen:

Code:
<?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 * FROM acc WHERE (user like '$username') AND (pass = md5('$pwd')";
    $result = mysql_query ($sql, $connID);
if (mysql_num_rows ($result) > 0);
{
 header("Location: geheime_seite.php");
}
else
 {
  header("Location: formular.php?fehler=1");
}



?>

der Fehler ist
Parse error: syntax error, unexpected T_ELSE in C:\xampplite\htdocs\usrarea\login.php on line 20

Ich hoffe ihr könnt mir helfen

MfG R3D
 
PHP:
if (mysql_num_rows ($result) > 0);
{
 header("Location: geheime_seite.php");
}
else
 {
  header("Location: formular.php?fehler=1");
}
Nach einer IF-Bedingung kommt kein ;
Also:
PHP:
if (mysql_num_rows ($result) > 0)
 
Hi,

der Fehler wird wohl hier seine Ursache haben

PHP:
if (mysql_num_rows ($result) > 0);

Am Ende darf kein ; stehen.
 
ja das stimmt danke


jetz steht da

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\usrarea\login.php on line 16

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
 
Mach mal vor
PHP:
    $result = mysql_query ($sql, $connID);
if (mysql_num_rows ($result) > 0)
PHP:
echo $sql;
und zeige was dort steht. Der Header-Fehler kommt nur weil du vor angabe eines Headers keien Ausgabe haben darfst, da aber im Momment die Fehlermeldung ausgegeben wird kommt dieser Fehler.
 
SELECT * FROM acc WHERE (user like '12') AND (pass = md5('12')

steht da

12 ist der username sowieo das passwort ( bin faul gewen ;) )
 
Erstmal fehlt am Ende die ). Ausserdem wenn dein Username eine Zahl ist kannst du auch gleich mit = prüfen. Ein Like ohne Wildcard ist meißtens schwachsinn.
 
das 12 war nur aus test halber, waren halt die ersten beiden tasten die ich getroffen habe.


Ja ok und kann ich alternativ machen ?
 
Wie meinst du das was du alternativ? Sobald dein name ein String ist solltest du auch mit = überprüfen. Das ist schneller als Like ohne Wildcard. Wenn du mit Like mit Wildcards arbeitest wäre das für ein Login unpraktisch. Der Nutzer soll ja genau seinen Namen und sein Passwort eingeben. Sonst könnte sich z.B. eine ronaldo8 hier für mich einloggen, nur weil sein Name ähnlich meinem ist. Ok?
 
ja ok das hab ich gepeilt.

Blos wie kann ich das am besten am setzen?

Code:
$result = mysql_query('SELECT user,pass FROM acc');
$row = mysql_fetch_row('$result');

while($eintrag = mysql_fetch_row('$result'))
 {
      if($row[0]==$username && $row[1]==$pwd
	header("Location: geheime_seite.php");
       }
       if($row[0]!=$username || $row[1]!=$pwd)
         header("Location: formular.php?fehler=1");
 
Zurück