Перейти к публикации

Регистрация и авто авторизация (ошибка)


Рекомендованные сообщения

Подскажите пожалуйста. Я автоматически регистрирую и авторизую на сайте пользователя с помощью 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/

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

Готов заплатить тому, кто поможет.

Ссылка на сообщение
Поделиться на других сайтах
Цитата

На данном форуме существуют достаточно жесткие правила, поэтому прежде чем создавать свою тему убедитесь, что вы внимательно их прочитали и поняли.

1. Если ваша тема начинается с вопроса и вам нужна какая либо помощь, то в самой теме в обязательном порядке вы должны указывать ссылку на ваш сайт. Если ваш сайт находится в локальной сети и вы не можете предоставить ссылку, или вы не хотите публиковать открытой ссылки на ваш сайт, то отправляйте персональное сообщение с вопросом в службу поддержки непосредственно с сайта http://dle-news.ru/, вам ответят на ваш вопрос в персональном порядке, в случае если пользуетесь платной версией скрипта и обладаете лицензией на скрипт. Если вы пользуетесь демоверсией, то вам необходимо разместить сайт в сети интернет, и только потом обращаться за помощью. По находящимся на локальных компьютерах демоверсиям никакой помощи и поддержки на форуме не оказывается. Если вы не указали сайт, то ваша тема будет закрыта, а аккаунт на форуме заблокирован.

 

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, celsoft сказал:

 

У меня есть лицензии на множество сайтов. Я не хочу публиковать. Может кто поможет из проходящих.

Ссылка на сообщение
Поделиться на других сайтах
  • celsoft закрыто и разблокировано это тему

Вижу по профилю. Соблюдать правила нужно в любом случае. Возможно вывод ошибок выключен в настройках PHP интерпретатора. Смотрите логи ошибок сервера, либо включите вывод ошибок в настройках PHP.

  • Нравится 1
Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, almaz.izguzhin сказал:

Проблема решена. Прошу закрыть тему.

Так вы поделились бы решением,вдруг кому-нибудь понадобится.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...