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


Как текущего пользователя получить во внешнем коде?

$user $user[id]

Сообщений в теме: 9

#1 Tony999

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

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Октябрь 2015 - 11:40

Изнутри КБ это легко : $user['id'], а как снаружи?
Что-то не доходит как это лучше делать?
Подскажите, плииз! Спасибо!

P.S. Понятно, что во внешнем коде session_start(); Через $_SESSION можно передать, так?

Сообщение отредактировал Tony999: 19 Октябрь 2015 - 12:21

Умные сайты на заказ
https://info.crm-master.info

#2 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Октябрь 2015 - 12:18

Проще всего подключить common.php. В этом случае больше ничего не потребуется, по сути вы оказываетесь "изнутри КБ" со всеми его переменными.

#3 Tony999

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

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Октябрь 2015 - 12:24

Пробовал, но тогда почему то перестают работать запросы к базе. Вот так все работает... без common.
//include "../login.php";
include "config.php";
include "constants.php";
//include "../common.php";
include "sql_functions.php";
include "mysql_connect.php";
include "functions1.php";
include "functions2.php";

Сообщение отредактировал Tony999: 19 Октябрь 2015 - 12:24

Умные сайты на заказ
https://info.crm-master.info

#4 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Октябрь 2015 - 12:34

Вы сейчас подключаете файлы по отдельности, тогда они ВСЕ уже включены в common.php, и соответственно в случае его использования их подключать не требуется (о чем я уже написал выше).

Повторюсь: все, что нужно, это подключение common.php и всё, "ты внутри матрицы, Нео". Но, возможно, сам скрипт при этом должен быть в корне программы. Другие пути не гарантирую.

#5 Tony999

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

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Октябрь 2015 - 12:45

Вот-вот, наверное в этом и дело, что скрипт у меня не в корне... Попробую в корень поставить.
Умные сайты на заказ
https://info.crm-master.info

#6 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 19 Октябрь 2015 - 14:08

Просмотр сообщенияTony999 (19 Октябрь 2015 - 12:45) писал:

Вот-вот, наверное в этом и дело, что скрипт у меня не в корне... Попробую в корень поставить.
Обычно ложу внешний код в modules/ в отдельный каталог и весь код держу там. Соотвественно подключаю этот инит где нужно. Если используете ооп советую это Например, modules/my_module/

init.php

define('CB_MODULE_DIR', dirname(__FILE__) . '/');
require_once CB_MODULE_DIR.'../../common.php';

$config['script_noauth'] = 1;
//начинаем сессию, чтобы получить $user_id
session_start();
Сейчас не уверен, но когда с этим разбирался и отключал авторизацию чтобы получить данные о пользователи - приходилось включать сессию. Возможно баг и починили.

Сообщение отредактировал wondertalik: 19 Октябрь 2015 - 14:11


#7 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Октябрь 2015 - 15:16

Если вы устанавливаете $config['script_noauth'] = 1, то авторизации не происходит (собственно эта переменная ее и отключает), и соответственно, никакого текущего пользователя в $user вы не найдете. Если только самостоятельно не будете мониторить сессии и извлекать пользователя оттуда, что собственно вы и делаете видимо. По умолчанию это делает сам common.php.

#8 Tony999

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

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Октябрь 2015 - 20:36

Скрипт в корень сайта и только common.php - работает. Но не всегда.
Из командной строки работает (но без $user) только предыдущая конструкция:

#!/usr/bin/php
<?php

session_start();

//include "login.php";
include "include/config.php";
include "include/constants.php";
//include "common.php";
include "include/sql_functions.php";
include "include/mysql_connect.php";
include "include/functions1.php";
include "include/functions2.php";

Может надо на common.php путь от корня системы прописать?

Сообщение отредактировал Tony999: 19 Октябрь 2015 - 20:39

Умные сайты на заказ
https://info.crm-master.info

#9 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 20 Октябрь 2015 - 00:50

Просмотр сообщенияCbCoder (19 Октябрь 2015 - 15:16) писал:

Если вы устанавливаете $config['script_noauth'] = 1, то авторизации не происходит (собственно эта переменная ее и отключает), и соответственно, никакого текущего пользователя в $user вы не найдете. Если только самостоятельно не будете мониторить сессии и извлекать пользователя оттуда, что собственно вы и делаете видимо. По умолчанию это делает сам common.php.
Вы правы. Благодарю.

#10 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 20 Октябрь 2015 - 00:52

Просмотр сообщенияTony999 (19 Октябрь 2015 - 20:36) писал:

Скрипт в корень сайта и только common.php - работает. Но не всегда.
Из командной строки работает (но без $user) только предыдущая конструкция:

[CODE]
#!/usr/bin/php
<?php

Может надо на common.php путь от корня системы прописать?
Выше вам уже указал как определить константу пути. Абсолютный или относительный путь использовать право ваше, но константу все же использовать нужно.





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

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