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

Не сохраняются сессии

18.08.2010, 09:00. Показов 8700. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помочь доделать функцию Запомнить меня , и закрыть баги если такие есть ....

login.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
<?
if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
print <<<HERE
<center>
<table style='margin:auto' width='15%' class='regform'>
</center>
        <TBODY>
        <TR>
<form action="testreg.php" method="post">
<td><font size='2'>Логин : </font></td>
<td>
 
<input name="login" type="text" size="15" maxlength="25"
</td></tr>
HERE;
 
    
if (isset($_SESSION['login'])) 
{
 
echo ' value="'.$_SESSION['login'].'">';
}
 
 
print <<<HERE
<tr><td><font size='2'>Пароль:</font></td>
<td>
 
<input name="password" type="password" size="15" maxlength="25"
</td>
</tr>
 
HERE;
 
    
if (isset($_SESSION['password']))
{
 
echo ' value="'.$_SESSION['password'].'">';
}
    
print <<<HERE
</table>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->  
<center>
<input name="save" type="checkbox" class="checkbox" value='1'><font size='1'>Запомнить меня</font></center>
<center>
<table class='regform' style='margin:auto'>
<tr>
<td>
<input type="submit" name="submit" value="Вход">
</td>
<td>
<input type="reset" name="submit" value="Очистить поля"></center></table>
</td>
</table>
</form>
 
HERE;
}
 
else
{
 
 
 
print <<<HERE
 
<center><font size='2'>Внимание! Вы уже авторизованы как <b>$_SESSION[login]</b> <br> <center><a href='index.php'>Вернуться на главную</a></font></center>
 
HERE;
}
 
?>
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
77
78
79
80
81
82
83
84
<?php
session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
 
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
 
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); //останавливаем выполнение сценариев
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
 
$password = stripslashes($password);
$password = htmlspecialchars($password);
 
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
 
 
// дописываем новое********************************************
 
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
 
 
 
$password = md5($password);//шифруем пароль
$password = strrev($password);// для надежности добавим реверс
$password = $password."b3p6f";
//можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать методом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.
 
//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.
 
 
$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password'",$db); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{
//если пользователя с введенным логином и паролем не существует,то записываем ip пользователя и с датой ошибки
 
$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0]) {
//проверяем, есть ли пользователь в таблице "oshibka"
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
 
$col = $myrow52[0] + 1;//Если есть,то приплюсовываем количесво 
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");
}
 
else {
//если за последние 15 минут ошибок не было, то вставляем новую запись в таблицу "oshibka"
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
}
 
exit ("Извините, введённый вами логин или пароль неверный."); //останавливаем выполнение сценариев
 
}
else {
 
          //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
          $_SESSION['password']=$myrow['password']; 
          $_SESSION['login']=$myrow['login']; 
          $_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
          
//Далее мы запоминаем данные в куки, для последующего входа.
//ВНИМАНИЕ!!! ДЕЛАЙТЕ ЭТО НА ВАШЕ УСМОТРЕНИЕ, ТАК КАК ДАННЫЕ ХРАНЯТСЯ В КУКАХ БЕЗ ШИФРОВКИ
 
if (isset($_POST['save'])){
//Если пользователь хочет, чтобы его данные сохранились для последующего входа, то сохраняем в куках его браузера
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);}
}   
      
echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
 
//перенаправляем пользователя на главную страничку, там ему и сообщим об удачном входе
 
?>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.08.2010, 09:00
Ответы с готовыми решениями:

