#1 (permalink)  
Alt 16.12.2008, 21:31
Neuer Benutzer
 
Registriert seit: 16.12.2008
Beiträge: 4
Standard Überprüfung der e-mail Adresse

Hallo Zusammen.

Ich habe folgendes Problem:
Wenn ein Kunde eine falsche e-mail Adresse eingibt (einfach irgendwelche zeichen ohne @ und .de) kommt am Ende des Bestellvorganges eine hässliche Meldung vom SMTP Server dass die mail nicht an den Empfänger versendet werden kann.

Das ist ja korrekt, aber kann man das nicht schon vorher abfangen? Habe die e-mail DNS überprüfung auf "true" gesetzt, das hat aber auch nicht geholfen. :-(

Kann mir jemand weiterhelfen?

Viele Grüsse und Danke schon mal
Tobi
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 17.12.2008, 06:22
Neuer Benutzer
 
Registriert seit: 12.12.2008
Beiträge: 2
Standard

hallo!

ich frage mich etwas ähnliches: ist es mit xt:commerce nicht möglich, dem kunden bei registrierung ein mail mit einem aktivierungslink zu senden? sprich, dass die kundendaten zwar gespeichert, das konto aber erst nach klick auf diesen link freigeschalten wird?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 17.12.2008, 10:26
xt:Commerce Support Kunde
 
Registriert seit: 13.10.2006
Beiträge: 697
Standard

Von Haus aus: Nein. Kann man natürlich einbauen. Aber ich würde mir einen anderen Shop suchen, wenn ich erst das Konto aktivieren müsste bevor ich bestellen kann.

Und die E-Mail-Adresse wird sehr wohl überprüft, ob sie zumindest von der Syntax her korrekt ist. Außer, man hat da irgendwo rumgeschraubt.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #4 (permalink)  
Alt 17.12.2008, 13:32
Neuer Benutzer
 
Registriert seit: 12.12.2008
Beiträge: 2
Standard

aha, ok, danke!

gibts da irgendwo ein bsp wie so etwas umzusetzen wäre? ein tutorial, how-to, oder so? finde nichts...

ein aktivierungs-mail ist lästig, ich weiss... möchte das aber gerne trotzdem als option in petto haben...

danke nochmal!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 17.12.2008, 14:16
Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 68
Standard müsst Ihr aber noch Umbauen

Code:
<?php 
$email = $_POST['email'];

$email = preg_match("/[\.a-z0-9_-]+@[a-z0-9-]{2,}\.[a-z]{2,4}$/i",$email);
if(!$email)
{ echo("
Bitte korrekte E-mail-adresse eingeben <br><a href='index.php'>nochmal</a>"); 
}

if($email) {
echo("passt schon ");
}

?>
Sagt aus:

vor dem @ dürfen nur folgende Zeichen vorkommen:
Zitat:
.a-z0-9_-
das
Zitat:
@
ist zwingend Notwendig

nach dem @ dürfen nur folgende Zeichen vorkommen:
Zitat:
a-z0-9-
und die Topleveldomain muss mind 2 Zeichen haben !

zum testen die datein auf nen Server schmeissen.
Angehängte Dateien
Dateityp: rar email.rar (545 Bytes, 6x aufgerufen)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #6 (permalink)  
Alt 17.12.2008, 19:04
Neuer Benutzer
 
Registriert seit: 16.12.2008
Beiträge: 4
Standard

Wo im code finde ich denn die stelle an der der shop die mail adresse prüft. was müsste da stehen? ich weiß nicht genau ob da "rumgeschraubt" wurde.
Danke und Gruß
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #7 (permalink)  
Alt 17.12.2008, 21:38
xt:Commerce Support Kunde
 
Registriert seit: 13.10.2006
Beiträge: 697
Standard

Naja, eine neue Überprüfungsgeschichte einzubauen ist sicher nicht sinnvoll, noch dazu eine derart benutzerunfreundliche mit 'Zurück'-Link. Lieber Affenformular bauen bzw. das vorhandene Nutzen. Außerdem ist deine Endung auf 2-4 Zeichen limitiert => .museum wird als ungültig abgelehnt.

Der Teil, der die E-Mail-Adresse prüft, sieht in create_account.php so aus:
PHP-Code:
        if (strlen($email_address) < ENTRY_EMAIL_ADDRESS_MIN_LENGTH) {
                
$error true;

                
$messageStack->add('create_account'ENTRY_EMAIL_ADDRESS_ERROR);
        }
        elseif (
xtc_validate_email($email_address) == false) {
                
$error true;

                
$messageStack->add('create_account'ENTRY_EMAIL_ADDRESS_CHECK_ERROR);
        } else {
                
$check_email_query xtc_db_query("select count(*) as total from ".TABLE_CUSTOMERS." where customers_email_address = '".xtc_db_input($email_address)."' and account_type = '0'");
                
$check_email xtc_db_fetch_array($check_email_query);
                if (
$check_email['total'] > 0) {
                        
$error true;

                        
$messageStack->add('create_account'ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);
                }
        } 
xtc_validate_email() ist die Funktion, die die E-Mail-Adresse auf korrekte Syntax prüft.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #8 (permalink)  
Alt 19.12.2008, 11:55
Neuer Benutzer
 
Registriert seit: 16.12.2008
Beiträge: 4
Standard

Hallo Wibros,

also der Test auf Länge funktioniert. Habe im Adminbereich ein wenig mit den Werten gespielt.

Nur wie sieht die Prüfung auf korrekte Syntax aus? Ich stelle mir vor dass überprüft wird ob ein @ vorhanden ist und ein . mit einer max 3stelligen endung.
Ist meine Annahme falsch?

Denn der shop akzeptiert zb die adresse xxxxxxx.de.
Und dann kommt vom SMTP server eine hässliche fullscreen meldung.

Gruß Toby
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #9 (permalink)  
Alt 19.12.2008, 14:57
xt:Commerce Support Kunde
 
Registriert seit: 13.10.2006
Beiträge: 697
Standard

Da steckt ein bisschen mehr drin als nur das. Aber auf ein @ wird auf jeden Fall geprüft. Hast du die inc/xtc_validate_email.php mal aus einem originalen Paket reinkopiert?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #10 (permalink)  
Alt 19.12.2008, 15:40
Neuer Benutzer
 
Registriert seit: 16.12.2008
Beiträge: 4
Standard

Ja das sollte die originale sein, hänge meine Datei mal hier an:

PHP-Code:
function xtc_validate_email($email) {
    
$valid_address true;

    
$mail_pat '^(.+)@(.+)$';
    
$valid_chars "[^] \(\)<>@,;:\.\\\"\[]";
    
$atom "$valid_chars+";
    
$quoted_user='(\"[^\"]*\")';
    
$word "($atom|$quoted_user)";
    
$user_pat "^$word(\.$word)*$";
    
$ip_domain_pat='^\[([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\]$';
    
$domain_pat "^$atom(\.$atom)*$";

    if (
eregi($mail_pat$email$components)) {
      
$user $components[1];
      
$domain $components[2];
      
// validate user
      
if (eregi($user_pat$user)) {
        
// validate domain
        
if (eregi($ip_domain_pat$domain$ip_components)) {
          
// this is an IP address
            
for ($i=1;$i<=4;$i++) {
              if (
$ip_components[$i] > 255) {
                
$valid_address false;
                break;
              }
          }
        } else {
          
// Domain is a name, not an IP
          
if (eregi($domain_pat$domain)) {
            
/* domain name seems valid, but now make sure that it ends in a valid TLD or ccTLD
               and that there's a hostname preceding the domain or country. */
            
$domain_components explode("."$domain);
            
// Make sure there's a host name preceding the domain.
            
if (sizeof($domain_components) < 2) {
              
$valid_address false;
            } else {
              
$top_level_domain strtolower($domain_components[sizeof($domain_components)-1]);
              
// Allow all 2-letter TLDs (ccTLDs)
              
if (eregi('^[a-z][a-z]$'$top_level_domain) != 1) {
                
$tld_pattern '';
                
// Get authorized TLDs from text file
                
$tlds file(DIR_FS_INC.'tld.txt');
                while (list(,
$line) = each($tlds)) {
                  
// Get rid of comments
                  
$words explode('#'$line);
                  
$tld trim($words[0]);
                  
// TLDs should be 3 letters or more
                  
if (eregi('^[a-z]{3,}$'$tld) == 1) {
                    
$tld_pattern .= '^' $tld '$|';
                  }
                }
                
// Remove last '|'
                
$tld_pattern substr($tld_pattern0, -1);
                if (
eregi("$tld_pattern"$top_level_domain) == 0) {
                    
$valid_address false;
                }
              }
            }
          } else {
              
$valid_address false;
            }
          }
      } else {
        
$valid_address false;
      }
    } else {
      
$valid_address false;
    }
    if (
$valid_address && ENTRY_EMAIL_ADDRESS_CHECK == 'true') {
      if (!
checkdnsrr($domain"MX") && !checkdnsrr($domain"A")) {
        
$valid_address false;
      }
    }
    return 
$valid_address;
  }

?> 
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
adresse, email, Überprüfung

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wo ändere ich meine Adresse die auf der Rechnungs Mail steht? xpart Shopbereich 1 17.12.2006 01:29


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand