2012-03-19 2 views
0

AJAX呼び出しに使用する一般的なPHPスクリプトを作成しました。私はセッション変数に格納されているmysql接続のユーザ名とパスワードを持っています。このajaxスクリプトで同じセッションを開始するために、セッションIDをポスト経由でajaxスクリプトに渡します。変数が正しく渡されており、ユーザ名とパスワードのSESSION変数が正しい値であることを確認してerror_logをチェックしました。ここにajax_script.phpがあります:ajaxで同じセッションIDを使用するとMySQL DBに接続できません

<?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を参照する同じセッションを開始しませんでした。私はポストを介してユーザー名とパスワードを渡し、接続が機能しました。

ありがとうございます!

** EDIT **申し訳ありませんが、私は間違った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

ユーザーテーブルのユーザーデータを表示する可能性があります。設定したホスト名を忘れたり、localhostを設定したりしますか? – Vytautas

答えて

1

あなたは

session_id($_POST['session_id']); 
に必要いけないだけ session_start()はたぶんあなたのセッションが近くに期限切れになる十分な

です。両方のページ

session_cache_expire(30); //expire in 30 minutes 

チェックセッション満了の詳細についてはthis答えに以下のコードを使用します。

+0

私はsession_id()を使用する必要はありません参照してください、ありがとう。しかし、接続はまだ動作しません。 –

+0

@jeffery_the_wind、セッションが期限切れになっている可能性があります。 – Starx

+0

@jeffery_the_wind、更新内容を確認してください – Starx

関連する問題