LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 11:05:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Отображение: "привет, пользователь"  (Прочитано 433 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
wmag
Осваиваюсь на форуме
***

Репутация: +6/-5
Offline Offline

Пол: Мужской
Сообщений: 183


Тут знаю, тут не знаю, пользуюсь напильником


« : 20.08.2011, 17:08:01 »


разница лишь в строке: echo "Привет"; (4-ая снизу)
код проверки: авторизован или нет и соответствующая манипуляция дизайном

вот это приводит к ошибке

Код:
<?php
$user = & JFactory::getUser();
if ($user->get('guest') == '1') { ?>

<p align="right" style="color:#CC3300">
<a title="Войти" style="color:#CC3300" href="/log-in.html"><enter_up> Войти</enter_up> </a>

<a style="color:#CC3300" href="/create-an-account.html"> <enter_up>Регистрация</enter_up> </a>
</p>
<?php } else { ?>
<p align="right" style="color:#CC3300">
<?php
echo "Привет, $user";
?>
</p>
<?php } ?>

А вот это нормально работает:

Код:
<?php
$user = & JFactory::getUser();
if ($user->get('guest') == '1') { ?>

<p align="right" style="color:#CC3300">
<a title="Войти" style="color:#CC3300" href="/log-in.html"><enter_up> Войти</enter_up> </a>

<a style="color:#CC3300" href="/create-an-account.html"> <enter_up>Регистрация</enter_up> </a>
</p>
<?php } else { ?>
<p align="right" style="color:#CC3300">
<?php
echo "Привет";
?>
</p>
<?php } ?>

Чувствую, что что-то не то делаю, но не пойму что.

объясните почему не работает?
Записан
SDKiller
Практически профи
*******

Репутация: +204/-2
Offline Offline

Сообщений: 2021


На всё давно отвечено - ищите


« Ответ #1 : 20.08.2011, 17:15:52 »

Цитировать
echo "Привет, $user";

По идее это не должно приводить ни к каким ошибкам, а только лишь к отображению сообщения "как есть":
Привет, $user

$user - в данном случае объект.
Если Вы хотите написать, например, "Привет, Петя", нужно немного по-другому:

Код:
echo "Привет, ".$user->name;

или

Код:
echo "Привет, ".$user->username;

в зависимости от того, полное имя или логин Вы хотите туда вывести.


PS А это что за новые теги?
Цитировать
<enter_up>Регистрация</enter_up>
« Последнее редактирование: 20.08.2011, 17:21:29 от SDKiller » Записан
wmag
Осваиваюсь на форуме
***

Репутация: +6/-5
Offline Offline

Пол: Мужской
Сообщений: 183


Тут знаю, тут не знаю, пользуюсь напильником


« Ответ #2 : 20.08.2011, 17:41:56 »

Получается переменная $user одновременно хранит несколько параметров?

где можно почитать про это поподробнее?
Записан
SDKiller
Практически профи
*******

Репутация: +204/-2
Offline Offline

Сообщений: 2021


На всё давно отвечено - ищите


« Ответ #3 : 20.08.2011, 17:46:41 »

Получается переменная $user одновременно хранит несколько параметров?

Это объект, и как любой объект может содержать практически что угодно

в свой код после $user = & JFactory::getUser(); вставьте строчку  var_dump($user); и Вы увидите состав этого объекта
Записан
wmag
Осваиваюсь на форуме
***

Репутация: +6/-5
Offline Offline

Пол: Мужской
Сообщений: 183


Тут знаю, тут не знаю, пользуюсь напильником


« Ответ #4 : 20.08.2011, 21:03:56 »

Это объект, и как любой объект может содержать практически что угодно

в свой код после $user = & JFactory::getUser(); вставьте строчку  var_dump($user); и Вы увидите состав этого объекта

А где формируется этот объект?

Есть же файл, отвечающий "что именно" будет хранится в теле объекта.

Записан
SDKiller
Практически профи
*******

Репутация: +204/-2
Offline Offline

Сообщений: 2021


На всё давно отвечено - ищите


« Ответ #5 : 20.08.2011, 21:11:07 »

если интересно, можете начать с libraries\joomla\factory.php - а там по цепочке, в зависимости от того, залогинен пользователь или нет, этот объект формируется по-разному
Записан
iron-din
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #6 : 25.01.2012, 01:51:41 »

Уважаемый SDKiller или все кто разбирается в PHP. Подскажите в Joomla 1.7 использование переменной $user как правильнее использовать, так как вы писали выше:
Цитировать
Код:
echo "Привет, ".$user->name;

или так:
Код:
echo "Привет, ".$user->get('name');

И если ли в этом разница (может что-то безопаснее, или удобнее, или никакой разницы и т.д.)?
Просто только начинаю учить PHP и пытаюсь познать все в деталях.

И еще вопросик: насколько вообще безопасно использовать данную переменную прямо в шаблоне. Смотрел на примерах других известных разработчиков шаблонов - они используют свои дополнительные модули (даже если необходимо сделать простенькое меню авторизации).
Записан
SDKiller
Практически профи
*******

Репутация: +204/-2
Offline Offline

Сообщений: 2021


На всё давно отвечено - ищите


« Ответ #7 : 25.01.2012, 23:02:06 »

Уважаемый SDKiller или все кто разбирается в PHP.

Я в нём не разбираюсь, я знаю где справочник лежит )))

Цитировать
... переменной $user как правильнее использовать, так как вы писали выше:
Код:
echo "Привет, ".$user->name;
или так:
Код:
echo "Привет, ".$user->get('name');

В данном случае с точки зрения результата разницы нет.
Но поскольку объект $user у вас уже существует, то нет смысла использовать метод get, чтобы получить характеристику, которая уже имеется.


Цитировать
насколько вообще безопасно использовать данную переменную прямо в шаблоне.

Не знаю, чем это может быть опасно. Это вопрос к тем, кто разбирается в php.
Записан
karabert
Давно я тут
****

Репутация: +18/-0
Offline Offline

Сообщений: 307



« Ответ #8 : 25.01.2012, 23:11:23 »

И еще вопросик: насколько вообще безопасно использовать данную переменную прямо в шаблоне. Смотрел на примерах других известных разработчиков шаблонов - они используют свои дополнительные модули (даже если необходимо сделать простенькое меню авторизации).

Это не переменная, а свойство!
Ровно настолько же безопасно как если бы не выводили его. Этот объект и свойство уже были и будут все равно. За исключением случая, когда вы сделаете синтаксическую ошибку (например, забудете ; ) и получите критическую ошибку (пользователи не увидят страницу или часть страницы).
Записан
iron-din
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #9 : 26.01.2012, 04:16:22 »

 drink Огромное спасибо за исчерпывающий ответ. А то нагнал жути сам на себя Grin
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet