Php使用$ _SESSION来存储我的变量

时间:2012-05-16 08:47:34

标签: php

使用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中,我想列出结果数组

4 个答案:

答案 0 :(得分:1)

网上商店这样做 - 为什么不应该这样做?

一些较大的电子商务框架在会话中存储复杂的数据和对象,PHP处理得非常好。

答案 1 :(得分:1)

这就是会议的目的!所以一般的答案是“是的:这是一个很好的做法”。

然而,以下是一些替代方案:

  1. 考虑使用ajax调用来更新已加载页面的部分而不重新加载;

  2. Cookie - 不适合大量数据,但通常可以比会话更长寿。但是,在您的特定情况下无用;

  3. SQL服务器通常经过优化,当您的查询返回大量行并将其切换为带有LIMIT子句的部分时,或者只是在第一次之后不久重复完全相同的请求时,后续请求对数据库服务器的负载不是很大。

  4. 我刚看到你对这个问题的更新。 AJAX可以为您提供最好的技巧。我可以想象这一切都在一个网页内完成:

    1. 表格数据由AJAX致电handler.php提交,其中......
    2. 例如,
    3. 返回JSON打包的结果数组或短字符串NOT FOUND
    4. 然后,你的页面上或者创建一个新的DOM元素的JS - 一台或一组div的,具有返回的结果,或只是创建了一些悲伤的香椿面与“我们没有找到一个新的div任何'消息。

答案 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。

中可用