Intereting Posts
Элементы MYSQL extract json, в которых содержится json PHP Связывание ссылок в контенте Google Appengine 1.9.3 / 4 и WordPress 3.9. Пользователь-администратор не работает полностью на локальном хосте Symfony, плагин Doctrine Guard, файл generator.yml, настройка с помощью другого модуля Порядок предложения LIKE в запросе, когда вы хотите использовать несколько терминов Использование помощников HTML и форм в Laravel 5 file_get_contents ('php: // input') всегда возвращает пустую строку Использование PHP для разделения содержимого сайта AddType в htaccess вызывает загрузку страницы как использовать объект соединения PDO в разных файлах Автоматизация Linkedin oAuth usin Curl и PHP Zend \ Session \ Ошибка проверки завершенного сеанса контейнера – объект (закрытие) ZF2 Создание многомерного вложенного массива из результата MySQL с повторяющимися значениями (PHP) Symfony2 Custom Field Type (Тип поля) для заполнения с помощью значений Сериализация / Deserialize / OOP

Самый простой способ для ссылки на проверку электронной почты PHP

У меня уже есть расширенная система входа / регистрации пользователя на моем сайте ( colemansystems.psm2.co.uk ). Однако я бы хотел, чтобы электронное письмо было отправлено новым пользователям для проверки их адреса электронной почты. Если они не нажали на ссылку, они не смогут получить доступ к своей учетной записи. Я полу опытный с PHP и MySQL, поэтому, пожалуйста, объясните подробно.

Изменить: код, который я использую для файла verify.php (ссылка, которую пользователь нажимает с помощью GET (например, verify.php?d=51773199320 ))

 $secret = $_GET['d']; $result = mysql_query("SELECT valid FROM users WHERE secret=$secret"); while ($row = mysql_fetch_array($result)) { $valid = $row['valid']; } if ($valid == "") { echo"There seems to be a problem with the verification code.<br><br><br><br><br>"; } elseif ($valid == "1") { echo"Your account is already verified.<br><br><br><br><br>"; } else { mysql_query("UPDATE users SET valid = '1' WHERE secret=$secret"); echo "Thank you, your account is now verified and you are free to use the exclusive features!<br><br><br><br><br><br>"; } 

Это безопасно?

Solutions Collecting From Web of "Самый простой способ для ссылки на проверку электронной почты PHP"

Самый простой способ – не регистрировать непроверенных пользователей вообще.

Попросите их указать адрес электронной почты и отправьте электронное письмо со ссылкой, содержащей этот адрес, запечатанный хешем. После получения этой ссылки вы можете начать процесс регистрации.

Что-то вроде этого

 $secret = "35onoi2=-7#%g03kl"; $email = urlencode($_POST['email']); $hash = MD5($_POST['email'].$secret); $link = "http://example.com/register.php?email=$email&hash=$hash"; 

И в вашем register.php добавьте 2 скрытых поля в регистрационную форму – электронную почту и хэш, сохраняя полученные значения из GET.

Наконец, регистрация и проверка процесса,

 if (md5($_POST['email'].$secret) == $_POST['hash']) { //Continue registration. } 

Самый простой для кого – пользователь, кодер, компьютер? Что вы оптимизируете – количество нажатий клавиш, размер кода, пользовательский интерфейс?

Самый простой код, вероятно, небезопасен. Вы должны проверить адрес электронной почты для правильности, прежде чем отправлять письмо на него.

после регистрации создайте хэшированную строку и сохраните ее во временной таблице пользователя, отправьте эту хэшированную строку на адрес электронной почты пользователя, используя этот код

 if(isset($_POST['register'])) { $email_id=$_POST['email']; $pass=$_POST['password']; $code=substr(md5(mt_rand()),0,15); mysql_connect('localhost','root',''); mysql_select_db('sample'); $insert=mysql_query("insert into verify values('','$email','$pass','$code')"); $db_id=mysql_insert_id(); $message = "Your Activation Code is ".$code.""; $to=$email; $subject="Activation Code For Talkerscode.com"; $from = 'your email'; $body='Your Activation Code is '.$code.' Please Click On This link <a href="verification.php">Verify.php?id='.$db_id.'&code='.$code.'</a>to activate your account.'; $headers = "From:".$from; mail($to,$subject,$body,$headers); echo "An Activation Code Is Sent To You Check You Emails"; } 

и после этого создайте страницу проверки, а затем

 if(isset($_GET['id']) && isset($_GET['code'])) { $id=$_GET['id']; $code=$_GET['id']; mysql_connect('localhost','root',''); mysql_select_db('sample'); $select=mysql_query("select email,password from verify where id='$id' and code='$code'"); if(mysql_num_rows($select)==1) { while($row=mysql_fetch_array($select)) { $email=$row['email']; $password=$row['password']; } $insert_user=mysql_query("insert into verified_user values('','$email','$password')"); $delete=mysql_query("delete from verify where id='$id' and code='$code'"); } } в if(isset($_GET['id']) && isset($_GET['code'])) { $id=$_GET['id']; $code=$_GET['id']; mysql_connect('localhost','root',''); mysql_select_db('sample'); $select=mysql_query("select email,password from verify where id='$id' and code='$code'"); if(mysql_num_rows($select)==1) { while($row=mysql_fetch_array($select)) { $email=$row['email']; $password=$row['password']; } $insert_user=mysql_query("insert into verified_user values('','$email','$password')"); $delete=mysql_query("delete from verify where id='$id' and code='$code'"); } } 

если у вас есть проблемы, вот полный учебник http://talkerscode.com/webtricks/account-verification-system-through-email-using-php.php