Seite 1 von 1

Modul: Change Password/Passwort ändern

Verfasst: Di 15. Nov 2005, 22:58
von HerrB
Dieses Modul dient zum Ändern des Passworts durch den Frontendnutzer.

Das Modul ist nur für Contenido V4.6.x ff geeignet. Es ist außerdem "on-the-fly" gecoded, wenn es also nicht auf Anhieb funktioniert - tschuldigung (Bananen-Software). Ich hübsche das Ganze auch nochmal bei Gelegenheit, die CSS-Styles fehlen und die Übersetzung muss man zunächst selbst vornehmen... :wink:

Das Modul muss bei einem Artikel eingesetzt werden, der sich in einer geschützen Kategorie befindet. Alle Frontendnutzer sollten Zugriff auf diese Kategorie haben.

Beschreibung:

Code: Alles auswählen

Change Password 1.1

HerrB, 17.11.2005
Nur Ausgabe:

Code: Alles auswählen

<?php
cInclude("classes", "class.frontend.users.php"); 

$frontendusers = new FrontendUserCollection; 
$frontendusers->select("idclient = '$client' AND username = '".urlencode($auth->auth[uname])."'"); 
if ($frontenduser = $frontendusers->next()) { 
   $idfrontend    = $frontenduser->get("idfrontenduser"); 

   $strMsg = ""; 

   if ($_REQUEST["action"] == "save") { 
      if ($_REQUEST["oldpw"] != "" || $_REQUEST["newpw1"] != "" || $_REQUEST["newpw2"] != "") { 
         if ($_REQUEST["oldpw"] == "") { 
            $strMsg = mi18n("If changing the password please provide the current password."); 
         } else if ($_REQUEST["newpw1"] == "" || $_REQUEST["newpw2"] == "") { 
            $strMsg = mi18n("If changing the password please specify new password and retype the new password to avoid typos."); 
         } else if (md5($_REQUEST["oldpw"]) != $frontenduser->get("password")) { 
            $strMsg = mi18n("Old password is wrong."); 
         } else if ($_REQUEST["newpw1"] != $_REQUEST["newpw2"]) { 
            $strMsg = mi18n("If changing the password the new password and the retyped new password must be equal."); 
         } else if (strlen($_REQUEST["newpw1"]) > 24) { 
             $strMsg = mi18n("If changing the password please specify a new password with 24 characters max.."); 
         } else if (strlen($_REQUEST["newpw1"]) < 6) { 
             $strMsg = mi18n("If changing the password please specify a new password with at least 6 characters."); 
         } 
      } 
  
      if ($strMsg == "" && $_REQUEST["oldpw"] != "") { 
        $frontenduser->set("password", $_REQUEST["newpw1"]); 
        $frontenduser->store(); 
        $strMsg = mi18n("Changes has been saved."); 
      } else { 
        $strMsg = '<font color="#FF0000">'.$strMsg.'</font>'; 
      } 
   } 

   echo '<form name="frmProfile" method="post" action="'.$auth->url().'">',chr(10); 
   echo '  <table class="special" cellspacing="0"> ',chr(10); 
   echo '    <tr>',chr(10); 
   echo '      <td class="detail_headline" colspan="2">'.mi18n("Change Password:").'</td>',chr(10); 
   echo '    </tr>',chr(10); 
   if ($strMsg != "") { 
      echo '    <tr>',chr(10); 
      echo '      <td class="detail_text" colspan="2">'.$strMsg.'</td>',chr(10); 
      echo '    </tr>',chr(10); 
   } 
   echo '    <tr>',chr(10); 
   echo '    <tr>',chr(10); 
   echo '      <td class="detail_text" style="width: 100px;">'.mi18n("Old password:").'</td>',chr(10); 
   echo '      <td class="detail_text"><input name="oldpw" type="password" size="24" maxlength="24"></td>',chr(10); 
   echo '    </tr>',chr(10); 
   echo '    <tr>',chr(10); 
   echo '      <td class="detail_text" style="width: 100px;">'.mi18n("New password:").'</td>',chr(10); 
   echo '      <td class="detail_text"><input name="newpw1" type="password" size="24" maxlength="24"></td>',chr(10); 
   echo '    </tr>',chr(10); 
   echo '    <tr>',chr(10); 
   echo '      <td class="detail_text" style="width: 100px;">'.mi18n("Retype password:").'</td>',chr(10); 
   echo '      <td class="detail_text"><input name="newpw2" type="password" size="24" maxlength="24"></td>',chr(10); 
   echo '    </tr>',chr(10); 
   echo '    <tr>',chr(10); 
   echo '      <td class="detail_text" style="width: 100px;">&nbsp;</td>',chr(10); 
   echo '      <td class="detail_text"><input type="hidden" name="action" value="save"><input class="submit" name="subscribe" type="submit" id="subscribe" value="'.mi18n("OK").'"></td>',chr(10); 
   echo '    </tr>',chr(10); 
   echo '  </table>',chr(10); 
   echo '</form>',chr(10); 
}
?> 
Gruß
HerrB

