Аякс возвращает контент для авторизованного пользователя. Должно быть наоборот. (WordPress)

artnik7

Новичок
Делаю Ajax авторизацию для WP. Принцип работы прост:
При авторизации или нажатии на ссылку "Выйти", посылаеться запрос в php, который выдает html текущей страницы (только body тег) для залогиненного (или наоборот) юзера. После чего полученный html заменяеться яваскриптом.

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

Пробовал в начало body ставить <?php if (is_user_logged_in()) echo 'in' ; else echo 'out';?>
При выходе или выходе всегда выводит "out".

Подскажите, пожалуйста, в чем может быть причина?
 

Sufir

Я не волшебник, я только учусь
Х.з., так на вскидку, что первое в голову приходит, это проверить session_id. Сравни id страницы авторизации и подгружаемого скрипта.
 

artnik7

Новичок
Sufir, спасибо что ответил.
Попробовал похимичить с session_id(). Если обновлять страницу то выводит один и тот-же ID "31d03b1bf7cc0da63847f2e0919e5e28". А при аякс логине или логауте генерит разные значения.

Пробовал еще счетчик сессий выводить в начале body.
PHP:
session_start();
if (empty($_SESSION['count'])) {
 $_SESSION['count'] = 1;
} else {
 $_SESSION['count']++;
}
echo $_SESSION['count'];
При обновлении он увеличиваеться, а при аякс запросе (входе / выходе) тоже увеличиваеться, но выводит 1. То есть если 10 раз залогиниться, затем обновить страницу то в счетчике будет на 10 больше.
 

Sufir

Я не волшебник, я только учусь
Ну, значит вместе с данными формы отправляй текущий session_id и устанавливай перед авторизацией.
 

artnik7

Новичок
Вроде id установил, не меняеться, но все-равно при входе отображает ту-же страницу. И счетчик тоже все время 1 показывает, пока не обновиш. Может я чет не так сделал:
PHP:
<? session_start();?><!DOCTYPE html><html>... начало документа
...
...
<body>
<?
  session_id('31d03b1bf7cc0da63847f2e0919e5e28');
  session_start();
  empty($_SESSION['count'])  ?  $_SESSION['count'] = 1  :  $_SESSION['count']++;
  echo $_SESSION['count'].' '.session_id();
?>
 
Сверху