MyBB.de Forum

Normale Version: [1.4] Externer Login
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich weiß, ihr werdet die Frage nicht mehr hören können aber ich stell sie trotzdem weil sie nicht direkt mit einem Externen Login zu tun hat.
Ich habe eine Seite mit einem selbst gecodeten Userbereich und der hat bis jetzt mit einem eigenen Login gearbeitet. Aber jetzt will ich auf die Daten des MyBB zugreifen. Ich habe noch vom 1.2.13 oder so einen Login und habe mir gedacht, angeblich hat sich ja eh nix beim Login geändert, ich kann einfach das nehmen. FALSCH!
Es funktioniert nicht. Ich bekomme immer die Meldung das Benutzername/Passwort falsch sind und weiters einen Parsingerror.

Mein Code ist wie folgt:
PHP-Code:
<?php 
session_start
();

function 
salt_password($password$salt
{
     return 
md5(md5($salt).$password);
}

if(isset(
$_SESSION['username'])) {
$titel "Schon eingeloggt";
$root "";
$navi "main";

include(
$root."header.php");
    echo 
'
        <div class="hinweis">Du bist bereits eingeloggt.<br />
        Wenn du zum Userbereich willst, dann klicke <a href="user/">&raquo;hier</a>.<br />
        Wenn du zur Startsetie willst, dann klicke <a href="index.php">&raquo;hier</a>.
        </div>
    '
;

} else {

//mySQL-Daten werden includet
include('inc/config.php');

$prefix "mybb";

//Verbindung zur DB wird hergestellt
$connect mysql_connect($host,$user,$password) or die ("<h1>Verbindung fehlgeschlagen! &Uuml;berprüfe ob alle mySQL-Daten richtig eingetragen sind, oder wende dich an den Webmaster.</h1>");
    
//Datenbank wird ausgewählt
mysql_select_db($database$connect);

$username $_POST["username"]; 
$password $_POST["password"]; 

$query mysql_query("SELECT * FROM ".$prefix."users WHERE username = '$username' LIMIT 1"); 
$row mysql_fetch_object($query); 

$salt $row->salt;

$titel "Einloggen";
$root "";
$navi "main";
include(
$root."header.php");

if(
salt_password(md5($password), $row->salt) == $row->password) { 
    
$_SESSION['username'] = $username;
    
$_SESSION['rang'] = $row->usergroup;
    
$_SESSION['id'] = $row->uid;
    
    
mysql_query("UPDATE ".$prefix." SET lastlogin = ".time()." WHERE username = '".$_SESSION['username']."'");
    
    echo 
'<div class="hinweis">Du wurdest erfolgreich eingeloggt. <a href="user/index.php">&raquo; zur &Uuml;bersicht</a></div>';
} else { 
    echo 
'<div class="hinweis">Benutzername und/oder Passwort waren falsch. <a href="login.php">&raquo; Zur&uuml;ck zum Login</a></div>'
}

include(
'footer.php');
?>

Und der Parseerror ist dieser:
Code:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\pokecamp\loggedin.php on line 39
Line 39 nochmal extra:
PHP-Code:
$row mysql_fetch_object($query); 

Leider weiß ich beim besten Willen nicht mehr weiter. Es wäre schön wenn ihr mir da helfen könntet.

mfg. Pokecamp
Die inc/config.php hat sich geändert. Nun musst du die Daten, die du daraus beziehst, anders definieren.
Öhhhm...
Mein Code sieht jetzt so aus:
PHP-Code:
<?php 
session_start
();

function 
salt_password($password$salt
{
     return 
md5(md5($salt).$password);
}

if(isset(
$_SESSION['username'])) {
$titel "Schon eingeloggt";
$root "";
$navi "main";

include(
$root."header.php");
    echo 
'
        <div class="hinweis">Du bist bereits eingeloggt.<br />
        Wenn du zum Userbereich willst, dann klicke <a href="user/">&raquo;hier</a>.<br />
        Wenn du zur Startsetie willst, dann klicke <a href="index.php">&raquo;hier</a>.
        </div>
    '
;

} else {

//mySQL-Daten werden includet
include('inc/config.php');
include(
'forum/inc/config.php');

$prefix "mybb";

//Verbindung zur DB wird hergestellt
$connect mysql_connect($config['database']['hostname'],$config['database']['username'],$config['database']['password']) or die ("<h1>Verbindung fehlgeschlagen! &Uuml;berprüfe ob alle mySQL-Daten richtig eingetragen sind, oder wende dich an den Webmaster.</h1>");
    
//Datenbank wird ausgewählt
mysql_select_db($config['database']['database'], $connect);

$username $_POST["username"]; 
$password $_POST["password"]; 

$query mysql_query("SELECT * FROM ".$prefix."users WHERE username = '$username' LIMIT 1"); 
$row mysql_fetch_object($query); 

$salt $row->salt;

$titel "Einloggen";
$root "";
$navi "main";
include(
$root."header.php");

if(
salt_password(md5($password), $row->salt) == $row->password) { 
    
$_SESSION['username'] = $username;
    
$_SESSION['rang'] = $row->usergroup;
    
$_SESSION['id'] = $row->uid;
    
    
mysql_query("UPDATE ".$prefix." SET lastlogin = ".time()." WHERE username = '".$_SESSION['username']."'");
    
    echo 
'<div class="hinweis">Du wurdest erfolgreich eingeloggt. <a href="user/index.php">&raquo; zur &Uuml;bersicht</a></div>';
} else { 
    echo 
'<div class="hinweis">Benutzername und/oder Passwort waren falsch. <a href="login.php">&raquo; Zur&uuml;ck zum Login</a></div>'
}

include(
'footer.php');
?>

Nur klappt das leider immer noch nicht... Wäre schön wenn ihr mir einen weiteren Denkanstoß geben könntet...^^
Achso, das war nicht die inc/config.php vom Forum. Wink Dann war es wohl richtig. Es scheint dann einen Fehler im Query zu geben.
Also den Fehler in der Query hab ich schon gefunden... Nur klappt der Login immer noch nicht...
Ich hab in der member.php vom Forum leider auch keine gescheiten Hinweise gefunden...
Der Code beinhaltet eine Sicherheitslücke, da du die Daten aus $_POST["username"] direkt in die Datenbankabfrage übernimmst. Ersetze
PHP-Code:
$username $_POST["username"]; 
durch
PHP-Code:
$username mysql_real_escape_string($_POST["username"]); 
Ansonsten hilft nur Debugging. Lass die per echo() den Inhalt der einzelnen Variablen ausgeben und überprüfe, ob es der erwartete Inhalt ist.
Danke...
Nur noch eine Frage... Passt es bis jetzt was ich da mit der funktion fürs Passwort hab? Nicht dass ich dann die ganze Zeit mit irgendwas falschem herumprobiere...
Ich sehe dort keinen Fehler.
Danke für die Hilfe... Leider klappt es einfach nicht. Außerdem finde ich in der member.php nicht einmal irgendwas was auf die Loginroutine hinweist... Wenn ich nach dem Begriff "salt" suche, bekomme ich nur einen Treffer und der ist beim Passwort reset. Ich brauch es wirklich und es wäre wirklich schön wenn ihr mir helfen könntet.
Die Funktionen dazu findest du in der Datei inc/functions_user.php.