Перейти к содержимому


Ребят помогите решить проблемку


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 xeon

xeon

    Активный участник

  • Пользователи
  • PipPipPip
  • 496 сообщений
  • Пол:Мужчина
  • Город:MSK
  • Интересы:PHP, MySQL, CSS, XML, HTML, JavaScript
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 11:17

проблема заключается в том, что я написал модуль профиля ссылка имеет вид /index.php?ind=profile&id=1  , так вот когда пишу несуществующий ид например /index.php?ind=profile&id=0 то он меня перекидывает туда и естественно там нечего нет, подскажите как решить данную проблему чтоб при переходи на несуществующий профиль пользователя кидало на личный профиль (но чтоб осталось возможность смотреть другие профили) (исключить несуществующие) помогите всю голову сломал

#2 DNP

DNP

    Активный участник

  • Администраторы
  • PipPipPip
  • 2561 сообщений
  • Пол:Мужчина
  • Город:RUS
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 13:25

в самом начале функции вывода страницы делаете проверку
if ($mkportals->input['id'] != $mkportals->member['id']){
header("HTTP/1.0 301 Moved Permanently");
header("Location: /index.php?ind=profile&id={$mkportals->member['id']}");
die("Redirect");
}


#3 xeon

xeon

    Активный участник

  • Пользователи
  • PipPipPip
  • 496 сообщений
  • Пол:Мужчина
  • Город:MSK
  • Интересы:PHP, MySQL, CSS, XML, HTML, JavaScript
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 17:38

Просмотр сообщенияDNP (02 June 2013 - 13:25) писал:

в самом начале функции вывода страницы делаете проверку
if ($mkportals->input['id'] != $mkportals->member['id']){
header("HTTP/1.0 301 Moved Permanently");
header("Location: /index.php?ind=profile&id={$mkportals->member['id']}");
die("Redirect");
}

этот вариант почти подходит но есть один - я не могу перейти, например мой профиль ид 1 а мне надо посмотреть профиль ид 2 перехожу происходит редект обратно на мою страницу

вот кусок моего модуля (как мне это подлечить?)
function show() {
global $mkportals, $DB, $std, $print, $mklib, $Skin, $mklib_board;
if ($mkportals->input['id'] != $mkportals->member['id']){
header("HTTP/1.0 301 Moved Permanently");
header("Location: /index.php?ind=profile&id={$mkportals->member['id']}");
die("Redirect");
}
// для получение собственных данных
$member_id=$mkportals->member['id'];
$name_stena = $mkportals->member['name'];
$group_id=$mkportals->member['mgroup'];
//запрос ID пользователя для выборки информации из бд
$id = $mkportals->input['id'];
//$avatar = IPSMember::buildAvatar( $id );  бесполезная вещь
$query = $DB->query( "SELECT * FROM IPB_members WHERE member_id='".$id."'");
while($row = $DB->fetch_row($query)){
$name =$row['name'];
$names =$row['mk_name'];
$title =$row['title'];
$groups =$row['member_group_id'];
}
$query = $DB->query( "SELECT * FROM IPB_groups WHERE g_id='".$groups."'");
while($row = $DB->fetch_row($query)){
$g_title =$row['g_title'];
}


#4 DNP

DNP

    Активный участник

  • Администраторы
  • PipPipPip
  • 2561 сообщений
  • Пол:Мужчина
  • Город:RUS
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 19:18

бррр не совсем понял у вас по идее должно быть две страницы 1 просмотр профиля тут можно не ограничивать для просмотра не кому и 2 редактирование профиля для которой доступ только по id пользователю так?
Или вы что бы админ мог обходить редикт? тогда код будет таким к примеру
if (!$mkportals->member['g_access_cp']){
if ($mkportals->input['id'] != $mkportals->member['id']){
header("HTTP/1.0 301 Moved Permanently");
header("Location: /index.php?ind=profile&id={$mkportals->member['id']}");
die("Redirect");
}
}
Далее не понятно зачем вы в коде дергаете ещё раз данные из IPB_members они уже есть в переменных
$mkportals->member['*****'] где ***** поле таблицы из IPB_members

#5 xeon

xeon

    Активный участник

  • Пользователи
  • PipPipPip
  • 496 сообщений
  • Пол:Мужчина
  • Город:MSK
  • Интересы:PHP, MySQL, CSS, XML, HTML, JavaScript
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 19:25

за совет про $mkportals->member['*****'] где ***** поле таблицы из IPB_members спасибо

не это я понял мне надо разрешить просмотр ид которые есть в таблице бд форума member_id если нет ида то делать редект на собственную страницу профиля например ида 0 нет то происходит редект (в данный момент я могу у себя попасть по иду 0 и там пустота по контенту)

Сообщение отредактировал xeon: 02 June 2013 - 19:30


#6 DNP

DNP

    Активный участник

  • Администраторы
  • PipPipPip
  • 2561 сообщений
  • Пол:Мужчина
  • Город:RUS
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 19:45

дак там только 0 и не будет как гостей, остальные зарегистрированные имеют свой id и код что привел в пример и переадресовывает их на свою страницу, в обще в таблице id ноль не может быть запись начинается с 1
а в обще я не совсем понимаю цель которую вы хотите реализовать сейчас

#7 xeon

xeon

    Активный участник

  • Пользователи
  • PipPipPip
  • 496 сообщений
  • Пол:Мужчина
  • Город:MSK
  • Интересы:PHP, MySQL, CSS, XML, HTML, JavaScript
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 19:51

Просмотр сообщенияDNP (02 June 2013 - 19:45) писал:

дак там только 0 и не будет как гостей, остальные зарегистрированные имеют свой id и код что привел в пример и переадресовывает их на свою страницу, в обще в таблице id ноль не может быть запись начинается с 1
а в обще я не совсем понимаю цель которую вы хотите реализовать сейчас

я хочу ограничить несуществующих пользователей чтоб не бросалось в глаза например ид 32 человек не зарегался либо был удален но информация на сайте осталось то биш ссылка тоже вот и хочу чтоб был редект если пользователя не существует вот что творится если указан ид несуществующего человека

Прикрепленный файл  55.png   267.39К   30 Количество загрузок:

#8 DNP

DNP

    Активный участник

  • Администраторы
  • PipPipPip
  • 2561 сообщений
  • Пол:Мужчина
  • Город:RUS
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 20:08

Это вам нужно делать после запроса данных из таблицы профиля если у вас профиль строится на данных из таблицы форума IPB_members то будет выглядеть примерно так
$query = $DB->query( "SELECT * FROM IPB_members WHERE member_id='".$id."'");

if(!$query) {
$message = "Извините таких данных не существует";
$mklib->error_page($message);
exit;
}
while($row = $DB->fetch_row($query)){
$name =$row['name'];
$names =$row['mk_name'];
$title =$row['title'];
$groups =$row['member_group_id'];
}
если профиль на собственно таблице то примерно так же, и лучше использовать сообщение об ошибке чем редикт

#9 xeon

xeon

    Активный участник

  • Пользователи
  • PipPipPip
  • 496 сообщений
  • Пол:Мужчина
  • Город:MSK
  • Интересы:PHP, MySQL, CSS, XML, HTML, JavaScript
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 20:20

не пропускает всё равно даже вспомогательные таблице бд вставлял

if(!$query) {
$message = "Извините таких данных не существует";
$mklib->error_page($message);
exit;
}


#10 xeon

xeon

    Активный участник

  • Пользователи
  • PipPipPip
  • 496 сообщений
  • Пол:Мужчина
  • Город:MSK
  • Интересы:PHP, MySQL, CSS, XML, HTML, JavaScript
  • Форум:IPB 3.2, IPB 3.1
  • Версия MKP:R1.0.2, R1.0.1

Отправлено 02 June 2013 - 20:36

всё спасибо вопрос закрыт решение найдено :)

//запрос ID пользователя для выборки информации из бд
$id = $mkportals->input['id'];
//$avatar = IPSMember::buildAvatar( $id ); бесполезная вещь
$query = $DB->query( "SELECT * FROM IPB_members WHERE member_id='".$id."'");
while($row = $DB->fetch_row($query)){
$idosi =$row['member_id'];
$name =$row['name'];
$names =$row['mk_name'];
$title =$row['title'];
$groups =$row['member_group_id'];
}
if(!$idosi) {
$message = "Извините таких данных не существует";
$mklib->error_page($message);
exit;
}
$query = $DB->query( "SELECT * FROM IPB_groups WHERE g_id='".$groups."'");
while($row = $DB->fetch_row($query)){
$g_title =$row['g_title'];
}

Сообщение отредактировал xeon: 02 June 2013 - 20:37





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных