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

almaz.izguzhin

новички
  • Публикации

    34
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем almaz.izguzhin

  1. 4 часа назад, TeraMoune сказал:

    Он генерируется сайтом с использованием данных полученных от сети. Генерируется в файле social.class.php.

    Подскажите. Может вы знаете, как в дополнительное поле email добавлять еще email пользователя? Я добавил его после uid

    https://disk.yandex.ru/i/R1jomaxew8s_1A

  2. Здравствуйте. Пытаюсь сделать авторизацию в приложении через соц сеть Яндекс. В приложении сделал, но когда заходишь на сайт с этим же аккаунтом, он связывает мне 2 аккаунта и получается 2 раза привязка. Не могу понять, откуда берется SID в dle_social_login в базе данных?

    Я посмотрел. Ответ от яндекс приходит на подобии:

    {"id": "1690117858", "login": "webStar12312", "client_id": "22dc74de02f645a1bc05b24324324f34", "display_name": "webStar101", "real_name": "Anton Danilov", "first_name": "Anton", "last_name": "Danilov", "sex": "male", "default_email": "webStar12312@yandex.ru", "emails": ["webStar12312@yandex.ru"], "birthday": "", "psuid": "1.AAkwhA.eU8cotcrewr342r4cr4FSD0VVa1ztiawcOxOToQGxeg"}

    Вставляю "psuid": "1.AAkwhA.eU8cotcrewr342r4cr4FSD0VVa1ztiawcOxOToQGxeg" в SID в dle_social_login, но все равно при авторизации через сайт создается новый SID.

  3. 1 час назад, MSK сказал:

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

    Если только локальные подключения разрешены, тогда нужна прослойка...

    Я хочу через мобильное приложение на Android подключиться вообще)

  4. Сделали решение, может кому-то пригодится.

    В profile.php найти строку:

    Цитата

    if (count($social_list)) $tpl->set( '{social-list}', implode(",&nbsp;</span>", $social_list)."</span>" ); else $tpl->set( '{social-list}', "" );

    Заменить её на:

    Цитата

        if (count($social_list)) {
                $tpl->set( '[sociallist]', "" );
                $tpl->set( '[/sociallist]', "" );
                $tpl->set( '{social-list}', implode(",&nbsp;</span>", $social_list)."</span>" );
                    $tpl->set_block( "'\\[attached-sociallist\\](.*?)\\[/attached-sociallist\\]'si", "" );
        } else {
            $tpl->set_block( "'\\[sociallist\\](.*?)\\[/sociallist\\]'si", "" );
            $tpl->set( '[sociallist]', "" );
            $tpl->set( '[/sociallist]', "" );
            $tpl->set( '{social-list}', "" );
    }

    В userinfo.tpl обернуть нужный текст:

    Цитата

    [sociallist]<h2>Список привязанных сайтов к личному кабинету</h2>[/sociallist]

     

    • Спасибо 1
  5. Здравствуйте. Размешаю на странице список привязанных соц сетей с текстом: "Список привязанных сайтов" и внизу {social-list} 

    Как можно сделать так, чтобы не выводить текст на странице пользователя перед {social-list}, если там нет привязанных аккаунтов?

  6. 5 минут назад, celsoft сказал:

    Все указано в справке на скриншотах:

    
    http:/вашсайт.ru/index.php?do=auth-social&provider=yandex

     

    Сервисы постоянно меняют свои сайты. Актуальную инструкцию нужно смотреть в документации по сервису. Русской документации насколько я знаю у них нет.

    Нашел хорошую инструкцию по Google - https://blog.ithillel.ua/ru/articles/oauth-2-0-autentifikatsiya-cherez-google-kak-realizovat-vhod-cherez-google-na-sayte

    Теперь вопрос в том, как можно сделать так, чтобы не выводить текст на странице пользователя, если там нет привязанных аккаунтов?

  7. 6 часов назад, celsoft сказал:

    Конечно. Обычная стандартная вожножность в скрипте. Размещаете в шаблоне необходимые ссылки на привязку аккаунта социальной сети https://dle-news.ru/extras/online/index.html?all23.html

    Спасибо. Реализовал. Теперь вопрос в том, как можно сделать так, чтобы не выводить текст на странице пользователя, если там нет привязанных аккаунтов?

    Подскажите еще какой Callback url для Яндекс указывать. В инструкции про это ничего не сказано. Мне выдает ошибку: "redirect_uri не совпадает с Callback URL, указанным при регистрации приложения"

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

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

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

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

  10. 11.11.2022 в 13:52, celsoft сказал:

    В новой версии мы планируем добавить поддержку тега {related-ids} который будет выводить ID похожих публикаций соответственно вы сможете использовать вместо {related-news} тег {custom id="{related-ids}"} в полных новостях, который выведет похожие новости с поддержкой всех без исключения тегов для кратких публикаций и сможете использовать любое оформление

    Будем ждать. Спасибо. В следующем обновлении ждать?

  11. 8 минут назад, redissx сказал:

    Никак, нет такой возможности для relatednews.tpl

    Рекомендую в теме пожеланий написать об этом . Там уже много раз писали, но почему-то не внедряют

    Капец! Вроде такая мелочь, а сделать не могут

     

    • Поддерживаю 1
  12. 7 минут назад, celsoft сказал:

    Стандартная возможность DLE, включается в настройках скрипта в разделе настроек авторизации через соц. сети. Там есть поддержка авторизации через Яндекс.

    Охох, класс. Спасибо)

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