Habe einen Fehler
Arne Kemen
- php
Hi,
ich habe diesen Script von einer Seite kopiert und für mich angepasst, nur irgendiwe, lässt er mich nicht einloggen, obwohl die daten richti in der Datenbank sind wo ist den der Fehler?
<?php
// Session starten
session_start ();
// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "root", "");
if (!mysql_select_db ("ghostsoldier", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}
$sql = "SELECT ".
"id, username,offizier, password ".
"FROM ".
"register ".
"WHERE ".
"(username like '".$_REQUEST["username"]."') AND ".
"(password = '".md5 ($_REQUEST["password"])."')";
$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_username"] = $data["username"];
$_SESSION["user_offizier"] = $data["offizier"];
$_SESSION["user_password"] = $data["password"];
header ("Location: intern.php");
}
else
{
header ("Location: formular.php?fehler=1");
}
?>
Hallo Malte, Hasenzahl, oder wie auch immer ;-),
$sql = "SELECT ".
"id, username,offizier, password ".
"FROM ".
"register ".
"WHERE ".
"(username like '".$_REQUEST["username"]."') AND ".
"(password = '".md5 ($_REQUEST["password"])."')";
Warum benutzt du für username ein LIKE?
Warum sicherst du die Daten nicht zumindest mit myslq_real_escape() oder Ähnlichem ab.
Warum lässt du dir Fehlermeldungen nicht von deiner Datenbank zurückliefern?
Dann laß dir die Variable $sql doch wenigstens mal per echo ausgeben und kopiere die Ausgabe in dein MySQL-Admin-Tool und schau, was die Datenbank dann zurück gibt.
Schönen Gruß aus München
die knappschaft
Hallo,
könnetst du für mich vielleicht den Code richtig schreiben?
Weil ich kann diesen Fehler irgendwie imme rnoch nicht beheben...
Dnake
Malte
Hallo Arne oder Malte oder Hasenzahn,
was hast du denn von meinen Tipps schon umgesetzt und was passiert, wenn du das Script dann ausführst.
Da ich nicht weiß, was nicht funktioniert, fange ich mal an zu raten
liegt es vielleicht an dieser Zeile?
"WHERE ".
"(username like '".$_REQUEST["username"]."') AND ".
"(password = '".md5 ($_REQUEST["password"])."')";
Probiere mal:
"WHERE ".
"(username like '".$_REQUEST["username"]."') AND ".
"(password = '".$_REQUEST["password"]."')";
aus.
Was sagt MySQL dann?
Schönen Gruß aus München
die knappschaft
Hi Also, ich habe es so verändert wie du es gesagt hast, ich bekomme keinen MYSQL Fehler zurück sondern ich kann mich nicht einloggen. ich schreibe euch jetzt mal alle seiten hin die ich schon geschrieben habe:
hiermit fängt es an:
forumlar.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>
login.php überprüft:
<?php
// Session starten
session_start ();
// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "root", "");
if (!mysql_select_db ("ghostsoldier", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}
$sql = "SELECT ".
"id, username,offizier, password ".
"FROM ".
"register ".
"WHERE ".
"(username like '".$_REQUEST["username"]."') AND ".
"(password = '".$_REQUEST["password"]."')";
$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_username"] = $data["username"];
$_SESSION["user_offizier"] = $data["offizier"];
$_SESSION["user_password"] = $data["password"];
header ("Location: intern.php");
}
else
{
header ("Location: formular.php?fehler=1");
}
?>
und hier ist die intern.php seite:
<?php
include ("checkuser.php");
?>
<html>
<head>
<title>Interne Seite</title>
</head>
<body>
BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>
Nickname: <?php echo $_SESSION["user_usernmae"]; ?><br>
Nachname: <?php echo $_SESSION["user_offizier"]; ?><br>
Vorname: <?php echo $_SESSION["user_password"]; ?>
<hr>
<a href="logout.php">Ausloggen</a>
</body>
</html>
das ist die include datein checkuser.php:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
header ("Location: formular.php");
}
?>
und das hier ist logout.php:
<?php
// Wird ausgeführt um mit der Ausgabe des Headers zu warten.
ob_start ();
session_start ();
session_unset ();
session_destroy ();
header ("Location: formular.php");
ob_end_flush ();
?>
und hier isnd mal die daten meiner datenbank:
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
ghostsoldier
-- --------------------------------------------------------
register
CREATE TABLE register
(
id
int(25) NOT NULL auto_increment,
username
varchar(15) collate latin1_general_ci NOT NULL default '',
offizier
varchar(15) collate latin1_general_ci NOT NULL default '',
password
varchar(15) collate latin1_general_ci NOT NULL default '',
email
varchar(150) collate latin1_general_ci NOT NULL default '',
aktiv
smallint(1) NOT NULL default '0',
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=14 ;
register
INSERT INTO register
VALUES (13, 'ff', 'ff', 'ff', 'kiefer-malte@web.de', 0);
vielelicht könnt ihr ja jetztden fehler finden, weil ich weiß echt nciht mehr weiter...
Hallo Arne,
lass dir mal bitte in der login.php ausgeben, was in $_REQUEST steht.
Kannst auch $_POST nehmen.
codeschnipsel:
echo '<pre>';
print_r($_POST);
echo '</pre>';
und dann vergleiche mal, was du deiner Datenbank im Query übergibst.
Siehst du es?
Rest liegt dann bei dir.
Schönen Gruß aus München
die knappschaft
Hallo Sascha,
ich habe den Fehler endlich gefunden. Ich danke dir.
Gruß Arne
Hallo Arne,
und bitte sichere die Daten, die aus deinem Login-Formlar kommen, entsprechend ab. Habe dir im ersten Post ja schon was dazu geschrieben.
Denn immer daran denken, die gegnerischen Clans sind in PHP vielleicht schon viel weiter als ihr - nicht, dass sie heuch "hacken" ;-))
Schönen Gruß aus München
die knappschaft