Не сохраняются сессии
После ввода логина и пароля происходит авторизация, а после того как я перехожу по ссылке на главную, переменные сессии сбрасываются (в...

Сессии не сохраняются
Всем привет. У меня есть страница functions.php, которая содержит код для страницы авторизации: class AuthClass { ...

Не сохраняются переменные в сессии
Добрый день такая беда, вот есть клиент для windows, с помощью данного клиента отсылаются некие данные на сервер. Первое это IP адрес,...

10
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
18.08.2010, 13:37
В файле login.php тоже нужно прописать session_start()
0
 Аватар для Khvosticov
0 / 0 / 0
Регистрация: 16.07.2010
Сообщений: 29
18.08.2010, 16:17  [ТС]
Прописано , просто я основной код вам дал
Вот полный
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
 
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
 
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password'",$db); 
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
include "engine/conf/config.php";
?>
<html>
<head>
<title>Авторизация пользователя</title>
<meta http-equiv=content-type content="text/html; charset=windows-1251">
<meta name="robots" content="index,nofollow">
<META content="Авторизация пользователя логин пароль запомнить меня вход lgsl" name="keywords">
<META content="Авторизация пользователя" name="description">
<?
include "nav.php";
  include "html/games.html";
?>
 
<hr color="f5f5ea">
<?
if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<center>
<table style='margin:auto' width='15%' class='regform'>
</center>
        <TBODY>
        <TR>
<form action="testreg.php" method="post">
<!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post"  -->
<td><font size='2'>Логин : </font></td>
<td>
 
<input name="login" type="text" size="15" maxlength="25"
</td></tr>
HERE;
 
    
if (isset($_SESSION['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_SESSION['login'].'">';
}
 
 
print <<<HERE
<tr><td><font size='2'>Пароль:</font></td>
<td>
 
<input name="password" type="password" size="15" maxlength="25"
</td>
</tr>
 
HERE;
 
    
if (isset($_SESSION['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_SESSION['password'].'">';
}
    
print <<<HERE
</table>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->  
<center>
<input name="save" type="checkbox" class="checkbox" value='1'><font size='1'>Запомнить меня</font></center>
<center>
<table class='regform' style='margin:auto'>
<tr>
<td>
<input type="submit" name="submit" value="Вход">
</td>
<td>
<input type="reset" name="submit" value="Очистить поля"></center></table>
</td>
</table>
</form>
 
HERE;
}
 
else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//************************************************************************************
 
 
print <<<HERE
 
<center><font size='2'>Внимание! Вы уже авторизованы как <b>$_SESSION[login]</b> <br> <center><a href='index.php'>Вернуться на главную</a></font></center>
 
 
 
 
 
HERE;
 
 
//************************************************************************************
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.
}
 
?>
<? include "html/footer.php"; ?>
</body>
</html>
0
 Аватар для Dimedrol
2378 / 941 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
18.08.2010, 16:20
Попробуйте прописать
PHP
1
error_reporting(E_ALL);
0
 Аватар для Khvosticov
0 / 0 / 0
Регистрация: 16.07.2010
Сообщений: 29
18.08.2010, 16:28  [ТС]
где если не секрет ?
0
 Аватар для Dimedrol
2378 / 941 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
18.08.2010, 16:56
В самом верху, после <?php
0
 Аватар для Khvosticov
0 / 0 / 0
Регистрация: 16.07.2010
Сообщений: 29
18.08.2010, 17:13  [ТС]
И так сейчас перезашёл на сайт свой выход/вход - не закрывая вкладку в мазиле закрыл браузер , открыл всё сохранилось , потом закрыл вкладку выключил браузер зашёл на сайт по тому-же адресу вместе с www. но уже меня выкинуло , не сохранилось ,,, может где-то сессии нужно поменять на куки ?
0
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
18.08.2010, 17:17
Khvosticov, конечно куки!
$_COOKIES - массив с куками, setcookie(var,value,time), var - имя переменной, value - значение, time - время, в течение которого будет существовать кука. Функция создаёт куки.
0
 Аватар для Khvosticov
0 / 0 / 0
Регистрация: 16.07.2010
Сообщений: 29
18.08.2010, 17:27  [ТС]
Цитата Сообщение от Hagrael Посмотреть сообщение
Khvosticov, конечно куки!
$_COOKIES - массив с куками, setcookie(var,value,time), var - имя переменной, value - значение, time - время, в течение которого будет существовать кука. Функция создаёт куки.
Можно подробнее?
0
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
18.08.2010, 18:30
Khvosticov,
http://php.su/functions/?setcookie
вот. Тут всё подробно описано.
0
 Аватар для Khvosticov
0 / 0 / 0
Регистрация: 16.07.2010
Сообщений: 29
18.08.2010, 19:12  [ТС]
Можно с моим скриптом разобрать - тут на форуме?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.08.2010, 19:12
Помогаю со студенческими работами здесь

Данные не сохраняются в переменную сессии
Хочу сделать вход на сайт. После обработки кода сохраняються куки, а сессия не хочет. &lt;?php session_start(); ?&gt; &lt;?php...

Почему сессии сохраняются не всегда?
Всем привет! Подскажите пожалуйста опытные разработчики решение следующей проблемы. Написал некий проект, который подразумевает без...

Сессии не сохраняются при переходе на другую страницу
Привет всем. Цель кодов- в файле index.php следующий код: &lt;html&gt; &lt;head&gt; &lt;link rel=&quot;icon&quot;...

Передача сессии: сохраняются не все данные
здравствуйте, я сделал форму авторизации и обработчик Обработчик: &lt;?php include_once(&quot;../users/bd.php&quot;); ?&gt; ...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru