ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
294
294
EMPFEHLEN
-
23.03.09 07:49 #1
- Registriert seit
- May 2004
- Beiträge
- 17
Hallo zusammen,
ich hab mich hier schon umgeguckt, hab aber für mein Problem noch nichts gefunden!
Ich hab eine Datenbank erstellt, wo leute sich regestrieren können!
Die Registrierung verläuft ohne Probleme, die Daten werden einbahnfrei in die Datenbank eingetragen!
Doch beim Login kommt die Meldung (die ich auch gemacht macht habe, falls sowas passiert), dass das Passwort falsch ist! Ich bin mir aber defenetiv sicher das das Passwort richtig ist!
Ich poste euch mal den Code:
SQL-Datenbank:
PHP-Code:CREATE TABLE IF NOT EXISTS `signup` (
`firstname` varchar(60) NOT NULL,
`lastname` varchar(60) NOT NULL,
`email` varchar(60) NOT NULL,
`username` varchar(60) NOT NULL,
`password` varchar(60) NOT NULL,
`password_confirm` varchar(60) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
registrierung (index.php)
PHP-Code:<?php
define('IN_ILOGIN', true);
require_once("ilogin_core.inc.php");
function simpleRandString($length=16, $list="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
{
mt_srand((double)microtime()*1000000);
$newstring="";
if($length>0)
{
while(strlen($newstring)<$length)
{
$newstring.=$list[mt_rand(0, strlen($list)-1)];
}
}
return $newstring;
}
$action = ilogin_get_post("action");
$ilogin_title = "$ilogin_siteName ";
if (("$action" == "confirm") && (!$ilogin_demoMode))
{
$ilogin_title = "$ilogin_siteName - New User Confirmation";
}
else if ("$action" == "add")
{
$ilogin_title = "$ilogin_siteName ";
}
else
{
$action = "signup";
$ilogin_title = "$ilogin_siteName ";
}
echo <<<EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>$ilogin_title</TITLE>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<META HTTP-EQUIV="Content-Language" CONTENT="EN">
</HEAD>
<BODY BGCOLOR="$ilogin_pageBackgroundColour" TEXT="$ilogin_textColour">
<CENTER>
<H1>$ilogin_title</H1>
EOF;
if ("$action" == "signup")
{
echo <<<EOF
<FORM ACTION="$PHP_SELF" METHOD="POST">
<TABLE BORDER="0" WIDTH="350" NOWRAP="NOWRAP" BGCOLOR="$ilogin_formBackgroundColour">
<TR>
<TD><B>Um auf die Gallery zu zugreifen, müssen Sie sich registrieren</B><BR>
<BR><BR>
</TD>
</TR>
<TR><TD><INPUT TYPE="text" NAME="firstname"> Vorname *</TD></TR>
<TR><TD><INPUT TYPE="text" NAME="lastname"> Nachname *</TD></TR>
<TR><TD><INPUT TYPE="text" NAME="email"> E-Mail Addresse *</TD></TR>
<TR><TD><B>Wähle ein Nickname</B><BR>
<INPUT TYPE="text" NAME="username"> Nickname *</TD></TR>
<TR><TD><B>Wähle ein Passwort</B><BR>
<INPUT TYPE="password" NAME="password"> Passwort *<BR>
<INPUT TYPE="password" NAME="password_confirm"> Passwort Wiederholen *</TD></TR>
EOF;
echo <<<EOF
<TR><TD><INPUT TYPE="submit" VALUE="Registrieren"><INPUT TYPE="RESET" VALUE="Felder löschen"></TD></TR>
</TABLE>
<INPUT TYPE="hidden" NAME="action" VALUE="add">
</FORM>
EOF;
}
else if ("$action" == "add")
{
$user = strip_tags(strtolower(ilogin_get_post("username")));
$pass = strtolower(ilogin_get_post("password"));
$pass_confirm = strtolower(ilogin_get_post("password_confirm"));
$firstname = strip_tags(ilogin_get_post("firstname"));
$lastname = strip_tags(ilogin_get_post("lastname"));
$email = ilogin_get_post("email");
if ($user == "")
{
$signupError .= "<P>Geben Sie ein Namen ein!";
}
else if (!ereg("^[a-z0-9]+$", $user))
{
$signupError .= "<P>Ihr Usernamen verfuegt ueber ungueltige Zeichen!.";
}
else if (!$ilogin_demoMode)
{
$result = mysql_query("select * from $ilogin_table where username='$user'", $ilogin_db);
if (($result) && ($row = mysql_fetch_object($result)))
{
$signupError .= "<P>Der Name wird bereits verwendet!";
}
}
if (strlen($pass) < 6)
{
$signupError .= "<P>Dein Passwort muss laenger wie 6 Zeichen sein!";
}
else if (ereg($user, $pass))
{
$signupError .= "<P>Dein Password darf nicht wie dein Nickname sein!.";
}
else if (!ereg("^[a-z0-9]+$", $pass))
{
$signupError .= "<P>Die E-Mail Adresse wird bereits verwendet!";
}
else if ($pass != $pass_confirm)
{
$signupError .= "<P>Die Passwoerter sind nicht gleich!";
}
if ($email == "")
{
$signupError .= "<P>Tragen Sie eine E-Mail Adresse ein!";
}
else if (!eregi( '^[-_\.a-z0-9]+@([-a-z0-9]+\.)+[a-z]{2,}$', $email))
{
$signupError .= "<P>Diese E-Mail Adresse existiert nicht!";
}
if (("$firstname" == "") || ("$lastname" == ""))
{
$signupError .= "<P>Du musst einen vollen Namen eingeben.";
}
if ("$signupError" == "")
{
if ($ilogin_demoMode)
{
echo <<<EOF
<P>In Demo Mode. User account will not be created or verification email sent.
EOF;
}
else
{
mysql_query ("INSERT INTO $ilogin_table (username, password, email, firstname, lastname, status) VALUES ('$user', '$pass', '$email', '" . mysql_escape_string($firstname) . "', '" . mysql_escape_string($lastname) . "', 'New' )", $ilogin_db);
if (($result = mysql_query ("SELECT id FROM $ilogin_table WHERE username='$user'")) &&
($item = mysql_fetch_object($result)))
{
$id = $item->id;
}
if ($ilogin_verifyEmailAddresses)
{
$confirm = simpleRandString();
mysql_query("UPDATE $ilogin_table SET confirm='$confirm' WHERE username='$user'", $ilogin_db);
echo("<P>Danke, deine Registrierung war erfolgreich, du kannst dich nun einloggen!");
}
else
{
if (!$ilogin_demoMode)
{
mysql_query("UPDATE $ilogin_table SET status='Active' WHERE username='$user'", $ilogin_db);
ilogin_write_htpasswd();
}
echo <<<EOF
<P>Dein Account ist Eingetragen du kannst dich nun an die <A HREF="$ilogin_protectedUrl">Passwoerter geschuetzen protected Seiten</A> dich aufhalten.
EOF;
}
}
}
else
{
echo <<<EOF
<P>Ueberpruefe bitte deine Angaben!
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write("<A HREF=\"javascript:history.back()\">go back</A>");
// -->
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
$signupError
EOF;
}
}
else if ("$action" == "confirm")
{
$id = ilogin_get_post("id");
$confirm = ilogin_get_post("confirm");
$result = mysql_query ("SELECT * FROM $ilogin_table WHERE id='$id' AND confirm='$confirm' AND status='New'");
if ((! $result) || (mysql_num_rows($result) < 1))
{
echo <<<EOF
<H1>ERROR</H1>
<P>Invalid confirmation. Did you already confirm your membership?
EOF;
}
else
{
mysql_query("UPDATE $ilogin_table SET status='Active' WHERE id='$id'", $ilogin_db);
ilogin_write_htpasswd();
echo <<<EOF
<P>Danke für die Bestätigung.
<P>Du kannst dich nun überall mit <A HREF="$ilogin_protectedUrl">Passworten geschützen protected Seiten</A> aufhalten.
EOF;
}
}
echo <<<EOF
</CENTER>
</BODY>
</HTML>
EOF;
if (!$ilogin_demoMode)
{
mysql_close($ilogin_db);
}
?>
login_config.inc (für reg)
PHP-Code:<?php
if ( !defined('IN_ILOGIN') )
{
die("Hacking attempt");
}
$ilogin_sql_server = "localhost";
$ilogin_sql_username = "garo";
$ilogin_sql_password = "xxxxxx";
$ilogin_sql_database = "garo_login";
$ilogin_siteName = "Registrieren";
$ilogin_adminEmail = "g.adanali@web.de";
$ilogin_protectedUrl = "/members";
$login_adminPassword = "secret";
$ilogin_table = "ilogin";
$ilogin_htpasswd_path = ".htpasswd";
$ilogin_recordPostalAddress = True;
$ilogin_recordPhoneNumber = True;
$ilogin_recordIcq = True;
$ilogin_verifyEmailAddresses = True;
$ilogin_demoMode = False;
$ilogin_pageBackgroundColour = "#ffffff";
$ilogin_formBackgroundColour = "#ffffff";
$ilogin_textColour = "#000000";
$ilogin_useMd5 = False;
?>
index.php (für login)
PHP-Code:<?php
require("connect.inc.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login</title>
<link rel="stylesheet" type="text/css" href="styles2.css">
</head>
<body>
<?php if(!isset($_POST['submit'])) { ?>
<form action="<?php $PHP_SELF ?>" method="post">
<table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<b>Bitte erst anmelden</b>
</td>
</tr>
<tr>
<td width="170" bgcolor="#e7e7e7">Benutzername</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"<?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td>
</tr>
<tr>
<td width="170" bgcolor="#e7e7e7">Passwort</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
</tr>
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<input type="submit" name="submit" value="Anmelden" class="button">
</td>
</tr>
</table>
</form>
<?php
}elseif(!$_POST['username'] || $_POST['username'] == "") {
echo '<p align="center">Einen Benutzernamen brauchen wir schon ^^<br><br><a href="index2.php">Zurueck</a></p>';
}elseif(!$_POST['password'] || $_POST['password'] == "") {
echo '<form action="index2.php" method="post">';
echo '<p align="center">Ein Passwort brauchen wir schon ^^<br><br>';
echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
echo '<input type="submit" name="zurueck" value="Zurueck">';
echo '</p>';
echo '</form>';
}else{
$password = md5($password);
$query = @mysql_query("SELECT username, password FROM ilogin WHERE username = '".$_POST['username']."'") or die('ERROR!');
$result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index2.php">Zurueck</a></p>');
if($password != $result['password']){
echo '<form action="index2.php" method="post">';
echo '<p align="center">Dein Passwort ist Falsch! -.-<br><br>';
echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
echo '<input type="submit" name="zurueck" value="Zurueck"></p>';
echo '</form>';
die;
}else{
$username = $result['username'];
session_register('username');
echo '<p align="center">LogIn erfolgreich! ^^<br><br><a href="sichere_seite.php">Weiter</a></p>';
}
}
?>
</body>
</html>
login.php
PHP-Code:<?php
// Session starten
session_start ();
// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "xxxxxx", "xxxxxx");
if (!mysql_select_db ("garo_login", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}
$sql = "SELECT ".
"id, username, lastname, firstname ".
"FROM ".
"signup ".
"WHERE ".
"(username like '".$_REQUEST["username"]."') AND ".
"(password = '".md5 ($_REQUEST["password"])."')";
$result = mysql_query ($sql);
$num_rows = (mysql_num_rows $result);
{
$data = mysql_fetch_array ($result);
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_username"] = $data["username"];
$_SESSION["user_lastname"] = $data["lastname"];
$_SESSION["user_firstname"] = $data["firstname"];
header ("Location: intern.php");
}
?>
Ich hoffe ihr könnt mir weiterhelfen.
Wenn ich weitere codes braucht, poste ich die auch!
Ach ja, egal wieviele Leute ich in die Datenbank eintrage, selbst über SQL, der fehler kommt immer das das Passwort falsch ist.
Wenn ein user nicht erkannt ist, sagt er mir das aber auch!
Nur die Funktion scheint ein fehler zu haben!
Greetz
GTO
-
So wie ich das sehe schreibst du das Passwort bei der Registrierung unverschlüsset in die Datenbank, vergleichst es beim Login jedoch mit dem verschlüsselten.
Also müsstest du bei der Registrierung lediglich noch ein md5() anwenden und es sollte (nach erneuter Anmeldung) funktioniere.
-
So wie es scheint, liegt der Fehler in der index.php
Versuch doch mal statt
folgendes:PHP-Code:$password = md5($password);
PHP-Code:$password = md5($_POST['password']);
-
Glaube ich nicht.

registrer_globals scheint aktiviert zu sein, da er auch aufzugreift.PHP-Code:$PHP_SELF
Dennoch solltest Steusi's Einwand nachgehen und am besten in deiner php.ini register_globals deaktiveren. Andernfalls bekommst du in Zukunft auf jeden Fal Probleme mit deinem Script.
Was genau registrer_globals bewirkt kannst du hier im Forum sicher nachlesen.
-
Erstmal: Bei so etwas sicherheitsrelevantem wie einer Passwort-Abfrage mit LIKE zu arbeiten anstelle einem anstaendigen Vergleich (wie Du es ja beim Passwort machst) finde ich hoechst fahrlaessig."(username like '".$_REQUEST["username"]."') AND ".
"(password = '".md5 ($_REQUEST["password"])."')"
Ausserdem solltest Du Dich mal mit SQL-Injektionen befassen, denn in der Form in der Du den Usernamen uebergibst laesst sich durchaus das gesamte Login umgehen.
Zu guter Letzt moechte ich an dieser Stelle noch von der Verwendung von $_REQUEST abraten.
$_REQUEST ist dazu da Daten zu holen die sowohl ueber POST als auch ueber GET kommen koennen. Da Du mit einem Formular zum Login arbeitest kannst Du festlegen ob POST oder GET genutzt werden soll, vorzugsweise verschickt man natuerlich ein Formular ueber POST, entsprechend sollte auch mit $_POST gearbeitet werden.
Das stellt jetzt keine Security-Problem dar, ist aber, meiner Meinung nach, sauberer.
Sehe ich aehnlich. Hab den Code nur kurz ueberflogen, konnte jetzt aber nicht sehen dass das Passwort beim Eintrag in die Datenbank gehasht wird.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
23.03.09 13:41 #6
- Registriert seit
- May 2004
- Beiträge
- 17
-
23.03.09 13:44 #7PHP-Code:
mysql_query ("INSERT INTO $ilogin_table (username, password, email, firstname, lastname, status) VALUES ('$user', '".md5($pass)."', '$email', '" . mysql_escape_string($firstname) . "', '" . mysql_escape_string($lastname) . "', 'New' )", $ilogin_db);
-
23.03.09 14:20 #8
- Registriert seit
- May 2004
- Beiträge
- 17
komischer weise, wird mir jetzt gesagt, dass der User nicht existiert

*verzweifel*
-
23.03.09 14:39 #9
EDIT: haste denn mal geguckt ob der user auch existiert?
auf anhieb sehe ich da keinen fehler
Geändert von asipak4you (23.03.09 um 14:45 Uhr)
-
23.03.09 15:02 #10
- Registriert seit
- May 2004
- Beiträge
- 17
Ja, der User wurde angelegt!
-
23.03.09 15:14 #11
sorry, aber ich verstehe deine dateistruktur nicht. wofür wird denn jetzt die datei login.php benötigt, sie wird scheinbar nirgendwo aufgerufen. und was ist der unterschied zwischen den tabellen ilogin und signup
die Fehlermeldung wird hier (in der index.php):
geworfen. Bist du sicher, das nicht die login.php die Überprüfung übernehmen und einen Fehler zurückliefern soll?PHP-Code:$password = md5($password);
$query = @mysql_query("SELECT username, password FROM ilogin WHERE username = '".$_POST['username']."'") or die('ERROR!');
$result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index2.php">Zurueck</a></p>');
EDIT: und da taucht ja wieder eine datei auf (index2.php)
ziemlich verwirrendes Design
-
23.03.09 17:11 #12
- Registriert seit
- May 2004
- Beiträge
- 17
Wie gesagt, bin noch recht neu hier!
Also auf www.webdfi.de/~garo/ ist das ganze zu begutachten.
Auf regestrieren ist die index.php, wo man sich regestriert, da werden auch in der Datenbank ilogin eingetragen! und in index2.php ist das login feld! Da wo man sich einloggen kann!
Die signup tabelle fällt raus fällt mir gerade ein, aber die wird auch nirgends definiert. Hab 2 Tabellen aber nur ilogin wird in der Datenbank benuztzt!
Diese hierPHP-Code:CREATE TABLE IF NOT EXISTS `ilogin` (
`id` int(10) NOT NULL auto_increment,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`firstname` varchar(255) NOT NULL,
`lastname` varchar(255) NOT NULL,
`status` varchar(255) NOT NULL,
`confirm` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
-
23.03.09 17:14 #13
- Registriert seit
- May 2004
- Beiträge
- 17
Ach und noch eine Frage, was ich gerade sehe...
Bei der index.php steht:
PHP-Code:$password = md5($password);
$query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
$result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index2.php">Zurück</a></p>');
if($password != $result['pass']){
In der Datenbank heissen die Spalten username und password... Oo Hab ich mich jetzt in was eingeritten?
-
Und Ausloggen ist dann index3.php, etc.?

Ne, ne, so wird das nichts.
Da hast du in einem Monat selbst keinen Überblick mehr.
Benenne die Dateien so logisch wie möglich.
Ist sie für die Registrierung zuständig? Dann nenne Sie register.php.
Ist sie für den Login zuständig? Dann nenne Sie login.php.
Und so weiter..
Das hat auch den Vorteil, das du in deinem Quellcode gleich siehst, welche Datei genau wo eingebunden wird.
Dann darfst du dich nun entscheiden, welche der beiden Varianten dir besser gefällt und deinen Code an diese anpassen.
Zitat von Garo_TheOne
-
24.03.09 11:06 #15
- Registriert seit
- May 2004
- Beiträge
- 17
Jawohl
Es lag wirklich daran... Vielen Dank euch allen
Ähnliche Themen
-
[Win7Prof] RDP - Passwort falsch
Von RedWraith im Forum NetzwerkeAntworten: 0Letzter Beitrag: 03.09.10, 12:46 -
Registrierung
Von lisali im Forum Coders TalkAntworten: 4Letzter Beitrag: 23.02.09, 23:43 -
registrierung
Von SiMpLy im Forum PHPAntworten: 28Letzter Beitrag: 15.06.08, 15:55 -
Registrierung
Von Freak im Forum HTML & XHTMLAntworten: 2Letzter Beitrag: 18.05.05, 16:46 -
Avi-file falsch angezeigt (codec falsch?)
Von oliverx im Forum Videoschnitt, Videotechnik & -produktionAntworten: 10Letzter Beitrag: 11.01.04, 15:19





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren