Делаю авторизацию... Вот главная страница входа: Код (Text): <html> <head> <title>Panel Konvert+</title> <link rel="icon" href="/favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="out_html.js"></script> </head> <body> <center><h1>Panel Konvert+</h1></center> <br> <br> <center><h4>Вход администратора/владельца</h4> <div id="result"></div></center> <center><form action="login_admin.php" id="login_admin" method="post"> <pre>Введите свой логин: <input name="login" type="text"></pre> <pre>Введите свой пароль: <input name="password" type="password"></pre> <input type="button" value="Войти в систему"> </center></form> </body> </html> JQuery: Код (Text): $(document).ready(function(){ $('input:button').click(function(){ var str = $("#login_admin").serialize(); $.post("login_admin.php", str, function(data) { if (data.ok_ok == "1"){ $("#result").html("все хорошо"); setTimeout('window.location = "http://mc-diamond.ru/log_true.php?";', 2000); } else { $("#result").html('текст ошибки'); } }); }); }); Ее обработчик: Код (Text): <?php header('Content-type: application/json'); mysql_connect(localhost, kela_4, 25176542); mysql_select_db(kela_4); if (isset($_POST['login'],$_POST['password'])) { $login = mysql_real_escape_string($_POST['login']); $password = md5($_POST['password']); $query = "SELECT `id` FROM `login_in` WHERE `login`='$login' AND `password`='$password' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($sql) == 1) { $row = mysql_fetch_assoc($sql); session_start(); $_SESSION['user_id'] = $row['id']; $data = array('ok_ok'=>1); echo json_encode($data); } else { $data = array('ok_ok'=>0); echo json_encode($data); } } ?> Скрытая страница: Код (Text): <?php session_start(); if (isset($_SESSION['user_id'])) { echo '<html> <head> <title>WEB</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> Вы успешно вогли в систему! <form method="post" action="out.php"> <input type="submit" value="выход"> </form> </body> </html>'; } else { header('Content-Type: text/html; charset= utf-8'); die('Доступ закрыт, даём ссылку на авторизацию.'); } ?> Обработчик выхода: Код (Text): <?php session_start(); $_SESSION = array(); header("Location: http://www.mc-diamond.ru/"); ?> По каким-то причинам на скрытой странице показывает , что сессии нет. Хотя на входе - "все хорошо" и идет перенаправление.
В обработчике формы отправляешь заголовок Код (Text): header('Content-type: application/json'); , после которого заголовки отправлять бесполезно (обычно так). Это уже не сработает Код (Text): session_start(); $_SESSION['user_id'] = $row['id']; Попробуй сначала создать сессию, потом сформировать ответ, и только перед отправкой ответа (json_encode($data)) отправить заголовок 'Content-type: application/json'.
А почему вы сессии не до заголовка объявляете?! Они должны быть в самом верху... session_start(); нужно всегда писать в самом верху, выше всего кода...
Ещё с адресами разберись - в одном месте вижу Код (Text): http://mc-diamond.ru/ в другом Код (Text): http://www.mc-diamond.ru/ а для браузера это два разных домена и куки от одного к другому он не передаёт, если только не заставить его это делать принудительно, поставив точку перед названием домена без www в настройках сессий.