Email-Adressenwechsel verbieten

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
-Tanja-
Mitglied
Beiträge: 1051
Registriert: 03.02.2007 08:19

Email-Adressenwechsel verbieten

Beitrag von -Tanja- »

Hallo

Ich bastel gerade ein , na ja , sagen wir mal Snippet, daß den Usern verbietet ihre Email Adresse zu wechseln.
Einstellbar soll alles im ACP sein. Dort soll man es aus-und einschalten können.
Genau so wie mit dem Namenswechsel.

So soll es ausschauen (ist nur eine provisorische Skizze :oops: ):

öffne: language/lang_german/lang_admin.phpund suche:

Code: Alles auswählen

$lang['Allow_name_change'] = 'Namenswechsel erlauben';
füge danach ein:

Code: Alles auswählen

$lang['Allow_email_change'] = 'Emailwechsel erlauben';
öffne: admin/admin_board.php
und suche:

Code: Alles auswählen

$namechange_no = ( !$new['allow_namechange'] ) ? "checked=\"checked\"" : "";
füge danach ein:

Code: Alles auswählen

$emailchange_yes = ( $new['allow_emailchange'] ) ? "checked=\"checked\"" : "";
$emailchange_no = ( !$new['allow_emailchange'] ) ? "checked=\"checked\"" : "";
öffne: templates/XXX/admin/board_config_body.tpl
suche:

Code: Alles auswählen

	<tr>
		<td class="row1">{L_ALLOW_NAME_CHANGE}</td>
		<td class="row2"><input type="radio" name="allow_namechange" value="1" {NAMECHANGE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="allow_namechange" value="0" {NAMECHANGE_NO} /> {L_NO}</td>
	</tr>
füge danach ein:

Code: Alles auswählen

	<tr>
		<td class="row1">{L_ALLOW_EMAIL_CHANGE}</td>
		<td class="row2"><input type="radio" name="allow_emailchange" value="1" {EMAILCHANGE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="allow_emailchange" value="0" {EMAILCHANGE_NO} /> {L_NO}</td>
        </tr>
Danach habe ich in der DB in der Tabelle phpbb_config
config_name : allow_emailchange
config_value : 0
eingefügt.

Somit dachte ich das er die Werte in der Board-Konfiguration übernimmt aber Pustekuchen :roll:

Jedesmal wenn ich auf "Absenden" (Submit) klicke, bleibt es beim alten und der Punkt ist nicht zu sehen. Es wird auch nichts verändert.
Die User können weiterhin fröhlich ihre Email Adressen ändern. :roll:

Wo habe ich in der SQL einen Wurm drinnen??? :-?
Zuletzt geändert von -Tanja- am 22.03.2007 22:09, insgesamt 2-mal geändert.
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

-Tanja- hat geschrieben:Jedesmal wenn ich auf "Absenden" (Submit) klicke, bleibt es beim alten und der Punkt ist nicht zu sehen. Es wird auch nichts verändert.
Würde sagen, deine admin_board.php vermisst die Assigns

Code: Alles auswählen

[ FIND ]

	"NAMECHANGE_NO" => $namechange_no,

[ AFTER, ADD ]

	"EMAILCHANGE_YES" => $emailchange_yes,
	"EMAILCHANGE_NO" => $emailchange_no,
-Tanja-
Mitglied
Beiträge: 1051
Registriert: 03.02.2007 08:19

Beitrag von -Tanja- »

hmmm :roll: .....wäre fast perfekt.
Etwas fehlt aber immer noch.
Das Email Feld im Profil ist weiterhin anwählbar und kann auch geändert werden vom User.

Das sollte es aber nicht.

Irgendwo fehlt noch irgend etwas!...aber wo?

Danke dir auf jeden fall easygo. Das war schon mal ne Hilfe. :wink:
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Nur ne Option definieren reicht halt nicht. Du musst die schon
auch irgendwo einsetzen, wenns was bewirken soll :/

Als Beispiel in der usercp_register.php
-Tanja-
Mitglied
Beiträge: 1051
Registriert: 03.02.2007 08:19

Beitrag von -Tanja- »

Ja schon....aber so weit reicht leider mein Wissen noch nicht.
Kannst du mir viell. ein Beispiel sagen?

Danke schon mal.
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Ok aber so wie das aussieht, ist dir mit Beispiel ja nicht geholfen..

Hier mal ne Umbauanleitung für includes/usercp_register.php (ungetestet)

[ FIND ]

Code: Alles auswählen

	if ( $email != $userdata['user_email'] || $mode == 'register' )
	{
		$result = validate_email($email);
		if ( $result['error'] )
		{
			$email = $userdata['user_email'];

			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
		}

		if ( $mode == 'editprofile' )
		{
			$sql = "SELECT user_password
				FROM " . USERS_TABLE . "
				WHERE user_id = $user_id";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
			}

			$row = $db->sql_fetchrow($result);

			if ( $row['user_password'] != md5($cur_password) )
			{
				$email = $userdata['user_email'];

				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
			}
		}
	}
[ REPLACE WITH ]

Code: Alles auswählen

	$email_sql = '';
	if ( $board_config['allow_emailchange'] || $mode == 'register' )
	{
		if ( empty($email) )
		{
			// Error is already triggered, since one field is empty.
			$error = TRUE;
		}
		else if ( $email != $userdata['user_email'] || $mode == 'register' )
		{
			$result = validate_email($email);
			if ( $result['error'] )
			{
				$email = $userdata['user_email'];
	
				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
			}

			if ( $mode == 'editprofile' )
			{
				$sql = "SELECT user_password
					FROM " . USERS_TABLE . "
					WHERE user_id = $user_id";
				if ( !($result = $db->sql_query($sql)) )
				{
					message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
				}
	
				$row = $db->sql_fetchrow($result);
	
				if ( $row['user_password'] != md5($cur_password) )
				{
					$email = $userdata['user_email'];
	
					$error = TRUE;
					$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
				}
			}
			if (!$error)
			{
				$email_sql = "user_email = '" . str_replace("\'", "''", $email) . "', ";
			}
		}
	}
[ FIND ]

Code: Alles auswählen

				SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popup_pm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . "
[ REPLACE WITH ]

Code: Alles auswählen

				SET " . $username_sql . $passwd_sql . $email_sql . "user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popup_pm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . "
[ FIND ]

Code: Alles auswählen

	else
	{
		$template->assign_block_vars('switch_namechange_disallowed', array());
	}
[ AFTER, ADD ]

Code: Alles auswählen

	if ( ($mode == 'register') || ($board_config['allow_emailchange']) )
	{
		$template->assign_block_vars('switch_emailchange_allowed', array());
	}
	else
	{
		$template->assign_block_vars('switch_emailchange_disallowed', array());
	}
Umbauanleitung für templates/subSilver/profile_add_body.tpl (ggf. an andere Styles anpassen)

[ FIND ]

Code: Alles auswählen

	<tr> 
		<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span></td>
		<td class="row2"><input type="text" class="post" style="width:200px" name="email" size="25" maxlength="255" value="{EMAIL}" /></td>
	</tr>
[ REPLACE WITH ]

Code: Alles auswählen

	<!-- BEGIN switch_emailchange_disallowed -->
	<tr> 
		<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span></td>
		<td class="row2"><input type="hidden" name="username" value="{EMAIL}" /><span class="gen"><b>{EMAIL}</b></span></td>
	</tr>
	<!-- END switch_emailchange_disallowed -->
	<!-- BEGIN switch_emailchange_allowed -->
	<tr> 
		<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span></td>
		<td class="row2"><input type="text" class="post" style="width:200px" name="email" size="25" maxlength="255" value="{EMAIL}" /></td>
	</tr>
	<!-- END switch_emailchange_allowed -->
Viel Spass beim Testen. easy
Zuletzt geändert von easygo am 22.03.2007 19:43, insgesamt 1-mal geändert.
-Tanja-
Mitglied
Beiträge: 1051
Registriert: 03.02.2007 08:19

Beitrag von -Tanja- »

Also.

Wunderbar.

Funktioniert einwandfrei easygo.

vielen Dank :wink: :wink:
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

War nicht ganz sauber, sry. Aber jetzt! Hoffentlich. :wink: easy
-Tanja-
Mitglied
Beiträge: 1051
Registriert: 03.02.2007 08:19

Beitrag von -Tanja- »

Was wurde denn geändert? :roll:
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

In usercp_register.php zweimal suchen

Code: Alles auswählen

$email_sql = $userdata['user_email'];
und ersetzen durch

Code: Alles auswählen

$email = $userdata['user_email'];
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“