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

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


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

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

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

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

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

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...