MyBB.de Forum

Normale Version: Benutzergruppe bei der Anmeldung erkennen.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Also ich hänge einfach mal die member.php an.

attac

Und das member_register templade:
PHP-Code:
<html>
<
head>
<
title>{$mybb->settings['bbname']} - {$lang->registration}</title>
{
$headerinclude}
<
script type="text/javascript" src="jscripts/validator.js"></script>
</
head>
<
body>
{
$header}
<
br />
<
form action="member.php" method="post" id="registration_form"><input type="text" style="visibility: hidden;" value="" name="regcheck1" /><input type="text" style="visibility: hidden;" value="true" name="regcheck2" />
{
$regerrors}
<
table border="0" cellspacing="{$theme['borderwidth']}cellpadding="{$theme['tablespace']}class="tborder">
<
tr>
<
td class="thead" colspan="2"><strong>{$lang->registration}</strong></td>
</
tr>
<
tr>
<
td width="50%" class="trow1" valign="top">
<
fieldset class="trow2">
<
legend><strong>{$lang->account_details}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}width="100%">
<
tr>
<
td colspan="2"><span class="smalltext"><label for="username">{$lang->username}</label></span></td>
</
tr>
<
tr>
<
td colspan="2"><input type="text" class="textbox" name="username" id="username" style="width: 100%" value="{$username}/></td>
</
tr>
{
$passboxes}
<
tr>
<
td><span class="smalltext"><label for="email">{$lang->email}</label></span></td>
<
td><span class="smalltext"><label for="email2">{$lang->confirm_email}</label></span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="email" id="email" style="width: 100%" maxlength="50" value="{$email}/></td>
<
td><input type="text" class="textbox" name="email2" id="email2" style="width: 100%" maxlength="50" value="{$email2}/></td>
</
tr>
<
select name="Was bist du?">
<
option value="Aldi-Süd Azubi">Aldi-Süd Azubi</option>
<
option value="Aldi-Nord Azubi">Aldi-Nord Azubi</option>
</
select
<
tr>
    <
td colspan="2" style="display: none;" id="email_status">&nbsp;</td>
</
tr>
</
table>
</
fieldset>
{
$requiredfields}
{
$referrer}
{
$regimage}
</
td>
<
td width="50%" class="trow1" valign="top">
<
fieldset class="trow2">
<
legend><strong>{$lang->account_prefs}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}width="100%">
<
tr>
<
td valign="top" width="1"><input type="checkbox" class="checkbox" name="allownotices" id="allownotices" value="1" {$allownoticescheck} /></td>
<
td valign="top"><span class="smalltext"><label for="allownotices">{$lang->allow_notices}</label></span></td>
</
tr>
<
tr>
<
td valign="top" width="1"><input type="checkbox" class="checkbox" name="hideemail" id="hideemail" value="1" {$hideemailcheck} /></td>
<
td valign="top"><span class="smalltext"><label for="hideemail">{$lang->hide_email}</label></span></td>
</
tr>
<
tr>
<
td valign="top" width="1"><input type="checkbox" class="checkbox" name="receivepms" id="receivepms" value="1" {$receivepmscheck} /></td>
<
td valign="top"><span class="smalltext"><label for="receivepms">{$lang->receive_pms}</label></span></td>
</
tr>
<
tr>
<
td valign="top" width="1"><input type="checkbox" class="checkbox" name="pmnotice" id="pmnotice" value="1"{$pmnoticecheck} /></td>
<
td valign="top"><span class="smalltext"><label for="pmnotice">{$lang->pm_notice}</label></span></td>
</
tr>
<
tr>
<
td valign="top" width="1"><input type="checkbox" class="checkbox" name="emailpmnotify" id="emailpmnotify" value="1" {$emailpmnotifycheck} /></td>
<
td valign="top"><span class="smalltext"><label for="emailpmnotify">{$lang->email_notify_newpm}</label></span></td>
</
tr>
<
tr>
<
td valign="top" width="1"><input type="checkbox" class="checkbox" name="invisible" id="invisible" value="1" {$invisiblecheck} /></td>
<
td valign="top"><span class="smalltext"><label for="invisible">{$lang->invisible_mode}</label></span></td>
</
tr>
<
tr>
<
td colspan="2"><span class="smalltext"><label for="subscriptionmethod">{$lang->subscription_method}</label></span></td>
</
tr>
<
tr>
<
td colspan="2">
    <
select name="subscriptionmethod" id="subscriptionmethod">
        <
option value="0" {$no_subscribe_selected}>{$lang->no_auto_subscribe}</option>
        <
option value="1" {$no_email_subscribe_selected}>{$lang->no_email_subscribe}</option>
        <
option value="2" {$instant_email_subscribe_selected}>{$lang->instant_email_subscribe}</option>
    </
select>
</
td>
</
tr>
</
table>
</
fieldset>
<
br />
<
fieldset class="trow2">
<
legend><strong><label for="timezone">{$lang->time_offset}</label></strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}width="100%">
<
tr>
<
td><span class="smalltext">{$lang->time_offset_desc}</span></td>
</
tr>
<
tr>
<
td>{$tzselect}</td>
</
tr>
<
tr>
<
td><span class="smalltext">{$lang->dst_correction}</span></td>
</
tr>
<
tr>
<
td>
</
td>
</
tr>
</
table>
</
fieldset>
<
br />
<
fieldset class="trow2">
<
legend><strong><label for="language">{$lang->lang_select}</label></strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}width="100%">
<
tr>
<
td colspan="2"><span class="smalltext">{$lang->lang_select_desc}</span></td>
</
tr>
<
tr>
<
td><select name="language" id="language"><option value="">{$lang->lang_select_default}</option><option value="">-----------</option>{$langoptions}</select></td>
</
tr>
</
table>
</
fieldset>
</
td>
</
tr>
</
table>
<
br />
<
div align="center">
<
input type="hidden" name="step" value="registration" />
<
input type="hidden" name="action" value="do_register" />
<
input type="submit" class="button" name="regsubmit" value="{$lang->submit_registration}/>
</
div>
</
form>
<
script type="text/javascript">
<!--
    
regValidator = new FormValidator('registration_form');
    
regValidator.register('username''notEmpty', {failure_message:'{$lang->js_validator_no_username}'});
    
regValidator.register('email''regexp', {match_field:'email2'regexp:'^([a-zA-Z0-9_\.\+\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$'failure_message:'{$lang->js_validator_invalid_email}'});
    
regValidator.register('email2''matches', {match_field:'email'status_field:'email_status'failure_message:'{$lang->js_validator_email_match}'});
{
$validator_extra}
    
