Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

IPB a konto w grze.


Rekomendowane odpowiedzi

Witam, ostatnimi czasy zacząłem pisać aplikację na IPB 3.4.9.  Robię obecnie integracje kont, i tu mam problem. I tutaj moje pytanie, czy jest ktoś w stanie przerobić tą funkcję pod IPB?

public function integration()
{
        header('Content-Type: application/json');
        if (!$mybb->user['uid']) {
            $error = 0; //Użytkownik nie jest zalogowany
        } else {
            if (!$mybb->user['psrpg_user']) {
                $error = 1; //Panel nie działa prawidłowo (Brak dodanej kolumny w bazie)
            } else {
                if (!isset($mybb->post_code) || $mybb->input['my_post_key'] != $mybb->post_code) {
                    $error = 2; //Nie prawidłowy post_key
                } else {
                    if ($mybb->user['psrpg_user'] != -1) {
                        $error = 3; //Użytkownik ma już zintegrowane konto
                    } else {
                        $user_nick = htmlentities($this->registry->DB('acc')->real_escape_string($_POST['user_nick']));
                        $user_pass = zahashuj($this->registry->DB('acc')->real_escape_string($_POST['user_pass']));
                        $query     = $this->registry->DB('acc')->build( array( "SELECT * FROM Accounts WHERE name = '{$user_nick}' AND pass = '{$user_pass}'") );
                        if ($query->num_rows == 0) {
                            $error = 4; //Nie prawidłowe dane
                        } else {
                            $result = $query->fetch_array();
                            $query2 = $this->registry->DB('acc')->build( array( "SELECT * FROM " . TABLE_PREFIX . "users WHERE psrpg_user = '{$result['uid']}'") );
                            if ($query2->num_rows > 0) {
                                $error = 5; //Konto jest zintegrowane z innym uzytkownikiem
                            } else {
                               $this->registry->DB('acc')->write_query("UPDATE " . TABLE_PREFIX . "users SET psrpg_user = '{$result['uid']}' WHERE uid = '{$mybb->user['uid']}'") );
                                $success = 1; //integracja udana
                            }
                        }
                    }
                }
            }
        }
        if (isset($error)) {
            $result = $error;
        } else {
            $result = 6;
        }
        $result = Array(
            'result' => $result
        );
        echo json_encode($result);
        exit;
}

Chodzi mi o zmienne post keya, $mybb->user czyli pobieranie informacji z wiersza z nicku. Ogólnie w skrócie pytam o odpowiedniki zmiennych z MyBB na IPB. Wyjaśnię je na "polski".

$mybb->user['uid']    =   Czy jest zalogowany

$mybb->user['psrpg_user']   =   Pobieranie informacji z profilu uzytkownika z kolumny psrpg_user

$mybb->post_code     =   post code    od logowania

 

Resztę zapytań SQL jakoś przerobiłem

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm nadal nie działa :/ Tu cały kod:

<?php

class account {
    protected $registry;
	protected $DB;
	protected $member;
	protected $memberData;
	protected $request;
	protected $settings;
	public function __construct( ipsRegistry $registry){
		$panelClass = IPSLib::loadLibrary( IPSLib::getAppDir( 'panel' ) . '/sources/panel.php', 'panel' );
		$this->panel = new $panelClass($registry);
		$this->registry = $registry;
		//$this->DB = $this->registry->DB();
		$this->member = $this->registry->member();
		$this->memberData = $this->registry->member()->fetchMemberData();
		$this->request = $this->registry->fetchRequest();
		$this->settings = $this->registry->fetchSettings();
    }

public function integration()
{
        header('Content-Type: application/json');
        if (!$this->memberData['member_id']) {
            $error = 0; //Użytkownik nie jest zalogowany
        } else {
            if (!$this->memberData->user['psrpg_user']) {
                $error = 1; //Panel nie działa prawidłowo (Brak dodanej kolumny w bazie)
            } else {
                if (!isset($this->memberData->post_code) || $this->memberData->input['my_post_key'] != $this->memberData->post_code) {
                    $error = 2; //Nie prawidłowy post_key
                } else {
                    if ($this->memberData->user['psrpg_user'] != -1) {
                        $error = 3; //Użytkownik ma już zintegrowane konto
                    } else {
                        $user_nick = htmlentities($con->real_escape_string($_POST['user_nick']));
                        $user_pass = zahashuj($con->real_escape_string($_POST['user_pass']));
                        $query     = $con->query("SELECT * FROM Accounts WHERE name = '{$user_nick}' AND pass = '{$user_pass}'");
                        if ($query->num_rows == 0) {
                            $error = 4; //Nie prawidłowe dane
                        } else {
                            $result = $query->fetch_array();
                            $query2 = $db->query("SELECT * FROM " . TABLE_PREFIX . "users WHERE psrpg_user = '{$result['uid']}'");
                            if ($query2->num_rows > 0) {
                                $error = 5; //Konto jest zintegrowane z innym uzytkownikiem
                            } else {
                                $db->write_query("UPDATE " . TABLE_PREFIX . "users SET psrpg_user = '{$result['uid']}' WHERE uid = '{$this->memberData->user['uid']}'");
                                $success = 1; //integracja udana
                            }
                        }
                    }
                }
            }
        }
        if (isset($error)) {
            $result = $error;
        } else {
            $result = 6;
        }
        $result = Array(
            'result' => $result
        );
        echo json_encode($result);
        exit;
}

