Я пытаюсь сохранить сеанс через запрос AJAX. Простой вызов session_start()
не вызывает существующий сеанс, а создает новый идентификатор сеанса. Мое решение состояло в том, чтобы передать идентификатор сеанса в PHP через вызов AJAX, но это привело к следующей ошибке:
Предупреждение: session_start () [function.session-start]: идентификатор сессии слишком длинный или содержит недопустимые символы, допустимые символы: a-z, A-Z, 0-9 и '-,' в ...
Я считаю, что это потому, что текущий идентификатор сеанса содержит символы подчеркивания, но этот идентификатор сеанса выбирается при вызове session_id()
, так как же он может содержать плохие символы?
Простой пример того, что я имею в виду:
JavaScript на странице (с использованием jQuery)
var sessID = "<?php echo session_id(); ?>"; //sessID contains underscore characters
$.get('/path/to/script.php',{sid:sessID}, function(data) {
//do something
});
script.php
<?php
session_id($_GET['sid']);
session_start();
echo $_SESSION['some_key'];
?>
Так что в настоящее время я думаю проанализировать идентификатор сеанса на первой странице и заменить все плохие символы в нем, прежде чем пытаться его использовать, но я не уверен, что это правильно, или мне нужно искать решение в другом месте.