2016-04-03 21 views
-1

Bu yüzden kayıt/giriş ve e-postalar geldiğinde bir noob değilim. Benim sorunum bir doğrulama e-postası yapmak istiyorum. Zaten Kaydolma düğmesine bastığınızda size gönderilecek bir işleyen e-posta adresim var. (Eğer bunun bir rediku.com olduğunu kontrol etmek istiyorsanız). Sorun, e-postanın orijinal olarak, kullanıcıyı tanımlamak ve doğrulamak için kullanılabilecek bir oluşturulmuş belirteci olan gizli bir alana sahip bir form oluşturmasıdır. Ne yazık ki e-posta istemcileri, içindeki formları içeren e-postaları engelleyecektir. Bu yüzden bir çapa bağlantısı kullanmak zorunda kaldım.Yeni hesaplar nasıl doğrulanır

Temel olarak, sorum şu: Bir bağlantıya sahip bir e-posta göndererek belirli bir kişi hesabını nasıl doğrulayabilirim?

+0

Kontrol sen ipuçları için kendini ele verdik aktivasyon bazılarıdır. Sadece bu bağlantıyı doğruladığınız bir param 'yoursite.com/verify.php? Token = sometokenhere' ile bir bağlantı gönderin (eğer bu süre dolmuyorsa). – JimL

+0

Burada hangi konuyla ilgili bir probleminiz var? Şimdiye kadar ne denediniz? – NineBerry

+0

Gizli form etiketlerini belirteçle denedim ancak maalesef e-posta istemcileri bunu engelliyor ... Böyle bir şeyle nereden başlayacağımı bile bilmiyorum. – joeldesante

cevap

0

Web sitenizde kayıt formunuz olduğunu kabul ediyorum. Verileri performRegistration.php adlı bir dosyaya gönderiyorsunuz. performRegistration.php içeride

:

// TBD sanitizing input data 
$newUser = new User(); // I am assuming you build a class for your users 
$newUser->setVerified(false); 
// TBD save form data to user object 
// generate a custom key for new user 
$newUser->setRegisterKey = MD5('someSaltString'.date('u')); // very basic! 
$newUser->save(); // validate data (like user already registered, and stuff like that) and save to db 
$newUser->sendRegistrationMail(); // I like libs like swiftmailer 

@JimL belirttiği gibi, bir simgeyle temel bağlantıyı kullanmalıdır. yoursite.com/verify.php?verify[username]=aUsername&verify[token]=theMd5TokenGenerated Böyle bir şey yapardım, bu şekilde db içindeki kullanıcı adını arayabilir ve oluşturulan ilgili anahtarı kontrol edebilirsiniz. Bağlantıya (benzersiz) kullanıcı adını eklemezseniz, doğrulama işlemi sırasında veri kümesine bakmak istiyorsanız, iki kullanıcının aynı kayıt anahtarını almadığından emin olmanız gerekir. verify.php İçinde

:

// TBD catch $_GET and sanitize data 
$getVars = $_GET['verify']; 
if(array_key_exists('token', $getVars)){ 
    if(!empty($_GET['token']) && !empty($_GET['username'])) { 
     // TBD get user from db where username and key match the submitted values from the link 
     // if you can find a matching dataset: 
     $newUser->setVerified(true); 
     // start a session, add a cookie, login user 
     // do some great stuff 
    } 
} 
+1

Bu çok temel olsa da. Lütfen sizin gibi şeyler hakkında dikkat çeken kütüphaneleri ve çerçeveleri kullanmayı düşünün. Göz önünde bulundurulması gereken pek çok güvenlik var ... – Hafenkranich

+0

GET belirteci değişkeni URL'den almayı denediğimde ve 'if (boş ($ _ GET [' jeton '])) {} . – joeldesante

+0

Bağlantı neye benziyor? – Hafenkranich

İlgili konular