код не может ссылаться на сеансы, которые я установил ранее (PHP 7.2) - PullRequest
0 голосов
/ 30 марта 2019

Я использую сеансы для отправки сообщения об успехе или ошибке на следующий сайт, где я использую файл php для отображения этого сообщения.

по любой причине файл message.php не можетчтобы обратиться к сеансам, которые я установил ранее.

Например: сценарий входа в систему устанавливает сеансы в зависимости от того, был ли вход успешным или нет.Затем он перенаправляет вас на следующую страницу, где я использую message.php в качестве включения для каждого моего сайта.Предполагается, что на каждом сайте будет отображаться сообщение, когда сеансы были установлены ранее.

<?php
session_start();

if (isset($_SESSION['msgType']) AND isset($_SESSION['msgMessage'])) {
  if ($_SESSION['msgType'] != "" AND $_SESSION['msgMessage'] != "") {

    if ($_SESSION['msgType'] == "error") {
      ?>
      <div class="alert alert-danger alert-dismissible fade show" role="alert">
        <strong>Fehler!</strong> <?php echo $_SESSION['msgMessage']; ?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <?php
    } elseif ($_SESSION['msgType'] == "warning") {
      ?>
      <div class="alert alert-warning alert-dismissible fade show" role="alert">
        <strong>Warnung!</strong> <?php echo $_SESSION['msgMessage']; ?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <?php
    } elseif ($_SESSION['msgType'] == "success") {
      ?>
      <div class="alert alert-success alert-dismissible fade show" role="alert">
        <strong>Erfolg!</strong> <?php echo $_SESSION['msgMessage']; ?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <?php
    }
  }
}

$_SESSION['msgType'] = "";
$_SESSION['msgMessage'] = "";
?>
<?php
session_start();

$_SESSION['msgType'] = "success";
$_SESSION['msgMessage'] = "some message";

?> <script> window.location = "some URL"; </script> <?php
exit;

Первый код - это файл message.php, в который сеансы переводятся в сообщения.Второй код является частью сценария входа в систему.Где установлен сеанс, и вы будете перенаправлены.

По любой причине сообщение не отображается вообще.Можете ли вы увидеть какие-либо проблемы в моем коде?

Кроме того, если кто-то может сказать мне, почему я не могу использовать header('Location: URL') для перенаправления и должен вместо этого использовать <script> window.location = "some URL"; </script>, просто дайте мне знать, пожалуйста.

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Обработка сеанса PHP по умолчанию заключается в использовании файлов cookie через заголовок.Тот факт, что вы получаете сообщение об ошибке при попытке установить заголовок Location, указывает на то, что выходные данные уже сделаны.

Убедитесь, что ваш скрипт начинается с <?php с первого символа без каких-либо пробелов.Также убедитесь, что ваш редактор не хранит BOM (метку порядка байтов) в начале файла.

См. Также: https://en.wikipedia.org/wiki/Byte_order_mark

0 голосов
/ 30 марта 2019

ДА ВЫ МОЖЕТЕ, используйте заголовок ('location: your_url')

<?php
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session')); //PUT THIS ON THE TOP
session_start();

Попробуйте

...