Verfasst: Do 17. Nov 2005, 14:54
von halousi
Fatal error: Call to a member function on a non-object in /is/htdocs/25146/www.xxx-xxx.de/cms/contenido/includes/i ... t.php(650) : eval()'d code on line 1117

Verfasst: Do 17. Nov 2005, 16:05
von HerrB
Tja, als hätte ich es geahnt. Trat nur im Backend oder wenn das Modul in ungeschützten Bereichen verwendet wird, auf.

Korrigiert und Code aktualisiert. Danke fürs Testen.

Gruß
HerrB

Verfasst: Fr 18. Nov 2005, 09:16
von halousi
perfekt, danke!

Verfasst: So 4. Dez 2005, 13:42
von Beleuchtfix
Hallo HerrB
Kann es sein, dass jetzt im Modulkopf Version 1.1 stehen müsste und ein neues Datum zu verwenden ist? (Nur damit ich nicht bei den Versionen durcheinanderkomme :-)

Gruß
Florian

Verfasst: So 4. Dez 2005, 15:00
von HerrB
Ja, hast Recht, geändert.

Gruß
HerrB

Auch Klasse

Verfasst: Do 1. Feb 2007, 19:46
von blau1
Für das Modul auch ein Dankeschön.

Funktioniert super!

Verfasst: Fr 22. Jun 2007, 13:43
von le grand
Hallo HerrB,

hier nochmal mein Anliegen!

Ich habe das Modul der Beispielseite angepasst und noch folgendes Problem! Beim klick im Frontend auf go schließt er das Modul ohne einte aktion durchgeführt zu haben. Java Script ist aktiviert. Was ist in dieser

Code: Alles auswählen

echo '      <td><a href="javascript:document.forms[0].submit(); " style="color: #9d9ea2">Go</a>&nbsp;<a href="javascript:document.forms[0].submit();"><img src="images/navi_pfeil_rechts.gif" alt="Go" title="Go" border="0"/></a></td>',chr(10);
Zeile des gesamten Moduls noch falsch? Ich bin halt ein Newbie was php und contenido Module anbetrifft. Hier nochmal das gesamte Modul incl. der o.g. Zeile.

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Passwort ändern
* Author(s)   :     HerrB
* Copyright   :     HerrB
* Created     :     31.03.2006
************************************************/

cInclude("classes", "class.frontend.users.php");

