2015-02-17 2 views
0

Итак, когда я выполняю начальную функцию, она работает нормально, имя пользователя сохраняется в базе данных, однако, когда я запускаю вторую функцию, которая добавляет имя пользователя к тексту, пользователь выбирает ввести Оператор IF возвращает «no user» - когда пользователь определен ...

Если кто знает, как исправить это, было бы здорово - я в настоящее время изучаю PHP и mysql, поэтому я сожалею, если это неверно

<?php 

session_start() 

    // connect to the database 
    mysql_connect("localhost", "root", ""); 
    mysql_select_db("ajaxchat"); 



    // read the stage 

    $stage = $_POST['stage']; 

    // primary code 
    if($stage == 'initial') { 

     // check the username  
     $user = $_POST['user']; 

     $query = mysql_query("SELECT * FROM chat_active WHERE user='$user'"); 
     if (mysql_num_rows($query) == 0) { 

      $time = time(); 

      // 
      mysql_query("INSERT INTO chat_active VALUES ('$user', '$time')"); 

      // set the session 
      $_SESSION['user'] = $user; 

      echo 'good'; 
     } 
     else { 
      echo 'taken'; 
     } 
    } 

/////////////// PROBLEM FUNCTION /////////////// 
================================================ 

    else if($stage == 'send') { 
     // get the textdomain 
     $text = $_POST['text']; 

     // check for user_error 
     if (isset($_SESSION['user'])) { 
      $user = $_SESSION['user']; 
      echo $user.' - '.$text.'<br />'; 
     } 
     else { 
      echo 'no user'; 
     } 
    } 
    else { 
     echo 'error'; 
    } 
?> 

Это JavaScript:

<script type="text/javascript"> 
    function chat_initialise() { 
     var user = document.getElementById("chat_user").value; 

     $.post("./chat.php", {stage:"initial", user:user}, function(data) { 
      if (data == "good") { 
       $('#initial').css('display', 'none'); 
       $('#content').css('display', 'inline') 
      } 
      else { 
       alert("That username is taken! Please try another."); 
      } 
     }); 
    } 

    function chat_send() { 
     var text = document.getElementById("chat_text").value; 

     $.post("./chat.php", {stage:"send", text:text}, function(data) { 
      document.getElementById("chat_text").value = ''; 
      $('#window').text($('#window').text() + data); 
      // alert(data) 
     }); 
    } 
</script> 
+0

Получите вывод: 'good'? – Rizier123

+0

yes - http://gyazo.com/1933a147f866a4e057b3d48d06353abd @ Rizier123 – cookies

+0

Попробуйте изменить эти '$ user = $ _SESSION ['user'];' как вы сделали для другого. '$ _SESSION ['user'] = $ user;' –

ответ

1

Я установил его - изменили функцию POST взять текущее имя пользователя затем переопределить его в качестве переменной во второй функции:

else if($stage == 'send') { 
    // get the textdomain 
    $text = $_POST['text']; 
    $user = $_POST['user']; 

    echo $user; 

    // check for user_error 
    if (isset($_SESSION['user'])) { 
     $_SESSION['user'] = $user; 
     echo $user.' - '.$text.'<br />'; 
    } 
    else { 
     echo 'no user'; 
     var_dump($_SESSION); 
    } 
} 

Спасибо за вашу помощь, ребята !!

+0

Рад узнать, что вы нашли свое собственное решение, * приветствия * и вас приветствует ;-) –

+0

По сути, обходя сеанс полностью, отправив пользователя снова со вторым вызовом AJAX ... это один из способов его устранения; У меня все еще есть это странное неловкое чувство, что вы теряете свою сессию здесь где-то;) – CD001

+0

@ CD001 Я уверен, что в ближайшем будущем это сломает что-то еще! Я честно не знаю, где это может быть потерять мою сессию, поскольку php в вопросе буквально весь php-скрипт – cookies

Смежные вопросы