PHP:在会话中存储输入变量,然后在页面上回显它不起作用

时间:2011-08-10 21:19:41

标签: php

好的我试着解释一下:

我有一个php页面“index.php”,其中有一个表单发布到form.php?form = 1处理数据,然后在瞬间重定向到名为“paso2”的“谢谢”页面.PHP“

我想要做的是将电子邮件变量存储在会话中,然后在paso2.php上回显它

所以我在form.php的最顶层做了这个:

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

“email”是index.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 />

有谁能告诉我发布这个值我做错了什么?

5 个答案:

答案 0 :(得分:0)

使用Firebug和/或HTTPFox查看您的浏览器来自索引的HTTP标头 - &gt;形式 - &gt; paso2,并查看会话cookie(和id)是否在每个阶段正确传输。缺少这种类型的vars总是会在每个阶段之后错误配置并丢失会话cookie,导致每次都创建一个新的/空会话。

答案 1 :(得分:0)

首先,尝试添加:

session_start();
echo session_id();

在“form.php”文件中。假设您的会话已启动,您应该会看到相应的会话ID。

如果可能,请将错误报告修改为:error_reporting(E_ALL);,以帮助查看是否存在与创建会话相关的任何错误。

答案 2 :(得分:0)

如果你在form.php。

中创建一个隐藏字段
    <input type='hidden' name='email' value='223218' />

然后将此表单发布到paso2.php。

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

会话变量不应为空。

答案 3 :(得分:0)

Marc B评论的后续跟进。您需要在每个session_start

之前使用此操作
<?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();

您还可以将上面的代码放入文件中,并将其包含在需要会话的每个页面的顶部。

一些调试:

在form.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);

答案 4 :(得分:0)

尝试将session_start()放在其他所有内容之前。 session_start()可能会有点古怪。