Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

uLogin для IPB 3.3.x

Опубликовано:

index.php?app=downloads&module=display&section=screenshot&id=263

Имя файла: uLogin для IPB 3.3.x

Владелец файла: Ritsuka

Файл размещен: 09 Май 2012

Файл обновлен: 09 Май 2012

Категория файла: Mods/Моды

 

Авторизация через социальные сайты посредством сервиса uLogin: http://ulogin.ru/

 

Установка:

- загрузить папку admin на сервер,

- АЦ > Модули авторизации > uLogin > включить,

- импортировать хук.

 

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

 

Не удаляйте хук после установки "просто так", т.к. это удалит таблицу привязок аккаунтов к социальным сервисам, и после переустановки пользователи будут создавать новые аккаунты, а не входить под старыми!

 

Нажмите сюда, чтобы скачать этот файл

Рекомендованные сообщения

Опубликовано:

Как выглядит ссылка на битое изображение?

Вот так:

http://адрес форума/uploads/av-6b73be0038c1043bedc378200404013a.jpg

 

При переходе на неё:

К сожалению, не удалось найти запрашиваемую вами страницу. Пожалуйста вернитесь на главную страницу форума.

Изменено пользователем Haktar

Опубликовано:

http://адрес форума/uploads/av-6b73be0038c1043bedc378200404013a.jpg

У Вас явно код отличается от того, что здесь.

Я скачал архив

Ссылка на фото

$this->settings['upload_dir']."/profile/" . md5($ident) . ".jpg";

Опубликовано:

У Вас явно код отличается от того, что здесь.

Это да. Я использую скрипт от самих разработчиков (малость его модифицировал под нужды своего форума), вот он:

 

<?php

/**
* IPBoard plugin uloginplugin
*
* @package	Auth
* @subpackage	uLlogin
* @author	uLogin
* @link	http://ulogin.ru
* @contacts team@ulogin.ru
* @license GPL3
*/

if ( ! defined( 'IN_IPB' ) )
{
	print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
	exit();
}

class login_uloginplugin extends login_core implements interface_login
{
	/**
	* Login method configuration
	*
	* @access protected	
	* @var array
	*/
	protected $method_config	= array();

	/**
	* Constructor
	*
	* @access public
	* @param ipsRegistry referece
	* @param Configuration info for this method
	* @param Custom configuration infofor this method
	* @return void
	*/
	public function __construct( ipsRegistry $registry, $method, $conf=array() )
	{

		$this->method_config	= $method;
		parent::__construct( $registry );
	}