regValidator.register('username''ajax', {url:'xmlhttp.php?action=username_availability'loading_message:'{$lang->js_validator_checking_username}'}); // needs to be last
// -->
</script>
{
$footer}
</
body>
</
html
Ersetze im Template
Code:
<select name="Was bist du?">
<option value="Aldi-Süd Azubi">Aldi-Süd Azubi</option>
<option value="Aldi-Nord Azubi">Aldi-Nord Azubi</option>
</select>
durch
Code:
<select name="was_bist_du">
<option value="1">Aldi-Süd Azubi</option>
<option value="2">Aldi-Nord Azubi</option>
</select>
und in der Datei
PHP-Code:
else
{
    switch(
$mybb->input['Was bist du?']) {
    case 
'Aldi-Süd Azubi':
        
$usergroup 10;
    break;
    case 
'Aldi-Nord Azubi':
        
$usergroup 11;
    break;
    }

durch:
PHP-Code:
switch($mybb->input['was_bist_du']) {
case 
'1':
    
$usergroup 10;
break;
case 
'2':
    
$usergroup 11;
break;

Geht es dann?
Michael......?

Genial!

Danke ich werde die Tage eine komplette zusammen fassung dieses Themas machen.
Anleitung zum oben genannten Thema

  1. Gehe in dein Admincp und erstelle die Gruppen die du haben möchtest!
  2. Lade dir deine member.php runter und gehe auf bearbeiten.
    Zeile 93 - 96 ersetst du durch:
    PHP-Code:
    switch($mybb->input['Deine Frage(z.b Was für eine Gruppe wilst du sein']) {
    case 
    '1':
        
    $usergroup xx;
    break;
    case 
    '2':
        
    $usergroup xx;
    break;

    xx=GID der Benutzergruppe diese findest du, wenn du auf deine Benutzergruppe klickst oben im Link, die Zahl am ende.
  3. suche im admincp nach member-register templade.
    Setze an der gewünschten stelle folgendes ein:
    PHP-Code:
    <select name="Deine Frage (z.b welche Gruppe möchtest du sein?">
    <
    option value="1">Benutzer Gruppe1</option>
    <
    option value="2">Benutzer Gruppe2</option>
    </
    select
    Dies erscheint später auf der Anmeldungs Seite.

    Ändere alle stellen im Script wie angegeben und fertig.
    Viel Spaß
Michael sorry das ich dich noch mal damit belasten muss ich habe ein Problem ich wollte jetzt noch 2 hinzufügen und nun wird keiner erkannt.

Hier meine member.php (ich habe ein größeren auschnitt Kopiert)
PHP-Code:
if($mybb->input['action'] == "do_register" && $mybb->request_method == "post")
{
    
$plugins->run_hooks("member_do_register_start");

    if(
$mybb->settings['regtype'] == "randompass")
    {
        
$mybb->input['password'] = random_str();
        
$mybb->input['password2'] = $mybb->input['password'];
    }

    if(
$mybb->settings['regtype'] == "verify" || $mybb->settings['regtype'] == "admin" || $mybb->input['coppa'] == 1)
    {
        
$usergroup 5;
    }
    else
    {
switch(
$mybb->input['was_bist_du']) {
case 
'1':
    
$usergroup 10;
break;
case 
'2':
    
$usergroup 11;
break;
case 
'3':
    
$usergroup 12;
break;
case 
'4':
    
$usergroup 13;
break;
}
    } 

Und hier meine pasende member_reg....

PHP-Code:
<select name="was_bist_du">

<
option value="1">Aldi-Süd Azubi</option>

<
option value="2">Aldi-Nord Azubi</option>

<
option value="3">Aldi-Süd Mitarbeiter</option>

<
option value="4">Aldi-Nord Mitarbeiter</option>
</
select>
<
tr

Ich check es echt nicht es ging die ganze Zeit!!! mit 2 Gruppen
Entschuldigt, dass ich den Thread hier aufwärme, aber ich habe da noch ne Frage zu.

Zunächst mal funktioniert der Code wunderbar. Jedoch nur wenn der Benutzer sofort automatisch nach der Registrierung freigeschaltet wird.

Wie stellt man es an, dass das z.B. nach der Aktivierung durch den Admin passiert?

Ich könnte mir vorstellen, dass das an dieser Stelle eingefügt werden muss:

Code:
$db->delete_query("awaitingactivation", "uid='".$user['uid']."' AND (type='r' OR type='e')");
        if($user['usergroup'] == 5 && $activation['type'] != "e")
        {
            $db->update_query("users", array("usergroup" => 2), "uid='".$user['uid']."'");

Weiß aber leider nicht wie ich die switch/case Abfrage da reinbringe.

Im selben Zuge stellt sich mir die Frage, ob auch sekundäre Benutzergruppen und die Anzeigegruppe so gesetzt werden können.
Code:
case "1":
    $usergroup = 1;
    $additional_usergroup = 2;
    $displaygroup = 3;
break;
klappt leider nicht.
Vielen Dank im Voraus!
(18.02.2009, 02:55)JDF schrieb: [ -> ]Wie stellt man es an, dass das z.B. nach der Aktivierung durch den Admin passiert?
Das ist etwas schwieriger, da die Benutzergruppe dann irgendwo zwischengespeichert wird. Wenn du die Benutzer sowieso freischaltest, kannst du im ACP doch auch direkt die Gruppe ändern.
Aus seiner primären Gruppe kann man nicht austreten. Entweder erstellst du ein Plugin/Mod dafür oder du steckst alle Benutzer in eine Basisgruppe und der Benutzer kann in deinem Benutzer-CP einer sekundären Gruppe beitreten und sie auch selbst verlassen.
Letzteres habe ich jetzt so praktiziert.
Ich habe es inzwischen auch hinbekommen, dass sekundäre Benutzergruppe und Anzeigegruppe bei der Registrierung (Sofortfreischaltung) gesetzt werden.
Mit Administratorfreischaltung wäre das allerdinngs schöner. Dazu müssten die Optionen aber erst an die Datenbank übergeben, zwischengespeichert und bei Freischaltung an entsprechende Stelle im Benutzerprofil gesetzt werden, richtig? Das ist mir glaub ich zu hoch.
Richtig. Genau das ist der Grund, warum das nicht "mal eben" umsetzbar ist. Wink
Schade...
Noch was: Ich habe da wahrscheinlich nur ein Syntaxproblem und zwar würde ich gerne den Switch mit zwei Variablen ausstatten. Ich hab das so versucht...
Code:
        switch(true) {
            case ($mybb->input['select1'] == "1" && $mybb->input['select2']=="1"):
                 $usergroup = 2;
                 $additionalgroups = 11;
                 $displaygroup = 11;        
                break;
            case ($mybb->input['select2'] =="2" && $mybb->input['select2']=="1"):
                 $usergroup = 2;
                 $additionalgroups = 9;
                 $displaygroup = 9;
                break;
                 .
                 .
                 .
Seiten: 1 2 3