Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
MyBB Login mit E-Mail statt Benutzername
#1
Hallo,

ich möchte in meinem Forum gerne, dass man sich mit seiner E-Mail-Adresse statt mit seinem Benutzernamen einloggen muss.

Bisher habe ich noch nicht gefunden, was ich in der "member.php" ändern muss.
Zitieren
#2
Das ist die falsche Datei. Die Änderungen müssten in der Datei inc/functions_user.php erfolgen. Möglicherweise kannst du auch ein Plugin schreiben, das den Benutzernamen zur E-Mail-Adresse sucht und diesen dann an die Loginfunktion weitergibt, so dass du keine Dateien bearbeiten musst. Der Hook für das Plugin wäre member_do_login_start.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#3
Hallo,

danke für die Antwort. Ich werde es probieren, so ein Plugin zu bauen. Da muss ich eigentlich nur die Variable ändern.

Ich hab nun folgenden Code für das Plugin erstellt:
PHP-Code:
<?php
if(!defined("IN_MYBB"))
{
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("member_do_login_start""emaillogin");

function 
emaillogin_info()
{
    return array(
        
"name"            => "E-Mail Anmeldung",
        
"description"    => "Mit diesem Plugin k&ouml;nnen sich die Besucher via E-Mail-Adresse anmelden",
        
"website"        => "http://i-net.bplaced.net",
        
"author"        => "IS WebSoft (XXX)",
        
"authorsite"    => "http://i-net.bplaced.net",
        
"version"        => "1.0",
        
"guid"             => "",
        
"compatibility" => "*"
    
);
}

function 
emaillogin($query)
{
    
$query str_replace("username""email"$query);
    return 
$query;
}
?>

Aber es geht leider nicht. Was habe ich falsch gemacht?
Zitieren
#4
Ich würde anhand der E-Mail-Adresse, die ja in $mybb->input['username'] steckt, den Benutzernamen aus der Datenbank abfragen und $mybb->input['username'] dann überschreiben, so dass der Name enthalten ist und nicht mehr die E-Mail-Adresse.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#5
Da ich noch nie ein Plugin erstellt, habe, weis ich nicht, wie das geht.
Zitieren
#6
Sowas in der Art:
PHP-Code:
function emaillogin($query)
{
    global 
$mybb$db;

    
$query $db->query("SELECT username FROM ".TABLE_PREFIX."users WHERE email='".$db->escape_string($mybb->input['username'])."'");
    
$user $db->fetch_array($query);
    
$mybb->input['username'] = $user['username']


Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#7
Nachdem ich mich über das Quickformular angemeldet habe, kommt wärend der Anmeldug folgende Meldung:

Zitat:Fatal error: Call to a member function query() on a non-object in D:\xampp\htdocs\mybb\inc\plugins\emaillogin.php on line 27

Ich weis nicht, woran es liegen könnte.

Mein Code:
PHP-Code:
<?php
if(!defined("IN_MYBB"))
{
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("member_do_login_start""emaillogin");

function 
emaillogin_info()
{
    return array(
        
"name"            => "E-Mail Anmeldung",
        
"description"    => "Mit diesem Plugin k&ouml;nnen sich die Besucher via E-Mail-Adresse anmelden",
        
"website"        => "http://i-net.bplaced.net",
        
"author"        => "IS WebSoft (XXX)",
        
"authorsite"    => "http://i-net.bplaced.net",
        
"version"        => "1.0",
        
"guid"             => "",
        
"compatibility" => "*"
    
);
}

function 
emaillogin($query)
{
    global 
$mybb;

    
$query $db->query("SELECT username FROM ".TABLE_PREFIX."users WHERE email='".$db->escape_string($mybb->input['username'])."'");
    
$user $db->fetch_array($query);
    
$mybb->input['username'] = $user['username'];
}
?>
Zitieren
#8
Ups, bei global fehlt $db, habe es in meinem vorigen Beitrag korrigiert. Den Code habe ich gerade so als Beispiel geschrieben, ich weiß nicht, ob die Variablen so stimmen. Das müsstest du dann noch gucken.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#9
Ja, die Anmeldung, von "member.php?action=login" geht. Nur das Quicklogin geht nicht. Ich habe versucht
PHP-Code:
    $mybb->input['username'] = $mybb->input['quick_username']; 
einzufügen, doch auch dann geht es nicht.

Aktueller Code:
PHP-Code:
function emaillogin($query)
{
    global 
$mybb$db;

    
$mybb->input['username'] = $mybb->input['quick_username'];
    
$query $db->query("SELECT username FROM ".TABLE_PREFIX."users WHERE email='".$db->escape_string($mybb->input['username'])."'");
    
$user $db->fetch_array($query);
    
$mybb->input['username'] = $user['username'];

Zitieren
#10
PHP-Code:
function emaillogin($query)
{
    global 
$mybb$db;
    
    if(
$mybb->input['quick_username'])
    {
        
$method "quick_username";
    }
    else
    {
        
$method "username";
    }

    
$query $db->query("SELECT username FROM ".TABLE_PREFIX."users WHERE email='".$db->escape_string($mybb->input[$method])."'");
    
$user $db->fetch_array($query);
    
$mybb->input[$method] = $user['username'];


Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren