Seite 1 von 2

Email-Adressenwechsel verbieten

Verfasst: 22.03.2007 14:19
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??? :-?

Verfasst: 22.03.2007 15:09
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,

Verfasst: 22.03.2007 15:20
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:

Verfasst: 22.03.2007 15:34
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

Verfasst: 22.03.2007 17:41
von -Tanja-
Ja schon....aber so weit reicht leider mein Wissen noch nicht.
Kannst du mir viell. ein Beispiel sagen?

Danke schon mal.

Verfasst: 22.03.2007 19:06
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

Verfasst: 22.03.2007 19:21
von -Tanja-
Also.

Wunderbar.

Funktioniert einwandfrei easygo.

vielen Dank :wink: :wink:

Verfasst: 22.03.2007 19:45
von easygo
War nicht ganz sauber, sry. Aber jetzt! Hoffentlich. :wink: easy

Verfasst: 22.03.2007 19:49
von -Tanja-
Was wurde denn geändert? :roll:

Verfasst: 22.03.2007 19:55
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'];