PHP login.php macht Probleme

Cross15

Cadet 1st Year
Registriert
Mai 2009
Beiträge
13
Hi Leute!

Ich habe folgendes Problem:

Ich mache eine Website, wo man sich einloggen kann.

Das ist die index.php:
HTML:
		<nav>
			<form action="intern/login.php" method="post">
				<ul>
					<li><input type="text" name="mail" id="email">			</li>
					<li><input type="password" name="passwort" id="passwort">	</li>
					<li><input id="button" type="submit" value="Login">		</li>
				</ul>
			</form>
		</nav>
Und dass hier ist die intern/login.php:
PHP:
<?php  
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen  
$connectionid = mysql_connect("localhost","Datenbank","Passwort");  
if (!mysql_select_db ("Datenbank", $connectionid))  
//Die Daten sind aus Sicherheitsgründen entfernt worden :D
{  
  die ("Keine Verbindung zur Datenbank");  
}  

$sql = "SELECT ".  
    "id, vorname, email ".  
  "FROM ".  
    "benutzerdaten ".  
  "WHERE ".  
    "(email like '".$_REQUEST["mail"]."') AND ".  
    "(kennwort = '".md5 ($_REQUEST["passwort"])."')";  
$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_email"] = $data["email"];  

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

Das funktioniert leider nicht, man wird trotz richtiger Zugangsdaten auf die index.php?fehler weitergeleitet..

Kann mir jemand helfen??

Danke schonmal,

Cross
 
$result = mysql_query ($sql);

sollte es nicht $result = mysql_query($sql); heißen?
bzw. $result = @mysql_query($sql);
also ohne Leerzeichen?
 
Zuletzt bearbeitet:
setz das code stück nach deiner query abfrage rein

PHP:
if (!$result) {
    die('Ungültige Abfrage: ' . mysql_error());
}

desweiteren soltest du die daten nicht mit $_REQUEST sondern mit $_POST abrufen sicherheitshalber.
 
Zuletzt bearbeitet:
@surtic:

Da passiert auch nicht mehr..
Danke für den Hinweis - ich benutze jetzt $_POST

@hanni2k:

Nein, da ist im moment noch gar kein php drin^^

Trotzdem danke!!

Cross
 
SQL-Injection ...

PHP:
header ("Location: .././index.php?fehler");
.././ interessante ordnerstrucktur ...

PHP:
$sql = "SELECT ".  
    "id, vorname, email ".  
  "FROM ".  
    "benutzerdaten ".  
  "WHERE ".  
    "(email like '".$_REQUEST["mail"]."') AND ".  
    "(kennwort = '".md5 ($_REQUEST["passwort"])."')";

die Klammern in der where bedingung sind unnötig, bei email verwendest du like ohne % als platzhalter zu verwenden, daher nehm lieber ein = ;)

Der fehler ist wohl, dass das feld email und kennwort ein string datentyp in mysql ist, daher so umschreiben

PHP:
$sql = "select
			id,
			vorname,
			email
		from
			benutzerdaten
		where
			email = '".mysql_real_escape_string($_POST['mail'])."' and
			kennwort = '".md5($_POST['passwort'])."'
	";
 
Tach.

Das funktioniert auch nicht.. - liegt das vllt. daran, dass $sql mit doppelten anführungszeichen anfängt aber bei email = '" wieder welche sind??

Cross
 
nimm doch mal die nerfenden weiterleitungen raus und guck dir an was die SQL abfrage zurückliefert...
 
Zurück
Oben