MyBB.de Forum

Normale Version: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen => GELÖST
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Gibts ne möglichkeit, direkt nach dem Anmelden zu checken, ob vom User alle Pflichtfelder ausgefüllt sind. gerade interessant, wenn man welche hinzugefügt hat, nachdem das Forum schon nen zeit lief.

Ideen, Vorschläge etc. wären echt super :-)

Gruß von Christian
Das wäre etwas komplizierter zu bewerkstelligen. Ich würde vorschlagen du trägst via MySQL für alle Benutzer, die in den entsprechenden Profilfeldern noch nichts eingetragen haben, einen Standardwert ein.
kann man das nicht als zusätzlichen select beim anmelden mit aufnehmen?
und wenn einer der werte = "" dann nen redirect auf das Profil machen?
PHP-Code:
if($mybb->user['uid'] != 0) {
$field $db->fetch_array($db->simple_select("mybb_userfields""*""ufid='".$mybb->user['uid']."'"));

if(!
$field['fidX']) {
  
redirect("Text bei Weiterleitung""usercp.php?action=profile");
}


Das Code ist jetzt völlig ungetestet. Den Text müsstest du bearbeiten und in der IF-Abfrage das X bei fidX durch die ID des Profilfelds ersetzen.
ist denn die member.php die richtige stelle?
Ja, da dort die Anmeldung durchgeführt wird.
ich kriegs einafch nicht auf die kette.

kann mir einer von euch nochmal behilflich sein?
ich habs in den login bereich gepackt, wo die weiterleitung auf die ursprungsseite stattfindet. aber sehe nix davon, obwohl in in der Datenbank das entsprechende Feld geleert habe
Wo genau hast du den Code eingetragen?
So, hab nun die Lösung gefunden!
Danke erstmal allen die mir vorab geholfen haben.

Bei jedem Login wird nun geprüft, ob die gewünschten (zusätzlichen) Profilfelder gefüllt sind!

Dazu in der index.php nach Zeile 32 folgendes einfügen:

PHP-Code:
// Prüft ob alle Benutzerfelder gefüllt sind!
if($mybb->user['uid'] != 0) {
    
$field $db->fetch_array($db->simple_select("mybb_userfields""*""ufid='".$mybb->user['uid']."'"));

    if((
$field['fid4'] == "") or ($field['fid5'] == "")) {
        
redirect("usercp.php?action=profile""Bitte alle Profilfelder ausfüllen!");
    }


und in der member.php die Zeilen 956 - 965 gegen dieses hier austauschen:

PHP-Code:
    if($mybb->input['url'] != "" && strpos(basename($mybb->input['url']), 'member.php') === false)
    {

        if(
$user['uid'] != 0) {

            
$field $db->fetch_array($db->simple_select("mybb_userfields""*""ufid='".$user['uid']."'"));

            if((
$field['fid4'] == "") or ($field['fid5'] == "")) {
                
redirect("usercp.php?action=profile""Bitte alle Profilfelder ausfüllen!");
            }
            else{
                
// Redirect to the URL if it is not member.php
                
redirect(htmlentities($mybb->input['url']), $lang->redirect_loggedin);
            }            
        }

    }
    else
    {
        if(
$user['uid'] != 0) {

            
$field $db->fetch_array($db->simple_select("mybb_userfields""*""ufid='".$user['uid']."'"));

            if((
$field['fid4'] == "") or ($field['fid5'] == "")) {
                
redirect("usercp.php?action=profile""Bitte alle Profilfelder ausfüllen!");
            }
            else{
                
redirect("index.php"$lang->redirect_loggedin);
            }            
        }
    }


um die benötigten Profilfelder noch deutlicher hervorzuheben muss in der Datei usercp.php in der Zeile 522 + 523 der Coden gegen folgenden ersetzt werden:

PHP-Code:
        if($profilefield['required'] == "yes")
        {
            
$code "<input type=\"text\" name=\"profile_fields[$field]\" class=\"textbox_required\" size=\"$profilefield[length]\" maxlength=\"$profilefield[maxlength]\" value=\"$value\" />";
        }
        else{
            
$code "<input type=\"text\" name=\"profile_fields[$field]\" class=\"textbox\" size=\"$profilefield[length]\" maxlength=\"$profilefield[maxlength]\" value=\"$value\" />";
        } 

und die letzte Aktion ist das Hinzufügen des neuen CSS-Codes im Admin Frontend (Themes, Ändern/Entfernen, dann ganz unten im Feld "Zusätzliches CSS"):

Code:
input.textbox_required {
    background: #ffffff;
    color: #000000;
    border: 1px solid #ff0000;
    padding: 1px;
}