Jump to content
Sign in to follow this  
DJkikisa

Izmantojam IPB Single sign-on(SSO) un izveidojam lietotāja paneli mājaslapā.

Recommended Posts

IPB 4. izmanto jauku funkciju ar kuras palīdzību varam izvilkt ārpus IPB foruma vai lietotājs ir ienācis foruma profilā.
Viņu izmantot ir ļoti elementāri, viss kas jāizdara ir :
 

<?php
/* Norādam ceļu uz galvano foruma mapi*/
require $_SERVER['DOCUMENT_ROOT'].'/init.php';

/* Uzsākam sesiju lai pārbaudītu, kas ir ienācis profilā */
\IPS\Session\Front::i();
if(\IPS\Member::loggedIn()->member_group_id == 2){
echo 'Tu esi viesis';	
}else{
?>
<img src="<?php echo \IPS\Member::load(\IPS\Member::loggedIn()->member_id )->get_photo();?>">
<p>Profila vārds : <?php echo \IPS\Member::loggedIn()->name;?>
<p>Profila vārds SEO vārds: <?php echo \IPS\Member::loggedIn()->members_seo_name;?>	
<p>Profila lietotāja id: <?php echo \IPS\Member::loggedIn()->member_id;?>
<p>Profila lietotāja grupas id: <?php echo \IPS\Member::loggedIn()->member_group_id;?>
<p>Profila lietotāja warn līmenis: <?php echo \IPS\Member::loggedIn()->warn_level;?>
<p>Profila lietotāja grupas vizualizāciju: <?php echo \IPS\Member::loggedIn()->group['prefix'];?> Grupa <?php echo \IPS\Member::loggedIn()->group['suffix'];?>
<p><?php
/* Noskaidrojam vai lietotajs ir Administrators */
if(\IPS\Member::loggedIn()->isAdmin()){
echo 'Tu esi administrātors';
}else{
echo 'Tu neesi administrators';
}?>
<p><?php
/* Noskaidrojam vai lietotajs ir Moderātors */
if(\IPS\Member::loggedIn()->modPermission()){
echo 'Tu esi Mods';
}else{
echo 'Tu neesi Mods';
}?>
	
</p>	
<?php
}
?>

Cik testēju ir iespējams izvilkt jebko no: core_members db tabulas.
Vēl ja nav ir jāizveido constants.php fails iekš galvenās foruma mapes un jāpievieno:(Izcelts dēļ analfabētiem)

define( 'COOKIE_PATH', '/' );

Lai šis strādātu pa visu mājaslapu ārpus foruma mapes.
Demo ar izvadīto informāciju: https://wam.lv/skripti/ipbsso.php

Uzlabotā versija: https://wam.lv/topic/74-izmantojam-ipb-single-sign-onsso-un-izveidojam-lietotāja-paneli-mājaslapā/?tab=comments#comment-360

  • Thanks 1

Share this post


Link to post
Share on other sites

Vēl ja nav ir jāizveido constants.php fails iekš galvenās foruma mapes un jāpievieno:(Izcelts dēļ analfabētiem)

define( 'COOKIE_PATH', '/' );

 

kad šis tiek izpildīts, viss forums aiziet pa dirsu.. 500 erroru uzmet..

kā fix?

uz sākumlapu tiek iznest ar <?php include 'profile.php'; ?>

un tā vieta lai izvilktu profilu izveilk ka guest.. Bet atverot ar link strādā..

Edited by Pantēra
  • Downvote 1

Share this post


Link to post
Share on other sites
25 minutes ago, Pantēra said:

Vēl ja nav ir jāizveido constants.php fails iekš galvenās foruma mapes un jāpievieno:(Izcelts dēļ analfabētiem)

define( 'COOKIE_PATH', '/' );

 

kad šis tiek izpildīts, viss forums aiziet pa dirsu.. 500 erroru uzmet..

kā fix?

uz sākumlapu tiek iznest ar <?php include 'profile.php'; ?>

un tā vieta lai izvilktu profilu izveilk ka guest.. Bet atverot ar link strādā..

Es ceru ka tu , ja tas ir jauns php fails neaizmirsi par <?php sākumā.

https://invisioncommunity.com/4guides/advanced-options/configuration-options/using-constantsphp-r25/

Share this post


Link to post
Share on other sites
13 minutes ago, DJkikisa said:

Es ceru tu , ja tas ir jauns php fails neaizmirsi par <?php sākumā.

nope.. Viss bija pareizi, arī ceļš un init.php

Nezinu kapēc tā..

  • Downvote 1

Share this post


Link to post
Share on other sites

Kur index.php man viņu likt? require '../../forum/init.php';

pluss.. Nevar būt saistīts ar config.php, kur : require_once('forum/conf_global.php');

kad ielieku constants.php foruma direktorijā, šādi notiek: http://prntscr.com/mg6q0m

izvadu uz sākumlapu:

div class="center-panelbox">
    <?php require 'application/includes/profile.php'; ?>
</div>

 

 

 

constants.php

profile.php

Edited by Pantēra
  • Downvote 1

Share this post


Link to post
Share on other sites

Nu index, tad arī liec: require 'forum/init.php';
un nevajadzētu būt, p.s ieliekot šo init nevajadzēs vairs to require_once('forum/conf_global.php');, tākā ar init vari izvilkt visus tos pašus datus tik šādi:

$db = \IPS\Settings::i()->sql_database;
$db_user =\IPS\Settings::i()->sql_user;
$db_pass =\IPS\Settings::i()->sql_pass;
$db_prefix = \IPS\Settings::i()->sql_tbl_prefix;

Un constants.php nevajag noslēdzošo php tag. Pasties error logs , kāpēc tev forums nogļuko dēļ viņa, ganjau tur arī atradīsi atbildi.
Vēl vari arī profile.php failā aizstāt:
 

require '../../forum/init.php';

ar :
 

require $_SERVER['DOCUMENT_ROOT'].'/forum/init.php';

 

Share this post


Link to post
Share on other sites

Sveiks, zinu kad tēma ir veca, bet man ir mazins jautājums.
 

<p><?php echo \IPS\Member::loggedIN()->groupName; ?></p>

man izvada 

9069d34ad217af2adb462b69812d9178

Kā es varu pievienot valodu, lai viņs iztulko grupu?

Share this post


Link to post
Share on other sites

Rīt naktī pastīšos. Iespējams būs jātaisa ekstra DB querty, lai dabūtu name. 

Pagaidu risinājums ( Kad būs vairāk laika pastīšos moš kādu labāku):
 

<?php
/* Norādam ceļu uz galvano foruma mapi*/
require '../init.php';

/* Uzsākam sesiju lai pārbaudītu, kas ir ienācis profilā */
\IPS\Session\Front::i();
if(\IPS\Member::loggedIn()->member_group_id == 2){
echo 'Tu esi viesis';	
}else{
$group_name = 'core_group_'.\IPS\Member::loggedIn()->member_group_id;
$get_group_name = \IPS\Db::i()->select( '*', 'core_sys_lang_words', [ 'word_key=?', $group_name ] )->first();
?>
<img src="<?php echo \IPS\Member::load(\IPS\Member::loggedIn()->member_id )->get_photo();?>">
<p>Profila vārds : <?php echo \IPS\Member::loggedIn()->name;?>
<p>Profila vārds SEO vārds: <?php echo \IPS\Member::loggedIn()->members_seo_name;?>	
<p>Profila lietotāja id: <?php echo \IPS\Member::loggedIn()->member_id;?>
<p>Profila lietotāja grupas id: <?php echo \IPS\Member::loggedIn()->member_group_id;?>
<p>Profila lietotāja warn līmenis: <?php echo \IPS\Member::loggedIn()->warn_level;?>
<p>Profila lietotāja grupas vizualizāciju: <?php echo \IPS\Member::loggedIn()->group['prefix'];?> <?php echo $get_group_name['word_default'];?> <?php echo \IPS\Member::loggedIn()->group['suffix'];?>
<p><?php
/* Noskaidrojam vai lietotajs ir Administrators*/
if(\IPS\Member::loggedIn()->isAdmin()){
echo 'Tu esi administrātors';
}else{
echo 'Tu neesi administrators';
}?>
<p><?php
/* Noskaidrojam vai lietotajs ir Moderātors */
if(\IPS\Member::loggedIn()->modPermission()){
echo 'Tu esi Mods';
}else{
echo 'Tu neesi Mods';
}?>
	
</p>	
<?php
}
?>

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×