在ajax中使用相同的会话ID无法连接到MySQL DB

时间:2012-03-19 12:02:24

标签: php session mysql-connect

我制作了一个用于AJAX调用的通用PHP脚本。我有存储在SESSION变量中的mysql连接的用户名和密码。为了在这个ajax脚本中启动相同的会话,我将会话ID通过post传递给ajax脚本。变量正确传递,我使用error_log检查用户名和密码SESSION变量是否正确。这是ajax_script.php:

<?php

session_id($_POST['session_id']);
session_start();

mysql_connect('10.X.X.X',$_SESSION['username'],$_SESSION['password']);

$results = mysql_query($_POST['query']);

echo json_encode($results);

?>

但是,无法建立连接。我检查了日志文件,这是错误:

 PHP Warning:  mysql_connect(): Access denied for user 'username'@'25.1.1.1' (using password: YES) in /ajax_script.php on line 6, referer: http://25.1.1.1/index.php?option=com_content&view=article&id=180

有谁知道为什么我不能这样连接?

之前我制作了一个类似的脚本,但没有像上面那样启动引用session_id的同一个会话。我通过post传递了用户名和密码,并且连接正常。

谢谢!

**编辑**抱歉,我使用错误的IP进行mysql连接。以下代码有效:

<?php

session_start();

$ajax_connection = mysql_connect('10.X.X.X',$_SESSION['username'],$_SESSION['password']);

$result_set = array();

while ($result_set[] = mysql_fetch_assoc($results)){
    // do nothing
}

echo json_encode($results);

?>

1 个答案:

答案 0 :(得分:1)

你不需要

session_id($_POST['session_id']);

只需session_start()就够了

也许你的会话即将到期。在两个页面上使用以下代码段

session_cache_expire(30); //expire in 30 minutes

检查this答案,了解有关会话到期的更多信息。