    public function getOutput(){ 
		$this->registry->output->addNavigation( "Konto SA-MP", "app=panel&app=panel&module=game&do=account" );	
		switch($this->request['go']){
			default: {
				$this->registry->output->addNavigation( "Integracja" );	
				$out='
<form action="#" novalidate="novalidate" method="post" id="samplogin_form">
				<div id="login_form" class="clearfix">
	<div id="member_login">
		<h2 class="maintitle">Integracja konta</h2>
		<div class="border"><div class="row1">
			<div id="regular_signin">
				<a id="_regularsignin"></a>
				<h3 class="bar">Wprowadź login i hasło</h3>
<fieldset id="signin_options">
				<ul class="ipsForm ipsForm_vertical ipsPad_double left">
					<li class="ipsField">
						<label for="ips_username" class="ipsField_title">Login SAMP:</label>
						<p class="ipsField_content">
							<input class="input_text" name="user_nick" size="50" tabindex="1" type="text"><br>
						</p>
					</li>
					<li class="ipsField">
						<label for="ips_password" class="ipsField_title">Hasło SAMP:</label>
						<p class="ipsField_content">
							<input aria-required="true" class="input_text" name="user_pass" size="50" tabindex="2" type="password"><br>
						</p>
					</li>
				</ul>
			</div></fieldset>
			<br>
			
			<fieldset class="submit">
				<input class="input_submit" value="Zaloguj się!" tabindex="0" type="submit" name="regsubmit"> lub <a href="http://psr-serv.pl" title="Anuluj" class="cancel">Anuluj</a>
			</fieldset>
		</form></div></div>
	</div>
</div>
</form><script>
$(document).ready(function() {
  $("#samplogin_form").keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});
var form_nick, form_pass, result;
$("#log_submit").click(function() {

form_nick = $("#samplogin_form input[name=user_nick]").val();
form_pass = $("#samplogin_form input[name=user_pass]").val();

var data = new FormData();
data.append("user_nick", form_nick);
data.append("user_pass", form_pass);
data.append("integration", "1");
data.append("my_post_key", my_post_key);

var xhr = new XMLHttpRequest();
xhr.open("POST", "index.php?app=panel&app=panel&module=game&do=account", true);
xhr.onload = function () {
    result = JSON.parse(this.responseText);
    if(result.result == 6) {
    	$(".ipsPad").html("<center>Konta zostały zintegrowane pomyślnie!</center>");
    }
};
xhr.send(data);
});

</script>';
			
			}
		}
		$menuClass = IPSLib::loadLibrary( IPSLib::getAppDir( 'panel' ) . '/sources/menu.php', 'globalMenu' );
		$menu = new $menuClass($this->registry);
		return $menu->getOutput2($out, $this->request['do'], $this->request['go'], array("Integracja"), array("integracja"));	

	}
  


}

Po kliknięciu

<input class="input_submit" value="Zaloguj się!" tabindex="0" type="submit" name="regsubmit">

Strona się tylko odświeża :/

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 miesiące temu...
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.