| Tutorials In diesem Forum könnt Ihr euere Fragen zu unseren Tutorials stellen. Die Tutorials sind unter http://www.php-resource.de/tutorials/ zu finden. Tutorialgesuche bitte im Forum Off-Topic stellen! |
 |

16-03-2008, 16:55
|
|
Champ Wasili
Newbie
|
|
Registriert seit: Mar 2008
Beiträge: 149
|
|
Problem beim loginscript
hallo ertsmal,
ich hab mir ein registrierungsscript geschreiben,
bei dem ein html-formular die daten an eine phpdatei schickt und diese die daten dann in die datenbank einträgt.
Hier das phpscript:
PHP-Code:
<?php
include("sessionhelpers.inc.php");
mysql_query(
"INSERT INTO `users` ( `UserID` , `UserName` , `UserPass` , `UserSession` , `UserMail` , `feld` , `lp` , `Angriff` )
VALUES
('',
'".$_POST["name"]."',
md5('".$_POST["pass"]."'),
NULL,
'".$_POST["mail"]."',
'index2.html',
'15',
'2')"
)
or die(mysql_error());
mysql_close();
echo "Registrierung abgeschlossen!";
?>
hier das htmlformular:
PHP-Code:
<html>
<head>
</head>
<body>
<form method=post action=eintragen.php>
Username:
<input type=text name=name size=15>
Passwort:
<input type=password name=pass size=15>
Email:
<input type=text name=mail size=15>
<input type=submit value=Registrieren!>
</form>
</body>
</html>
und nun mein problem:
im phpscript wird ja das passwort mit md5() verschlüsselt in der DP gespeichert.
Aber, wenn ich jetzt versuche, mich mit dem Login script auf meiner seite einzuloggen, werden meine daten als falsch angegeben.
Wenn ich das mit usern versuche, die ich über phpmyadmin angelegt habe, kann ich mich jedoch einloggen.
und wenn ich die phpdatei ausführe, kommt auhc immer, registrierung abgeschlossen, und es wird auch ein 32stelliger string als pw gespeichert, aber es geht nicht.
wer kann mir dabei helfen?
ich weiß nicht, was ich falsch geschrieben hab.
Geändert von Champ Wasili (19-03-2008 um 16:02 Uhr)
|

16-03-2008, 16:58
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
iche sehe kein Loginscript, daher kann man nichts dazu sagen.
|

16-03-2008, 17:08
|
|
Manko10
Newbie
|
|
Registriert seit: Mar 2008
Beiträge: 115
|
|
Ich auch nicht, aber ich kann dir jetzt schon sagen, dass du nicht lange Freude an so einem Skript haben wirst.
Informiere dich bitte mal mit der Suchmaschine deiner Wahl über "SQL Injections".
|

17-03-2008, 13:42
|
|
Champ Wasili
Newbie
|
|
Registriert seit: Mar 2008
Beiträge: 149
|
|
sorry, das login script hab ich vergessen, hier ist es.
PHP-Code:
<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt! Versuchen sie es erneut.';
}
if (!logged_in())
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Weiter</a>';
?>
in der sessionhelpers.php stehen nur die mysql zugangsdaten.
und die logout.php löscht nur die sessionid, wenn ncoh was fehlt, einfachg sagen ich poste es dann.
Gegen sqlinjections wollte ich es schützen, nachdem es überhaupt läuft! wenn sich jemand z.b. adminrechte gibt, aber sich damit nicht einloggen kann, bringt das auch sonderlcih viel, oder?
|

17-03-2008, 13:44
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Naja, den Inhalt der Funktion check_user müsste man natürlich auch sehen.
|

17-03-2008, 19:08
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
@Champ
Also erstmal würde ich nicht die MySql Fkt md5 verwenden, sondern diejenige von PHP. Sonst musst du das Passwort trotzdem noch mittels mysql_real_escape_string() entschärfen, weil es ja MySql ist, das die Daten erst zum Hash macht.
Und ja die fragliche Funktion sollte man auch noch zu Gesicht bekommen
Und ausserdem solltest du obengenannte mysql-Fkt auf alle Usereingaben anwenden, die in die Datenbank kommen.
Gruss
tobi
|

17-03-2008, 22:56
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
@Champ
Wirklich dein eigener Code, den du geschrieben hast? Der Code kommt mir irgendwie bekannt vor. Und da du nicht der dort genannte User bist habe ich so meine Zweifel.
Darum gehst du jetzt ins richtige Forum **move** zu Tutorials
|

19-03-2008, 16:08
|
|
Champ Wasili
Newbie
|
|
Registriert seit: Mar 2008
Beiträge: 149
|
|
@ jahloves, ja es ist das eben genannte tutorial. ich hatte es nur hier geppstet, weil das loginscript ja läuft, nur das regformular hab ich aber selbstgeschrieben!
Hier die check_uer
PHP-Code:
function check_user($name, $pass)
{
$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}
|

22-03-2008, 22:21
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
Nachdem du die genannten Tipps hier umgesetzt hast (was bis jetzt offensichtlich nicht erfolgt ist), prüfst du bitte mal, ob dein Registrierungsscript den korrekten Hash in der D B gespeichert hat. Die Antwort bitte hier posten, falls du dann die Lösung noch nicht finden solltest.
|

27-03-2008, 13:07
|
|
Champ Wasili
Newbie
|
|
Registriert seit: Mar 2008
Beiträge: 149
|
|
ich kapier irgendwie nicht, wie ich
mysql_real_escape_string() einbauen muss.
etwa so:
PHP-Code:
<?php
include("sessionhelpers.inc.php");
mysql_query(
"INSERT INTO `users` ( `UserID` , `UserName` , `UserPass` , `UserSession` , `UserMail` , `feld` , `lp` , `Angriff` )
VALUES
('',
'".$_POST["name"]."',
mysql_real_escape_string(md5('".$_POST["pass"]."')),
NULL,
'".$_POST["mail"]."',
'index2.html',
'15',
'2')"
)
or die(mysql_error());
mysql_close();
echo "Registrierung abgeschlossen!";
?>
|

27-03-2008, 13:49
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
Nein
PHP-Code:
//so ist das eine MySql-Funktion
$sql = "INSERT INTO tabelle (uName) VALUES('mysql_real_escape_string(blabla)')";
//korrekt wäre aber eine PHP-Funktion
$sql = "INSERT INTO tabelle (uName) VALUES('".mysql_real_escape_string('blabla')."')";
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|