阿贾克斯& PHP - 找不到会话cookie?

时间:2010-07-19 23:05:26

标签: php ajax ftp

我有点问题。 我正在使用wordpress模板,它列出了我ftp上的所有文件。 因此我要求输入密码并将其直接传递给ftp_connect。

所以结构看起来像这样。我要求输入密码,如果输入(并发送),我将包含一个名为ftp_include.php的文件,其中列出了我的所有文件。到目前为止工作正常。

我唯一的问题是我使用Ajax(jQuery)重新加载/刷新这个包含。但只有包括。每次我刷新这个包括必须再次连接到服务器(在开头输入密码)。

有些人已经在这里告诉我,我需要在PHP中使用SESSIONS,它存储我的密码,并且在我的包内我再次检索它。

不知怎的,我无法弄清楚为什么我的SESSION cookie不会工作。 我想这是用这个妥善存储的:

在session_start();

                session_start();
                if(!isset($_SESSION['ftp-password']) ) {
                    $_SESSION['ftp-password'] = $_POST['password'];
                }
                var_dump(ini_get_all('session')); //shows both times 
                //this result:http://cl.ly/1hzA -> 
                //so it seems it doesn't get stored properly, does it? 

我想是的,因为我正在使用以下行检索包含内的密码:

if(isset($_SESSION['ftp-password']) ) {
    $ftp_user_pass = $_SESSION['ftp-password'];
    echo "Password: " . $ftp_user_pass;
} else {
    print "can't find cookie!";
}

它甚至第一次连接到服务器。然而,只要我用Ajax somehoe刷新包含它总是说“找不到cookie”。知道为什么会这样。 我甚至尝试使用set_cookie()但结果相同。

感谢您的提示

1 个答案:

答案 0 :(得分:0)

看起来WP会对会话做出奇怪的事情。喜欢它取消它们和/或覆盖它们。这是page,其中有一些讨论,例如在 session_start()之前放置get_header() (这可能导致您的标头已发送错误)。

为什么不将密码存储在php中的变量中并将其传递给jquery? E.g:

<?php
   $ftp_pass = $_GET['ftp_pass'];//or however you get the password
?>

<script>
window.setInterval('yourfunction()', 1000);

function yourfunction() { 
    alert('<?=$ftp_pass?>');//replace with your jQuery refresh code
}
</script>