	/**
	* Authenticate the request
	*
	* @access public
	* @param string Username
	* @param string Email Address
	* @param string Password
	* @return boolean Authentication successful 
	*/
	public function authenticate( $username, $email_address, $password )
	{
		if(!isset($_POST['token'])) {
			return 'WRONG_AUTH';
		}
		$s = file_get_contents('http://ulogin.ru/token.php?token=' . $_POST['token'] . '&host=' . $_SERVER['HTTP_HOST']);
		$user = json_decode($s, true);
		if(isset($user['error'])) return 'ERROR';
		$ident = $user['identity'];
		$photo = $user['photo'];
		if($photo!='') {
			$ride = "uploads/imperiall/".'av-'.md5($ident).".jpg";
			file_put_contents($ride, file_get_contents($photo));
		}

		$result = $this->DB->buildAndFetch( array(
													'select' => 'id_user,seed',
													'from' => 'ulogin',
													'where' => "ident ='".$user['identity']."'"
												) 
										);

		if($result) {
			$result1 = $this->DB->buildAndFetch( array(
													'select' => 'member_id',
													'from' => 'members',
													'where' => "member_id ='".$result['id_user']."'"
												) 
										);
			if(!$result1) {
				$this->DB->delete('ulogin','id_user='.$result['id_user']);
				$result=false;
			}
			$Passwd=md5($ident.$user['last_name'].$result['seed']);
		}

		if(!$result){


			$Login21=$user['first_name']."_".$user['last_name'];
			$proof = $this->DB->buildAndFetch( array(
															'select' => 'member_id',
															'from' => 'members',
															'where' => "name='" .$Login21. "'" 
														) 
												 );
			if($proof)
			{
				$Login21=$Login21.$proof['member_id'];
			}

			$seed=mt_rand();
			$Passwd=md5($ident.$user['last_name'].$seed);

			$Email=$user['email'];


			$salt= IPSMember::generatePasswordSalt( );
			$hash= md5($salt).md5($Passwd); 
			$this->DB->insert( 'members', array(
													'name'	=> $Login21,
													'member_group_id'			=> 3,
													'email'		=> $Email,
													'joined'	=> time(),
													'members_pass_salt'	=> $salt,
													'members_pass_hash'		=> md5($hash),
													'members_l_username'		=> $Login21,
													'members_display_name'		=> $Login21,
													'members_l_display_name'	=> $Login21,

												)
							 );


			$id_member = $this->DB->buildAndFetch( array(
															'select' => 'member_id',
															'from' => 'members',
															'where' => "name='" .$Login21. "'" 
														) 
												 );

			$this->DB->insert( 'ulogin', array(
													'ident'	=> $ident,
													'seed' => $seed,
													'id_user' => $id_member['member_id'],
											   )
							 );


			$result = $this->DB->buildAndFetch( array(
													'select' => 'id_user,seed',
													'from' => 'ulogin',
													'where' => "ident ='".$user['identity']."'" 
												) 
										);
			$Passwd=md5($ident.$user['last_name'].$result['seed']);
			$this->cache->rebuildCache('stats', 'global');
		}


		$result1 = $this->DB->buildAndFetch( array(
													'select' => '*',
													'from' => 'members',
													'where' => "member_id ='".$result['id_user']."'" 
												) 
										);
		$result2 = $this->DB->buildAndFetch( array(
													'select' => '*',
													'from' => 'profile_portal',
													'where' => "pp_member_id ='".$result['id_user']."'" 														
												) 
										);
		$result3 = $this->DB->buildAndFetch( array(
													'select' => '*',
													'from' => 'pfields_content',
													'where' => "member_id ='".$result['id_user']."'" 														
												) 
										);
		if(!$result2)
		{
			$this->DB->insert( 'profile_portal', array(
													'pp_member_id'	=> $result['id_user'],
													'avatar_type' => 'upload',
													'avatar_location' => ''.'av-'.md5($ident).'.jpg',
													'pp_setting_count_comments' => '1',
													'pp_setting_count_friends' => '1',
													'pp_setting_count_visitors' => '10',

											   )
							 );
		}
		if(!$result3)
		{
			$this->DB->insert( 'pfields_content', array(
													'member_id'	=> $result['id_user'],
													'eco_points' => '0',
													'eco_worth' => '0.00',
													'eco_welfare' => '0.00',
													'eco_on_welfare' => '0',

											   )
							 );
		}
		$username=$result1['name'];
		$email_address = $result1['email'];
		$password=$Passwd;

		return $this->authLocal( $username, $email_address, $password );
		$this->auth_errors = array();
		if ( $this->return_code == 'SUCCESS' )
 			{
			return true;
 			}
	}
}

 

Опубликовано:

                $ride = "uploads/imperiall/".'av-'.md5($ident).".jpg";

Вот путь до сохраненной картинки

А в БД Вы сохраняете

                                                        'avatar_location' => ''.'av-'.md5($ident).'.jpg',

Не совпадают пути

Опубликовано:

Вот путь до сохраненной картинки

А в БД Вы сохраняете

Изменить $ride = "uploads/imperiall/" на $ride = "" ?

Опубликовано:

Аватары хранятся в папке uploads

Менять нужно на

$ride = $this->settings['upload_dir'].'/'.'av-'.md5($ident).".jpg";

 

Плюс, если аватара нет, то

'avatar_location' => ''.'av-'.md5($ident).'.jpg',

будет не верной записью.

Нужно устанавливать какую-нибудь переменную $hasPhoto и проверять ее значение.

Скачайте файл и посмотрите, как сделано.

  • 6 лет спустя...
Опубликовано:
md5($ident)

А как поменять этот путь? Что бы адрес аватары был не набором цифр и букв, а набором из ида юзера? Пробовал менять в двух местах - не получается.

Опубликовано:

Тема очень старая, наврядли кто то еще ответит. 

Опубликовано:
25 минут назад, siv1987 сказал:

Тема очень старая, наврядли кто то еще ответит. 

Пячалька 😞

Опубликовано:
12 часов назад, Trotor сказал:

Пячалька 😞

Вы все еще на 3.x сидите? Сколько времени с тех пор прошло, такое ощущение что целая жизнь. 

Опубликовано:
29 минут назад, siv1987 сказал:

Вы все еще на 3.x сидите? Сколько времени с тех пор прошло, такое ощущение что целая жизнь. 

Да и вполне пока доволен. 

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.