Jump to content
xt:Commerce Community Forum

Anmelde Formular nur einmal eMail abfragen


giller

Recommended Posts

Genau das sollten wir nicht diskutieren.

1. Verschreiber der eMail sind nicht all zu häufig sonst würden nicht soviele die

doppelt eingabe weg rationalisieren.

2. In den fällen wo es Probleme gibt kann man sie ja manuel ändern.

z.b fals ein mail no deliverie kommt gleich auf der rechnung drauf hinweisen.

3. Und das formular zu kürzen hatt ein mehr wert (da is mir die 2% fehleingabe wohl egal wenn es 20% mehr conservation bedeutet)

Ich glaub noch vernünftiger kann man es nicht begründen obwohl ein punkt gibt

es noch aber wir wollen ja nicht alles veraten

Link to comment
Share on other sites

Ich habe dies bei mir realisiert:

1. Nur eine Email zum eingeben

==> Es wird nur ein Feld angezeigt zum eingeben

==> Es wird nicht geprüft auf das zweite Email-Feld

==> Es wird allerdings geprüft ob die Email einen gültigen Syntax hat

(z. B. @-Zeichen und Punkt in der Email, auch die Mindestlänge wird geprüft)

2. Email habe ich ebenfalls als Pflichtfeld realisiert.

Ich kann dir allerdings erst später die Änderung vom Code geben da ich gerade nicht an meinen Webspace komme ;-)

Grüße

Link to comment
Share on other sites

Hat doch bisschen länger gedauert ;)

Modifizierungen:

login.html (DEIN_TEMPLATE => xtCore => pages)

  

  <tr>

    <td>{txt key=TEXT_EMAIL}:</td>

    <td>{form type=text name=cust_info[customers_email_address] value=$cust_info.customers_email_address note=*}</td>

  </tr>

 [COLOR="red"] <tr>

    <td>{txt key=TEXT_EMAIL_CONFIRM}:</td>

    <td>{form type=text name=cust_info[customers_email_address_confirm] value=$cust_info.customers_email_address_confirm note=*}</td>

  </tr>[/COLOR]
Der Code in rot muss raus, entweder auskommentieren oder löschen. class.customer.php (xtFramework => classes) Suche die Funktion: "function _checkCustomerData"

if($check_data == true){

			$this->_checkLenght($data['customers_email_address'], _STORE_EMAIL_ADDRESS_MIN_LENGTH, ERROR_EMAIL_ADDRESS);

			[COLOR="red"]$this->_checkLenght($data['customers_email_address_confirm'], _STORE_EMAIL_ADDRESS_MIN_LENGTH, ERROR_EMAIL_ADDRESS);

			$this->_checkMatch($data['customers_email_address'], $data['customers_email_address_confirm'], ERROR_EMAIL_ADDRESS_NOT_MATCHING);[/COLOR]            


                                      $this->_checkEmailAddress($data['customers_email_address'], ERROR_EMAIL_ADDRESS_SYNTAX);


Der Code in rot muss raus, entweder auskommentieren oder löschen.

VORSICHT:

Ist ein Core-Mod, wird beim nächsten Update überschrieben, also lieber mal merken ;)

Link to comment
Share on other sites

evtl besser über einen hook einfach customers_email_address_confirm=customers_email_address setzen, dann ist das auch update-sicher.

zb über class.customer.php:_registerCustomer_top

$data['customers_email_address_confirm']=$data['customers_email_address'];

müsste ansich genügen.

Link to comment
Share on other sites

evtl besser über einen hook einfach customers_email_address_confirm=customers_email_address setzen, dann ist das auch update-sicher.

zb über class.customer.php:_registerCustomer_top

müsste ansich genügen.

Hallo Herr Zanier,

dies ist ein sehr interessanter Ansatz.

Wenn ich dies richtig verstanden habe dann wäre die Lösung über ein Plugin welches die "confirm email" gleichsetzt mit der "ersten eingegebenen email" ?

Quasi:

SET customers_email_address_confirm = customers_email_address

