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

Сессия не передаёт данные

07.01.2018, 10:36. Показов 892. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста новичку! Есть главная страница index.php которая инклудит tetsreg.php
Вот код tetsreg.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
<?php 
# Данные о странице
$title = 'Вход';
$keywords = 'Вход';
$description = 'Вход';
$template = 'info';
$page_blocks = '';
 
/*  вся процедура работает на сессиях. Именно в ней хранятся данные  пользователя, пока он находится на сайте. Очень важно запустить их в  самом начале странички!!!*/
    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 должен быть в той же папке, что и все остальные, если это не так, то просто измените путь */
 
$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); /*извлекаем из базы все данные о пользователе с введенным логином*/
    $myrow = mysql_fetch_array($result);
    if (empty($myrow['password']))
    {
    /*если пользователя с введенным логином не существует*/
    exit ("Извините, введённый вами login1 или пароль неверный.");
    }
    else {
    /*если существует, то сверяем пароли*/
    if ($myrow['password']==$password) {
    /*если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!*/
    $_SESSION['login']=$myrow['login']; 
    $_SESSION['id']=$myrow['id'];/*эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь*/
 
    $content = "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a>";
    }
 else {
    /*если пароли не сошлись*/
 
    exit ("Извините, введённый вами login или пароль неверный.");
    }
    }
Потом перехожу на главную страницу и вывожу

PHP
1
2
<?php session_start();
if (isset ($_SESSION['login'])) {echo 'данных нет';}  else { echo 'Вы вошли как: '.($_SESSION['login']);var_dump( $_SESSION['login']); var_dump( $_SESSION['id']);}
И вот тут выходит ошибка:
Notice: Undefined index: login in /var/www/vhosts/u0430752.plsk.regruhosting.ru/urvoenpravo.ru/template/index.php
Вы вошли как:
Notice:Undefined index: login in /var/www/vhosts/u0430752.plsk.regruhosting.ru/urvoenpravo.ru/template/index.php
NULL
Notice: Undefined index: id in /var/www/vhosts/u0430752.plsk.regruhosting.ru/urvoenpravo.ru/template/index.php
NULL

session_start(); стоит только в index.php сразу в самом начале!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2018, 10:36
Ответы с готовыми решениями:

Сессия не передает значение переменной
Ситуация такая: внедряю механизм сессий с помощью массива $_SESSION. При переходе на другую страницу сессия не передает переменную....

$_GET не передает данные
Добрый день! Обращаюсь с элементарным, должно быть, вопросом. Но я новый человек в этом деле, поэтому не судите строго. По курсу Попова...

Не передает данные методом POST
Нужно передать данные из формы в php файл. форма в файле index.html &lt;form method=&quot;POST&quot; action=&quot;call.php&quot;&gt; &lt;input...

7
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
07.01.2018, 11:04
Цитата Сообщение от arga Посмотреть сообщение
session_start(); стоит только в index.php сразу в самом начале!
А почему только там, когда вы пытаетесь использовать сессию в tetsreg.php?

Добавлено через 6 минут
Если вы не обнаружили обязательную сессионную переменную, не нужно после else надеяться, что там будут другие подобные переменные - это тоже грубая ошибка.

Добавлено через 2 минуты
...А вы там полностью все перепутали. Сначала с логикой подружитесь
0
0 / 0 / 0
Регистрация: 24.09.2017
Сообщений: 37
07.01.2018, 11:16  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
А почему только там, когда вы пытаетесь использовать сессию в tetsreg.php?
Читал в статьях что если файл инклудится, то сессию открывать нужно в главной. Вот я добавил в tetsreg.php session_start()
Результат:
A session had already been started - ignoring session_start() in /var/www/vhosts/u0430752.plsk.regruhosting.ru/urvoenpravo.ru/content/registration/testreg.inc.php on line 1

