0

AJAX呼び出しに使用する汎用PHPスクリプトを作成しました。mysql接続のユーザー名とパスワードをSESSION変数に保存しています。この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を参照して同じセッションを開始しませんでした。ユーザー名とパスワードを郵便で渡したところ、接続が機能しました。

ありがとう!

**編集**申し訳ありませんが、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 に答える