Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Plugin wykonujący się podczas rejestacji

Założony przez  loozak15.

wersja skryptu MyBB: 1.6.13
adres forum: capgaming.pl
na czym polega problem (screen, opis, komunikaty):

Witam, chciałbym zrobić plugin który będzie się aktywował i wykonywał polecenia do bazy danych podczas rejestracji.

Ogólnie chodzi mi o to żeby ten plugin podczas rejestracji pobierał uid nowego użytkownika a następnie tworzył konto w innej bazie danych o tym samym uid i paroma innymi danymi.

Do jakiego hooka najlepiej się podpiąć i prosiłbym o przykład jakiś ponieważ jestem laikiem w tych sprawach ;)

Mam coś takiego jak na razie.

<?php

if(!defined("IN_MYBB"))
{
    die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

function reg_postaci_info() {
    return array(
        "name"            => "Rejestracja postaci",
        "description"    => "...",
        "website"        => "http://capgaming.pl",
        "author"        => "Loozak",
        "authorsite"    => "http://capgaming.pl",
        "version"        => "wersja 0.1",
    );
}

$plugins->add_hook("member_do_register_end", "reg_postaci");

function reg_postaci() {

    global $mybb, $db, $konto
}

?>
Snake_ napisał 02.06.2014, 17:46:
Przenoszę [Obrazek: modnotice_howto.png]
hook masz teoretycznie dobry
teraz laczysz sie do bazy i robisz insert, najlepiej za pomoca klas mybb

{$mybb->input['mazwapola']}

    $server = array(
    
"polebazy" => $db->escape_string($mybb->input['mazwapola']),
);
            
$db->insert_query("serversboard"$server); 
Tyle że ja chcę pobrać uid nowo zarejestrowanego użytkownika i stworzyć konto temu użytkownikowi w innej bazie danych (nie mybb) o tym samym uid.

Jak dostać się do tego uid?
w globalnych dodaj $uid
global $mybb, $db, $konto, $uid:

i potem ta zmienna bedzie uidem :)

zapytasz skad to
sprawdzilem w kodzie
<?php

