嗨,我有三个步骤的表单php页面,Form1用户将填写数据并将此变量带到Form2页面,并执行数据库{Insert,Update}。Form2再次将用户填写的变量和Form1变量传递给form3。我的问题是如何将Form1变量传给form3。
Form2
//variable from Form1
$calendar_id_val = $_GET['calendar_id'];
$calendar_name = $_GET['$calendar_choose_name'];
$calendar_type = $_GET['calendar_type'];
然后Perfrom Database Select并将结果显示给Form2。用户选择并填写Form2后,将变量传递给Form3。
Form3
$current_month = $_GET['month']; //Variable from Form2
我尝试用SESSION 调用Form1变量
$_SESSION['calendar_id_val'] = $_GET["calendar_id_val"];
$calendar_id = $_SESSION['calendar_id_val'] ;
但它不起作用。如何从Form3调用Form1变量。我使用了GET方法。
您似乎不太了解变量在内存中的停留时间。在PHP中,一旦脚本完成,该脚本分配的每个内存都会被释放,因此$calendar_id_val
不再在内存中
如果你想在下一次用户发布表单(下一次请求)时使用表单中的值,那么你已经完成了一半,请尝试:
session_start();
$calendar_id_val = $_GET['calendar_id'];
$_SESSION['calendar_id_val'] = $calender_id_val;
在使用会话之前,您必须始终致电session_start
。假设在处理完第三个表单后不需要保留数据,那么session_destroy
值得一看。但是无论如何,在会话中存储数据之后,只要会话有效,id值就会对您可用。有关会话的详细信息,请查看手册
你也可以用饼干。由于您使用的是GET,我认为您无论如何都不会传递任何敏感或关键的数据,所以setcookie
也可以完成这项工作。请参阅使用$_COOKIE
超级全局的值。
请注意,建议使用会话,因为会话在服务器端存储数据,而cookie存储在客户端的机器上。这使得它们容易受到攻击(可以进行调整)和不可靠(客户端可以禁用/拒绝您的cookie)
和往常一样,如果我没有链接到我提到的所有函数,只需转到http://www.php.net/<functionName>
了解详细信息
将session_start();
放入页面顶部1行1列
session_start();
$calendar_id_val = $_GET['calendar_id'];
$_SESSION['calendar_id_val'] = $calender_id_val;
您应该在使用会话之前启动会话。
在表单1页面中分配会话变量,如
session_start();
$_SESSION['calendar_id_val'] = $_GET["calendar_id_val"];
$calendar_id = $_SESSION['calendar_id_val'] ;
并访问表单2中的会话变量,如
session_start();
echo $_SESSION['calendar_id_val'];
您可以尝试将其声明为全局。
global $a;
$a = $_GET['really'];