Autor Thema: Passwort vergessen mit AJAX  (Gelesen 8358 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Passwort vergessen mit AJAX
« am: Januar 17, 2010, 15:31:04 »
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!

Linkback: https://www.shoppilot.net/pf/index.php?topic=1375.0
mfG
dobra

Offline Joachim

  • Full Member
  • ***
  • Beiträge: 142
  • Lob: 2
    • Barrique-Shop
Re: Passwort vergessen mit AJAX
« Antwort #1 am: Januar 18, 2010, 22:28:29 »
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
« Letzte Änderung: Januar 18, 2010, 22:41:07 von Joachim »
Beste Gr?sse aus Berlin

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


xx
Passwort vergessen

Begonnen von dobra

2 Antworten
8778 Aufrufe
Letzter Beitrag Juni 01, 2008, 18:36:18
von dobra
xx
Username und Passwort vergessen

Begonnen von phalbig

6 Antworten
6353 Aufrufe
Letzter Beitrag Februar 10, 2007, 20:45:50
von phalbig
xx
Passwort vergessen, pdf-Text

Begonnen von jg

4 Antworten
8506 Aufrufe
Letzter Beitrag November 21, 2002, 10:03:18
von hop
xx
"Passwort vergessen" - DB Abfrage

Begonnen von dobra

3 Antworten
10002 Aufrufe
Letzter Beitrag Januar 17, 2010, 15:32:24
von dobra