if(!defined("IN_MYBB"))
{
    die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

function reg_postaci_info() {
    return array(
        "name"            => "Rejestracja postaci",
        "description"    => "Zarejestruj swoją postać razem z kontem z forum.",
        "website"        => "http://capgaming.pl",
        "author"        => "Loozak",
        "authorsite"    => "http://capgaming.pl",
        "version"        => "wersja 0.1",
    );
}

$plugins->add_hook("member_do_register_end", "reg_postaci");

function reg_postaci() {

    global $mybb, $db, $uid;
    
    $con=mysqli_connect("localhost","root","","roleplay");

    // Check connection
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    
    $sql = mysql_query("INSERT INTO user VALUES(1,'al ma kota')");
    
    mysqli_close($con);
}

?>

Mam coś takiego, plik wsadziłem do inc/plugins/. Jak tworzę nowe konto na forum to nie dodaje mi do lokalnej bazy danych niczego. W czym problem?
http://www.kess.snug.pl/?sid=10&pid=42
<?php

if(!defined("IN_MYBB"))
{
    die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

function reg_postaci_info() {
    return array(
        "name"            => "Rejestracja postaci",
        "description"    => "Zarejestruj swoją postać razem z kontem z forum.",
        "website"        => "http://capgaming.pl",
        "author"        => "Loozak",
        "authorsite"    => "http://capgaming.pl",
        "version"        => "wersja 0.1",
    );
}

$plugins->add_hook("member_do_register_end", "reg_postaci");

function reg_postaci() {

    global $mybb, $db, $uid;
    
        // łączymy się z bazą danych
    $connection = @mysql_connect('localhost', 'root', '')
    or die('Brak połączenia z serwerem MySQL');
    $db = @mysql_select_db('roleplay', $connection)
    or die('Nie mogę połączyć się z bazą danych');
    
    // dodajemy rekord do bazy
    $ins = @mysql_query("INSERT INTO user VALUES(1,'2')");
    
    if($ins) echo "Rekord został dodany poprawnie";
    else echo "Błąd nie udało się dodać nowego rekordu";
    
    mysql_close($connection);
}

?>

Mam teraz taki kod, zrobiony według tej stronki co mi podałeś, nadal nie robi się rekord na localu, może to nie w tym problem?
Plik jest umieszczony w inc/plugins i tylko tyle. Nie dodawałem nic w szablonach itp.
To co Ci podalem mialo pomoc w napisaniu kodu
nie masz pojecia o tym co chesz zrobic daj sobie spokuj
nie mam pojecia jak wyglada baza do ktorej chcesz wlozyc nowy rekord
dzial gielda
Z tego co wiem to forum służy do pomocy początkującym jak i zaawansowanym w rozwiązywaniu problemów. Napisałem tutaj z nadzieją że ktoś pomoże.

baza wygląda w następujący sposób:

nazwa: roleplay

tabela: user a w niej dwie kolumny uid oraz nick - stworzona tylko i wyłącznie do celów demonstracyjnych, próbowałem wklepać ten kod z podłączeniem do bazy w pliku members.php po tym kawałku kodu (linia 263)

$user = array(

        "username" => $mybb->input['username'],

        "password" => $mybb->input['password'],

        "password2" => $mybb->input['password2'],

        "email" => $mybb->input['email'],

        "email2" => $mybb->input['email2'],

        "usergroup" => $usergroup,

        "referrer" => $mybb->input['referrername'],

        "timezone" => $mybb->input['timezoneoffset'],

        "language" => $mybb->input['language'],

        "profile_fields" => $mybb->input['profile_fields'],

        "regip" => $session->ipaddress,

        "longregip" => my_ip2long($session->ipaddress),

        "coppa_user" => intval($mybb->cookies['coppauser']),

        "regcheck1" => $mybb->input['regcheck1'],

        "regcheck2" => $mybb->input['regcheck2']

    );

ale pomimo tego że wpisuję dobre dane do (tym razem) serwera zewnętrznego to non stop wywala mi komunikat że błędne połączenie z bazą danych.

Oto kod który wklepałem po w/w części kodu:

$connection = @mysql_connect('localhost', '***', '***')
    or die('Brak połączenia z serwerem MySQL');
    $db = @mysql_select_db('***', $connection)
    or die('Nie mogę połączyć się z bazą danych');
    
    // dodajemy rekord do bazy
    $ins = @mysql_query("INSERT INTO user VALUES(1,'2')");
    
    if($ins) echo "Rekord został dodany poprawnie";
    else echo "Błąd nie udało się dodać nowego rekordu";
    
    mysql_close($connection);
ahhhh
tak forum jest od pomagania a nie od dawania gotowych kodow, tyle ile moglem Ci pomoglem. Moja pomoc w Twoich rękach nie przerodzila sie w "coś"
<?php

if(!defined("IN_MYBB"))
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");

function 
reg_postaci_info() {
    return array(
        
"name"            => "Rejestracja postaci",
        
"description"    => "Zarejestruj swoją postać razem z kontem z forum.",
        
"website"        => "http://capgaming.pl",
        
"author"        => "Loozak",
        
"authorsite"    => "http://capgaming.pl",
        
"version"        => "wersja 0.1",
    );
}

$plugins->add_hook("member_do_register_end""reg_postaci");

function 
reg_postaci() {

    global 
$mybb$db$user_info;
    
        
// łączymy się z bazą danych
    
$connection = @mysql_connect('localhost''root''')
    or die(
'Brak połączenia z serwerem MySQL');
    
$db = @mysql_select_db('roleplay'$connection)
    or die(
'Nie mogę połączyć się z bazą danych');
    
    
// dodajemy rekord do bazy
    
$ins = @mysql_query("INSERT INTO user SET uid='$user_info['uid']', nick=' $mybb->input['username']'");
    
    if(!
$ins
        die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
        
    
mysql_close($connection);
}

?>

zobacz tak
Zrobiłem jak podałeś i nic nie idzie.

Dodałem w pliku members.php żeby łączył się z bazą i poszło.

Dzięki za wszystko ;)
Czemu chcesz to pchac do pliku?
hook dziala

<?php

if(!defined("IN_MYBB"))  die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");

function 
plugin_info() {
    return array(
        
"name"            => "Rejestracja postaci",
        
"description"    => "Zarejestruj swoją postać razem z kontem z forum.",
        
"website"        => "http://polish-zone.pl",
        
"author"        => "Supryk",
        
"authorsite"    => "http://polish-zone.pl",
        
"version"        => "wersja 0.1",
    );
}

$plugins->add_hook("member_do_register_end""plugin_register");

function 
plugin_register() 
{

    global 
$mybb$db$user_info;
    
    
    
$server = array(
        
"ip" => $db->escape_string($user_info['uid']),
        
"ohn" => $db->escape_string("asdas"),
    );
            
    
$sid $db->insert_query("serversboard"$server);
}

?>

taki kod wprowadza mi dane do tabeliserversboard ktora mam w bazie forum, w polu ip pojawia sie uid nowego usera wiec wystarczy dobrz sie polaczyc z baza

piszac to dalej

<?php

if(!defined("IN_MYBB"))  die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");

function 
plugin_info() {
    return array(
        
"name"            => "Rejestracja postaci",
        
"description"    => "Zarejestruj swoją postać razem z kontem z forum.",
        
"website"        => "http://polish-zone.pl",
        
"author"        => "Supryk",
        
"authorsite"    => "http://polish-zone.pl",
        
"version"        => "wersja 0.1",
    );
}

$plugins->add_hook("member_do_register_end""plugin_register");

function 
plugin_register() 
{

    global 
$mybb$db$user_info;
    
    require_once 
MYBB_ROOT.'inc/db_mysql.php';
    
$db2 = new DB_MySQL;
        
    
/* Tu wpisz dane do bazy */
    
$config['hostname' ] = 'localhost';
    
$config['username' ] = 'polishzo_amxbans';
    
$config['password' ] = '';
    
$config['database' ] = 'polishzo_amxbans';
    
    
$db->connect($config);
    
    
    
$array = array(
        
"uid" => $db->escape_string($user_info['uid']),
        
"nick" => $db->escape_string($mybb->input['username']),
    );
            
    
$id $db->insert_query("user"$array);
}

?>

najlepiej sprawdz nie na prawdziwym forum
nie jestem pewiem co do samego insertu poniewaz domyslna klasa mybb uwzglednia prefix tabeli no nic zobaczymy

takie trude? 2 min roboty



Użytkownicy przeglądający ten wątek:

2 gości