Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 36

Некоректная работа сессий в Opera при авторизации

05.10.2015, 18:47. Показов 1067. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Задался вопросом написать скрипт авторизации на своем сайте на PHP. Сделал, использовал сессии браузера, все работает хорошо, только в опере при авторизации, или logout приходится пользователю вручную нажимать "обновить" в опере, потому что, переменные не коректно передаются через сессию. В хроме все хорошо, а опера нет, складыватся впечатление, как будто она берет значения переменных при авторизации из своего кэша, хотя я запретил ей кэшировать вообще страницы мета тэгом:
HTML5
1
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
и в заголовка указал:
PHP
1
header("Cache-Control: private, no-store, no-cache, must-revalidate, max-age=0");
Почему так происходит? Еслди вручную нажать в браузере "обновить", то все переменные становятся актуальными (при авторизации или выходе пользователя).
Ниже представлен код:

sidebar_right.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
$path="http://".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI'];
if(isset($_POST['exit']))
{
    $_SESSION['auth']='2';
    unset($_POST['exit']);
    unset($_SESSION['login']);
    $_SESSION=array();
    session_unset();
    session_destroy();
    ?>
        <script language="javascript">
            alert('Очень жаль, что вы покинули наш сайт')
            window.location.href = "<?php echo''.$_POST['url']; ?>"
        </script>
        <?php
    exit();
}
if(!empty($_SESSION['login'])and $_SESSION['auth']==1)
{   
    echo "<div class='border_line'>";
    echo "<span class='стиль24'>Добро пожаловать,</span> " . $_SESSION['login']."<br>";
    echo "<span class='стиль24'>Cообщений: </span>". $_SESSION['count']. "<br>";
    
    
    ?>
    <form action="" method="post">
      <div align="center">
      <?php
 echo"<input type='hidden' name='url' value='$path'>";
 ?>
        <input type="submit" name="exit" value="Выйти">
        </div>
    </form>
    <?php
    echo "</div><p></p>";
}
 
 
if($_SESSION['auth']!=1)
{
 
?>
<div class="border_line">
 <div class="zagolovokmainmenu">Авторизация:</div>
 <form action="auth/testreg.php" method="post">
 <div align="center">Имя:</div>
 <div align="center"><input name="login" type="text" size="20" maxlength="20"></div><p></p>
 <div align="center">Пароль:</div>
 <div align="center"><input name="password" type="password" size="20" maxlength="20">
 </div>
 <a href="reg.php" class="newlinks">Регистрация</a>
 <?php
 echo"<input type='hidden' name='url' value='$path'>";
 ?>
 <p align="center"><input type="submit" name="enter" value="Войти "></p>
 </form>
</div><p></p>
<?php
}
 
?>

testreg.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
session_start();
 
if(isset($_POST['login']))
{
    $login=$_POST['login'];
    if($login=='')
    {
        unset($login);
    }
}
if(isset($_POST['password']))
{
    $password=$_POST['password'];
    if($login=='')
    {
        unset($login);
    }
}
if(empty($login)or empty($password))
{
    ?>
        <script language="javascript">
            alert('Вы заполнили не все поля')
            window.location.href = "<?php echo''.$_POST['url']; ?>"
        </script>
        <?php
    exit();
}
$login=stripcslashes($login);
$login=htmlspecialchars($login);
$password=stripcslashes($password);
$password=htmlspecialchars($password);
$login=trim($login);
$password=trim($password);
include("bd.php");
$result=mysql_query("SELECT * FROM users WHERE login='$login'",$db);
$myrow=mysql_fetch_array($result);
if(empty($myrow['password']))
{
    ?>
        <script language="javascript">
            alert('Пользователя с таким именем не существует')
            window.location.href = "<?php echo''.$_POST['url']; ?>"
        </script>
        <?php
    exit();
}
else
{
    if($myrow['password']==$password)
    {   $_SESSION['count']=$myrow['count'];
        $_SESSION['login']=$login;
        $_SESSION['password']=$password;
        $_SESSION['coins']=$myrow['coins'];
        $_SESSION['auth']=1;
        
        ?>
        <script language="javascript">
            alert('Вы удачно вошли на сайт')
            window.location.href = "<?php echo''.$_POST['url']; ?>"
        </script>
        <?php
        exit();
    }
    else{
         ?>
        <script language="javascript">
            alert('Вы ввели не верный логин или пароль')
            window.location.href = "<?php echo''.$_POST['url']; ?>"
        </script>
        <?php
    exit();
    }
}
?>
Файл sidebar_right.php является правой колонкой сайта, он подгружается с главной страницы скриптом:
PHP
1
2
3
4
<?php
$file='sidebars/sidebar_right.php';
include($file);
?>
Ваше предложение!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2015, 18:47
Ответы с готовыми решениями:

Некоректная работа TChart
Здравствуйте. Я вывожу график решения дифура. Но почему-то с добавлением новых точек вместо гладкого графика он начинает отображать...

