[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: про сессии ajax и php
megadom
тема Онлайн чат, с одной стороны пользователь с другой админка. на стороне пользователя для опознания использую сессию.
ниже приведенный код показывает панель-ссылку"Online Консультант"
если консультант был в сети не позже чем 60 сек назад
и подключается в шаблон index файла
<?php
$online_time = time();
$res = mysqlQuery("SELECT * FROM online_admin");
while($row = mysql_fetch_array($res))
{
$time_admin=(int)$row['time'];
if ($online_time<$time_admin+60)
{print "
<script type=
\"text/javascript\" src=\"http://jqueryjs.googlecode.com/files/jquery-1.3.2.js\"></script>
<script type=
\"text/javascript\" charset=\"utf-8\" src=\"/js/jquery-1.5.1.min.js\"></script>
<script type=
\"text/javascript\" charset=\"utf-8\" src=\"/js/cometClient.js\"></script>

<a class=
\"trigger\" href=\"#\">Online<br>Консультант</a>
<div class=
\"panel\">
<h2>Здравствуйте!<br>Задайте свой вопрос!</h2>
<div id=
\"text_chat\"></div>
<h3>Ваше Имя
<input type=
\"text\" id=\"myname\" size=\"15\" maxlength=\"20\" value=\"Неизвестный\"
onFocus=\"if(this.value=='Неизвестный'){this.value=''}\" onBlur=\"if(this.value==''){this.value='Неизвестный'}\"></h3>
<input type=
\"text\" id=\"mymessege\" size=\"30\" maxlength=\"400\">
<input type=
\"button\" id=\"sendbutton\" value=\"Отправить\">
</div>
"
;
}
}

?>


после ввода сообщения в поля текста и нажатия "отправить"
мы перемещаемся в js модуль где обрабатываются все действия ajax-ом
а именно:

function sendMessage() {
if ($('#myname').val() && $('#mymessege').val()) {
var data = {
myname: $('#myname').val(),
mymessege: $('#mymessege').val(),
}

$.post('addMessage.php', data);
$('#mymessege').val('');
}
}



$(document).ready(function(){
$(".trigger").animate({right: 0}, 1000);
$(".trigger").animate({right: -10}, 300);
$(".trigger").animate({right: 0}, 300);
$(".trigger").click(function(){
$(".panel").toggle("fast");
$(this).toggleClass("active");
return false;
});

$('#sendbutton').click(function() {
sendMessage();
})

})


и наконец мы попадаем в файл занесения сообщения в БД:
<?php

header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

define('MEGA_KEY', true);
include 'config.php';
include 'libs/mysql.php';


if (isset($_POST['myname'], $_POST['mymessege']))
{
if (isset($_SESSION['guest']))
{
$session=$_SESSION['guest'];
mysqlQuery("INSERT INTO user_chat SET session = '$session'");
}

тут я для примера написал что заношу в БД новую запись если сессия определена, но на практику сессия guest пустая, старт сессии в этом файле не помогает, а только повисает запрос..
не могу понять где пропала сессия? и как в последнем пхп получить её значение? где-то что-то не догоняю, вразумите, плиз!



Спустя 53 минуты, 30 секунд (30.07.2012 - 12:25) inpost написал(а):
Вообще, чтобы работала сессия, надо писать session_start();

Спустя 10 минут, 45 секунд (30.07.2012 - 12:35) megadom написал(а):
спасибо конечно,но я написал, что ->
Цитата
старт сессии в этом файле не помогает, а только повисает запрос..


Спустя 3 минуты, 57 секунд (30.07.2012 - 12:39) inpost написал(а):
Сессия не может повисать файл, возможно проверка, которая удовлетворяет запросу её даёт такой результат. Но для этого необходимо сделать всё правильно и стартовать сессию во всех файлах.

Спустя 32 минуты, 12 секунд (30.07.2012 - 13:12) AlexanderPHP написал(а):
А
var_dump($_REQUEST);

Что выдает?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.