Columb
16.04.2011 - 05:31
Доброго времени суток всем!
Есть вопрос. Сделал для сайта личный кабинет. Все норм. Но этого мало. Хочу добавить такую "фишку".
Объясню на примере. Пришел. Зарегался. Заполнил профиль. И стал лазить по сайту. У тут, я например, хочу добавить себе в закладки, (не те что в браузере), а что в личном кабинете какую нить статью, которую просматриваю. Т.е. понятно я делаю под статьей ссылку "добавить в закладки" и тому подобные вещи. сайти и личный кабинет написал на
php. А теперь сам вопрос. Как сделать так что бы подобные ссылки, типа "добавить" и тому подобные были доступные только для тех, кто зареган и вошел на сайт. я узаю сессию. Вижу, как вариант там, где надо добавлять ссылки и тому подобные вещи делать проверку, типа
if (isset($_SESSION['user_data']))
echo '<a href="бла-бла-бла">Добавить в мои закладки</a>'
else
echo ' ';
но насколько правильный это будет подход? Других вариантов я не вижу.
Может, действительно есть более правильное решение? Заранее благодарен!
inpost
16.04.2011 - 07:12
ColumbВот как показал - так и делается ссылка на добавление.
Только кроме этого на стороне скрипта снова же не забудь ещё раз проверить, что существует сессия.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
neadekvat
16.04.2011 - 10:01
Columb1. Советую завести константу булевого типа, которая будет хранить ответ на вопрос: "Пользователь авторизован?".
Если на сайте одна точка входа - то вообще халява: в начале скрипта проверяешь, была ли уже пройдена авторизация и присваиваешь TRUE этой константе, в противном случаи - FALSE.
Зачем? Так банально проще писать:
if (GOOD_AUTH)
...
Чем все эти иссеты и т.д., особенно, когда таких блоков на сайте дофига.
2. Если при неисполнении условия делать по сути ничего не надо, то и ветку эту можно не писать.
Т.е. твой код у меня бы выглядел примерно так:
if (GOOD_AUTH)
echo '<a href="бла-бла-бла">Добавить в мои закладки</a>';
Правда, допускаю, что тот пробел, что ты ставишь вместо этой ссылки, нужен в верстке. Но суть показал.
3. Сам принцип - да, верный. Можно, конечно, ввести функцию или вообще создать класс.. но нахера?
Columb
16.04.2011 - 14:15
Цитата |
3. Сам принцип - да, верный. Можно, конечно, ввести функцию или вообще создать класс.. но нахера? |
В принципе, создать, как по мне несколько подобных функций и в нужном месте, используя их выводить то что мне нужно, а зачем? для того что бы в каждом месте не писать условие и вывод. заранее их определив.
neadekvat
16.04.2011 - 14:56
Columb, и как же будет выглядеть использование этих функций?
Игорь_Vasinsky
16.04.2011 - 15:00
Христоша, ну вот же тебе написали оптимальный вариант:
Цитата |
Columb 1. Советую завести константу булевого типа, которая будет хранить ответ на вопрос: "Пользователь авторизован?". Если на сайте одна точка входа - то вообще халява: в начале скрипта проверяешь, была ли уже пройдена авторизация и присваиваешь TRUE этой константе, в противном случаи - FALSE. Зачем? Так банально проще писать:
if (GOOD_AUTH) ...
Чем все эти иссеты и т.д., особенно, когда таких блоков на сайте дофига.
2. Если при неисполнении условия делать по сути ничего не надо, то и ветку эту можно не писать. Т.е. твой код у меня бы выглядел примерно так:
if (GOOD_AUTH) echo '<a href="бла-бла-бла">Добавить в мои закладки</a>';
Правда, допускаю, что тот пробел, что ты ставишь вместо этой ссылки, нужен в верстке. Но суть показал.
3. Сам принцип - да, верный. Можно, конечно, ввести функцию или вообще создать класс.. но нахера? |
ссылку формируй с GET, передавай id юзера, считывай url и пиши всё в БД
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Columb
16.04.2011 - 17:31
Игорь, а чем такой вариант не оптимальные. Если скажем мне в разных местах нужно добавлять не только ссылки но и еще, скажем другие функции.
например:
function addLink($userID)
{
if (GOOD_AUTH)
$link = '<a href="#">Добавить в закладки</a>';
else
$link = 'Войдите или зарегистрируйтесь';
return $link;
}
function setCurent($userID)
{
if (GOOD_AUTH)
$link = '<a href="#">Добавить в закладки2</a>';
else
$link = 'Войдите или зарегистрируйтесь';
return $link;
}
а в нужном месте я просто пропишу echo setCurent; или echo addLink; и это значительно упростит сам шаблон и его составные части. плюс, если что то потом изменить нужно будет, проще в одном месте функцию подправить и и не лазить и не искать "тихие заводи" :) По моему с точки зрения возможности изменения когда "в лучшую" сторону в будущем использование таких функций намного может упростить жизнь. )
neadekvat
16.04.2011 - 17:41
И сколько у вас может быть ситуаций, когда надо будет проверить, автризован ли пользователь?
Не делайте того, что вы показали в последнем посте - это глупости.
Columb
16.04.2011 - 18:24
а как тогда?
в функции я проверяю наличие константы. если она есть тогда вывожу, а на нет и суда нет.
neadekvat
16.04.2011 - 18:29
Цитата (Columb @ 16.04.2011 - 18:24) |
а как тогда? |
Я показал.
Вы не проверяете наличие константы, вы проверяете ее значение.
Columb
16.04.2011 - 18:35
Хорошо, а в чем тогда отличие? Если я, то что Вы показали, упакую в функцию и буду вызывать ее? Как это негативно будет влиять?
Прошу прощение, не так выразился действительно проверяю ее значение.
neadekvat
16.04.2011 - 18:51
Цитата (Columb @ 16.04.2011 - 18:35) |
Как это негативно будет влиять? |
Я ж говорю - если таких "проверок" надо будет сто - то и функций сто заделаете?
Функции нужны для того, чтобы не приходилось постоянно писать одинаковый код.
А то, что вы запихали в функцию, происходит только в одном месте сайта. Не нужна тут функция. Не нужна.
Игорь_Vasinsky
16.04.2011 - 19:22
neadekvatЯ ж говорю - если таких "проверок" надо будет сто - то и функций сто заделаете?
Вот здесь я согласен.
Я частенько встречаюсь с вопросом вывода чего либо - и чтоб по разному при разных условиях.
Так вот: гораздо проще дописать условие а месте вывода, чем каждый раз писать функцию и потом вносить изменения (вызов функции) на месте вывода, не правда ли?
Я вот что хочу спросить: давно занимаешься
php ? , это я к чему - помню ак только с функциями разобрался - начал их тыкать в своём оде -везде. Сейчас такаяже беда у меня с классами...
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
16.04.2011 - 19:25
а по сути - дело твоё. Просто ты спрашивал мнение. Им поделились.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Columb
16.04.2011 - 22:34
Цитата |
А то, что вы запихали в функцию, происходит только в одном месте сайта. Не нужна тут функция. Не нужна. |
Так, правильно! а если мне подобное надо выводить в одном месте на на всех нужных мне страницах. Тогда тут может стоит применить функцию? По этому я и про функцию "развил" тему. Т.е. при просмотре страницы у меня данная ссылка будет выводиться в одном месте. Но на многих страницах. И в каждом модуле писать просто код думаю не целесообразно. Проще в функцию и вызывать ее на нужных страницах. А если на одной и той же страницы нужно "продублировать" ссылку, то в начале значение функции можно присвоить какой нить переменной и играться с ней.
P.S.
Цитата |
а по сути - дело твоё. Просто ты спрашивал мнение. Им поделились. |
И за это я Вам очень признателен. Вы не подумайте, я не пытаюсь доказать ничего, я просто пытаюсь понять что лучше! И по этому мне важно Ваше мнение.
Цитата |
Я вот что хочу спросить: давно занимаешься php ? |
серьезно 2 месяца. До этого где-то в октябре "промоткой" поглядел курсы Попова. Понял, что полный боян... и закинул. Потом чисто случайно попал на
http://irbis-team.com и вот "подсел" сильно
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.