Seite 1 von 2

Loginskript auf der mainpage

Verfasst: 27.12.2008 14:32
von Yanko
es steht immer da falsches passwort

Passwort: 123123
Name: Urn

Wichtig: Das ist kein Werbelink sondern nur das Testprogramm!

http://panferno.pytalhost.net/login.php

ich denke mal das beim Passwortencoden irgendwas nicht klappt
weil wenn ich des verschlüsselte PW einfüge und phpbb_hash aus dem skript entferne geht es

Hier der code

Code: Alles auswählen

<?php include("include/db.php");?>
...
<div id='inhalt'><?php

if (!empty($_POST['username'])) {

define('IN_PHPBB', true);
$phpbb_root_path = 'forum/'; // Passe hier den Pfad zu deinem Forum an
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);


$user->session_begin();
$auth->acl($user->data);
$user->setup();

if( $user->data['is_registered'] )
{
   // Benutzer ist schon eingeloggt
   echo 'Benutzer schon eingeloggt';
}

// Daten holen; request_var() funktioniert über POST und GET und schützt vor SQL-Injections
$username = request_var("username", "", true);
$password = request_var("password", "", true);

// Verschlüsseltes Passwort aus der DB holen
$sql = "SELECT user_password FROM phpbb_users WHERE username = '".$username."'";
$result = $db->sql_query_limit($sql, 1);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if( !$row )
{
   // User existiert nicht
   echo "<h2>Fehler</h2>
         <div class='bad'>Der User existiert nicht. Registriere dich in unserem Forum, wenn du noch keinen Account hast.</div>";
}
if( phpbb_hash($password) == $row['user_password'] )
{
   // Alles richtig, also irgendetwas tun, um Eingeloggt-Status in Session zu speichern
   $_SESSION['user'] = $username;

   echo '<h2>Willkommen '.$_SESSION['user'].'</h2>
         <div class="good">Login erfolgreich.</div>';

}
else
{
   // Falsches Passwort
   echo "<h2>Fehler</h2>
         <div class='bad'>Du hast ein falsches Passwort eingegeben</div>";
}

}

else {

  echo '<h2>Login</h2>
<form action="login.php" method="POST"><table width="100%"><tr>
<td width="45%" align="left">Username:
<input name="username" type="text" /></td>
<td width="45%" align="left">Passwort:
<input name="password" type="password" /></td>
<td width="10%" align="left"><input value="Login" type="submit" /></td></tr>
</table>
</form>
Wenn du noch keinen Account auf Panferno.net hast, kannst du dich kostenlos in unserem Forum registrieren.';

}

?>


<?php include("include/copyright.php");?></div>

Verfasst: 27.12.2008 16:47
von nickvergessen

Verfasst: 27.12.2008 20:39
von Yanko
ich will bloß das passwort entschlüsseln und es dann mit dem eingegebenen vergleichen und das eingegeben verschlüsseln dass es gleich wie das aus der db is

Verfasst: 27.12.2008 20:51
von Mahony
Hallo
ich will bloß das Passwort entschlüsseln...
Das geht nicht, da nur der Hash-Wert (MD5+Salt) des Passworts in der Datenbank gespeichert wird. Ein entschlüsseln ist NICHT möglich. Du kannst lediglich die beiden Hash-Werte vergleichen.




Grüße: Mahony

Verfasst: 27.12.2008 20:51
von Dr.Death
Du kannst kein Passwort entschlüsseln.....

Du kannst nur das eingegebene Passwort übergeben.

Durch:

Code: Alles auswählen

//Wenn username und passwort uebergeben worden sind, starte einen Anmeldeversuch
if (isset($username) && isset($password))
{
    $auth->login($username, $password, $autologin, $viewonline);
}
Wird das Passwort aus $password und der Benutzername aus $username der API übergeben und ein Login Versuch durchgeführt.

Ist der Login Versuch erfolgreich, wird das Objekt $user gefüllt sein.

Daher gilt:

Code: Alles auswählen

if ($user->data['is_registered'])
{
    // Hier steht der Code für ein erfolgreich eingeloggter User
    echo "Du bist angemeldet.<br /><br />";
}

Verfasst: 27.12.2008 20:55
von Yanko
und wenn ich das eingegebene verschlüssel und es dann vergleiche

Verfasst: 27.12.2008 20:58
von Dave
willst du ne session im Forum erzeugen? Dann mach das so wie Dr.Death es sagte. Weil das ist die einfachste möglichkeit. Wieso das Rad neu erfinden :wink:

Code: Alles auswählen

// Daten holen; request_var() funktioniert über POST und GET und schützt vor SQL-Injections 
$username = request_var("username", "", true); 
$password = request_var("password", "", true);
Also das ist nicht ganz richtig. Wenn du request_var() nicht neu geschrieben hast schützt es NICHT vorl sql injektion.

MfG
Dave

Verfasst: 27.12.2008 21:01
von Yanko
Ich versteh jetzt gar nix mehr kann mir einfach jemand den code so anpassen dass es klappt??

was muss ändern dass die PW nicht mehr verschlüsselt werden??

lieber kein schutz und dafür klappst

Verfasst: 27.12.2008 21:07
von Dr.Death
Da du die fertige API nicht nutzen möchtest,

siehe die Dateien:

includes/functions.php

Code: Alles auswählen

function phpbb_check_hash($password, $hash)
oder:
includes/auth/auth_dp.php

Code: Alles auswählen

	// Check password ...
	if (!$row['user_pass_convert'] && phpbb_check_hash($password, $row['user_password']))

Verfasst: 27.12.2008 21:08
von Yanko
was muss ich mit den dateien machen