Добавлено через 54 секунды
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Если вы не обнаружили обязательную сессионную переменную, не нужно после else надеяться, что там будут другие подобные переменные - это тоже грубая ошибка.
Я брал готовый код с сайта, вроде думал разобрался с ним. Не могли бы вы ткнуть меня носом в ошибку?
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
07.01.2018, 11:48
Цитата Сообщение от arga Посмотреть сообщение
Читал в статьях что если файл инклудится, то сессию открывать нужно в главной.
Да, не заметил вашего "инклудит". Но вы с терминологией все же разберитесь (включаемый файл в данном случае - часть главной) и покажите нормально содержимое главной, не обязательно все, а хотя бы структуру.

Цитата Сообщение от arga Посмотреть сообщение
Я брал готовый код с сайта
Брать недостаточно, нужно понимать, что взял.

Добавлено через 18 минут
Цитата Сообщение от arga Посмотреть сообщение
Не могли бы вы ткнуть меня носом в ошибку?
Видимо, недружбу с логикой привнесли все же вы сами
0
0 / 0 / 0
Регистрация: 24.09.2017
Сообщений: 37
07.01.2018, 12:00  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
и покажите нормально содержимое главной, не обязательно все, а хотя бы структуру
Думал отделаться малой кровью, ан нет ))))) НУ вот смотрите. Копаюсь в CMS небольшой и хочу добавить в неё регистрацию.
Index.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
<?php session_start();
 
# Вывод ошибок
error_reporting(E_ALL); // Уровень вывода ошибок
ini_set('display_errors', 'on'); // Вывод ошибок включён
ini_set('log_errors', 'on'); //Вкл логирование ошибок
ini_set('error_log', dirname(__FILE__). '/error_log.txt'); //Куда писать лог
 
# Абсолютный путь
$path = dirname(__FILE__) . '/';
 
 
# Подключение конфигов
include_once $path . 'config.inc.php';
 
# Заголовок кодировки
 
 
# Редирект для индексных файлов
$request_uri = str_replace($config['sitelink'], '', 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
if ($request_uri == 'index.php' || $request_uri == 'index.html'){
    header('Location: ' . $config['sitelink']);}
 
 
# Подключение библиотеки функций
include_once $path . 'func.inc.php';
$get_menu_items = 'GetMenuItems';
$get_complex_menu_items = 'GetComplexMenuItems';
$get_menu_items_u = 'GetMenuItemsU';
$get_block = 'GetBlock';
 
# Определение текущей страницы
$page = $this_page = (isset($_GET['content'])) ? $_GET['content'] : 'index';
$category = (isset($_GET['category'])) ? $_GET['category'] : '';
 
# Формирование GET запроса
parse_str(parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY), $_GET);
 
# Подключение данных меню и блоков
include_once $path . 'template/menu.inc.php';
include_once $path . 'template/blocks.inc.php';
 
# Подключение страницы или вывод ошибки
if ($category != '')
{
    if (is_file($path . "content/$category/$page.inc.php"))
        include_once $path . "content/$category/$page.inc.php";
    else
        error404(true, $config['encoding']);
}
else
{
    if (is_file($path . "content/$page.inc.php"))
        include_once $path . "content/$page.inc.php";
    else
        error404(true, $config['encoding']);
}
 
# Выбор шаблона дизайна
$template = (!empty($template)) ? $template : $config['template'];
 
# Вывод дизайна на экран
ob_start();
include_once $path . "template/$template.inc.php";
ob_end_flush();
Далее главная инклудит info.inc.php вот этой строкой
PHP
1
include_once $path . "template/$template.inc.php";
, которая в свою очередь отображает testreg.php для входа на сайт
Вот её код:
PHP/HTML
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
<!DOCTYPE html>
<body>
<!--header-->       
<header class="navbar navbar-fixed-top1">
 
    <nav class="navbar-inner">
        <div class="container-fluid">
            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </a>
            <!--<a class="brand" href="<?=$config['sitelink']?>"><?= $config['sitename']?></a>-->
            
            
            <center> <a href="<?=$config['sitelink']?>" title="<?=$config['sitename']?>">
<img src="<?=$config['sitelink']?>i/logo-small.png" alt="UPV" style="height:200px; width:100%;"></a></center>
                </div>  
</nav>
 
<div>
<nav class="navbar-innermenu">
 
