PHP / AJAX检查会话变量是否更改

时间:2010-08-18 02:45:59

标签: php javascript ajax session

问候!

我需要动态检查会话变量是否每隔几秒就会发生变化。例如,PHP会话变量“x”的值可能为“1”,然后在五秒后,其值为“2”。

使用表单更改PHP会话变量“x”。如果会话变量发生变化,我需要重新加载页面。

如果会话变量更改而不手动刷新页面,如何重新加载页面?

2 个答案:

答案 0 :(得分:3)

AJAX是一个很好的解决方案。只需向脚本发出一个请求,该脚本将返回会话变量的当前值。如果不同,则重新加载。

因此,当您的页面首次加载时,您会有类似

的内容

注意:此示例依赖于jquery库。

<script type="text/javascript">
    var currentSessionValue = <?php echo $_SESSION['something']; ?>;
    // pseudo code
    setTimeout(checkVariableValue, 5000);
    function checkVariableValue() {
         $.ajax({
            url: 'checkMyValue.php',
            success: function(newVal) {
                if (newVal != currentSessionValue);
                    currentSessionValue = newVal;
                    alert('Value Has Changed.');
                    doSomethingDifferent_or_refreshPage();
                }
         });
    }
</script>

<强> checkMyValue.php

<?php
     start_session();
     echo $_SESSION['myVariable'];
?>

答案 1 :(得分:0)

我在我的代码中确实喜欢这个

<script>
    function myFunction() {
    var name = document.getElementById("name").value;
    var email = document.getElementById("email").value;
    var password = document.getElementById("password").value;
    var phone = document.getElementById("phone").value;
    // Returns successful data submission message when the entered information is stored in database.
    var dataString = 'name=' + name + '&email=' + email + '&password=' + password + '&phone=' + phone;
    if (name == '' || email == '' || password == '') {
        alert("Please fill all fields");
    } else {
    // AJAX code to submit form.
        $.ajax({
            type: "POST",
            url: "signupAjax.php",
            data: dataString,
            cache: false,
            success: function(html) {

            var isRegistered = '<?php echo $_SESSION['name'];?>';
            var url = '<?php $url = $site_root.'index.php'; echo $url;?>';

            if(isRegistered.length > 0)
            {
                window.location = url;
            }
            else
            {
                alert(html);
            }

            }
        });
        }
        return false;
    }
</script>