Mitglieder ändern ihre eMail-Adresse?!

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Antworten
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Mitglieder ändern ihre eMail-Adresse?!

Beitrag von Ralf »

Hallo zusammen,

ich hätte da jetzt noch eine kleine Frage.
Gibt es eine Möglichkeit, dass Mitglieder ihre eMail-Adresse selber ändern können??

z.B. Passwort ändern geht ja mittels _rubric/member.php?action=password
gibt es für die eMail-Adresse auch so etwas oder wie müsste denn der Code dafür aussehen um dies den Mitglieder anzubieten?!!

(Ok ich weiß die eMail-Adresse ist KEIN Pflichtfeld für Mitglieder aber ich möchte sie als solche einführen!)

cu Ralf
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Mache sie zu Redakteuren ohne Rechte an Rubriken.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

MarkusR hat geschrieben:Mache sie zu Redakteuren ohne Rechte an Rubriken.
;-) das hast du mir ja schon gesagt, jedoch das möchte ich eigentlich nicht machen wenn es sich irgendwie vermeiden lässt?!!

Gibt es keinen SQL Abfrage oder sonst etwas mit dem ein eingeloggtes Mitglied seine eingene eMail-Adresse ändern könnte?!!

cu Ralf
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Du müsstest schon member.php bearbeiten.
Dazu müsste ein weiters Feld ins Formular und die Abfrage erweitert werden.

Schaue es Dir doch mal an, die zwei Bereiche, die jeweils mit

Code: Alles auswählen

case 'change_password':
beginnen, sollten dafür interessant sein.

Die Möglichkeit über das Backend ist eben sicher!
Was Du willst hängt von Deinen eigenen Fähigkeiten ab...

mach' es einfach und poste es dann hier... :wink:

Natürlich könnte man Mitgliedern auch erlauben eine SQL-Abfrage auszuführen, aber das würden die meisten hier nicht mal einem Administrator gestatten... :wink: :twisted:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

@ MarkusR,

vielen Dank für den Ansporn, ja ich habe tatsächlich eine Lösung auf den Weg gebracht :!:

