0

我制作了一个通用的 PHP 脚本,用于 AJAX 调用。我有存储在 SESSION 变量中的 mysql 连接的用户名和密码。为了在这个 ajax 脚本中启动相同的会话,我通过 post 将会话 ID 传递给 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 的同一会话。我通过帖子传递了用户名和密码,并且连接正常。

谢谢!

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

<?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);

?>
4

1 回答 1

1

你不需要

session_id($_POST['session_id']);

就够session_start()

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

session_cache_expire(30); //expire in 30 minutes

检查答案以获取有关会话到期的更多信息。

于 2012-03-19T12:11:57.340 回答