Login-System funktioniert nicht

Feuerkelch

Grünschnabel
Hallo erstmal... ich weiß ja nicht, ob sies wussten, aber ich bin neu hier und neu in PHP...

Ich will mir nen Login-System für eine Clan-Page basteln und hab dieses Tutorial dafür benutzt. Nur leider geht es net, wies es soll...

Ich hab das ganze mal so getestet, wie es im Tutorial war (mit meinen Daten natürlich) und das funktionierte auch, aber dann hab ich die wichtigsten Teile in meine Seite gebaut und es klappt nicht...

Datenbank wird erkannt, aber er erkennt den User nicht in der mysql-Tabelle...
Vielleicht findet ihr ja den Fehler:

Das PHP-Script in der Hauptseite:
PHP:
<?php 
 if (isset ($_REQUEST["fehler"])) 
 {
  echo "<font color='#ff0000'>Invalid User/Password.</font>"; 
 }
 ?>
 <?php
 if (!isset ($_SESSION["user_id"])) 
 {
  echo "<form action='login.php' method='post' text='#000000'>"; 
  echo "Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='text' name='true' size='10'><br>"; 
  echo "Kennwort:&nbsp;<input type='password' name='pwd' size='10'><br>"; 
  echo "<a href='register.php'><font color='#E85700'>Registrieren</font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' value='Login'>";
  echo "</form>";
 }
 if (isset ($_SESSION["user_id"])) 
 {
  echo "<font color='#E85700'>Willkommen ".$_SESSION["user_nickname"]."</font>";
 }
?>

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

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

$sql = "SELECT ". 
    "Id, Nickname ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') 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_nickname"] = $data["Nickname"];

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

### steht natürlich nicht drin, sondern die richtigen Daten zur Datenbank und so... er erkennt sie ja auch, oder zumindest sagt er nicht das Gegenteil ;)

Wer die immer gleiche Reaktion sehen will, der guggt ma hier.

User: test
PW: test

Ich hoffe ihr findet des Rätsels Lösung.

MFG
Feuerkelch
 
Zuletzt bearbeitet:
Was heißt "Datenbank wird erkannt, aber er erkennt den User nicht in der mysql-Tabelle..." ?
Gib einmal den Query vor dem Senden aus und poste ihn/führe ihn in phpmyadmin aus. Desweiteren solltest du dich über SQL Injections informieren und diese abwehren.
 
hast du auch in der tabelle, die du erstellt hast, Groß-und Kleinschreibung beachtet?
ID ist was anderes als id
Nickname was anderes als nickname.

Sonst fällt mir gerade nix auf.
 
danische hat gesagt.:
hast du auch in der tabelle, die du erstellt hast, Groß-und Kleinschreibung beachtet?
ID ist was anderes als id
Nickname was anderes als nickname.

Ich hab das Login-Script, so wie es ist, bereits getestet und es funktionierte auch... also gibt es da kein Problem, aber ich werd es mal korrigieren und hochladen...

nosilume hat gesagt.:
Was heißt "Datenbank wird erkannt, aber er erkennt den User nicht in der mysql-Tabelle..." ?

Haste mal auf der Seite versucht dich mit test/test einzuloggen? Es wird immer 'wrong user/pw' angezeigt... das heißt, dass er die Datenbank zwar findet (sonst würde er vorher schon den Fehler ausgeben -> siehe script), aber er schafft irgendwie die Überprüfung von dem username und dem passwort nicht. Er erkennt dann nicht, dass der user existiert...

nosilume hat gesagt.:
Gib einmal den Query vor dem Senden aus und poste ihn/führe ihn in phpmyadmin aus. Desweiteren solltest du dich über SQL Injections informieren und diese abwehren.

äähhh.... was soll ich tun? Ich bin ein blutiger Anfänger, also hab ich das net verstanden ;)

meinste, ich soll den -> SELECT Id, Nickname FROM benutzerdaten WHERE (Nickname like ".$_REQUEST["name"]."') AND (Kennwort = '".md5 ($_REQUEST["pwd"])."') <- phpmyadmin eingeben?
 
ähhh.... was soll ich tun? Ich bin ein blutiger Anfänger, also hab ich das net verstanden ;)

meinste, ich soll den -> SELECT Id, Nickname FROM benutzerdaten WHERE (Nickname like ".$_REQUEST["name"]."') AND (Kennwort = '".md5 ($_REQUEST["pwd"])."') <- phpmyadmin eingeben?

PHP:
echo $sql;
Alternativ zu phpmyadmin kannst du auch einfach mal print_r auf $data anwenden. Das soll dazu dienen, herauszufinden ob der Query etwas findet.

Edit: Mache mal print_r auf $_REQUEST.
 
Boah, geil, danke!

das kam raus:
SELECT Id, Nickname FROM benutzerdaten WHERE (Nickname like '') AND (Kennwort = '098f6bcd4621d373cade4e832627b4f6')

sprich, er hat das namens-feld net erkannt, weil es iwie falsch benannt war, jetzt geht es, danke@all
 
o.k.: dann machen wir es stückchenweise:

änder mal

echo "Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='text' name='true' size='10'><br>";

in echo "Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='text' name='name' size='10'><br>";

du wills "name" und nicht "true" auslesen
 
Zurück