Habe ich dies so richtig verstanden?

Grüße

Link to comment
Share on other sites

Wenn ich dies richtig verstanden habe dann wäre die Lösung über ein Plugin welches die "confirm email" gleichsetzt mit der "ersten eingegebenen email" ?

ja.

es sollte dann diese zeile reichen, und im template kann man die abfrage entfernen.

fürn den core bringt das gleichsetzen dann einfach den effekt als ob es auch 2 mal korrekt eingegeben wurde.

Link to comment
Share on other sites

fürn den core bringt das gleichsetzen dann einfach den effekt als ob es auch 2 mal korrekt eingegeben wurde.

Stimmt, somit blende ich nur im Template in der login.html das zusätzliche Email-Adressfeld aus. Wird ja dann sowieso gleichgesetzt.

Und die Abfrage in der Check-Funktion kann dann ruhig einkommentiert bleiben weil diese immer ein TRUE liefern wird ;)

Hehe, mal ausprobieren....

Grüße

Link to comment
Share on other sites

Hallo zusammen,

ich habe folgendes Problem: Ein Benutzer hat seine Email-Adresse falsch eingegeben und bekommt keine Email zu gesendet.

Wie kann ich auf den Fehler reagieren?

Ich würde gerne den Fehler abfangen und dem Benutzer gleich sagen, dass

seine Email-Adresse falsch eingegeben worde ist.

unrouteable mail domain [email protected]

Vielen Dank für die Antwort

Link to comment
Share on other sites

Hallo zusammen,

ich habe folgendes Problem: Ein Benutzer hat seine Email-Adresse falsch eingegeben und bekommt keine Email zu gesendet.

Wie kann ich auf den Fehler reagieren?

Ich würde gerne den Fehler abfangen und dem Benutzer gleich sagen, dass

seine Email-Adresse falsch eingegeben worde ist.

unrouteable mail domain [email protected]

Vielen Dank für die Antwort

Hä? Wie willst du denn einen Anwender-/Benutzerfehler abfangen?

Muss der Benutzer seine Email 2x eingeben?

Link to comment
Share on other sites

Ich würde gerne programmiertechnisch drauf reagieren.

Ich setzte den ganzen Registrierungsvorgang inklusive Email-Versand innerhalb einer Transaktion. D. h. wenn der Registrierungsvorgang schiff geht, dann wird der Benutzer nicht registriert bis er seine Email-Adresse korrigiert hat.

Das ist unerheblich davon, ob zwei Felder für die Email-Eingabe benötigt werden.

Denn der Benutzer kann seine Email-Adresse zweimal falsch eingegeben haben.

Oder ich reagiere auf eine Fehler, der ja irgendwie geworfen werden muss.

Wenn dieser auftritt, dann gehe ich wie oben vor.

Es muss doch irgendeine Lösung hierzu geben???!!!

Oder?

Link to comment
Share on other sites

email addresse in funktion _checkEmailAddress() gegen den MX server checken lassen.

Verhindert aber auch nicht die eingabe einer falschen emailadresse, sondern nur die einer nicht existierenden (sofern der MX auch hierzu korrekt antwortet)

Ja genau das ist das Problem der MX wird diese anfrage meist garnicht beantworten. Da meist die erste Anfrage vom MX nicht reagiert wird um Spam zu vermeiden.

Die einzige möglichkeit ist der versandt einer mail um zu sehen ob sie zustelbar ist bloss da gibt es das problem das die meldung von einer nicht zustelbaren mail

schon mal einige stunden auf sich warten lässt.

Also mit anderen Worten es ist eigentlich nur möglich in kurzer zeit zu prüfen ob die mail syntax konform ist.

Link to comment
Share on other sites

Hallo,

der Code ist nicht ganz richtig.

So funktioniert es:

$data['cust_info']['customers_email_address_confirm']=$data['cust_info']['customers_email_address'];

Ich habe mal eine Plugin geschrieben. Einfach in den Plugin-Ordner kopieren, im Backend installieren und aktivieren.

Im Template kann dann das zweite Eingabefeld für E-Mail gelöscht werden.

EDIT: Anbei eine neue Version mit dem richtigen Code

Gruß

Marco von PLUSX

no_email_confirmation.zip

Link to comment
Share on other sites

Hi Marco,

danke für das Plugin :)

Hier noch 2 Anmerkungen.

1. Du solltes die richtige Zeile in den Hookpoint vom Plugin nehmen. Wie du schon geschrieben hast muss folgendes rein:

$data['cust_info']['customers_email_address_confirm']=$data['cust_info']['customers_email_address'];

Du hast im Plugin leider noch die falsche Zeile im Hookpoint ;)

2. Wenn man nun keine Email eingibt erscheint folgende Fehlermeldung doppelt was nicht schön aussieht:

Bitte geben Sie eine E-Mail Adresse an

Ich habe dies via 2ten Hookpoint im Plugin nicht hinbekommen.

Also musste ich dazu doch noch ein kleinwenig den Core (class.customer.php) verändern indem ich folgende Zeile gelöscht habe:

$this->_checkLenght($data['customers_email_address_confirm'], _STORE_EMAIL_ADDRESS_MIN_LENGTH, ERROR_EMAIL_ADDRESS);

Im Prinzip ist diese Zeile ja völlig überflüssig da die Länge von der confirm-email ja mit der eingegebenen dank deinem Plugin gleich sein MUSS ! :)

Gibts da eine Möglichkeit dies via Hookpoint zu lösen dass die Fehlermeldung nicht doppelt ausgegeben wird? Ich weis ja woran es liegt, kanns aber via Plugin nicht verhindern.

Ich habe es über diesen Hook versucht: class.customer.php:_CustomerData_check

Grüße

Link to comment
Share on other sites

Cool, thx :)

Kann es sein dass nun beide Error-Messages unterdrückt werden?

"Bitte geben Sie eine E-Mail Adresse an" wird ja für folgende beiden verwendet:

$this->_checkLenght($data['customers_email_address'], _STORE_EMAIL_ADDRESS_MIN_LENGTH, ERROR_EMAIL_ADDRESS);

$this->_checkLenght($data['customers_email_address_confirm'], _STORE_EMAIL_ADDRESS_MIN_LENGTH, ERROR_EMAIL_ADDRESS);

Ich bin mir nicht sicher wie man nur die Error-Message für die confirm-email unterdrücken kann.....

Link to comment
Share on other sites

Cool, thx :)

Kann es sein dass nun beide Error-Messages unterdrückt werden?

"Bitte geben Sie eine E-Mail Adresse an" wird ja für folgende beiden verwendet:

$this->_checkLenght($data['customers_email_address'], _STORE_EMAIL_ADDRESS_MIN_LENGTH, ERROR_EMAIL_ADDRESS);

$this->_checkLenght($data['customers_email_address_confirm'], _STORE_EMAIL_ADDRESS_MIN_LENGTH, ERROR_EMAIL_ADDRESS);

Ich bin mir nicht sicher wie man nur die Error-Message für die confirm-email unterdrücken kann.....

foreach durchs array gehen, und beim finden des ersten vorkommens löschen und dann foreach abbrechen, dann bleibt die zweite meldung erhalten.

Link to comment
Share on other sites

foreach durchs array gehen, und beim finden des ersten vorkommens löschen und dann foreach abbrechen, dann bleibt die zweite meldung erhalten.

Ahhhhhh....zu aufwändig für ein bisschen Kosmetik.

Da lösche ich doch lieber nach dem Update eine Zeile aus der class ;)

Warum eigentlich nicht so?

if($data['customers_email_address'] != ''){

$this->_checkEmailAddress($data['customers_email_address'], ERROR_EMAIL_ADDRESS_SYNTAX);

}

Somit würde bei einer leeren Email-Angabe nicht der Syntax geprüft werden.

Hoffentlich nerve ich euch nicht....hehehe :)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...