אלגוריתם לאימות ללא צורך בטבלה לשמירת נתונים
-
אני רוצה שכדי שגולש יוכל ליצור חשבון משתמש באתר, הוא יזין אימייל ואז בשלב שני הוא יקבל לינק עם קוד מסויים, ואם הוא ילחץ על הלינק שקיבל אוכל לאמת את אותו לקוח ואז יווצר לו חשבון המשתמש.
יש אופציה לעשות את זה בלי לעשות טבלה במסד נתונים אלא ע"י איזה מפתח שמאמת קשר בין הסיסמא לאימייל?תודה.
-
אני רוצה שכדי שגולש יוכל ליצור חשבון משתמש באתר, הוא יזין אימייל ואז בשלב שני הוא יקבל לינק עם קוד מסויים, ואם הוא ילחץ על הלינק שקיבל אוכל לאמת את אותו לקוח ואז יווצר לו חשבון המשתמש.
יש אופציה לעשות את זה בלי לעשות טבלה במסד נתונים אלא ע"י איזה מפתח שמאמת קשר בין הסיסמא לאימייל?תודה.
-
אני חושב שכן. אתה יכול לעשות הצפנה סימטרית על המייל שלו.
תיאורטית אולי זה לא מליון אחוז אבל מעשית אני חושב שזה בסדר.
הבעיה שהקוד יהיה רב פעמי (הוא יוכל לפתוח תמיד שוב חשבון אם זה שייך).
תוכל להוסיף לזה גם זמן להגביל את זה. -
@chagold המחלקה היא php_openssl.dll
צריך לאפשר אותה.
חוץ מזה בקוד כפי שהעתקת יש שגיאה בגלל המשתנה מערכת שלא קיים,
אבל בא תאמר לי איזה גירסת PHP את מריץ? -
@dovid 5.6
אני יכול לשדרג אם יש צורך. אבל זה עם הרבה קוד ישן ואני לא רוצה לשבור דברים אם לא צריך.אז כדאי שתשתמש בקוד הזה באמת, תנסה להריץ ככה
$method = 'AES-256-CBC'; $key = 'here very hard password and ultra long 1234'; $length = openssl_cipher_iv_length($method); $iv = openssl_random_pseudo_bytes($length); $encrypted = openssl_encrypt($pltxt, $method, $key, OPENSSL_RAW_DATA, $iv); $ctxt = base64_encode($encrypted) . '|' . base64_encode($iv); list($data, $iv) = explode('|', $encrypted); $iv = base64_decode($iv); $pltxt = openssl_decrypt($data, $method, $key, 0, $iv);
אם יש שגיאה על הopen_ssl צריך להוסיף את ההרחבה php_openssl, אני לא יודע איך מוסיפים הרחבה בPHP, זה מקוה שיהיה פה מישהו שיענה.
בקוד הנ"ל ה -
@dovid 5.6
אני יכול לשדרג אם יש צורך. אבל זה עם הרבה קוד ישן ואני לא רוצה לשבור דברים אם לא צריך. -
@www רק הערב התפניתי להיכנס לזה.
הצלחתי ככה.
@dovid תודה.$pltxt='1@domain.com'; $method = 'AES-256-CBC'; $key = 'here very hard password and ultra long 1234'; $length = openssl_cipher_iv_length($method); $iv = openssl_random_pseudo_bytes($length); $encrypted = openssl_encrypt($pltxt, $method, $key, OPENSSL_RAW_DATA, $iv); $ctxt = base64_encode($encrypted) . '|' . base64_encode($iv); $array = explode('|', $ctxt); $data = $array[0]; $iv = base64_decode($array[1]); echo ($pltxt = openssl_decrypt($data, $method, $key, 0, $iv)) ;//1@domain.com
-
@www רק הערב התפניתי להיכנס לזה.
הצלחתי ככה.
@dovid תודה.$pltxt='1@domain.com'; $method = 'AES-256-CBC'; $key = 'here very hard password and ultra long 1234'; $length = openssl_cipher_iv_length($method); $iv = openssl_random_pseudo_bytes($length); $encrypted = openssl_encrypt($pltxt, $method, $key, OPENSSL_RAW_DATA, $iv); $ctxt = base64_encode($encrypted) . '|' . base64_encode($iv); $array = explode('|', $ctxt); $data = $array[0]; $iv = base64_decode($array[1]); echo ($pltxt = openssl_decrypt($data, $method, $key, 0, $iv)) ;//1@domain.com