<a href="<?=$config['sitelink']?>" class="cd-signin">Главная</a> 
<a href="<?=$config['sitelink']?>articles.html" class="cd-signin">Статьи</a>
<a href="<?=$config['sitelink']?>contact.html" class="cd-signin">Контакты</a>
</nav>
</div>
 
                       <div class="nav-collapse collapse">
                        <ul class="nav pull-left" align="center">
                    <?=GetMenuItems($this_page, $mainmenu, $category)?>
                </ul>
            </div>
        
 <?php If  (isset($_SESSION['login'])){require ('head_reg.php');}    else  {require ('head_auth.php');var_dump( $_SESSION['login']); var_dump( $_SESSION['id']);}
 
?>
 
</header>
 
    <section class="content container-fluid" style="background-color:#5181b8"><?/*цвет основного фона*/?>
 
        <div class="share42init pull-right" data-url="<?= $config['sitelink'] . $page ?>.html" data-title="<?= $title ?>"></div>
 
<br>
 
                <div class="row-fluid">
            <article class="span9 well well-large well-inverse" style= "background-color:#ebf0f5; align:left;"><?/*цвет блока основного*/?>
                     <nav class="main-nav1">
        <a href="javascript:history.back(1)"  >Назад</a><br><br> 
         </nav> 
                         <h1><?=$title;?></h1>
                <?=$content; ?>
 
                </article>
И вот содержимое head_reg.php
HTML5
1
2
3
4
5
<nav class="main-nav">
<ul>                <li><a class="cd-signin" href="http://мой сайт/registration/input.html">Вход</a></li>
                <li><a class="cd-signin" href="http:/мой сайт/registration/reg.html">Регистрация</a></li>
            </ul>
</nav>
И вот содержимое head_auth.php
PHP/HTML
1
2
3
<nav class="main-nav">
<? if (isset ($_SESSION['login'])) {echo 'данных нет';}  else { echo 'Вы вошли как: '.($_SESSION['login']);}  ?>
</nav>
Добавлено через 9 минут
И вот ещё что. Попробовал в файлеtestreg.php сделать так:
PHP
1
2
3
4
5
6
7
       /*если существует, то сверяем пароли*/
                          if ($myrow['password']==$password) {
                                /*если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!*/
                          $_SESSION['login']=$myrow['login']; 
                          $_SESSION['id']=$myrow['id'];/*эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь*/
                echo $_SESSION['login'];
                          $content = "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a>";}
И логин отобразился....
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
07.01.2018, 12:02
Я спустя четверть часа все же ткнул вас носом, не дождавшись реакции. Обратите внимание на логику внутри head_auth.php. Да и: эта "CMS" - старье, к тому же дырявое.
0
0 / 0 / 0
Регистрация: 24.09.2017
Сообщений: 37
07.01.2018, 12:27  [ТС]
С такими ответчиками как вы желаю удачи этому форуму. На другом замечательно обо всё разобрались )))))))) Покэ
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
07.01.2018, 12:43
Я не "ответчик". Просто показалось, что вы в состоянии хоть немного подумать, если дать подсказку. Жаль, что я ошибался. Удачи другому форуму
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2018, 12:43
Помогаю со студенческими работами здесь

Форма не передает данные сама себе
есть скрипт где создается форма для ввода пары логин\пароль. тут же есть обработчик для введенных данных: &lt;?php // подключаю...

select multiple не передает данные в $_POST
Здравствуйте! Второй день ломаю голову над скриптом, обгуглил все что можно но решить проблему так и не удается. Проблема в том что...

POST не передает данные из формы на сайте
Добрый день, помогите, пожалуйста. Есть форма на сайте, понадобилось добавить условие &quot;кнопка отправки не активна пока input...

Метод POST передает ошибочные данные
Перерыв весь google, сломав голову в поиске решения проблемы, решил обратиться за помощью. Итак, есть форма &lt;form...

Форма обратной связи не передает данные
Добрый день! Делаю форму обратной связи, сообщения приходят, но пустые. Почему то данные из $_POST не передаются. Форм у меня несколько...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
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 через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru