0

是不是一个好习惯,使用php会话对象,存储我的几个变量,可以是请求结果的数组。

我需要这种方法,因为我想在 php 文件中执行请求,存储结果并立即(取决于结果)重定向到页面,
这可能不是最好的方法,这就是我问的原因

谢谢任何建议,

编辑:结构:

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

4 回答 4

1

网上商店这样做 - 那你为什么不呢?

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

于 2012-05-16T08:53:43.227 回答
1

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

但是,这里有一些替代方案:

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

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

  3. SQL 服务器通常经过了很好的优化,当您的查询返回大量行并使用LIMIT子句将它们分割成多个部分时,或者只是在第一次之后不久重复完全相同的请求,后续请求的负载不会那么大用于数据库服务器。

我刚刚看到你对这个问题的更新。AJAX 可以为您做到最好。我可以想象这一切都在一个网页中完成:

  1. 表单数据通过 AJAX 调用提交给您handler.php,其中..
  2. 例如,返回 JSON 打包的结果数组或短字符串NOT FOUND
  3. 然后,页面上的 JS 要么创建一个新的 DOM 元素 - 一个表格或一组 div,并返回结果,或者只是创建一个带有悲伤卡通脸和“我们没有找到任何东西”消息的新 div .
于 2012-05-16T09:09:53.750 回答
-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']);
于 2012-05-16T08:58:37.327 回答
-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 中可用。

于 2012-05-16T09:32:32.577 回答