簡體   English   中英

提交表單后清除PHP Session數據

[英]PHP Session data clears after form submit

我將會話數據存儲在$ relnum變量中,如下所示:

if (!isset($_SESSION)) {
    session_start();
    $_SESSION['releasen'] =$_POST['release_no'];
    $relnum=  $_SESSION['releasen']; 
}

並將其顯示在表單文本字段中,如下所示;

<input name="relnu" id="relnu" type="text" value="<?php if ($rel==''){ echo $relnum;} else echo $rel; ?>" readonly="true"/>

我正在mysql中提交上述Form數據,如下所示;

if (isset($_POST['submitM']))  {
    $faultd=$_POST['faultdistribution'];
    $faultdes=$_POST['faultdescription'];
    $faultsev=$_POST['faultseverity'];
    $faultt=$_POST['faulttype'];
    $faultn=$_POST['faultcmnt'];
    $rel=$_POST['relnu'];
    $query = mysql_query("INSERT INTO `fault` (`fault-cmnt`,`fault-type`, `release_no`, `fault-discription`, `fault-severity`, `fault-distribution`) VALUES ('$faultn','$faultt', '$rel', '$faultd', '$faultsev', '$faultdes')")
        or die(mysql_error());
    echo "Data Added sucessfully";
}

數據已成功提交,但之后$ relnum變量不顯示任何內容。 我無法理解是什么原因,因為我將數據存儲在會話中。

PS:我沒有使用unset。

請幫助,我想念的是什么?

您無需以表格形式發布會話數據,否則您的代碼看起來不錯。 您可以通過以下形式將其發布,從而輕松實現:

if (isset($_POST['submitM']))  {
    session_start();
    $faultd=$_POST['faultdistribution'];
    $faultdes=$_POST['faultdescription'];
    $faultsev=$_POST['faultseverity'];
    $faultt=$_POST['faulttype'];
    $faultn=$_POST['faultcmnt'];
    $rel=$_SESSION['releasen'];
    $query = mysql_query("INSERT INTO `fault` (`fault-cmnt`,`fault-type`, `release_no`, `fault-discription`, `fault-severity`, `fault-distribution`) VALUES ('$faultn','$faultt', '$rel', '$faultd', '$faultsev', '$faultdes')")
        or die(mysql_error());
    echo "Data Added sucessfully";
}

它將正常工作,請對其進行測試。

謝謝

請記住, session_start()僅將臨時變量存儲在服務器端,請檢查是否在每個頁面上都有session_start() ,以檢查僅在該頁面上回顯您的會話變量,如果它沒有回顯任何內容,則檢查先前的位置會話變量,它可以幫助您自己解決問題。

您可以嘗試以下代碼:

if (isset($_POST['release_no']) && !empty($_POST['release_no'])) {
    session_start();
    $_SESSION['releasen'] =$_POST['release_no'];
    $relnum=  $_SESSION['releasen']; 
}

會話變量為$_SESSION['releasen'] 這就是每次您擁有session_start(); 在代碼的頂部。 如果要使用$ relnum,則必須在每次加載頁面時將$ relnum設置為等於$_SESSION['releasen']

采用

session_unset();
session_destroy();

希望這個幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM