За последние 24 часа нас посетили 15992 программиста и 1642 робота. Сейчас ищут 949 программистов ...

Почему FALSE??

Тема в разделе "PHP для новичков", создана пользователем Evgen8, 9 июл 2012.

  1. Evgen8

    Evgen8 Активный пользователь

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

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    В обработчике формы отправляешь заголовок
    Код (Text):
    1. header('Content-type: application/json');
    , после которого заголовки отправлять бесполезно (обычно так).
    Это уже не сработает
    Код (Text):
    1. session_start();
    2. $_SESSION['user_id'] = $row['id'];
    Попробуй сначала создать сессию, потом сформировать ответ, и только перед отправкой ответа (json_encode($data)) отправить заголовок 'Content-type: application/json'.
     
  3. Evgen8

    Evgen8 Активный пользователь

    С нами с:
    8 июл 2012
    Сообщения:
    14
    Симпатии:
    0
    Не помогло...
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А почему вы сессии не до заголовка объявляете?!
    Они должны быть в самом верху...

    session_start(); нужно всегда писать в самом верху, выше всего кода...
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ещё с адресами разберись - в одном месте вижу
    Код (Text):
    1. http://mc-diamond.ru/
    в другом
    Код (Text):
    1. http://www.mc-diamond.ru/
    а для браузера это два разных домена и куки от одного к другому он не передаёт, если только не заставить его это делать принудительно, поставив точку перед названием домена без www в настройках сессий.
     
  6. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev