Через AJAX не передаётся сессия

Bars

Новичок
При передаче данных из формы посредством AJAX не передаётся сессия => PHP не может её получить.

JavaScript написал(а):
function addcomment()
{
var id = $('#newsid').val();
var text = $('#commtext').val();
var captcha = $('#commcode').val();
$('#loading').css('display','inline');
$.ajax({
type: "POST",
url: "/inc/ajax/addcomment.php",
data: "id="+id+"&captcha="+captcha+"&text="+text,
success: function(res) {
if(parseInt(res)!=0){
$("#commresult").html(res);
$('#loading').css('display','none');
}
}
});
}
Библиотека jQuery подключена (1.8.3).

PHP:
<?php

sleep(3);
include '../db.php';

$id = (int)$_POST['id'];
$ip = $_SERVER["REMOTE_ADDR"];
$onlydate = date("d-m-Y");
$player = $_SESSION['player'];
// Сделать CAPTCHA!!!
if (strlen($_POST['text']) > 600 || strlen($_POST['text']) < 5){?>
<div class="notify_box notify notify_error">
<p><span>Ошибка</span>Комментарий должен содержать от 5 до 600 символов</p>
</div>
<?php
exit;
} else {

$fin = array("&", "`", "\n", "\r");
$rep = array("&amp;", "&acute;", "<br />", "<br />");
$text = htmlspecialchars(stripslashes($_POST['text']));
$text = str_replace($fin, $rep, $text);

  $smilies = array("smile", "wink", "sneaky", "O_o", "good", "bad", "facepalm", "unsure", "frown", "cry", "biggrin", "LOL", "cool", "eek", "confused", "tongue", "laugh", "rolleyes", "nya", "cautious", "mad", "creeper", "poop"); // Массив смайлов

  foreach ($smilies as $smile){
	  $find[] = "*$smile*"; // Находим текстовые смайлы
	  $replace[] = "<img src=\"/tpl/img/smiles/$smile.gif\" align=\"absmiddle\" />"; // И заменяем на графические
  }

  $text = str_replace($find, $replace, $text);

$con;
mysql_select_db($ocName);
$repque = mysql_query("SELECT `text` FROM `only_comments` WHERE `author`='$player' ORDER BY `id` DESC LIMIT 1");
$repres = mysql_result($repque,0);

mysql_close($con);
echo $repres;
}
?>
Если переменной $player присвоить значение 'Bars' (к примеру), то комментарий добавляется. А из-за того, что не читается сессия, MySQL экранирует ошибку (undefined).
 

hell0w0rd

Продвинутый новичок
Посмотри что в заголовках передается в профайлере.
Также советую обратить внимание на http://www.php.net/manual/ru/function.nl2br.php
PHP:
data: "id="+id+"&captcha="+captcha+"&text="+text,
Также тихий ужас, передавать json в data
Еще могу ошибаться, но у тебя скорее по семантике должен быть get а не post запрос.
 
  • Like
Реакции: Bars

Bars

Новичок
Посмотри что в заголовках передается в профайлере.
Также советую обратить внимание на http://www.php.net/manual/ru/function.nl2br.php
PHP:
data: "id="+id+"&captcha="+captcha+"&text="+text,
Также тихий ужас, передавать json в data
Еще могу ошибаться, но у тебя скорее по семантике должен быть get а не post запрос.
За nl2br большое спасибо. В AJAX POST и GET запросы передаются одинаково.
Самый лучший ответ! Как я до этого сразу недодумался? :)
Кстати, у меня при авторизации появляется несколько файлов с сессиями. Их лучше подписывать или оставлять без названия, т.е. session_start()?
 

hell0w0rd

Продвинутый новичок
PHP:
<IfModule mod_php5.c>
    php_flag magic_quotes_gpc    off
    php_flag magic_quotes_sybase off
    php_flag register_globals    off
    php_flag session.auto_start  off
</IfModule>
Лучше все сразу добавить) Последняя строка отключает автостарт сессии, мб дело в этом)
 
Сверху