PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Login - Passwort decodieren?


Gold-Games
14.08.2005, 22:29
Hallo,

Ich habe eine Frage bezüglich des Passwort codierens meines vBulletin Forums v.3.0. Und zwar wollte ich eine LoginFormular erstellen, dass auf die Userdaten im MySQL des vBulletin Forums zugreift. Und zwar habe ich folgende LoginForm geschrieben:

if($login == 1)
{
$pw = md5($pw);
$check_res = $db_handler->sql_query("SELECT * FROM $sql_table[user] WHERE username='$username' AND password='$pw'");
if($db_handler->sql_num_rows($check_res) == 1)
{
$login_temp = $db_handler->sql_fetch_array($check_res);
setcookie("login_id",$login_temp['userid'],time() + 8760 * 3601);
setcookie("login_pw",$login_temp['password'],time() + 8760 * 3601);
if(basename($PHP_SELF) == "index.php") header("Location: index.php");
else header("Location: index.php");
}
else
{
$login_error = true;
}
}

Eigentlich würde es auch funktionieren, nur leider ist das Passwort anders codiert, sodass es den Login nicht zulässt (aufgrund eines ungültigen Passworts für den jeweiligen User?!).
Ich vermute, dass es an folgender Zeile liegt $pw = md5($pw);, doch wie muss ich diese umschreiben, sodass es richtig decodiert wird?

Ich hoffe, dass Ihr mein Problem versteht.
Mit freundlichen Gruß,

Robert

Mystics
14.08.2005, 23:58
So:$pw = md5($userinfo['salt'] . md5($pw));Vorher musst du noch via Query das Feld salt aus der Tabelle user auslesen und dann in $userinfo['salt'] zur Verfügung stellen.

Theoretisch müsste es auch so funktionieren: $pw = md5($pw);
$check_res = $db_handler->sql_query("SELECT * FROM $sql_table[user] WHERE username = '$username' AND password = MD5(CONCAT('$pw', salt))");

Gold-Games
15.08.2005, 11:04
Vielen Dank Mystics,

habe deine 2. Variante genommen und Sie hat einwandfrei funktioniert!
Nochmal vielen Dank für die schnelle Hilfe.

Gruß,
Robert

mr.gamesbay
21.08.2005, 04:30
So, dann versuche ich auch hier mal mein glück :)

Ich bin noch recht am Anfang mit meinem PHP Skills, aber ich bastle seit einiger zeit an etwas. AUch ich möchte die Daten von meinem vB Board nutzen (bzw für die User). Da ich mit Sessions und Login's noch nicht viel am Hut gehabt habe, habe ich dafür als Vorlage ein Tut. benutzt. Funzt auch bestend, nur leider nicht mit dem Passwort aus der vB Datenbank. Vielleicht kann mir einer helfen, mit der "salt" spalte hatte ich in der letzten Stunde kein Glück.

<?php
// Session starten
session_start ();

error_reporting(E_ALL);
include("inc/db.inc.php");

// Datenbankverbindung aufbauen
$connectionid = mysql_connect($db_host,$db_user,$db_pass);
if (!mysql_select_db ("my_db", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
"userid, username, password ".
"FROM ".
"user ".
"WHERE ".
"(username = '".$_REQUEST["name"]."') AND ".
"(password = '".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["userid"];
$_SESSION["user_username"] = $data["username"];

header ("Location: intern.php");
}
else
{
// usw. ;)
}

?>

mr.gamesbay
24.08.2005, 00:35
Huhuu Team :)
Ihr könnt mir doch bestimmt helfen

Mystics
24.08.2005, 23:22
Hast du meinen obigen Beitrag gelesen?

Ersetze:$sql = "SELECT ".
"userid, username, password ".
"FROM ".
"user ".
"WHERE ".
"(username = '".$_REQUEST["name"]."') AND ".
"(password = '".md5($_REQUEST["pwd"])."')";mit:$pw = md5($_REQUEST["pwd"]);
$sql = "SELECT userid, username, password
FROM user
WHERE username = '" . addslashes(htmlspecialchars($_REQUEST["name"])) . "' AND
password = MD5(CONCAT('$pw', salt))";

mr.gamesbay
25.08.2005, 01:16
Hast du meinen obigen Beitrag gelesen?

Ja, hatte ich, aber ich hatte kein erfolg mit meinen Versuchen und konnte dieses "CONCAT" nicht zuordnen. Wie schon gesagt, bin noch ein Anfänger.

Danke für die Hilfe, werde es später testen, muss nun zur Arbeit!:)