#php #mysqli #session-variables
#php #mysqli #переменные сеанса
Вопрос:
Сначала позвольте мне объяснить мой код. Она состоит из трех php-файлов.
- inc_fn_header_and_menu.php содержит детали заголовка HTML и CSS и инициализирует сеанс через session_start();
- Позже это будет включено в project_status.php ] .
- В 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-инъекций ! Вам следует использовать параметризованные подготовленные инструкции вместо использования полностью неэкранированных пользовательских данных непосредственно в ваших запросах подобным образом. Никогда, никогда не доверяйте пользовательскому вводу.