Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скрыть ссылку от незарегистрированных пользователей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не могу придумать логику работы..
maksmib
Отправлено: 20 Мая, 2011 - 15:19:31
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Добрый день, господа.
Помогите пожалуйста придумать логику работы такой задачи.
Нужно сделать так, чтобы ссылки, находящиеся в статье, на скачивание файлов с сайта, для зарегистрированных пользователей вели себя обычно, а вот не зарегистрированных вели бы к регистрации.

В админке для формирования статьи используется tinyMCE. Первой мыслью было добавить свою кнопку аля hidden_content, но тут во время реализации возникли некоторые трудности.
Второй идеей было давать ссылке на скачивание определенную id и затем парсить полученную из базы статью, выискивать там эту ссылку и подменять атрибут href.

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

(Отредактировано автором: 20 Мая, 2011 - 15:20:25)

 
 Top
EuGen Администратор
Отправлено: 20 Мая, 2011 - 15:23:29
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А что мешает при открытии страницы определять, есть ли сессия (авторизация) и если отсутствует, то просто менять href у ссылки? По-моему, простой и логичный способ.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
maksmib
Отправлено: 20 Мая, 2011 - 15:27:07
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




EuGen пишет:
А что мешает при открытии страницы определять, есть ли сессия (авторизация) и если отсутствует, то просто менять href у ссылки? По-моему, простой и логичный способ.

Ну, определить авторизован пользователь или нет, это не проблема.
Я наверное сильно обленился, действительно подменить href наверное самый простой вариант Ниндзя
 
 Top
maksmib
Отправлено: 20 Мая, 2011 - 17:38:22
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Если кому пригодится, реализовать можно например так:

PHP:
скопировать код в буфер обмена
  1. if( пользователь не авторизован )
  2. {
  3.    $urls = '';
  4.    preg_match_all("~((http)\:\/\/[a-z0-9\.\/\-]*\b)~", $article['text'], $urls);
  5.    //проверяем все найденные ссылки, не являются ли они ссылками на файлы расположенные на сайте
  6.    for ($i=0; $i<count($urls[0]); $i++)
  7.    {   //если это ссылка на файл расположенный на сайте, меняем ее на /register
  8.        if(strstr($urls[0][$i], 'http://mysite.com/files/'))
  9.           $article['text'] = str_replace($urls[0][$i], 'http://mysite.com/register',$article['text']);
  10.    }
  11. }


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

Очень хотелось бы услышать замечания о корявасти данного способа.
 
 Top
EuGen Администратор
Отправлено: 20 Мая, 2011 - 17:46:36
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Да, не очень оптимален. Чем preg_replace плох ?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
maragon
Отправлено: 20 Мая, 2011 - 18:47:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Можно решить проблеммую с помощью тех же сессий,кук, как по мне самый простой варик.
Далее если нет сессии \ куки - делаем переброс на страницу регистрации, либо указываем ссылку типо:
CODE (html):
скопировать код в буфер обмена
  1. для доступа к данному меню советую Вам <a href="reg.php">пройти регистрацию</a>.


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
maksmib
Отправлено: 20 Мая, 2011 - 21:45:09
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




EuGen пишет:
Да, не очень оптимален. Чем preg_replace плох ?

Не то чтобы плох, очень я не силен в регулярных выражениях, не знаю, как сделать тоже самое используя preg_replace Огорчение , а разбираться с регэкспами пока только в планах, поэтому было вот такое решение, потому что для меня оно быстрее.
Буду признателен если увижу аналог этого решения с исп. preg_replace Ниндзя

maragon пишет:
Можно решить проблеммую с помощью тех же сессий,кук, как по мне самый простой варик.
Далее если нет сессии \ куки - делаем переброс на страницу регистрации, либо указываем ссылку типо:

Так и делается, с помощью сессий,кук.. (я просто не описывал это в приведенном примере кода, т.к. суть проблемы не в этом) если юзер не авторизован, вот тогда и колбасим текст в поисках урлов, которые надо "подменить". Изначальна проблема именно в том, чтобы найти необходимые ссылки и подменить их href Улыбка

(Отредактировано автором: 20 Мая, 2011 - 21:46:17)

 
 Top
molchun201
Отправлено: 20 Мая, 2011 - 22:06:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 295
Дата рег-ции: Февр. 2011  
Откуда: Менеск


Помог: 5 раз(а)




Как сказал EuGen нада тут делать регуляркай.

http://www.php.su/functions/?preg_replace

Ничего сложного нет Подмигивание

PS если никто не ответит и у меня появится время черкану
Улыбка


-----
Обрамляйте код тегами и читайте
 
 Top
maragon
Отправлено: 20 Мая, 2011 - 22:07:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




ну извеняйте, не так прочитал - не так понял поставленный вопрос Растерялся


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB