Aus der Serie "Weil doch bald Weihnachten ist" noch eine kleine "große" Erweiterung... Bei der Eingabe ihrer Daten bei der Registrierung sind Kunden ja oft faul, so dass man nur unschöne kleingeschriebene Daten erhält. Beispiel: "klaus dieter müller-lüdenscheid bad orb" Mit der folgenden Javascript-Erweiterung wird daraus automatisch der "Klaus Dieter Müller-Lüdenscheid Bad Orb".. Diese Daten werden direkt nach verlassen des entsprechenden Eingabefelds umgewandelt, so dass der Kunde auch eine visuelle Rückmeldung erhält.. Und sie kommt, wie man sieht, auch mit Mehrfachnamen zurecht. (Die meisten solchen Aktivitäten wandeln einfach den ersten Buchstaben des Feldes in Großbuchstaben um, total uncool..) Und E-Mail-Adressen sind von dieser Behandlung natürlich ausgenommen! Folgenden Javascript-Code an das Ende von "templates/EyeCandy/module/create_account.html", "templates/EyeCandy/module/create_account_guest.html", "templates/EyeCandy/module/account_edit.html", "templates/EyeCandy/module/address_book_process.html", "templates/EyeCandy/module/checkout_new_address.html" einfügen: Code: <script type="text/javascript" src="gm/javascript/jquery/jquery.js"></script> <script type="text/javascript"> /* Convert personal data to have uppercase letters as the first character for releavant personal data in registration forms Copyright 2011: Avenger, entwicklung@powertemplate.de */ {literal} // Uppercase the first character of every word in a string function ucwords (str) { return str.replace(/^([a-zäöü])|[\s\-]+([a-zäöü])/g, function ($1) { return $1.toUpperCase(); }); } $(document).ready(function(){ $('#create_account input[type=text], #account_edit input[type=text], #checkout_address input[type=text]').change(function(){ var value=$(this).val(); //Ignore numeric data and data in "email" fields... if (value && isNaN(value) && !$(this).hasClass('email_address') && !$(this).hasClass('email_address_confirm') && value.indexOf('@')==-1 && value.indexOf('.')==-1) { value=ucwords(value); $(this).val(value); } }); }); {/literal} </script> Wie man sieht: mit ein paar Zeilen Javascript/jQuery kann man wieder große Wirkung erzielen... Have phun!
Super, danke! Ich ärgere mich immer über die hässliche Ausgabe in der Rechnung und auf den Adresslabels.
Um auch Namen wie "érik Peters" korrigieren zu können und zwecks Wartbarkeit einfach in "templates/EyeCandy/module/create_account.html", "templates/EyeCandy/module/create_account_guest.html", "templates/EyeCandy/module/account_edit.html", "templates/EyeCandy/module/address_book_process.html", "templates/EyeCandy/module/checkout_new_address.html" an das Ende folgenden Quellcode einfügen Code: {* Formularcheck einbauen *} {include file='$tpl_path/javascript/Formularcheck.js'} den nachfolgenden Quellcode in eine Datei Formularcheck.js packen und nach /templates/EyeCandy/javascript/ uploaden Code: <script type="text/javascript" src="gm/javascript/jquery/jquery.js"></script> <script type="text/javascript"> /* Convert personal data to have uppercase letters as the first character for releavant personal data in registration forms Copyright 2011: Avenger, entwicklung@powertemplate.de */ {literal} // Uppercase the first character of every word in a string function ucwords (str) { return str.replace(/^([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])|[\s\-]+([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])/g, function ($1) { return $1.toUpperCase(); }); } $(document).ready(function(){ $('#create_account input[type=text], #account_edit input[type=text], #checkout_address input[type=text]').change(function(){ var value=$(this).val(); //Ignore numeric data and data in "email" fields... if (value && isNaN(value) && !$(this).hasClass('email_address') && !$(this).hasClass('email_address_confirm') && value.indexOf('@')==-1 && value.indexOf('.')==-1) { value=ucwords(value); $(this).val(value); } }); }); {/literal} </script> Ich hab noch ein paar mehr Sonderzeichen reingepackt als nötig, aber lieber zu viel, als zu wenig.
Noch eine kleine Verbesserung: die Texte werden vor der Konvertierung erst mal in Kleinschreibung umgewandelt, für den Fall, dass der Kunde insgesamt (oder teilweise) Großbuchstaben verwendet hat... ' Code: <script type="text/javascript" src="gm/javascript/jquery/jquery.js"></script> <script type="text/javascript"> /* Convert personal data to have uppercase letters as the first character for releavant personal data in registration forms Copyright 2011: Avenger, entwicklung@powertemplate.de */ {literal} // Uppercase the first character of every word in a string function ucwords (str) { return str.replace(/^([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])|[\s\-]+([a-zäöüáàâäãåçéèêëíìîïñóòôöõøšúùûüýÿž])/g, function ($1) { return $1.toUpperCase(); }); } $(document).ready(function(){ $('#create_account input[type=text], #account_edit input[type=text], #checkout_address input[type=text]').change(function(){ var value=$(this).val(); //Ignore numeric data and data in "email" fields... if (value && isNaN(value) && !$(this).hasClass('email_address') && !$(this).hasClass('email_address_confirm') && value.indexOf('@')==-1 && value.indexOf('.')==-1) { value=value.toLowerCase(); value=ucwords(value); $(this).val(value); } }); }); {/literal} </script>
Danke. 3h zu spät Nu muss ich noch mal ran. Aber wirklich gut. Evtl. noch ne sperre das man bei PLZ und Geb. Datum nur Zahlen und "." eingeben kann? Falls das nciht zu viel verlangt ist
Vielen Dank an Avenger, für das nette Wiehnachtsgeschenk. Allein in der Vorweihnachtszeit hatte ich bestimmt wieder 3x Kunden, die alles klein geschrieben hatten... nun hat es endlich ein ENDE!!! Super Nochmals Danke und schon jetzt einen guten Rutsch ins neue Jahr an alle!!!!
Wünsche Frohe Weihnachten gehabt zu haben..... Das ist jetzt schon mal ein großer Schritt vorwärts, aber es lauert immer noch ein großes Problem: die E-Mail-Adresse: Viele Kunden vertippen sich dabei, so dass die Bestellbestätigungen usw. dann nicht richtig ankommen (auch mit Auswirkungen z.B. auf die ordnungsgemäße Widerrufsbelehrung). Was kann man diesbezüglich tun? Nun, zunächst mal kann man die formale Richtigkeit der eMail-Adresse prüfen, das hilft schon mal etwas. Als nächstes kann man mit PHP die DNS- und MX-Records der Mail-Adresse abfragen, so dass man zumindest dann schon mal weiß, dass der Mailserver existiert, was denn noch etwas mehr Sicherheit bietet. Aber immer noch ist unklar, ob das angegebene Postfach existiert, bzw. ob das nicht z.B. voll ist (was bei Freemailern gerne mal passiert..). Um auch diese letzte Unsicherheit zu beseitigen, habe ich das weiter getrieben: nach Absolvierung der vorgenannten Prüfungen wird dann mit dem Ziel-Mailserver eine SMTP-Dialog initiiert, wie er auch stattfindet, wenn eine eMail verschickt wird..... Vor dem letzten Schritt (dem Absenden der Daten) wird das dann beendet. Aber man weiß an dieser Stelle genau, ob er Ziel-Mailserver bereit wäre, eine eMail an die eMail-Adresse zu akzeptieren, oder nicht.... Und hat dann eine genaue Mail-Adresse! Ich habe dieses Check-Programm mal hochgeladen... Unter http://www.powertemplate.de/kunden/babyneo/ajax_check_email.php?email=entwicklung@powertemplate.de ist die Antwort "true|Executed in 0.0068 seconds". Mit http://www.powertemplate.de/kunden/babyneo/ajax_check_email.php?email=xxxxx@powertemplate.de ist die Antwort false|550 5.1.1 : Recipient address rejected: User unknown in virtual alias table |Executed in 0.0252 seconds (Also Ablehnung und Fehlergrund....) Man hat damit also eine genaue Aussage über die Akzeptanz genau dieser Mail-Adresse durch den Mail-Server! Das Ganze muss jetzt noch in die Formular-Checkroutine integriert werden, dann ist auch das eMail-Problem ein ganzes Stück entschärft... Und wie man sieht, kostet das kaum Zeit.
Wenn man weiß wie es geht xD Aber geniale Ideen die du da umsetzt. Muss man erst mal drauf kommen. Hab das aber nun mal mit 2 von unseren Adressen getestet und da kommt Code: http://www.powertemplate.de/kunden/babyneo/ajax_check_email.php?email=info@copy-weilburg.de Ausgabe ist dann false|555 5.5.2 Syntax error. rf5si10390517bkb.72 |Executed in 0.1205 seconds evtl. machen das nicht alle mailserver mit, kann das sein? Oder hab ich deine Variable am ende falsch verstanden?
So viel zum Thema Standards.... Den Syntax Error habe ich jetzt überwunden, aber dann läuft er endgültig in einen anderen Fehler: false|Step 6 ("info@copy-weilburg.de") -- 553-5.1.2 We weren't able to find the recipient domain. Please check for any |Executed in 0.2007 seconds
habs aber auch mit meiner googlemail adresse versucht. Da kam auch nix bei raus. und unsere andere kommt nach 60 sek. erst ne False meldung. Die Idee ist klasse, aber denke mal das einige Mailserver das einfach blocken wenn keine echte Mail kommt oder so. Kenn mich da nicht so aus. Bei der @print-weilburg.de (anderer Mailserver) Code: false|Step 4 ("p4FD91872.dip0.t-ipconnect.de") -- |Executed in 60.1012 seconds bei meiner @gmail.com Code: false|Step 6 ("XXXXXXX@gmail.com") -- 553-5.1.2 We weren't able to find the recipient domain. Please check for any |Executed in 1.0939 seconds
Und wie findest du für den SMTP Dialog den SMTP Port heraus? Angenommen ich betreibe meinen SMTP Server auf Port 19674. Würde das so einfach gehen hätte man eine Spam-E-Mail-Sammelmaschine.
Auch die Prüfung der Telefon-Nummer wäre wünschenswert. Erlaubte Zeichen: - beginnen darf diese mit + - - Ziffern 0-9 - Sonderzeichen: - / , () - Leerzeichen - Keine Buchstaben Eine superintelegende Kundin gab als TelNr. ein: "1234/5678tomate" Ergebnis war: Der Versuch mit "Sofort auf Rechnung" zu bezahlen wurde mit Fehler "Validation" abgelehnt - Kundin bestellte (beleidigt!?) gar nix!
Das ist eine Mail-Adresse, die von Google verwaltet wird, und da gibt es im Internet viele gleichartige Problemmeldungen. Aber ich habe jetzt nach einigen Internet-Recherchen eine Lösung gefunden, die auch Google zufrieden stellt.... http://www.powertemplate.de/kunden/...il.php?debug=true&email=info@copy-weilburg.de findet jetzt das richtige Ergebnis... Habe noch den Parameter "debug=true" hinzugefügt, damit wird der Dialog zwischen dem Ziel-Mailserver und dem Programm angezeigt. Das sieht dann so aus: Der Google-Mailserver ist grottenlangsam.... http://www.powertemplate.de/kunden/...il.php?debug=true&email=info@powertemplate.de zeigt folgendes: Google braucht 120 Mal länger, als der "all-inkl"-Mailserver... Liegt wahrscheinlich daran, dass der in den USA liegt...
Das geht so einfach, sonst wäre ja überhaupt kein Mailverkehr möglich. Alle Mailer wissen ja über den Empfänger auch nicht mehr. Aber die Server schützen sich schon gegen SPAM, man muss konsistente Informationen übermitteln. Hat einige Zeit gedauert, bis ich das auf der Reihe hatte...
Super Sache...freue mich schon darauf, es endlich in unserem Shop einbinden zu können... Danke Avenger, für deinen Einsatz!
OK, dann noch ein @t-online.de Problem Hab es mit 2 @t-online getestet kommt immer diese Meldung ps. Ich helf ja gerne neue Probleme zu finden xD
Dateneingabeseite mit allen verfügbaren Features und Checks Ich habe mal alles, was wir so zu bieten haben, in einem Dateneingabeformular aktiviert. http://www.powertemplate.de/kunden/babyneo/create_account.php Da ist u.a. die Eingabe von Geburtsdaten als "Dropdowns" drin, so dass auch das Datum dann garantiert (formal) korrekt ist. Weiterhin wird die "Passwortstärke" geprüft und angezeigt, ebenso die Übereinstimmung der beiden Passworte. (Die "Passwortstärke" wird aus der Verwendung von Klein- und Großbuchstaben, Ziffern und Sonderzeichen abgeleitet. Einfach mal ein Passwort eingeben...) Dann werden die Eingabe-Daten in lesbares Format gewandelt (erster Buchstab jedes Wortes groß), auch bei festgestellter "Umschalttaste". Die Telefon- und Fax-Nummern werden auf (formale) Gültigkeit geprüft. Ebenso die eMail-Adresse, bis hin zur Validierung der Adresse beim Mailserver der eMail-Adressen-Domain. Ich denke, mehr Validierung geht nicht....
Find deine Arbeit gut, daher hier die Knackpunkte die mir aufgefallen sind: 1. @t-online.de Adressen bringen Fehlermeldung 1.1 wenn ich die ignoriere bleibt die Adresse 1.2 Prüfen ob E-Mail 2. eingabe übereinstimmt mit sofortiger Anzeige durch Grün oder Rot 2. Passwortstärke beim wiederholen gegen Stimmt überein oder Nicht überein ändern. 3. Fehlermeldung bei Tel. mit Buchstaben kommt. Aber wenn ich da OK Klicke kann ich ins nächste Feld und die Buchstaben bleiben stehen. 4. Fehlermeldung nach abschicken (PLZ) und Bitte Bundesland auswählen. Bundesland is schwer ohne Eingabefeld keep on. Das wird gut wenn es fertig ist !