Hier mein Code für alle anderen:
(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.');
        logaction('changed password', '');
        $views = array('message');
        break; // }}}
füge DANACH ein:

Code: Alles auswählen

    case 'email': // {{{
        if (!isset($_SESSION['SID_log_login_id'])) {
            $message[] = ___('You have to be logged in to change your email.');
            break;
        }
        $views = array('change_email');
        break; // }}}}
	case 'email_change': // {{{
        if (!isset($_SESSION['SID_log_login_id'])) {
            $message[] = ___('You have to be logged in to change your email.');
            break;
        }

        $views = array('change_email');

        // test valid email
		if(!empty($_POST['newemail']) && !preg_match("/^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$/", $_POST['newemail'])) {
            $message[] = ___('Please make sure the email format is valid.');
            break;
         }
		 
        // update email
        $query = "UPDATE ".CPO_USER." "
            ."SET email='".addslashes($_POST['newemail'])."' "
            ."WHERE user='".addslashes($_SESSION['SID_login'])."' ";
        $db->query($query);

        $message[] = ___('You have changed your email.');
        logaction('changed email', '');
        $views = array('message');
        break; // }}}
Suche folgenden Code:

Code: Alles auswählen

        echo '<input type="submit" class="button" value="'.___('change password').'">';
        echo '</form>';
        include(CPO_BASEDIR.$directory.'/loadfooters.php');
        break; // }}}
füge DANACH ein:

Code: Alles auswählen

    case 'change_email': // {{{
        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="email_change">';
        echo '<input type="hidden" name="rubric" value="'.(int)$cpoRubric['id'].'">';
        echo ___('Please enter your new email.').'<br />';
        echo ___('Old email:').'<br />';
        echo '<input type="text" name="oldemail" value="'.$_SESSION['SID_user'][email].'"><br />';
        echo ___('New email:').'<br />';
        echo '<input type="text" name="newemail"><br />';
        echo '<input type="submit" class="button" value="'.___('change email').'">';
        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.',
füge DANACH ein:

Code: Alles auswählen

'Please enter your new email.'
=> 'Bitte geben Sie Ihre neue eMail-Adresse ein.',

'Old email:'
=> 'Alte eMail-Adresse:',

'New email:'
=> 'Neue eMail-Adresse:',

'change email'
=> 'eMail-Adresse ändern',

'You have to be logged in to change your email.'
=> 'Sie müssen angemeldet sein, um Ihre eMail-Adresse zu ändern.',

'You have changed your email.'
=> 'Sie haben Ihre eMail-Adresse geändert.',

'Please make sure the email format is valid.'
=> 'Bitte stellen Sie sicher, dass die eingegebene eMail-Adresse gültig ist.',
nun alles speichern, hoch auf den Webspace und mit dem Befehl:

Code: Alles auswählen


_rubric/member.php?action=email

können nun auch die Mitglieder ihre eMail-Adressen ändern!! :wink:

Viel Spaß damit!!
cu Ralf
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

Hallo, da irgendwie mein PC heute spinnt und ich mein letztes Posting NICHT editieren kann, hier einfach der NEUE Code für CPO 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; // }}}
füge DANACH ein:

Code: Alles auswählen

    case 'email': // {{{
        if (!isset($_SESSION['SID_log_login_id'])) {
            $message[] = ___('You have to be logged in to change your email.', $cpoRubricSettings['language']);
            break;
        }
        $views = array('change_email');
        break; // }}}}
	case 'email_change': // {{{
        if (!isset($_SESSION['SID_log_login_id'])) {
            $message[] = ___('You have to be logged in to change your email.', $cpoRubricSettings['language']);
            break;
        }

        $views = array('change_email');

        // test valid email
		if(!empty($_POST['newemail']) && !preg_match("/^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$/", $_POST['newemail'])) {
            $message[] = ___('Please make sure the email format is valid.', $cpoRubricSettings['language']);
            break;
         }
		 
        // update email
        $query = "UPDATE ".CPO_USER." "
            ."SET email='".addslashes($_POST['newemail'])."' "
            ."WHERE user='".addslashes($_SESSION['SID_login'])."' ";
        $db->query($query);

        $message[] = ___('You have changed your email.', $cpoRubricSettings['language']);
        logaction('changed email', '');
        $views = array('message');
        break; // }}}
Suche folgenden Code:

Code: Alles auswählen

        echo '<input type="submit" class="button" value="'.___('change password', $cpoRubricSettings['language']).'">';
        echo '</form>';
         include(CPO_BASEDIR.$directory.'/loadfooters.php');
        break; // }}}
füge DANACH ein:

Code: Alles auswählen

    case 'change_email': // {{{
        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="email_change">';
        echo '<input type="hidden" name="rubric" value="'.(int)$cpoRubric['id'].'">';
        echo ___('Please enter your new email.', $cpoRubricSettings['language']).'<br />';
        echo ___('Old email:', $cpoRubricSettings['language']).'<br />';
        echo '<input type="text" name="oldemail" value="'.$_SESSION['SID_user'][email].'"><br />';
        echo ___('New email:', $cpoRubricSettings['language']).'<br />';
        echo '<input type="text" name="newemail"><br />';
        echo '<input type="submit" class="button" value="'.___('change email', $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.',
füge DANACH ein:

Code: Alles auswählen

'Please enter your new email.'
=> 'Bitte geben Sie Ihre neue eMail-Adresse ein.',

'Old email:'
=> 'Alte eMail-Adresse:',

'New email:'
=> 'Neue eMail-Adresse:',

'change email'
=> 'eMail-Adresse ändern',

'You have to be logged in to change your email.'
=> 'Sie müssen angemeldet sein, um Ihre eMail-Adresse zu ändern.',

'You have changed your email.'
=> 'Sie haben Ihre eMail-Adresse geändert.',

'Please make sure the email format is valid.'
=> 'Bitte stellen Sie sicher, dass die eingegebene eMail-Adresse gültig ist.',
nun alles speichern, hoch auf den Webspace und mit dem Befehl:

Code: Alles auswählen


_rubric/member.php?action=email

können nun auch die Mitglieder ihre eMail-Adressen ändern!! :wink:

Viel Spaß damit!!
cu Ralf
Antworten