Passwort vergessen mit AJAX

Begonnen von dobra, Januar 17, 2010, 15:31:04

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

wenn man "Kunden automatisch anlegen" aktiviert hat, werden diese ja auch dann in die USR-Tabelle geschrieben, wenn sie nicht registriert sind = kein Login und Passwort haben.
In diesem Fall kann die PW-Erinnerung nicht funktionieren
Problem s. http://www.shoppilot.net/pf/index.php?topic=753.0

Mit AJAX gibt es auch dafür eine Lösung  :D

Voraussetzung (wie bei allen Ajax-Anwendungen):
der "ajax"-Ordner ist im Shopverzeichnis vorhanden, die Dateien sind im WC in "Dateien hinzufügen" Liste eingetragen und in der Seite, auf der ajax verwendet werden soll eingebunden.
(wenn ajaxsearch installiert ist, sind alle Voraussetzungen bereits erfüllt)

1) eine pwlost.html Datei mit Inhalt <!--spmacro:include(ajax/pwlost.ipl)--> erstellen und im "ajax" Ordner ablegen
2) eine Infoseite mit beliebigem Namen anlegen und bei "Vorlage" pwlost.html eintragen
3) die Dateien pwlost.js und pwlost.ipl ebenfalls im "ajax" Ordner anlegen

pwlost.js:

function pwsuchen(){

if (-1 != myPW_lost.search(/__xxpath__\?/)) {
     return;
 }
 
var address = document.getElementById('mymail').value;
 
 var postdata = {
method : 'searchPW',
id : 0,
params : [address]
};
try {
req = new HTTP.Request(
{
uri: myPW_lost,
postbody: postdata.toJSONString(),
onSuccess: function (trans) {
var data;
try {
data = eval('('+trans.responseText+')'); // JSON "parsen"
} catch(e) {
return;  
}
       var result = data['_searchPW'];

       if (result == 0){
document.getElementById("shownoresult").innerHTML = 'diese e-mail Adresse haben wir nicht in unserer Datenbank!<br>vielleicht haben Sie sich vertippt?<br>versuchen Sie es bitte noch mal.';
       }
         if (result == 1){
document.getElementById("showresult").innerHTML = 'Ihre Zugangsdaten wurden soeben gesendet.<br>Bitte rufen Sie Ihre Mailbox ab und loggen sich ein.';
document.getElementById("shownoresult").innerHTML = ' ';
         }
     }
});
}
catch(e)
{
return;
}
   return false;
}


die beiden .innerHTML Meldungen können natürlich angepasst werden

pwlost.ipl:
<!--spmacro:module(pwlost)
                   
push(@INC,'ajax');
require "JSON.pm";

print "Content-Type: text/plain;charset=ISO-8859-1\n\n";
#use utf8;
my $pCall = JSON::jsonToObj($main::input);
my %result;
$result{_call} = $pCall;

if ($pCall->{method} eq 'searchPW') {
 
 my $mail =  $pCall->{params}[0]; # Die eingetippte MailAdresse
 
 my $USRTBL = ssp::db_get_prefix() . "USR";
 my $read = ssp::readSQLData(qq|SELECT EMAIL, LOGIN, PASSWORD, ANREDE, NAME FROM $USRTBL WHERE (EMAIL='$mail' AND length(LOGIN) > 2 AND length(PASSWORD) > 2)|, "EMAIL","LOGIN","PASSWORD","ANREDE","NAME");

my $email = ssp::get_var_db("EMAIL",0);
my $login = ssp::get_var_db("LOGIN",0);
my $pw = ssp::get_var_db("PASSWORD",0);
my $anrede = ssp::get_var_db("ANREDE",0);
my $name = ssp::get_var_db("NAME",0);

   if($email eq "undefined") { $result{_searchPW} = 0; }
else { #Mail-Adresse vorhanden
 $result{_searchPW} = 1;
 
my $prog = ssp::get_mailprog(); # Pfad zum Mailprogramm
my $mailtext = qq|Hallo $anrede $name,\n\nHier Ihre Zugangsdaten zum Kundenbereich im Woll-Insel Shop\n\nIhr Login-Name ist: $login\nIhr Passwort ist: $pw\n\nbewahren Sie diese Daten sicher vor dem Zugriff Dritter auf.\n\nnachdem Sie sich eingeloggt haben, können Sie Ihre Daten im Kunden- Administratinonbereich jederzeit einsehen und gegebenenfalls ändern\n\nMit freundlichen Grüßen\nWoll-Insel Webmaster|;
my $from = "order\@domain.at";
open(MAIL,"|$prog -t");
print MAIL "From: $from\n";
print MAIL "To: $email\n";
print MAIL "Subject: Ihre Zugangsdaten\n\n";
print MAIL $mailtext;
close(MAIL);
}  

}

print JSON::objToJson(\%result);
exit 0;

-->


hier ist folgende Anpassung nötig:
my $from = "order\@domain.at";
bitte IHRE Absenderadresse eintragen

Außerdem kann natürlich der Subject: und my $mailtext angepasst werden.
ACHTUNG: der Mailtext (alles was zwischen qq| und |; steht) MUSS in einer Zeile stehen!!!  
Zeilenumbrüche in der Mail mit \n definieren.

In der HTML-Vorlage sind jetzt noch diese Einträge nötig:
 
<script type="text/javascript">
// Server-URL für die Ajax-Abfragen
var myPW_lost = "__xxpath__?ajax1200006540,__xxsession__";  ##hier die Seitennr. Ihrer Infoseite eintragen!
</script>
<script type="text/javascript" src="../ajax/pwlost.js"></script>

im Body-Teil noch ein div über das Formular legen, damit es im Erfolgsfall mit der "Daten wurden gesendet" Meldung ersetzt wird, ein div für die Fehlermeldung
und im Formular eine ID sowie den Aufruf der Ajaxfunktion

Beispiel:
<div class="errortext" id="shownoresult"></div>  ## hier wird die Fehlermeldung ausgegeben
<div id="showresult">  ## im Erfolgsfall wird hier die Eingabeaufforderung ausgeblendet und Meldung "...wurde gesendet..." ausgegeben
         <table  border="0">
           <form id="PWlost" method=post action="__UDC__"  onSubmit="return pwsuchen();">
             <tr >
               <td align="center"> Geben Sie hier Ihre Email Adresse an.</td>
             </tr>
             <tr >
               <td align="center"><br><input name="eMail" id="mymail" value="xxxx@yyyy.zz" onFocus="this.value=''"></td>
             </tr>
             <tr >
               <td  align="center" class="boxtext2"><br><br>
        <input type=image name=ok  SRC="http://www.woll-insel.at/shop2/Icon/Pass-senden.gif">
               </td>
             </tr>
           </form>
         </table>
</div>  

4) die Dateien pwlost.js und pwlost.ipl in die "Dateien hinzufügen" Liste eintragen und Shop veröffentlichen

Hinweis: funktioniert nur online!
mfG
dobra

Joachim

#1
Uuuoops, jetzt ist so viel verschoben in das neue SSP-AJAX-Beispiele, auch die Antwort, nein besser: ideale Lösung!, auf mein Problemchen.
Das ist einfach perfekt. Hier hats auch den richtigen Sammel-Platz.
Danke Dobra  ;D
Beste Gr?sse aus Berlin

Joachim
www.barrique-shop.de
www.barrique.com (Typo3-CMS)
www.tapola-camphill.net (Typo3-CMS)