PHP cookie使用,帮助?

PHP cookie使用,帮助?,php,session,cookies,Php,Session,Cookies,下面是我正在使用的代码片段,基本上我想为用户存储一个长期cookie,这样他们就不必每次连接时都登录到Twitter并经历漫长的授权我的web应用程序的过程。因此,我尝试将cookies与这个库()一起使用,因为某些原因,如果我取出if-else并将$\u会话部分保留在代码中,页面将不会加载这段代码 我很困惑,因为我已经检查并成功存储了Cookie,有什么想法吗?Cookie不是空的,或者即使没有设置也不会返回空的,您应该尝试 if(!isset($_COOKIE['oauth_token'])

下面是我正在使用的代码片段,基本上我想为用户存储一个长期cookie,这样他们就不必每次连接时都登录到Twitter并经历漫长的授权我的web应用程序的过程。因此,我尝试将cookies与这个库()一起使用,因为某些原因,如果我取出if-else并将$\u会话部分保留在代码中,页面将不会加载这段代码


我很困惑,因为我已经检查并成功存储了Cookie,有什么想法吗?

Cookie不是空的,或者即使没有设置也不会返回空的,您应该尝试

if(!isset($_COOKIE['oauth_token'])){
session_start();
if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])) {header('Location: ./clearsessions.php');}

$access_token = $_SESSION['access_token'];
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

setcookie('oauth_token', $access_token['oauth_token'], time()+60*60*24*30);
setcookie('oauth_token_secret', $access_token['oauth_token_secret'], time()+60*60*24*30);
}
//else use the cookies
else{
$oauth_token = $_COOKIE['oauth_token'];
$oauth_token_secret = $_COOKIE['oauth_token_secret'];
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $oauth_token, $oauth_token_secret);
}
更多关于 您是否尝试过:

if (isset($_COOKIE['oauth_token'])) {

注意感叹号;)意思是如果没有设置。

我认为您对cookie的“检查”不正确(不是代码方面的,而是逻辑方面的),让我删除
if
-
else
-语句的所有代码执行:

if(!isset($_COOKIE['oauth_token'])){
您的逻辑是“如果cookie存在,请使用会话,否则请使用cookie”,我认为您的意思是“如果cookie不存在,请使用会话,否则请使用cookie”。您必须在第一个
if
-语句中反转支票

if(isset($_COOKIE['oauth_token'])){
    // Using $_SESSION
}
// else use the cookie
else {
    // Using $_COOKIE
}

更新我已经反复阅读了您发布的部分,正如您所说,您的脚本没有任何代码输出,我唯一能想到的是,您的应用程序在新TwitterOAuth(…)上崩溃。您是否可以尝试在不使用这两行的情况下运行代码(暂时删除这两行,然后查看是否有页面输出)



更新#2我注意到您说过您的代码--“snippit”可以工作,但组合代码不能工作。您使用
标题('Location:./clearsessions.php')如果未设置会话,如果将其替换为
echo“error”,你在浏览器窗口中看到了吗。请注意,这是非常简单的调试,因为我对系统上发生的事情知之甚少,但事实证明它有时是有效的。您还可以选择使用echo-
flush()
组合,每当您通过某一行时,该组合将强制输出到浏览器(然后您可以检查代码执行的距离)。

尝试了这两种方法,但仍然无法执行。是的,我更改了它,尽管我从isset中记下了,但我确实反转了检查。但仍无法执行。更新了我的答案,请检查
TwitterOAuth()
是否是您的问题?是的,我刚刚尝试了一些更改。我已经粘贴了它们,所以它们比在评论中更容易看到。-如果你没有时间仔细阅读,我会完全理解的。高级感谢。更新了我的答案,但我仍然不确定问题出在哪里,我看不出你的代码有任何问题…谢谢,我在发布回复后几个小时就修复了它。由于某些原因,更改if的布局使其正常工作。我不完全清楚为什么,我想可能是因为我昏昏欲睡和我没有冲我的饼干,而且它正在使用一个无效的会话。谢谢你的帮助!非常感谢。您能详细说明哪些部分的代码是逻辑没有进入的吗?如果您愿意,我已经在这里找到的一个更大的粘贴中详细说明了更多;
if(!isset($_COOKIE['oauth_token'])) {
    // Use cookie here
}