Некоректная работа @ActionLink
Всем Добра. Такой вопрос: есть у меня на странице _Layout.cshtml, ActionLink, выглядит вот так: @Html.ActionLink(&quot;LogOut&quot;,...

Некоректная работа калькулятора
Делаю калькулятор, столкнулся с проблемой : например при операции 2 - &gt; + -&gt; 3 -&gt; = -&gt; + выводит 8, а должен ждать ввод ещё одного...

11
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 36
07.10.2015, 14:58  [ТС]
Я так понимаю, что никакх предложений по этому поводу не будет?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.10.2015, 15:01
Цитата Сообщение от zeusgod Посмотреть сообщение
использовал сессии браузера
а что это за понятие - сессии браузера? Сессии - это серверный механизм, т.е. механизм PHP. Проверьте, включены ли COOKIE в опере.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
07.10.2015, 15:14
Цитата Сообщение от zeusgod Посмотреть сообщение
PHP/HTML
1
2
3
4
<script language="javascript">
* * * * * * alert('Очень жаль, что вы покинули наш сайт')
* * * * * * window.location.href = "<?php echo''.$_POST['url']; ?>"
* * * * </script>
А этот редирект в опере срабатывает?
0
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 36
07.10.2015, 16:02  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
А этот редирект в опере срабатывает?
да, работает, переходит на указанный в $_POST адрес
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
а что это за понятие - сессии браузера? Сессии - это серверный механизм, т.е. механизм PHP. Проверьте, включены ли COOKIE в опере.
Не стоит ципляться за понятия, главное что мы друг друга поняли. Куки включены, при выключенных куках сессии вообще не работают.

Еще варианты?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
07.10.2015, 16:14
Попробуйте при логауте вручную удалять куку с сессией.
PHP
1
setcookie(session_name(), '', time() - 42000, '/');
0
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 36
07.10.2015, 16:55  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Попробуйте при логауте вручную удалять куку с сессией.
насколько я помню, setcookie нужно использовать до вывода какого-либо текста, а в моем случае это не вариант, так как перед этим идет сообщение о том, что пользователь покинул сайт.
Это во первых, во вторых проблем не только при выходе пользователя, но и при его авторизации возникает.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
07.10.2015, 19:23
Цитата Сообщение от zeusgod Посмотреть сообщение
а в моем случае это не вариант, так как перед этим идет сообщение о том, что пользователь покинул сайт.
Почему перед? Сделайте после.
Цитата Сообщение от zeusgod Посмотреть сообщение
проблем не только при выходе пользователя
Я предложил вариант для логаута. Если поможет - можно будет сделать аналогично для логина.
0
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 36
07.10.2015, 22:58  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Почему перед? Сделайте после.
Я хочу использовать именно сессии, потому что сессии, в принципе, это не куки, хотя взаимосвязаны.
Сессии должны передоваться всегда, когда включены куки.
Цитата Сообщение от Jodah Посмотреть сообщение
Я предложил вариант для логаута. Если поможет - можно будет сделать аналогично для логина.
если использовать куки, то теже не вариант, по непонятной причине куки не передаются на другую страницу.
При включенных куки сессии должны всегда работать. Пример-гугл хром.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
07.10.2015, 23:16
Цитата Сообщение от zeusgod Посмотреть сообщение
Я хочу использовать именно сессии, потому что сессии, в принципе, это не куки, хотя взаимосвязаны.
Я не предлагаю переходить на куки. Я предлагаю проверить работоспособность конкретного варианта, и, в зависимости от исхода, думать дальше.
Цитата Сообщение от zeusgod Посмотреть сообщение
При включенных куки сессии должны всегда работать. Пример-гугл хром.
HTML во всех браузерах тоже должен всегда отображаться одинаково и по стандартам. На практике каждый делает, как хочет.
0
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 36
09.10.2015, 11:29  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Я не предлагаю переходить на куки. Я предлагаю проверить работоспособность конкретного варианта, и, в зависимости от исхода, думать дальше.
Не получилось. При логауте пользователя ничегь не происходит, нужно все равно в ручную обновлять страницу.
0
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 36
15.10.2015, 14:04  [ТС]
Варианты еще будут или уже все?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2015, 14:04
Помогаю со студенческими работами здесь

Некоректная работа php
Добрый день, всем у меня не корректно работает php в сервере половина скрипта обрабатывается другая половина у меня проста выводит на экран...

Некоректная работа сервера
Привет:-* Вот мой код, моего мягко говоря проекта. Состоит из сервера и клиента. Цель проекта: отправить скриншот. Сервер: procedure...

Некоректная работа на Windows XP
void __fastcall TForm11::Button2Click(TObject *Sender) { AnsiString sm,km,MLP1,MP1,MLP,MP; base1=Edit1-&gt;Text; ...

Некоректная работа пользовательской функции
Приложение Windows Presentetion Foundation Есть код: matr = &quot;&quot;; UpdateListView(); и функция private void...

Некоректная работа функции поиска
В методе класса PoiskPR некорректно работает код, не выводит на результаты на экран. Суть задания вывести на экран список избирателей по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru