社交引擎中的 PHP 会话
Posted
技术标签:
【中文标题】社交引擎中的 PHP 会话【英文标题】:Session in PHP in Social Engine 【发布时间】:2012-07-13 23:46:50 【问题描述】:mysql_query("INSERT INTO tz_todo SET text='".$text."',
position = ".$position.",
user_id=".$_SESSION['user_id'].",
view_stat=0");
我尝试回显查询,结果如下:
INSERT INTO tz_todo SET text='trial text', position = 21, user_id=, view_stat=0
好像获取不到user_id
的session值。
而$_SESSION['user_id']
不在社交引擎中工作。如何纠正这个?我还在我的 xampp 中制作了一个 localhost 版本,一切都很好,但是当我将其转换为社交引擎时,会话无法正常工作。
【问题讨论】:
文件开头是否调用session_stat();
?
检查是否有任何本地社交引擎功能来处理会话并使用它们来存储/获取信息。
@David 是的。我已经开始了会议。
@Ivanhoe123 这就是社交引擎的问题。我对社交引擎真的很陌生,他们没有太多的文章和教程。
有什么错误吗? error_reporting(-1);
并确保它们可见 (display_errors)
【参考方案1】:
使用 session 存储 user_id 是完全错误的。要获得 user_id 试试
$viewer_id = Engine_Api::_()->user()->getViewer()->getIdentity();
(或者 $user->getIdentity 如果你有另一个用户的对象)。
如果您仍需要使用 session 来存储这些数据,请使用Zend-approach。
【讨论】:
$user = Engine_Api::_()->getItem('user', $user_id);通常让用户获得完整的对象会更好。【参考方案2】:这就是我通过会话获取用户 ID 的方式
session_start();
$userID = $viewer->getIdentity();
$_SESSION['user_id'] = $userID;
echo $_SESSION['user_id'];
【讨论】:
【参考方案3】:Yoy 可能会忘记在页面顶部开始会话
<?php if(!isset($_SESSION)) session_start(); ?>
$_SESSION['user_id'] 可能没有存储值。检查您的登录页面(基本上在登录会话变量将设置之后)或在注册天气后您为该会话变量分配了一个值..
为会话变量设置值:
$_SESSION['user_id'] = "1234567";
【讨论】:
【参考方案4】:在您使用会话对象的任何页面中,将此代码放在文件的开头:
if(!isset($_SESSION))session_start();
这样,如果会话尚未启动,它会启动它;否则,如果会话已经开始,它将忽略会话开始。 这很重要,因为如果会话已经启动,调用 session_start() 有时会导致错误。
【讨论】:
【参考方案5】:session_start(); $_SESSION["test"] = "hello world";
session_start();
echo $_SESSION["test"];
上面的代码有效吗?如果没有,请检查 php.ini 中的 session.save_path
注意:要保留此变量,请记住在从会话中调用变量之前在每个 php 脚本/页面上调用 session_start()。
【讨论】:
代码有效,但社交引擎不会保留会话的价值。 查看此链接:socialengineforum.com/index.php?/topic/…以上是关于社交引擎中的 PHP 会话的主要内容,如果未能解决你的问题,请参考以下文章