使用php会话对象来存储我的几个变量,可以是请求结果的数组,这是一个好习惯。
我需要这个方法,因为我想在php文件中执行请求,存储结果并立即(取决于结果)重定向到页面,
这可能不是最好的方式,这就是我要问的原因
thx任何建议,
编辑:结构:
index.html
handler.php
view1.php
index.html中的,我有一个
<form action="handler.php" ...
在handler.php中,我构造一个请求并得到一个结果,
if ($result->success)
header("location ./view1.php");
else
echo 'failed';
在view1.php中,我想列出结果数组
答案 0 :(得分:1)
网上商店这样做 - 为什么不应该这样做?
一些较大的电子商务框架在会话中存储复杂的数据和对象,PHP处理得非常好。
答案 1 :(得分:1)
这就是会议的目的!所以一般的答案是“是的:这是一个很好的做法”。
然而,以下是一些替代方案:
考虑使用ajax调用来更新已加载页面的部分而不重新加载;
Cookie - 不适合大量数据,但通常可以比会话更长寿。但是,在您的特定情况下无用;
SQL服务器通常经过优化,当您的查询返回大量行并将其切换为带有LIMIT
子句的部分时,或者只是在第一次之后不久重复完全相同的请求时,后续请求对数据库服务器的负载不是很大。
我刚看到你对这个问题的更新。 AJAX可以为您提供最好的技巧。我可以想象这一切都在一个网页内完成:
handler.php
提交,其中...... NOT FOUND
。答案 2 :(得分:-1)
// set session
session_start();
$_SESSION['my_session'] = array('var1' => 'value1', 'var2' => 'value2'); // your result list
session_write_close();
// get Session
echo ($_SESSION['my_sesson']['var1']);
答案 3 :(得分:-1)
if ($result->success)
header("location ./view1.php");
else
echo 'failed';
使用重定向来路由请求不是一个好习惯。您可以在没有用户的其他请求的情况下执行此操作。
像这样:
if ($result->success) {
include(dirname(__FILE__) .'/'. 'view1.php');
} else {
echo 'failed';
}
因此,来自handler.php的所有变量都将在view1.php。
中可用