2012-04-14 2 views
4

Ок .. Я искал и ничего совершенно не покрывает это ..Wordpress в код воспламенитель

Я следовал этому руководству: http://philpalmieri.com/2009/06/codeigniter-and-wordpress-play-well-together/

Который в основном говорит, чтобы установить WordPress, получить его работу, а затем заменить файл index.php с помощью Code Igniters, а затем в нижней части файла перед началом инициализации Code Igniter требуется файл wp-load word word.

Работает нормально.

Однако теперь моя $ _SESSION не работает. Я установил воспламенитель кода для использования сеансов базы данных и его регистрации значений сеанса, но он все еще не работает. Я не могу войти в панель администрирования системы Code Igniter, я не могу сделать что-нибудь, что требует сеансов, потому что сеансы не работают. ЛОЛ.

Любые идеи парней? Я не знаю, как это исправить.

+0

Следует отметить. Если мне нужен файл Wordpress в функции контроллера, он работает, минус тот факт, что site_url определяется дважды, а PHP это не нравится. Любые идеи, возможно, о том, как изменить site_url? –

+0

Пытается попробовать: http://wordpress.org/extend/plugins/wp-code-igniter/installation/ –

+0

Не работает то, что мне нужно. –

ответ

1

Существует пояснение here о том, как WordPress отключает переменные сеанса сеанса и возможное решение. К сожалению, похоже, что требуется модифицировать файлы ядра - в wp_unregister_GLOBALS, похоже, нет никаких крючков, которые бы помогли.

+0

Я должен был упомянуть, что я пробовал это. Я попробовал добавить «_SESSION» к переменной $ notunset, и я пробовал комментировать wp_unregister_GLOBALS(), все равно не повезло. Я попытался отключить register_globals через PHP.ini. Я попробовал uncommenting wp_unregister_GLOBALS и т. Д. Я попробовал наоборот. Я попробовал почти все, что мог. Я даже попробовал несколько плагинов WP, а также добавил session_start() в wp-config (верхнюю часть файла) и добавил функцию, которая имела session_start() в активный файл functions.php тем. –

+0

Все, что вам нужно, это 'register_globals' отключено, чем' wp_unregister_GLOBALS' не будет отменять любую переменную сеанса. В любом случае это рекомендуемая настройка. Отключите его. – hakre

+0

Да, это ничего не помогло. Все еще нельзя использовать файлы cookie или сеансы. –

4

Я сделал следующее, чтобы заставить это работать (у меня есть приложение Code Igniter в отдельном каталоге в каталоге Wordpress) - то, что я, очевидно, не, как будто я должен был изменить ядро файл в Wordpress.

Во-первых, я добавил свой код воспламенитель имя куки в массив $ no_unset в сор-включает/load.php В моем случае это было ci_session:

$no_unset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix','ci_session'); 

Во-вторых, я понял, что Wordpress игровая функция add_magic_quotes была управляя глобальным $ _COOKIE. Это привело к тому, что CodeIgniter заново создавал файл cookie при каждой загрузке страницы или перенаправлял и тем самым нарушал любую непрерывность. Итак, я прокомментировал эту строку в в.ч.-includes.load.php (около линии 545)

//$_COOKIE = add_magic_quotes($_COOKIE); 

Далее, чтобы сохранить эту функцию в такте для все другого печенья, связанные с Wordpress, я создал функцию array_walk, чтобы перебрать за $ _COOKIE глобальными и применять ко всему add_magic_quotes печенья шахтного внутри кроме сора-включает/load.php функция

/** 
* Applies Magic Quotes to the $_COOKIE global but ignores Codeigniter's Cookie 
* @param string $value Value passed by array_walk function 
* @param string $key Key passed by array_walk function 
*/ 
function ci_ignore_magic_quotes($value,$key) 
{ 
    if($key != "ci_session") 
    { 
     stripslashes_deep($value); 
    } 
} 

//Put this line in place of the commented out line above... 
array_walk($_COOKIE, 'ci_ignore_magic_quotes'); 

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

Надеюсь, это поможет!