проблема с файлом cookie сессии - PullRequest
0 голосов
/ 05 мая 2011

Я использую php sdk в приложении для работы на холсте в Facebook.у меня есть 3 страницы: index.php play.php & register.php

в index & play. Я проверяю, есть ли сеанс таким образом:

$session = $facebook->getSession();

$me = null;
// Session based API call.
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

// login or logout url will be needed depending on current user state.
if ($me) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array('canvas' => 1,
                                          'fbconnect' => 0,
                                          'req_perms' => 'publish_stream,email',
                                          'next' => 'register.php',
                                          'cancel_url' => 'http://www.facebook.com/apps/application.php?id=MYAPPID&perms' ));
}

if (!$me){ print("<html><head>");
print("<script type=\"text/javascript\">function redirect(){ top.location.href = \"");
print($loginUrl);
print("\"; }</script></head>");
print("<body onload=\"redirect();\">Please wait...</body></html>"); exit(); }

Так что если яне знаю, кто пользователь и его новичок в моем приложении, попросите его зарегистрировать .php и поместить его в мою базу данных.

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

Что-то здесь не так.Я пытался очистить куки, но, похоже, ничего не работает.

1 Ответ

0 голосов
/ 05 мая 2011

Я, вероятно, думаю, что $facebook->api(...) может возвращать значения, которые являются отрицательными положительными значениями ( т.е. возвращает значение, которое оценивается как ИСТИНА, но на самом деле это не так, как в строке 'UNAUTHORIZED', или в пустом массиве).Полагаться только на оператор not ('!'), Вероятно, не так уж и надежно, и я бы проверил типы возвращаемых данных (хотя я не знаю API и не могу сказать, что это)

Лучшее, что можно сделать, это var_dump ( $facebook->api('/me') ) ;, чтобы увидеть, что он на самом деле возвращает.Также вы можете попробовать правильный тест вместо просто оператора not и императива, вместо:

if ( $me ) { ... }

Try;

if ( is_object ( $me ) ) { ... }
if ( is_array ( $me ) ) { ... }
if ( ! empty ( $me ) ) { ... }

или любых других вещей, которые вы могли быпроверить через $ facebook-> api ('/ me') или даже что-то конкретное, например;

if ( $me !=== NULL ) { ... }

В любом случае, я уверен, что ваша проблема заключается в бизнес-логике о том, как проверить ваш доходданные.

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