PHP-Не удается получить значения из $ _SESSION, сообщение об ошибке — уведомление: Неопределенная переменная: _SESSION

#php #mysqli #session-variables

#php #mysqli #переменные сеанса

Вопрос:

Сначала позвольте мне объяснить мой код. Она состоит из трех php-файлов.

  1. inc_fn_header_and_menu.php содержит детали заголовка HTML и CSS и инициализирует сеанс через session_start();
  2. Позже это будет включено в project_status.php ] .
  3. В project_status.php ] , Я включил другой файл project_status_app.php которая содержит HTML-форму.

project_status.php:

 <?php
     include 'inc_fn_header_and_menu.php';
    function includeFile($file,$variable) {
        $var = $variable;
        include($file);
    }
    if (isset($_GET['id']) amp;amp; $_GET['id']!="") {
        $pid    = $_GET['id'];
        $_SESSION['pidForApproval'] = $_GET['id'];
        $query = 'SELECT * FROM `profile` WHERE pid ='.'''.$pid.''';
        $result=mysqli_query($db,$queryToRetrievePP) or die("There are no records to display ... n". 
        mysqli_error());
        foreach ($result as $row) {
            $status = $row['status'];
    ?&&t;
  

project_status_app.php

В project_status_app.php Я пытаюсь получить pidForApproval из массива $ _SESSION.

 <?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   include '../../inc/fastlo&in.php';      
   $sql = "UPDATE pp SET customer_purchase_remarks ='{$_POST['remarkstxt']}' WHERE pp.pid='{$_SESSION['pidForApproval']}'"; 
   $result = mysqli_query ( $fastdb, $sql ) ;
       if (mysqli_affected_rows($fastdb) != 1) { 
              $_SESSION['err_cpa_rmks'] = "<p&&t;Error while updatin& WHERE id='{$_SESSION['pidForApproval']}'</p&&t;";                                   
           } else { 
              $_SESSION['suc_cpa_rmks'] = "<p&&t;Records was updated successfully.</p&&t;";
           }
           header ("location: project_status.php?id="$_SESSION['pidForApproval']);
           exit();
          }                              
    ?&&t;
  

Когда я загружаю project_status.php , project_status_app.php предполагается, что она отображает форму. Как только пользователь заполнит форму и нажата кнопка отправки, должна выполняться инструкция UPDATE, а затем она должна вернуться к project_status.php?id=FA142. Но обновление завершается сбоем, и когда project_status.php загружен обратно, URL выглядит следующим образом http://localhost/fast/project_status.php?id = . Идентификатор пуст. Предполагается, что это должно быть что-то вроде этого http://localhost/fast/project_status.php?id=FA142 . С идентификатором, заполняемым в

 header ("location: project_status.php?id=".$_SESSION['pidForApproval']);
  

Я подозревал, что мой $ _SESSION[‘pidForApproval’] не заполняется в project_status.php, но я повторил $ _SESSION[‘pidForApproval’] в самом этом файле, и я вижу, что он заполняется. Следовательно, я подозреваю, что $_SESSION[‘pidForApproval’] не передается в project_status_app.php . Я уже пытался включить предложение session_start(); в project_status_app.php но это выдает ошибку, указывающую, что сеанс уже начался, в inc_fn_header_and_menu.php . Кто-нибудь может мне помочь относительно того, почему $_SESSION[‘pidForApproval’] не передается в project_status_app.php файл. Спасибо.

Комментарии:

1. В вашем коде header ("location: project_status.php?id="$_SESSION['pidForApproval']); отсутствует . предшествующая $_SESSION .

2. Внимание! Вы широко открыты для атак с использованием SQL-инъекций ! Вам следует использовать параметризованные подготовленные инструкции вместо использования полностью неэкранированных пользовательских данных непосредственно в ваших запросах подобным образом. Никогда, никогда не доверяйте пользовательскому вводу.