Rob*_*Rob 19 php wordpress session
我正在创建一个双语网站,并决定使用以下内容session_start
来确定页面的语言:
session_start();
if(!isset($_SESSION['language'])){
$_SESSION['language'] = 'English'; //default language
}
Run Code Online (Sandbox Code Playgroud)
这个问题是它与Wordpress冲突,我得到以下内容:
警告:session_start()[function.session-start]:无法发送会话cookie - 已经发送的标头(输出从/home/neurosur/public_html/v2/wp-content/themes/default/header.php:8开始)第13行/home/neurosur/public_html/v2/wp-content/themes/default/region.php
有办法解决这个问题吗?
raf*_*afi 39
编辑
Wordpress在运行header.php文件之前发送标头信息.因此,在header.php中启动会话可能仍然与wordpress发送的标头信息冲突.在init上运行它可以避免这个问题.(来自jammypeach的评论)
在functions.php文件中写下以下代码:
function register_my_session()
{
if( !session_id() )
{
session_start();
}
}
add_action('init', 'register_my_session');
Run Code Online (Sandbox Code Playgroud)
现在,如果要在会话中设置数据,请执行此操作
$_SESSION['username'] = 'rafi';
Run Code Online (Sandbox Code Playgroud)
kpo*_*hin 15
将代码移动到header.php文件的顶部.并检查会话是否已存在:
if(session_id() == '')
session_start();
your code here...
Run Code Online (Sandbox Code Playgroud)
j.c*_*j.c 14
彼得在这里发现了一篇有趣的文章.我正在使用以下代码functions.php
:
add_action('init', 'myStartSession', 1);
add_action('wp_logout', 'myEndSession');
add_action('wp_login', 'myEndSession');
function myStartSession() {
if(!session_id()) {
session_start();
}
}
function myEndSession() {
session_destroy ();
}
Run Code Online (Sandbox Code Playgroud)
当用户使用不同的帐户再次注销时,这会破坏旧会话.
归档时间: |
|
查看次数: |
42897 次 |
最近记录: |