Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
udagon

Внешняя авторизация для ipb 3.4.7

Recommended Posts

Добрый день. Ищу специалиста по внешней авторизации для ipb 3.4.7. Нужно переписать скрипт авторизации на сайте под новую версию форума. Предложения в ЛС.

Share this post


Link to post
Share on other sites

Движок сайта?

На сайте у вас стоит ссылка на вход форума.

Share this post


Link to post
Share on other sites

Движок сайта?

На сайте у вас стоит ссылка на вход форума.

 

Самописный. Да.

Share this post


Link to post
Share on other sites

Так какая авторизация у вас используется на сайте если ссылка ведет на авторизацию форума? Вы хотите использовать авторизацию на форуме через внешний модуль авторизации с сайта?

Share this post


Link to post
Share on other sites

Так какая авторизация у вас используется на сайте если ссылка ведет на авторизацию форума? Вы хотите использовать авторизацию на форуме через внешний модуль авторизации с сайта?

 

Да. Чтобы можно было авторизироваться как на сайте так и на форуме. Аналогично выходить.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

Что-то мы плохо друг друга понимаем )

 

Нет. Мне не нужна двухсторонняя авторизация. Мне нужно чтобы можно было авторизироваться на сайте без потребности заходить на форум. База юзеров одна - на форуме.

 

Почему мне это нужно? На сайте как таковой базы юзеров нет, но есть возможность оставлять комменты под новостями и статьями. Так вот, для того чтобы оставить такой коммент и нужна авторизация.

Share this post


Link to post
Share on other sites

Что-то мы плохо друг друга понимаем

Внешняя авторизация для ipb

Мне нужно чтобы можно было авторизироваться на сайте без потребности заходить на форум. База юзеров одна - на форуме.

А причем тогда внешняя авторизация ипб?

В этом и проблема, что вы уже решили, что вам нужна внешняя авторизация для ipb, при этом не понимаете что это такое и как она работает. Да еще оказывается что не для форума, а для сайта.

На сколько я понял, вам не внешняя авторизация нужна, а интеграция форума вместе с сайтом, откуда пользователь сможет авторизироватся на форуме непосредственно с сайта и писать комментарии от пользователя форума. Для этого используется апи форума которое подключается к сайту.

Вам следует описать подробнее техническое задание, потому что с названием темы вы немного не угадали.

Share this post


Link to post
Share on other sites

@siv1987,

Нужно переписать скрипт авторизации на сайте под новую версию форума.
Думаю, для начала достаточно взглянуть на код :)

Share this post


Link to post
Share on other sites

Вот как это была раньше. Интеграция с форумом 2.3.6

 

Вывод формы на сайте:

 

<!-- Authorization -->
<script type="text/javascript">
function focus_username( e )
{
if ( e.value == "Имя пользователя" )
{
	e.value = '';
	return false;
}
}
function focus_password( e )
{
if ( e.value == "------" )
{
	e.value = '';
	return false;
}
}
</script>
<a name="login"></a>
<?php if( $is_login == FALSE ) { ?>
<form action="http://gta.com.ua/forum2/index.php" method="post">
<input type="hidden" name="act" value="Login" />
<input type="hidden" name="CODE" value="01" />
<input type="hidden" name="referer" value="<?=$my_url?>" />
<input type="hidden" name="CookieDate" value="1" />


		<div style="padding-bottom:5px;"><input type="text" name="UserName" value="Имя пользователя" onFocus="focus_username( this );" /></div>
		<div style="padding-bottom:5px;"><input type="password" name="PassWord" value="------"  onFocus="focus_password( this );" /></div>
		<div><input type='submit' value='Вход' class='button'></div>
	<div style="padding-top:6px;"><a target="_blank" class="login" href="http://gta.com.ua/forum2/index.php?act=Reg&CODE=10">Забыл пароль?</a></div>
	<div style="padding-top:3px;"><a target="_blank" class="login" href="http://gta.com.ua/forum2/index.php?act=reg"><b>Регистрация</b></a></div>


</form>
<?php } else { ?>
<a  class="login" href="/forum2/index.php?showuser=<?=$user_id?>"><b><?=$login?></a></b><br>
<?php if( $avatar_url != '' ) { ?>
<div style="text-align:center;"><a href="/forum2/index.php?showuser=<?=$user_id?>"><img src="<?=$avatar_url?>" border=0 /></a></div>
<?php } ?>

Постов: <b><?=$member_data['posts']?></b><br />
Поинтов: <b><?=$member_data['points']?></b> (<a href="http://gta.com.ua/forum2/index.php?showtopic=3621" title="Для чего нужны поинты">?</a>)<br />
<?php if( $member_data['bday_month'] > 0 && $member_data['bday_day'] > 0 && $member_data['bday_year'] > 0 ) {?>
<?php } ?>
Спасибо сказали: <b><?=$member_data['thanks_point']?></b> раз(а)

<a class="readmore" href="/forum2/index.php?act=Login&CODE=03&k=<?=$ipb_md5_check?>&return=<?=$my_url?>">Выйти</a>

<?php } ?>

 

 

