PHP cookie использовать, помогите? - PullRequest
0 голосов
/ 29 июня 2011
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);
}

Вот фрагмент кода, который я использую, в основном я хочу сохранить долгосрочные куки для пользователей, чтобы им не приходилось заходить в Twitter и проходить долгий процесс авторизации моего веб-приложения при каждом подключении. , Поэтому я пытаюсь использовать куки с этой библиотекой ( twitteroauth ) по какой-то причине, страница не будет загружаться с этим разделом кода, если я должен был удалить if if и просто оставить часть $ _SESSION в коде работает без сучка.

Я в замешательстве, так как проверил, и куки успешно сохраняются, есть идеи?

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Файлы cookie не пусты или не возвращаются пустыми, даже если они не установлены, попробуйте

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

Подробнее о http://php.net/manual/en/function.setcookie.php

0 голосов
/ 29 июня 2011

Я думаю, что ваш «чек» на cookie неверен (не код, а логика), позвольте мне удалить весь код, доступный для if - else заявления:

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

Ваша логика говорит 'если cookie существует, используйте сеансы, в противном случае используйте cookie' , и я думаю, вы хотели сказать ', если cookie не существуют сеансы использования иначе используйте cookie '. Вы должны инвертировать ваш чек в первом if заявлении.

if(!isset($_COOKIE['oauth_token'])) {
    // Use cookie here
}

Обновление Я перечитывал раздел, который вы публиковали снова и снова, и, как вы говорите, у вашего скрипта нет вывода с этим фрагментом кода, единственное, что я могу придумать в том, что ваше приложение падает на new TwitterOAuth(...);. Можете ли вы попробовать запустить свой код без этих двух строк (временно удалите их обе и посмотрите, есть ли у вас выходные данные страницы).


Обновление # 2 Я заметил, что вы сказали, что ваш код-snippit работает, но комбинированный код - нет. Вы используете header('Location: ./clearsessions.php');, если сеанс не установлен, если вы замените его на echo "error";, вы получите это в окне браузера. Примечание Это очень упрощенная отладка, поскольку я мало знаю о том, что происходит в вашей системе, но доказано, что она эффективна в разы. Вы также можете использовать комбинацию echo- flush(), которая будет принудительно выводить данные в браузер каждый раз, когда вы проходите определенную строку (вы можете проверить, насколько далеко выполняется ваш код).

0 голосов
/ 29 июня 2011

Вы пробовали:

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

Обратите внимание на восклицательный знак;) Значение, если НЕ установлено (есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...