Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Rejestracja kont użytkowników w innej bazie. Jak to zrobić? IPS Community


Przejdź do rekomendacji Rozwiązane przez -n3veR,
Rekomendowane odpowiedzi

Cześć. Można w jakiś sposób skonfigurować funkcję "Logowanie i rejestracja kont" w IPS Community Suite aby po rejestracji automatycznie tworzyło się także konto w innej bazie danych? Bo aktualnie to tylko pojawia się w ustawieniach użytkownika zakładka w której mogę się zalogować danymi z innej bazy danych. Pozdrawiam.

 

image

image

image

image

Odnośnik do komentarza
Udostępnij na innych stronach

A User wyraził na to zgodę?

Można to rozwiązać za pomocą triggerów bazodanowych lub osobnego systemu nasłuchującego zmian w bazie.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedź @-n3veR. Możesz wytłumaczyć to dokładniej? Bo właśnie z tego co zauważyłem zalogować się mogę kontem z drugiej bazy ale jak zarejestruję się to nie tworzy mi tego konta w tej drugiej bazie. Jeżeli chodzi o zgodę to konto tworzy się na serwerze w grze bo forum robię powiązane z serwerem.

Odnośnik do komentarza
Udostępnij na innych stronach

52 minuty temu, .WhiteBlue napisał:

zalogować się mogę kontem z drugiej bazy

To otwórz rejestrację tylko po jednej stronie  problem z głowy.

Musiałbyś napisać osobną aplikcją, która 'odpalałaby się' tylko w momencie pojawienia się nowego konta w jednym z tych dwóch systemów jakie masz. Trochę pracy przed Tobą.

Odnośnik do komentarza
Udostępnij na innych stronach

@-n3veR Nie da się tego w żaden sposób w ustawieniach ustawić czy jestem zmuszony napisać aplikację? Pozdrawiam.

Edit.

Napisałem jednak aplikację. Problem rozwiązany.

Odnośnik do komentarza
Udostępnij na innych stronach

3 godziny temu, .WhiteBlue napisał:

Nie da się tego w żaden sposób w ustawieniach ustawić

Nie wiem. Nie znam IPS od środka.

Podałem rozwiązanie stricte developerskie.

Odnośnik do komentarza
Udostępnij na innych stronach

@-n3veR Napisałem coś takiego, jest to mój pierwszy hook ale coś nie chce działać. Próbuję to zrobić już od 2 godzin ale nie daję rady.

Class 'IPS\PDO' not found

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
    exit;
}

class hook22 extends _HOOK_CLASS_
{
    private $connection;

    function __construct() {
        $this->connection = new PDO('mysql:host=xxx;dbname=xxx;charset=utf8', 'xxx', 'xxx');
    }

    /**
    * Member account has been created
    *
    * @param    $member    \IPS\Member    New member account
    * @return    void
    */

    public function onCreateAccount($member) {
        $query = $this->connection->prepare('INSERT INTO drugaBAZA SET id = ?, username = ?, email = ?, password = ?, ip = ?, added = DATE_FORMAT(FROM_UNIXTIME(?), "%Y-%m-%d %H:%i:%s")');
        
        $query->execute(array(
            $member->member_id,
            $member->name,
            $member->email,
            $member->members_pass_hash,
            $member->ip_address,
            $member->joined
        ));
    }
}
Odnośnik do komentarza
Udostępnij na innych stronach

Musisz dopisać namespace oraz zamienić _HOOK_CLASS_ na faktyczny hook z IPSa - np. IPS\Patterns\ActiveRecord

Źródło: Code hooks - Plugins - Invision Community

Odnośnik do komentarza
Udostępnij na innych stronach

@-n3veR Nie wiem czy dobrze zrozumiałem ale tak zrobiłem i nie działa

Błąd:

Fatal error: Uncaught Error: Call to undefined method IPS\Member::loggedIn() in .../forum/system/Log/Log.php:107 Stack trace: #0 .../forum/init.php(659): IPS\_Log::log('Error: Class 'I...', 'uncaught_except...') #1 [internal function]: IPS\IPS::exceptionHandler(Object(Error)) #2 {main} thrown in .../forum/system/Log/Log.php on line 107
//<?php

namespace IPS;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
    exit;
}

class hook22 extends \IPS\Patterns\ActiveRecord
{
    private $connection;

    public function __construct()
    {
        $this->connection = new PDO('mysql:host=xxx;dbname=xxx;charset=utf8', 'xxx', 'xxx');
    }

    /**
    * Member account has been created
    *
    * @param $member \IPS\Member New member account
    * @return void
    */
    public function onCreateAccount($member)
    {
        $query = $this->connection->prepare('INSERT INTO innaBaza SET id = ?, username = ?, email = ?, password = ?, ip = ?, added = DATE_FORMAT(FROM_UNIXTIME(?), "%Y-%m-%d %H:%i:%s")');

        $query->execute(array(
            $member->member_id,
            $member->name,
            $member->email,
            $member->members_pass_hash,
            $member->ip_address,
            $member->joined
        ));
    }
}
Odnośnik do komentarza
Udostępnij na innych stronach

  • Rekomendowana odpowiedź

Złe rozszerzenie... To co podałem wyżej, to był tylko przykład na to jak poprawnie powinieneś tego użyć

Przykład:

<?php declare(strict_types=1);

namespace IPS;

// My custom.php file
class ipsConnect_custom extends ipsConnect
{
    public function register()
    {
        $result = parent::register();
        
        // A user just registered, do something custom now
        
        return $result;
    }
}

Nie jestem pewien tylko co do tego namespace'a. Możliwe, że można go całkowicie wywalić. Poniżej znajdziesz źródło, przeczytaj uważnie cały art.

Źródło: IPS Connect (*) - Development - Invision Community

Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...