wie auch schon in meinem anderen Artikel Mitglieder ändern ihre eMail-Adresse?!, habe ich heute nun einen kurzen Code zusammengeschrieben damit die MITGLIEDER (die keinen Zugang zum Backend haben) ihren Namen selbständig ändern können!!
Dazu ist wie folgt vorzugehen (Code ist für Version 4.0.5a):
(ACHTUNG: die Start-/ Stoptags (< ? sowie ? > ) gehören nicht zum Code und dürfen NICHT mitkopiert werden!!)
Öffne Datei member.php (in der gewünschten Rubrik - z.B. _rubric)
Suche Code:
Code: Alles auswählen
$message[] = ___('You have changed your password.', $cpoRubricSettings['language']);
logaction('changed password', '');
$views = array('message');
break; // }}}
Code: Alles auswählen
case 'username': // {{{
if (!isset($_SESSION['SID_log_login_id'])) {
$message[] = ___('You have to be logged in to change your username.', $cpoRubricSettings['language']);
break;
}
$views = array('change_username');
break; // }}}}
case 'username_change': // {{{
if (!isset($_SESSION['SID_log_login_id'])) {
$message[] = ___('You have to be logged in to change your username.', $cpoRubricSettings['language']);
break;
}
$views = array('change_username');
// update username
$query = "UPDATE ".CPO_USER." "
."SET name='".addslashes($_POST['newusername'])."' "
."WHERE user='".addslashes($_SESSION['SID_login'])."' ";
$db->query($query);
$message[] = ___('You have changed your username.', $cpoRubricSettings['language']);
logaction('changed username', '');
$views = array('message');
break; // }}}
Code: Alles auswählen
echo '<input type="submit" class="button" value="'.___('change password', $cpoRubricSettings['language']).'">';
echo '</form>';
include(CPO_BASEDIR.$directory.'/loadfooters.php');
break; // }}}
Code: Alles auswählen
case 'change_username': // {{{
include(CPO_BASEDIR.$directory.'/loadheaders.php');
include(CPO_BASEDIR.'_include/message.php'); // FIXME STEFFEN, wirklich diese Messages benutzen?
echo '<form method="post" action="'.htmlspecialchars($_SERVER['PHP_SELF']).'">';
echo '<input type="hidden" name="action" value="username_change">';
echo '<input type="hidden" name="rubric" value="'.(int)$cpoRubric['id'].'">';
echo ___('Please enter your new username.', $cpoRubricSettings['language']).'<br />';
echo ___('Old username:', $cpoRubricSettings['language']).'<br />';
echo '<input type="text" name="oldusername" value="'.$_SESSION['SID_user'][name].'"><br />';
echo ___('New email:', $cpoRubricSettings['language']).'<br />';
echo '<input type="text" name="newusername"><br />';
echo '<input type="submit" class="button" value="'.___('change username', $cpoRubricSettings['language']).'">';
echo '</form>';
include(CPO_BASEDIR.$directory.'/loadfooters.php');
break; // }}}
Dann noch die Meldungen hinterlegen:
Öffne die Datei _include/lang/deutsch/common.inc.php
suche folgenden Code:
Code: Alles auswählen
'You have changed your password.'
=> 'Sie haben Ihr Passwort geändert.',
Code: Alles auswählen
'Please enter your new username.'
=> 'Bitte geben Sie Ihren neuen Namen ein.',
'Old username:'
=> 'Alter Name des Benutzers:',
'New username:'
=> 'Neuer Name des Benutzers:',
'change username'
=> 'Name des Benutzers ändern',
'You have to be logged in to change your username.'
=> 'Sie müssen angemeldet sein, um Ihren Namen zu ändern.',
'You have changed your username.'
=> 'Sie haben Ihren Namen erfolgreich geändert.',
Code: Alles auswählen
_rubric/member.php?action=username
Viel Spaß damit!!
cu Ralf