Перейти к контенту
  • 0

Показ профилей пользователей


DANMASTER

Вопрос

Привет, возможно ли так, чтобы открывать профиль пользователя не так:

http://sitename.ru/forum/index.php?showuser=1,

а вот например так:

http://sitename.ru/forum/index.php?showuser=admin

 

Заранее благодарен.

Ссылка на комментарий
Поделиться на других сайтах

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

  • 0
Super Gonzo, тебе плохо? :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Мне? Мне пох.:-) Ты же вопрос задаешь. Так позаботься, чтобы все по твоим ссылкам зайти могли.

Выдает страничку Триумвират Девелопмент, на которой написано, что запрашиваемый файл отсутствует на сервере и приведены возможные причины ошибки.[1123680789:1123680870]а блин, понял:-)))

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Super Gonzo Ага. :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

DANMASTER

ты хочешь чтобы работали оба способа?

если да, то как быть с юзерами, у которых ники типа "1234" ? :D

 

сделать подобный поиск в принципе не очень сложно.

главное правильно закрыть дыры к SQL-иньекциям.

примерно так, как это сделанно в поиске.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А что через цифровой ник можно повредить форуму?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

DANMASTER

ты бы на вопрос лучше ответил.

еще раз спрошу

ты хочешь чтобы работали оба способа?

то есть, чтобы профиль открвыался

И по http://sitename.ru/forum/index.php?showuser=1 ,

И по http://sitename.ru/forum/index.php?showuser=admin

 

если да, то как быть в случае с ником вида "123" - выдавать по ИД, или по Нику?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Я всё-таки думаю стоит сделать 2 варианта, т.к. если у участника ник на русском языке, то могут быть проблемы.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

DANMASTER

вот как раз с русскими никами никаких проблем.

 

решение простое - смотри как сделан стандартный показ профиля (в index.php и Profile.php) и полностью аналогично делай новый метод.

надо изменить только запрос к БД + закрыть дыры от SQL-иньекций.

как делать - смотри как оно закрыто в реализации поиска по нику - filter_keywords в search_mysql_*.php

Ссылка на комментарий
Поделиться на других сайтах

  • 0
надо изменить только запрос к БД + закрыть дыры от SQL-иньекций.

как делать - смотри как оно закрыто в реализации поиска по нику - filter_keywords в search_mysql_*.php

 

Как раз-то, с php и mysql у меня проблемы...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

>> вот как раз с русскими никами никаких проблем.

 

зависит от настройки MySQL

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Так, что? Никто не напишет мод?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Файл Profile.php

 

1. Найти

 

   	 switch($ibforums->input['CODE']) {
     case '03':
    	 $this->view_profile();
    	 break;

 

заменить на

   	 switch($ibforums->input['CODE']) {
     case '02':
    	 $this->view_profile_by_name();
    	 break;

     case '03':
    	 $this->view_profile();
    	 break;

 

2. Найти

  function view_profile() {
global $ibforums, $DB, $std, $print;
	 
$info = array();
	 
if ( $ibforums->member['g_mem_info'] != 1 )
{
 $std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_permission' ) );
}

 

Добавить перед:

 

// Song * view profile by name, 29.08.05

function view_profile_by_name() {
global $ibforums, $DB, $std, $print;

if ( !$ibforums->input['not_id'] or !$ibforums->input['MID'] or strlen($ibforums->input['MID']) > 30 )
{
 $std->Error( array( 'LEVEL' => 1, 'MSG' => 'incorrect_use' ) );
}

$name = $ibforums->input['MID'];

$DB->query("SELECT id FROM ibf_members WHERE name='".addslashes($name)."' LIMIT 1");

if ( $DB->get_num_rows() and $user = $DB->fetch_row() )
{
 $print->redirect_screen( $ibforums->lang['st_redirect'], "showuser=".$user['id']);
} else
{
 $std->Error( array( 'LEVEL' => 1, 'MSG' => 'incorrect_use' ) );
}

}

// Song * view profile by name, 29.08.05

 

3. Чуть ниже найти:

 

	//--------------------------------------------
	 // Check input..
  	 //--------------------------------------------
  	 
  	 $id = intval($ibforums->input['MID']);
  	 
  	 if ( empty($id) ) $std->Error( array( 'LEVEL' => 1, 'MSG' => 'incorrect_use' ) );

 

Заменить на:

	//--------------------------------------------
	 // Check input..
  	 //--------------------------------------------

// Song * view profile by name, 29.08.05
  	 
if ( $ibforums->input['not_id'] )
{
 $print->redirect_screen( $ibforums->lang['st_redirect'], "act=Profile&CODE=02&MID={$ibforums->input['MID']}&not_id=1");

 exit();
}

// Song * view profile by name, 29.08.05

  	 $id = intval($ibforums->input['MID']);
  	 
  	 if ( empty($id) ) $std->Error( array( 'LEVEL' => 1, 'MSG' => 'incorrect_use' ) );

 

4. Убедиться, что есть индекс в таблице ibf_users по полю "name".

Для этого выполнить запрос

SHOW INDEX FROM ibf_members

Если в информации, выданной по этому запросу, нет колонки "name", то добавить индекс нижеследующим запросом:

ALTER TABLE ibf_members ADD INDEX (name)

 

5. Использование мода:

 

http://....showuser=1 - поиск профиля по ID

http://...showuser=Song&not_id=1 - поиск профиля по нику "Song"

Ссылка на комментарий
Поделиться на других сайтах

  • 0

А ещё лучше сделать так: (Внимание, это необязательно!)

 

Условие

if ( !$ibforums->input['not_id'] or !$ibforums->input['MID'] or strlen($ibforums->input['MID']) > 30 )
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'incorrect_use' ) );
}

 

в функции view_profile_by_name заменить на:

 

	if ( !$ibforums->input['not_id'] or !$ibforums->input['MID'] or strlen($ibforums->input['MID']) > $ibforums->vars['max_nick_length'] )
{
 $std->Error( array( 'LEVEL' => 1, 'MSG' => 'incorrect_use' ) );
}

В файле Register.php

найти

 

	if ( strlen($len_u) < 3 )
{
 $this->show_reg_form('err_no_username');
 return;
}
if ( strlen($len_u) > 30 ) 
{
 $this->show_reg_form('err_no_username');
 return;
}

 

и заменить на

	if ( strlen($len_u) < $ibforums->vars['min_nick_length'] )
{
 $this->show_reg_form('err_no_username');
 return;
}
if ( strlen($len_u) > $ibforums->vars['max_nick_length'] ) 
{
 $this->show_reg_form('err_no_username');
 return;
}

 

В файле conf_global.php добавить 2 константы и вписать туда собственно значения из Register.php:

 

$INFO['min_nick_length']  =	'3';
$INFO['max_nick_length']  =	'30';

 

И регулировать минимальную и максимальную длину ника через conf_global.php.

Для желающих сделать полноценный мод you are welcome изменять эти значения из админки :D

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Обнаружена ошибка:

Неправильное использование одного из файлов Форума[1125309077:1125309413]Так же я не понимаю для чего сделан редирект и зачем нужно &not_id=1.

Простите за нудность я просто новичок и в этом деле не ахти.

 

Вот насколько я понял, not_id это переменная, через которую определяется, что нужно открыть через имя или через id,

но а можно какнить покрасивее придумать?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

А с русскими никами это нормально работает?

Было бы неплохо, изначально сделать на форуме латинский логин для при регистрации, который будет юзаться например так

http://sitename.ru/forum/index.php?showuser=admin

и имя для отображения в форумах. Где уже можно будет пользоваться кирилицей.

 

На forums.ag.ru так..

Ссылка на комментарий
Поделиться на других сайтах

  • 0

&not_id показывает, что мы передаём в showuser= число или имя.

Покрасивей можно конечно, но тогда придётся запрещать в нике цифры например.[1125312138:1125312185]>> А с русскими никами это нормально работает?

 

Всё зависит от настройки мускула.

PHP не причём.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А вот желательно бы, и к томуже неизвестно почему он не открывает через имя.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Ну чтобы было красивее, а ведь кстати как сделано у Винограда?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

>> Ну чтобы было красивее

так я ж сказал, какую жертву нужно для этого.

 

>> а ведь кстати как сделано у Винограда?

У них сделано через mod rewrite

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Это раньше было когда открывали через vingrad.ru/@Song, а щас тоже showuser=Song&id=777 или что-то такое я не помню.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Это если делать как у них?
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.