PHP $ _SESSION返回不正确的值

时间:2015-02-17 15:11:37

标签: php mysql session-variables

好的,所以当我执行初始函数时它运行正常,用户名存储在数据库中,但是当我运行第二个函数时,用户选择输入用户选择输入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>

1 个答案:

答案 0 :(得分: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);
    }
}

感谢所有帮助人员!