2017-09-21 843 views
0

전자 메일 주소를 암호화하고 암호 해독하여 get param으로 URL의 내용에 추가하는 기능을 만듭니다. 이메일. 받는 사람이 전자 메일의 링크를 클릭하면 get param을 해독하여 내 사이트에서이 데이터를 다시 사용할 수 있도록해야합니다. 사용자가 이메일을 수락하지 않을 때까지 다른 법률에 의해 허용되지 않습니다.aes-192-ctr을 반환하는 openssl_decrypt L & A C

그래서 내 코드는

사용자가 제 기능을 사용자가 정상적으로 메일의 URL을 여는

SECURITY_SALT = "218391"; // just example salt 
$email = $_POST['email']; 
$getParamToAppend = openssl_encrypt($email, "aes-192-ctr", SECURITY_SALT); 
sendMail($email, $getParamToAppend); 

에있는 게시물 데이터를 양식을 채우고 ....이 같은 노력하고 있습니다 해독하고이 데이터를 다시 사용하십시오. 이제

SECURITY_SALT = "218391"; // just example salt 
$email = $_GET['email']; 
$emailDecrypted = openssl_decrypt($email, "aes-192-ctr", SECURITY_SALT); 
doMyStuff(emailDecrypted); 

내 전화 (Gmail을) 또는 메일 클라이언트 (https://de.tobit.software/david)이 같은 결과에서 URL을 열고있을 때 내가받은 해요 :

[email protected]�L�� ��&A�C�� (gmail.com) 
[email protected]�L�� ��&A�C�� (david + 1&1 email address) 

하지만 때 난 내 회사의 webmailer을 통해 1 & 한 전자 우편 주소로 사이트를 열어 내가 어떻게 내 문제를 해결하는

[email protected] 

어떤 아이디어를받는거야? 가 ... 지금은 다른 "솔루션"

  • utf8_decode/utf8_encode
  • 변경 아파치 캐릭터의 설정

하지만 아무것도 작동하는 것 같다

  • 다른 브라우저까지 시도

    추가 정보 : 나는 phpmailer를 사용하고 있으며 Charset 옵션을 UTF-8로 설정했다.

  • 답변

    0

    이 마약 똥을 사용하여 내 문제를 해결했습니다. ^^

    링크

    $emailDecrypted = openssl_decrypt(urldecode($email), "aes-192-ctr", SECURITY_SALT); 
    
    클릭 전자 메일

    $getParamToAppend = openssl_encrypt(urlencode($email), "aes-192-ctr", SECURITY_SALT); 
    
    를 보내기 전에