Я сделал простой сайт с использованием Yii, и я использовал расширение Yii-пользователя. У меня есть отдельный php-файл на том же сервере (давайте назовите его loader.php).
Я хочу получить текущий Yii зарегистрированный пользователь в loader.php. Я понял, что в Yii-пользовательском расширении нет сеанса, тогда как я могу это сделать?Получить текущий пользователь от Yii за пределами веб-сайта
ответ
В Yii вы можете получить идентификатор пользователя с помощью этого:
$userId = Yii::app()->user->Id;
Это даст идентификатор пользователя, если пользователь logined и объект CWebUser был сохранен в сессии.
В процессе инициализации CWebUser использует CWebUser-> getState ('__ id') для получения идентификатора пользователя и по умолчанию пытается получить данные из сеанса Yii. Если вы используете компонент сессии по умолчанию Yii, в CWebUser будет выглядеть в $ _SESSION [$ ключ] для и ID, а $ ключ:
CWebUser.php:567:
$key=$this->getStateKeyPrefix().$key;
CWebUser.php:540:
return $this->_keyPrefix=md5('Yii.'.get_class($this).'.'.Yii::app()->getId());
Итак, ваш $ ключ, чтобы получить user_id от сессии является: md5 (» Yii 'Yii :: приложение(). get_class ($ это).. -..> GetId()).
И что такое Yii :: app() -> getId()?
CApplication.php:232:
return $this->_id=sprintf('%x',crc32($this->getBasePath().$this->name));
Таким образом, в вашем «loader.php» вы можете использовать это, чтобы создать ключ для user_id:
$basePath = "/var/www/yii-app.com/protected";//Place here your app basePath by hands.
$app_name = "My super app";//Place here your real app name
$app_id = sprintf('%x',crc32($basePath.$this->name));
$class = "CWebUser";//Place here your real classname, if you using some other class (for example, I'm using my own implementation of the CWebUser class)
$key = md5('Yii.'.$class.'.'.$app_id) . "__id";
session_start();
$user_id = $_SESSION[$key];
echo "USER ID is:" . $user_id;
//Now you can user $user_id in any way, for example, get user's name from DB:
mysql_connect(...);
$q = mysql_query("SELECT name FROM users WHERE id='" . (int)$user_id ."';";
$data = mysql_fetch_array($q, MYSQL_ASSOC);
echo "Hello, dear " . $data['name'] . ", please dont use this deprecated mysql functions!";
повторяю: если вы используете компонент CSession по умолчанию в Yii, его легко получить user_id, но если вы используете какой-либо другой класс, например, тот, который использует redis или mongoDB для хранения сеансов вместо механизма PHP по умолчанию - вам придется сделать еще одну работу для получения данных из этих хранилищ.
Я знаю, что это 2 месяца, но, возможно, кто-то может найти это полезным, я такая же проблема, и благодаря создателю я смог получить решение, вы можете проверить его здесь How can i use session from yii framework into my 3rd party application
вы должны включить yii.php и конфигурационный файл, как это:
require('../../framework/yii.php');
$config = require('../../protected/config/main.php');
чем вам нужно сделать следующее:
Yii::createWebApplication($config);
, и если вы используете var_dump, как это, вы получите нужную вам информацию, в этом примере - id,
var_dump(Yii::app()->User->id);
Только то, что я искал, спасибо! –
- 1. Yii получить текущий зарегистрированный пользователь
- 2. Получить текущий URL-адрес от Chrome за пределами браузера
- 3. yii получить текущий номер страницы
- 4. Получить текущий идентификатор сообщения за пределами цикла. Wordpress
- 5. Получить текущий URL-адрес за пределами FancyBox modal
- 6. WordPress получить текущий пользователь
- 7. Как получить текущий подписанный пользователь в forms.py?
- 8. получить текущий URL-адрес за пределами маршрутизатора-выхода
- 9. Silverlight 4 Получить текущий пользователь
- 10. Получить текущий пользователь Windows VB.net
- 11. Получить текущий пользователь Firebase Android
- 12. Невозможно получить текущий пользователь Parse
- 13. Получить текущий пользователь в FormsAuthentification
- 14. Получить текущий пользователь в WinRT
- 15. Защита от индекса за пределами
- 16. 1 домен 2 вебсайта
- 17. Получить информацию за пределами цикла
- 18. Как получить текущий маршрутизатор в Yii Framework?
- 19. Как получить текущий идентификатор действия в Yii?
- 20. Получить текущий зарегистрированный пользователь в Sharepoint 2010
- 21. Получить DataContext за пределами стиля
- 22. Получить the_category за пределами цикла
- 23. Получить текст за пределами элементов
- 24. django-extra-views получить текущий пользователь
- 25. Symfony 3 получить текущий пользователь внутри объекта
- 26. 3 вебсайта 1 Проект
- 27. Yii 2. Загрузить документ за пределами общедоступной папки
- 28. pushViewController: анимированный: не полностью анимирует текущий контроллер за пределами
- 29. Событие за пределами серии
- 30. получить список всех файлов внутри каталога за пределами системной папки
Почему именно так? – JalalJaberi