Использование идентификатора сеанса в ajax не может подключиться к БД MySQL - PullRequest
0 голосов
/ 19 марта 2012

Я создал общий PHP-скрипт, который будет использоваться для вызова AJAX.У меня есть имя пользователя и пароль для подключения mysql, хранящиеся в переменных SESSION.Чтобы начать тот же сеанс в этом сценарии ajax, я передаю идентификатор сеанса по почте сценарию 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, как указано выше.Я передавал имена пользователей и пароли по почте, и связь работала.

Спасибо!

** РЕДАКТИРОВАТЬ ** Извините, я использовал неправильный 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 Ответ

1 голос
/ 19 марта 2012

Вам не нужно

session_id($_POST['session_id']);

Просто session_start() достаточно

Возможно, ваша сессия истекает при закрытии.Используйте следующий фрагмент на обеих страницах

session_cache_expire(30); //expire in 30 minutes

Проверьте этот ответ для получения дополнительной информации об истечении сеанса.

...