А это инклюдиться на всех страницах:

 

// Проверка авторизации на форуме
$is_login = FALSE;
$self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : @getenv('PHP_SELF');
$self = rtrim( dirname($self), '/\\' );
$my_url  = str_replace( $self, '',  $_SERVER['REQUEST_URI'] );
$my_url  = substr( $my_url, 1 );
$my_url  = 'http://gta.com.ua/' . htmlspecialchars( $my_url );
$forum_link = mysql_connect( 'localhost', 'user', '******' );
mysql_select_db( 'gtacom_forum2', $forum_link );
if( isset( $_COOKIE['forum2member_id'] ) && isset( $_COOKIE['forum2pass_hash'] ) && isset( $_COOKIE['forum2session_id'] ) ) {
$id         = intval( $_COOKIE['forum2member_id'] );
$session_id = preg_replace( "/([^a-zA-Z0-9])/", "", $_COOKIE['forum2session_id'] );
$hash       = preg_replace( "/([^a-zA-Z0-9])/", "", $_COOKIE['forum2pass_hash'] );
if( $session_id && $hash && $id > 0 ) {
	$r = mysql_query( "SELECT member_login_key, email, ibf_members.*, ibf_member_extra.* FROM ibf_members_converge, ibf_members, ibf_member_extra WHERE converge_id = '{$id}' AND member_login_key = '{$hash}' AND converge_id = ibf_members.id AND converge_id = ibf_member_extra.id LIMIT 1", $forum_link );
	if( mysql_num_rows( $r ) == 1 ) {
		$member_data = mysql_fetch_array( $r );

		$ses_r = mysql_query( "SELECT member_id FROM ibf_sessions WHERE id = '{$session_id}' AND ip_address = '{$_SERVER['REMOTE_ADDR']}'", $forum_link );
		if( mysql_num_rows( $ses_r ) == 1 || mysql_num_rows( $ses_r ) == 0 ) {
			$ses = @mysql_fetch_array( $ses_r );
			if( $ses['member_id'] == $id || mysql_num_rows( $ses_r ) == 0 ) {
				$is_login       = TRUE;
				$user_id        = $id;
				$login          = $member_data['members_display_name'];
				$avatar_url     = $member_data['avatar_location'];
				$member_data['age'] = date( "Y" ) - $member_data['bday_year'] - $member_data['bday_month'] / 12 - $member_data['bday_day'] / 360;
				$member_data['age'] = is_int( $member_data ) ? $member_data['age'] : intval( $member_data['age'] ) + 1;
				$ipb_md5_check  = md5( $member_data['email'].'&'.$member_data['member_login_key'].'&'.$member_data['joined'] );
				if( substr( $avatar_url, 0, strlen( 'http://' ) ) != 'http://' ) {
					$avatar_url = '/forum2/uploads/' . $avatar_url;
				}
			}
		}
	}
}
}

Edited by udagon

Share this post


Link to post
Share on other sites

То, что у вас это интеграция сайта с форумом. В тройке весь выше описанный код реализуется при помощью апи форума, хотя и в двойке тоже можно было использовать апи чтобы не городить такие костыли (код на самом деле ужасный - захардкоденные данные подключения к бд, жестко заданный префикс таблиц в запросах). Минус в том, что при подключения апи инициализируется ядро форума со всеми данными, это дает возможность к более плотной интеграции, но также требует дополнительных ресурсов.

Share this post


Link to post
Share on other sites

Сможете помочь за адекватную оплату?

Edited by udagon

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...