almaz.izguzhin 2 Опубликовано: 20 января 2023 Рассказать Опубликовано: 20 января 2023 Подскажите пожалуйста. Я автоматически регистрирую и авторизую на сайте пользователя с помощью php скрипта: <?php define ( 'DOMAIN', 'site.ru' ); function set_cookie($name, $value, $expires) { global $config; if( $expires ) { $expires = time() + ($expires * 86400); } else { $expires = FALSE; } setcookie( $name, $value, $expires, "/", DOMAIN, TRUE, TRUE ); } define ( 'DATALIFEENGINE', true ); define ( 'ROOT_DIR', dirname ( __FILE__ ) ); define ( 'ENGINE_DIR', $_SERVER['DOCUMENT_ROOT'] . '/engine' ); require_once (ENGINE_DIR . '/classes/plugins.class.php'); require_once (ENGINE_DIR.'/data/dbconfig.php'); if(isset($_GET['email']) && trim($_GET['email']) !== ''){ $email = trim($_GET['email']); if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ $ret['error']=array('message'=>"Некоректный email: ".$email.""); die(json_encode($ret)); } $q="SELECT * FROM " . USERPREFIX . "_users WHERE email='$email'"; $sql = $db->query( $q ); while ($row = $db->get_row($sql)){ $ret['error']=array('message'=>"Аккаунт ".$email." уже существует!"); die(json_encode($ret)); } session_start(); $name = uniqid(); $count_letter_pwd = 8; $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $password =substr(str_shuffle($chars), 0, $count_letter_pwd);//"12345678"; $regpassword = $db->safesql( password_hash($password, PASSWORD_DEFAULT) ); if(function_exists('openssl_random_pseudo_bytes')) { $stronghash = md5(openssl_random_pseudo_bytes(15)); } else $stronghash = md5(uniqid( mt_rand(), TRUE )); $salt = sha1( str_shuffle("abcdefghjkmnpqrstuvwxyz0123456789") . $stronghash ); $hash = ''; for($i = 0; $i < 9; $i ++) { $hash .= $salt[mt_rand( 0, 39 )]; } $hash = md5( $hash ); $q="INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip, hash) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '4', '', '', '', '', '$_IP', '$hash')"; $db->query( $q ); $id = $db->insert_id(); set_cookie( "dle_user_id", $id, 365 ); set_cookie( "dle_password", md5($regpassword), 365 ); if( $config['log_hash'] ) { set_cookie( "dle_hash", $hash, 365 ); } $_SESSION['dle_user_id'] = $id; $_SESSION['dle_password'] = md5($regpassword); require_once 'vendor/autoload.php'; $mail_theme = "Регистрация на сайте site.ru"; $mail_body= "{date} - дата регистрации.<br>\n{time} - время регистрации.<br>\n{login} - ваш логин.<br>\n{email} - ваш email.<br>\n{password} - ваш пароль."; $mail_body= '<table border="0" cellpadding="0" cellspacing="0" style="background-color:#f6f6f6;width:100%"><tbody><tr><td align="center" style="padding:20px;width:600px"> <table border="0" cellpadding="0" cellspacing="0" style="background-color:#f6f6f6;margin:0 auto 0 auto;max-width:600px"><tbody><tr><td style="background:#fff;box-sizing:border-box;font-family:sans-serif;font-size:16px;max-width:600px;padding:20px;vertical-align:top"> <h1 style="margin-top:0">Здравствуйте!</h1> <p>Вы успешно зарегистрировались на сайте <b>site</b></p> <p>Ваш логин: <b>{login}</b></p> <p>Ваш пароль: <b>{password}</b></p> </td></tr><tr><td style="background:#f6f6f6;box-sizing:border-box;color:#939598;font-family:sans-serif;font-size:14px;max-width:600px;padding:20px;vertical-align:top;line-height: 20px;"> Вы получили данное письмо, так как создали на сайте site.ru. </td></tr></tbody></table> </td></tr></tbody></table>'; $mail_body = str_replace( [ "{login}", "{email}", "{password}", ], [ $name, $email, $password ], $mail_body ); $mail = new PHPMailer\PHPMailer\PHPMailer(); $mail->CharSet = 'UTF-8'; $yourEmail = 'noreply@site.ru'; // ваш email на яндексе $password = 'password'; // ваш пароль к яндексу или пароль приложения // настройки SMTP $mail->Mailer = 'smtp'; $mail->Host = 'ssl://smtp.yandex.ru'; $mail->Port = 465; $mail->SMTPAuth = true; $mail->Username = $yourEmail; // ваш email - тот же что и в поле From: $mail->Password = $password; // ваш пароль; /**/ $mail->setFrom( 'noreply@site.ru', 'site.ru' ); $mail->addAddress($email); $mail->Subject = $mail_theme; $mail->Body = $mail_body; $mail->isHTML( true ); $mail->send(); $ans=$name; $ret['result']=array('message'=>$ans); die(json_encode($ret)); } $ret['error']=array('message'=>"unknown error on site"); die(json_encode($ret)); Аккаунт создается, пользователь авторизуется, НО, почему-то нельзя перейти в учетную запись по прямой ссылке, например: https://site.ru/user/63cae066aab99/ Просто страница сразу не доступной становится. Без ошибок без ничего. Если поставить другой символ в логине по ссылке, то выходит сообщение, что пользователь не найден. В базе данных этот пользователь числится. Подскажите, что я не так делаю? Готов заплатить тому, кто поможет. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 20 января 2023 Рассказать Опубликовано: 20 января 2023 Цитата На данном форуме существуют достаточно жесткие правила, поэтому прежде чем создавать свою тему убедитесь, что вы внимательно их прочитали и поняли. 1. Если ваша тема начинается с вопроса и вам нужна какая либо помощь, то в самой теме в обязательном порядке вы должны указывать ссылку на ваш сайт. Если ваш сайт находится в локальной сети и вы не можете предоставить ссылку, или вы не хотите публиковать открытой ссылки на ваш сайт, то отправляйте персональное сообщение с вопросом в службу поддержки непосредственно с сайта http://dle-news.ru/, вам ответят на ваш вопрос в персональном порядке, в случае если пользуетесь платной версией скрипта и обладаете лицензией на скрипт. Если вы пользуетесь демоверсией, то вам необходимо разместить сайт в сети интернет, и только потом обращаться за помощью. По находящимся на локальных компьютерах демоверсиям никакой помощи и поддержки на форуме не оказывается. Если вы не указали сайт, то ваша тема будет закрыта, а аккаунт на форуме заблокирован. Цитата Ссылка на сообщение Поделиться на других сайтах
almaz.izguzhin 2 Опубликовано: 20 января 2023 Рассказать Опубликовано: 20 января 2023 Автор 2 минуты назад, celsoft сказал: У меня есть лицензии на множество сайтов. Я не хочу публиковать. Может кто поможет из проходящих. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 20 января 2023 Рассказать Опубликовано: 20 января 2023 Вижу по профилю. Соблюдать правила нужно в любом случае. Возможно вывод ошибок выключен в настройках PHP интерпретатора. Смотрите логи ошибок сервера, либо включите вывод ошибок в настройках PHP. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
almaz.izguzhin 2 Опубликовано: 21 января 2023 Рассказать Опубликовано: 21 января 2023 Автор Проблема решена. Прошу закрыть тему. Цитата Ссылка на сообщение Поделиться на других сайтах
aleksandrhristich 107 Опубликовано: 21 января 2023 Рассказать Опубликовано: 21 января 2023 33 минуты назад, almaz.izguzhin сказал: Проблема решена. Прошу закрыть тему. Так вы поделились бы решением,вдруг кому-нибудь понадобится. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.