簡體   English   中英

PHP:將輸入變量存儲在 session 中,然后在頁面上回顯它不起作用

[英]PHP: store input variable in session and then echo it on a page is not working

好的,我將嘗試解釋這一點:

我有一個 php 頁面“index.php”,其中有一個表單發布到一個 form.php?form=1 處理數據,然后在瞬間重定向到一個名為“paso2.php”的“謝謝”頁面

我想要做的是將 email 變量存儲在 session 上,然后在 paso2.php 上回顯它

所以我在表格的最頂部做了這個。php:

<?php error_reporting(-1);
ini_set('display_errors', 1);
session_start();
// Validation here...
$_SESSION['email_address'] = $_POST['email'];

“電子郵件”是索引上 email 輸入的名稱。php

然后在 paso2.php 我在最上面做了這個:

<?php
error_reporting(-1);
ini_set('display_errors', 1);
session_start();?>

然后在 paso2.php 上的輸入中我回顯該值

<input type="text" name="email2" value="<?php echo htmlspecialchars($_SESSION['email_address']);?>" /> 

但它不起作用:我可以在該值中讀取的錯誤是:

值內

<br /> <b>Notice</b>: Undefined index: email_address in     <b>/home/gulp1986/public_html/cupon0km.com/paso2.php</b> on line <b>59</b><br />

誰能告訴我發布這個值我做錯了什么?

使用Firebug和/或HTTPFox查看 HTTP 標頭,因為您的瀏覽器從 index -> form -> paso2 進入,並查看 session cookie(和 id)是否在每個階段正確傳輸。 缺少這種類型的變量總是 session cookie 在每個階段后被錯誤配置和丟失,導致每次都創建一個新的/空的 session。

首先,嘗試添加:

session_start();
echo session_id();

在你的“form.php”文件中。 假設您的 session 已啟動,您應該會看到相應的 session id。

此外,如果可能,將您的錯誤報告修改為: error_reporting(E_ALL); 幫助查看是否存在與創建 session 相關的錯誤。

如果您在 form.php 中創建一個隱藏字段。

    <input type='hidden' name='email' value='223218' />

然后將此表格發布到 paso2.php。

<form id='form_223218' class='appnitro'  method='post' action='paso2.php'>

session 變量不應為空。

Marc B 評論的后續行動。 您需要在每個session_start之前使用 do this

<?php
$cookie_params = session_get_cookie_params();

session_set_cookie_params( 
    $cookie_params["lifetime"], 
    $cookie_params["path"], 
    '.cupon0km.com', 
    $cookie_params["secure"], 
    $cookie_params["httponly"] 
);

session_start();

您還可以將上面的代碼放入一個文件中,並將其包含在需要 session 的每個頁面的頂部。

一些調試:

在表格.php 中:

注釋掉header('Location: ...')重定向

在 form.php 和 paso2.php 的底部添加:

echo 'session name' . session_name() . '<br>';
echo 'session id' . session_id() . '<br>';
echo 'cookies <br>'; print_r($_COOKIES);
echo 'session <br>'; print_r($_SESSION);

嘗試將session_start()放在其他所有內容之前。 session_start()可能有點古怪。

暫無
暫無

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

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