2011-02-07 4 views
0

Я написал две функции setSes() и getSes(), и здесь я написал session_start(). Он просматривает все браузеры, кроме IE.Проблема сеанса в IE

function setSes(){ 
$res=mysql_fetch_assoc(mysql_query("select * from table1 limit 1"));//data from DB 
$_SESSION['ses1']=$res['name'];//Its not working .... $res['name']='Raj' 
$_SESSION['ses1']="priyabrata";//Its working 
} 

function getSes(){ 
session_start(); 
print"<pre>"; 
print_r($_SESSION); 
} 

пожалуйста, получить некоторые идеи

+0

Возможно, ваша проблема связана с кешем. – yoda

+0

Ваша первая проблема - mysql-запрос не вытягивает данные –

+0

Он написал, что только IE отказывается работать должным образом. Что делает браузер для РСУБД? – AlexanderMP

ответ

1

The PHP сессии пишет печенье, называемый PHPSESSID или что-то подобное. Вы можете изменить имя в php.ini или со специальными php-функциями.

В любом случае браузер должен принимать файлы cookie для работы сессий. IE (более ранние версии, возможно, даже позже) имеет принудительную политику безопасности, которая затрудняет передачу файлов cookie.

Предлагаю вам прочитать статью this, в которой содержится всестороннее исследование этой точной проблемы и решений.

У меня была эта проблема с IE. Если временная метка сервера была неправильной или другие параметры сервера выглядели «подозрительно» для фильтра cookie, cookie не принимался. Конечно, большинство этих параметров безопасности можно изменить и отключить в IE, но это необходимо сделать на стороне клиента, что не подходит.

1

Вы должны начать сеанс первого Перед тем, как задать переменные. Возможно, вы это делаете, но в коде, который вы связали, вы не показываете, какой порядок getSes() или setSes() вызывается, и вы, кажется, редактируете его на лету, поэтому я не могу не отставать.

Прочитайте здесь функцию начала сеанса.

http://php.net/manual/en/function.session-start.php

0

Ваш код подразумевает, что вы используете getSes(), чтобы получить отдачу от сессии и setSes(), если вы хотите, чтобы установить его. Теперь логически, вы должны установить значение, прежде чем вы сможете его получить, правильно?

Но с этим кодом вы бы не позвонили session_start(), установив свой var. Вызов session_start() первое, что в вашем скрипте, и он может перейти лучше ....

+0

@Nanne ----- Я пробовал ... – Priyabrata

+0

@Nanne --- Мы включили файл css fancybox css, и в конце файла fssbox css есть несколько строк (jquery.fancybox-1.3 .2.css) ". Fancybox-ie # fancybox-bg-n {filter: progid: DXImageTransform.Microsoft.AlphaImageLoader (src = 'fancybox/fancy_shadow_n.png', sizingMethod = 'scale');}". После удаления в этой строке я нашел, что сеанс работает. Но я не получил решение, объяснит ли кто-нибудь? – Priyabrata

+0

Хм. У меня действительно нет подсказки. Эти две вещи должны быть полностью разделены (помните, что css анализируется на стороне клиента, в то время как ваш сеансовый (php) код анализируется до того, как он переходит к клиенту). Может быть, вы должны сделать очень маленький пример, который также имеет такое поведение (маленький-как возможный файл css, который «блокирует» ваши сеансы, а тот, который этого не делает, и полный файл php, который идет с ним ..). Звучит довольно неясно, извините, я не могу больше помочь :) – Nanne

Смежные вопросы