Как запретить пользователю редактировать свой профиль?

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Alex Baskakov
phpBB 1.4.3
Сообщения: 99
Стаж: 12 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Как запретить пользователю редактировать свой профиль?

Сообщение Alex Baskakov »

Как запретить пользователю редактировать свой профиль? Ибо пользователи всякие бывают.
На форуме имеется тема http://www.phpbbguru.net/community/topic20400.html от 2008 года, но к сожалению закрытая и уточнить там нет возможности.

Ответ Палыча такой

Код: Выделить всё

#-- OPEN --- 
profile.php 
#-- FIND -- 
	else if ( $mode == 'editprofile' || $mode == 'register' )
	{
#-- AFTER ADD -- 
if($userdata['user_id'] == ID_нужного_юзера) 
      { $template->assign_vars(array( 
      'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') 
      ); 
      message_die(GENERAL_MESSAGE, $lang['Not_Authorised']); 
      }
Только вопрос - куда этот код надо вставить?
Последний раз редактировалось Sheer 25.08.2014 19:17, всего редактировалось 1 раз.
Причина: Правила 2.2
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 14 лет 4 месяца
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: Профиль пользователя

Сообщение xisp »

Alex Baskakov писал(а):но к сожалению закрытая
Потому что код относится к версии движка 2.0, и не подходит для третьей ветки.
phpBBex
Alex Baskakov
phpBB 1.4.3
Сообщения: 99
Стаж: 12 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Re: Профиль пользователя

Сообщение Alex Baskakov »

xisp писал(а):Потому что код относится к версии движка 2.0, и не подходит для третьей ветки.
Вероятно код не совсем безнадёжен и после определенной редакции он вполне себе будет работоспособен на 3.0.12
Хотелось бы иметь такой рабочий код.
Anvar
Former team member
Сообщения: 1964
Стаж: 16 лет 5 месяцев
Благодарил (а): 67 раз
Поблагодарили: 800 раз

Re: Профиль пользователя

Сообщение Anvar »

Да легко, только пользователю надо его(профиль) сначала заполнить, а такой метод не даст этого после регистрации.
Alex Baskakov
phpBB 1.4.3
Сообщения: 99
Стаж: 12 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Re: Профиль пользователя

Сообщение Alex Baskakov »

Anvar писал(а):Да легко, только пользователю надо его(профиль) сначала заполнить, а такой метод не даст этого после регистрации.
Запретить редактировать надо заполненный год назад профиль, а не новый.
И, как понял, в коде вписывается айди юзера, которому устанавливается запрет, а не всем подряд на форуме.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Sheer »

Отрыть ./includes/ucp/ucp_profile.php
Найти

Код: Выделить всё

						$sql = 'UPDATE ' . USERS_TABLE . '
Добавить перед

Код: Выделить всё

						if ($user->data['user_id'] == тут ID пользователя)
						{
							trigger_error('NOT_AUTHORISED');
						}
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Alex Baskakov
phpBB 1.4.3
Сообщения: 99
Стаж: 12 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Alex Baskakov »

Sheer
Спасибо. Но слегка туплю. Не совсем, как оказалось, понимаю технологию вписывания айди.
Надо вписать 3 айди. Куда именно и как именно их вписать сюда

Код: Выделить всё

						if ($user->data['user_id'] == тут ID пользователя)
						{
							trigger_error('NOT_AUTHORISED');
						}
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Татьяна5 »

Код: Выделить всё

if (( $user->data['user_id'] == первый ID ) || ( $user->data['user_id'] == второй ID ) || ( $user->data['user_id'] == третий ID ))
А вообще в 3.1 добавили право доступа на редактирование профиля
Alex Baskakov
phpBB 1.4.3
Сообщения: 99
Стаж: 12 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Alex Baskakov »

Татьяна5 писал(а):

Код: Выделить всё

if (( $user->data['user_id'] == первый ID ) || ( $user->data['user_id'] == второй ID ) || ( $user->data['user_id'] == третий ID ))
То есть, если имеем три юзера
http://имя_форума/memberlist.php?mode=viewprofile&u=143
http://имя_форума/memberlist.php?mode=viewprofile&u=145
http://имя_форума/memberlist.php?mode=viewprofile&u=260

то надо сделать так:

1. Отрываем ./includes/ucp/ucp_profile.php
2. Редактируем файл чтобы часть кода с запретом получилась так

Код: Выделить всё

 						if (( $user->data['143'] == первый ID ) || ( $user->data['145'] == второй ID ) || ( $user->data['260'] == третий ID ))
 						{
 							trigger_error('NOT_AUTHORISED');
 						}
 						$sql = 'UPDATE ' . USERS_TABLE . '
Правильно?
Татьяна5 писал(а):А вообще в 3.1 добавили право доступа на редактирование профиля
Это хорошая новость. Значит начиная с 3.1 не нужно будет заморачиваться с запретами редактирования профиля вручную.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Татьяна5 »

Alex Baskakov писал(а):Правильно?
Нет

Код: Выделить всё

if (( $user->data['user_id'] == 143 ) || ( $user->data['user_id'] == 145 ) || ( $user->data['user_id'] == 260 ))
Русского текста в коде не бывает. Если он есть - это подсказка, что где заменять
Alex Baskakov
phpBB 1.4.3
Сообщения: 99
Стаж: 12 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Alex Baskakov »

Татьяна5 писал(а):Нет

Код: Выделить всё

if (( $user->data['user_id'] == 143 ) || ( $user->data['user_id'] == 145 ) || ( $user->data['user_id'] == 260 ))
Понятно. Правильно так

Код: Выделить всё

  						if (( $user->data['user_id'] == 143 ) || ( $user->data['user_id'] == 145 ) || ( $user->data['user_id'] == 260 ))
  						{
 							trigger_error('NOT_AUTHORISED');
 						}
 						$sql = 'UPDATE ' . USERS_TABLE . '
Татьяна5 писал(а):Русского текста в коде не бывает. Если он есть - это подсказка, что где заменять
Понял, спасибо.
Anvar
Former team member
Сообщения: 1964
Стаж: 16 лет 5 месяцев
Благодарил (а): 67 раз
Поблагодарили: 800 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Anvar »

Там целых 3 аналогичных вхождения если не учитывать табов.

Код: Выделить всё

						$sql = 'UPDATE ' . USERS_TABLE . '
5 копеек принимаются? :-D

1. Отрываем ./includes/ucp/ucp_profile.php

2. Найти

Код: Выделить всё

						if ($config['allow_birthdays'])
						{
							$sql_ary['user_birthday'] = $data['user_birthday'];
						}
3. Вставить после

Код: Выделить всё

						$user_no_id = '1, 2, 3, 4, 5, 6, 7, 8, 9'; // id пользователей через запятую.
						$user_no_id = explode(',', $user_no_id);
						$user_no_edit = array_search($user->data['user_id'], $user_no_id);
						if ( $user_no_edit || $user_no_edit === 0 )
						{
							trigger_error('NOT_AUTHORISED');
						}
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 14 лет 4 месяца
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: Как запретить пользователю редактировать свой профиль?

Сообщение xisp »

Anvar писал(а):

Код: Выделить всё

						$user_no_id = '1, 2, 3, 4, 5, 6, 7, 8, 9'; // id пользователей через запятую.
						$user_no_id = explode(',', $user_no_id);
А почему не сразу:

Код: Выделить всё

$user_no_id = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
?
phpBBex
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Sheer »

По-хорошему нужно добавить новое право и использовать его.
Как добавить --> Tutorial.Permissions
Тут можно скачать скрипт добавления нового права.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Alex Baskakov
phpBB 1.4.3
Сообщения: 99
Стаж: 12 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Re: Как запретить пользователю редактировать свой профиль?

Сообщение Alex Baskakov »

Sheer писал(а):По-хорошему нужно добавить новое право и использовать его
Или сделать то, на что намекнула Татьяна - дождаться phpbb 3.1
Вопрос только в одном - как долго ждать 3.1? После 3.0.12 или после 3.0.22?

В принципе, запрет редакции - мера временная (до 3.1) и не так много юзеров вписывают себе всякий вздор в подпись, как показывает практика. Пару юзеров обуздать и достаточно.
И решение

Код: Выделить всё

   						if (( $user->data['user_id'] == 143 ) || ( $user->data['user_id'] == 145 ) || ( $user->data['user_id'] == 260 ) || ( $user->data['user_id'] == четвертый ID ) || ( $user->data['user_id'] == пятый ID ))
   						{
  							trigger_error('NOT_AUTHORISED');
 						}
 						$sql = 'UPDATE ' . USERS_TABLE . '
хоть и предполагает три и больше аналогичных вхождения, но это же не очень серьёзная проблема? Ну три, ну пять, ну и что? Форум не зависнет, не глюкнет, даже не затормозит. Изменение в файле не повлияет на работу форума. Никто и не заметит и функционирование форума не изменится.

Поэтому, думается, что данное решение вполне приемлемо до появления 3.1 и особо изобретать велосипед не имеет смысла.

Вернуться в «Поддержка phpBB 3.0.х»