$frontendusers = new FrontendUserCollection;
$frontendusers->select("idclient = '$client' AND username = '".urlencode($auth->auth[uname])."'");
if ($frontenduser = $frontendusers->next()) {
   $idfrontend    = $frontenduser->get("idfrontenduser");

   $strMsg = "";

   if ($_REQUEST["action"] == "save") {
      if ($_REQUEST["oldpw"] != "" || $_REQUEST["newpw1"] != "" || $_REQUEST["newpw2"] != "") {
         if ($_REQUEST["oldpw"] == "") {
            $strMsg = mi18n("Bitte geben Sie Ihr altes Kennwort ein.");
         } else if ($_REQUEST["newpw1"] == "" || $_REQUEST["newpw2"] == "") {
            $strMsg = mi18n("Bitte achten Sie bei der Kennworteingabe und der Wiederholung auf Tippfehler.");
         } else if (md5($_REQUEST["oldpw"]) != $frontenduser->get("password")) {
            $strMsg = mi18n("Das alte Kennwort ist nicht korrekt!");
         } else if ($_REQUEST["newpw1"] != $_REQUEST["newpw2"]) {
            $strMsg = mi18n("Das neue Kennwort und die Kennwortwiederholung stimmen nicht überein!");
         } else if (strlen($_REQUEST["newpw1"]) > 24) {
             $strMsg = mi18n("Ihr neues Kennwort ist zu lang! Bitte verwenden Sie max. 24 Zeichen.");
         } else if (strlen($_REQUEST["newpw1"]) < 6) {
             $strMsg = mi18n("Ihr neues Kennwort ist zu kurz! Bitte verwenden Sie mind. 6 Zeichen.");
         }
      }
 
      if ($strMsg == "" && $_REQUEST["oldpw"] != "") {
        $frontenduser->set("password", $_REQUEST["newpw1"]);
        $frontenduser->store();
        $strMsg = mi18n("Änderungen wurden gespeichert");
      } else {
        $strMsg = '<font color="#FF0000">'.$strMsg.'</font>';
      }
   }

   echo '<div id="chngpassbox">',chr(10);
   echo '<form name="frmProfile" method="post" action="'.$auth->url().'">',chr(10);
   echo '  <table cellspacing="0"> ',chr(10);
   echo '    <tr>',chr(10);
   echo '      <td colspan="2" style="color: #FF6E2B";>'.mi18n("Kennwort ändern:").'</td>',chr(10);
   echo '    </tr>',chr(10);
   if ($strMsg != "") {
      echo '    <tr>',chr(10);
      echo '      <td colspan="2">'.$strMsg.'</td>',chr(10);
      echo '    </tr>',chr(10);
   }
   echo '    <tr>',chr(10);
   echo '    <tr>',chr(10);
   echo '      <td style="width: 150px;" style="color: #9d9ea2";>'.mi18n("altes Kennwort:").'</td>',chr(10);
   echo '      <td class="detail_text"><input name="oldpw" type="password" size="15" maxlength="24"></td>',chr(10);
   echo '    </tr>',chr(10);
   echo '    <tr>',chr(10);
   echo '      <td style="width: 150px;" style="color: #9d9ea2";>'.mi18n("neues Kennwort:").'</td>',chr(10);
   echo '      <td><input name="newpw1" type="password" size="15" maxlength="24"></td>',chr(10);
   echo '    </tr>',chr(10);
   echo '    <tr>',chr(10);
   echo '      <td style="width: 150px;" style="color: #9d9ea2";>'.mi18n("Kennwort wiederholen:").'</td>',chr(10);
   echo '      <td><input name="newpw2" type="password" size="15" maxlength="24"></td>',chr(10);
   echo '    </tr>',chr(10);
   echo '    <tr>',chr(10);
   echo '      <td style="width: 150px;">&nbsp;</td>',chr(10);
echo '      <td><a href="javascript:document.forms[0].submit(); " style="color: #9d9ea2">Go</a>&nbsp;<a href="javascript:document.forms[0].submit();"><img src="images/navi_pfeil_rechts.gif" alt="Go" title="Go" border="0"/></a></td>',chr(10);
   echo '    </tr>',chr(10);
   echo '  </table>',chr(10);
   echo '</form>',chr(10);
   echo '</div>',chr(10);
}
?>

Verfasst: Fr 22. Jun 2007, 14:14
von HerrB
Das hidden field action muss schon noch drin vorkommen...

Code: Alles auswählen

<input type="hidden" name="action" value="save">
Einfach vor dem <a href... ergänzen.

Gruß
HerrB

Verfasst: Mo 25. Jun 2007, 07:06
von le grand
Hallo HerrB

erstmal danke für die schnelle Hilfe, doch leider funzt das auch noch nicht! Nach bestätigen des Go links bekomme ich immer die Suchergebnisse (nachfolgenden Pfad)
http://server/ordner/cms/front_content.php?idcat=40
geöffnet.
Vielleicht noch eine idee???

kann es sein das ich die action in der folgenden zeile noch abändern muss und wenn ja wie?

Code: Alles auswählen

echo '<form name="frmProfile" method="post" action="'.$auth->url().'">',chr(10);
Gruss
Le Grand

Verfasst: Mo 25. Jun 2007, 16:01
von HerrB
Das liegt daran, dass Du offensichtlich mehrere Formulare auf einer Seite hast (ein nicht unwesentliches Detail) und das Modul immer das erste absendet. Verwende statt

Code: Alles auswählen

document.forms[0].submit();

Code: Alles auswählen

document.frmProfile.submit();
Gruß
HerrB

Verfasst: Di 26. Jun 2007, 10:06
von le grand
Hi HerrB!

wärst du FrauB würde ich Dir jetzt ein Bussy geben;) so muss Dir ein fettes DANKESCHÖN reichen!

So einfach kann Tennis sein wenn man es spielen kann, denn folgende Variante hatte ich auch schon vergebens getestet nur leider war die null noch zuviel;)

Code: Alles auswählen

document.frmProfile[0].submit();
Nochmal Danke!

gruss
Le Grand

Verfasst: Di 26. Jun 2007, 12:15
von HerrB
:oops:

Gruß
HerrB

Verfasst: Fr 13. Jul 2007, 10:11
von malsdgtac
Hallo HerrB,

wieder mal ein super nettes Teil von dir. Hat auf Anhieb geklappt, danke dafür.