MyBB.de Forum
Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen => GELÖST - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html)
+--- Forum: MyBB 1.2.x und älter (https://www.mybb.de/forum/forum-27.html)
+---- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-36.html)
+---- Thema: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen => GELÖST (/thread-7422.html)



Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen => GELÖST - ch.schulze - 18.10.2007

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


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - Mak - 18.10.2007

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.


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - ch.schulze - 18.10.2007

kann man das nicht als zusätzlichen select beim anmelden mit aufnehmen?
und wenn einer der werte = "" dann nen redirect auf das Profil machen?


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - Mak - 18.10.2007

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.


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - ch.schulze - 21.10.2007

ist denn die member.php die richtige stelle?


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - Michael - 21.10.2007

Ja, da dort die Anmeldung durchgeführt wird.


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - ch.schulze - 26.10.2007

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


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - Mak - 26.10.2007

Wo genau hast du den Code eingetragen?


RE: Nachträglich hinzugekommene Profilfelder (Pflicht) füllen lassen - ch.schulze - 27.10.2007

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;
}