好的我试着解释一下:
我有一个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 />
有谁能告诉我发布这个值我做错了什么?
答案 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()
可能会有点古怪。