$ _SESSION ['user'] не работает - PullRequest
0 голосов
/ 10 июня 2011

ТАК это код для регистрации и где я его установил

<?php 
    session_start();
    $_SESSION['user'] = "kjkj";
    $_SESSION['pass'] = "";  
    $error = $user = $pass = "";

    if (isset($_POST['user'])) {
        $user = sanitizeString($_POST['user']);
        $pass = sanitizeString($_POST['pass']);

     if ($user == "" || $pass == "") {
            $error = "Not all fields were entered<br />";
     } else {
            $query = "SELECT store,c_pass FROM store
                    WHERE store='$user' AND c_pass='$pass'";

            if (mysql_num_rows(queryMysql($query)) == 0) {
                $error = "Username/Password invalid<br />";
            } else {
            $_SESSION['user'] = $user;
                $_SESSION['pass'] = $pass;
            $str = $_SESSION['user'] . ", You are now logged in. Please 
                       <a href='scheduler.php'>click here</a>.";

                die($str);
            }
        }
    } ?>

Он напечатает правильное имя магазина после запроса и все такое.Но когда я пытаюсь использовать его в другом php-файле, как этот

if (!isset($_SESSION['user']) ) {
    die("<p><h1>Please Login</h1></p>");
} else {
    echo "<p><form id ='addemp' method=\"post\" action=\"addUser.php\">
          Name<input type=\"text\" name=\"emp\" />
      \"". $_SESSION['user'] . "\">
      <input type=\"submit\" value=\"AddUser\" />
    </form></p>";
}

, это пустая строка.Не пусто, просто пустая строка.Я перепробовал все решения, которые могу найти в интернете, но ни одно из них не сработало.У меня есть идеи относительно того, почему это не работает.Спасибо за любую помощь, спасибо.

Ответы [ 6 ]

2 голосов
/ 10 июня 2011

Это может быть несколько вещей. Прежде всего, сеансы работают в другое время? Я не думаю, что вы предоставили достаточно информации, чтобы мы могли вам помочь. Это может быть проблемой с настройкой apache / php, а не только вашего кода. Это случалось со мной раньше, когда я разрабатывал в Windows с WAMP и временная папка не имела правильных разрешений. Как я уже сказал, может быть много проблем, из-за которых ваша сессия будет работать неправильно.

  • Когда вы делаете счетчик и обновляете страница хранит номер?
  • На начало каждого использования сеансов, которые вам нужны Вызов метода session_start (). Важно: не должно быть никаких отголосков, отпечатков и т. Д session_start ().
  • Поставьте var_dump($user) перед $_SESSION['user'] = $user; и проверьте содержимое $ user, прежде чем оно будет сохранено. Возможно, ваша дезинфицирующая функция не работает должным образом. Сделайте это также в конце первого скрипта, чтобы увидеть содержимое $_SESSION, чтобы убедиться, что переменные сохранены правильно.
1 голос
/ 10 июня 2011

Вам необходимо позвонить session_start() перед использованием $_SESSION. Также обратите внимание, что хранение пароля в сеансе - это ПЛОХАЯ практика и БОЛЬШАЯ дыра в безопасности.

0 голосов
/ 01 октября 2015

Возможно, это проблема, с которой я столкнулся некоторое время назад, прекрасно сделал весь код, но забыл вставить session_start(); в сценарий подключения, ведьма получает логин $_POST['somevariable'] для проверки с помощью БД.

При возобновлении не забудьте начать сеанс связи.

0 голосов
/ 26 февраля 2014

Исходя из ответа @kpaulsen,

У меня возникла такая же ситуация с ним, $ variable перезаписывает $ _SESSION ['variable'], поэтому я последовал его предложению, но потом он мне не подошелдругой способ установки register_globals = Off

Добавить эту строку в .htaccess

php_flag register_globals off
0 голосов
/ 08 февраля 2013

Похоже, что у ОП была проблема с register_globals.

В php.ini установите register_globals = Off, затем повторите код.

У меня была точно такая же проблема - у меня былапользовательскую переменную в сеансе, а затем установить $user = array(); и обнаружил, что переменная $user перезаписывает переменную $_SESSION['user'].Отключение register_globals исправило это.

Или вы можете изменить переменную $ user на что-то вроде $ myUser, но лучше все равно отключить register_globals.

0 голосов
/ 10 июня 2011

Если вы утверждаете, что вставили session_start () на этой странице, сделайте 2 вещи:

1) исправьте html, эту строку.

echo "<p><form id ='addemp' method=\"post\" action=\"addUser.php\">
          Name<input type=\"text\" name=\"emp\" />
      \"". $_SESSION['user'] . "\">

Есть что-то не совсем понятное.Где вы отражаете вашу $ _SESSION?Может быть, ваш браузер не в состоянии сделать это?Чего ты хотел достичь?Возможно, браузер неправильно интерпретирует закрывающий тег >.Попробуйте привести в порядок HTML.Если это значение входного поля, напишите

Name <input type=\"text\" name=\"emp\" value=\"".$_SESSION['user']."\"/>

2) var_dump $ _SESSION ['user'], чтобы увидеть, действительно ли это пустая строка.

if (!isset($_SESSION['user']) ) {
    die("<p><h1>Please Login</h1></p>");
} else {
    var_dump($_SESSION['user']);
}
...