【问题标题】:How to pass information across web pages of a web site如何跨网站的网页传递信息
【发布时间】:2011-04-24 01:58:49
【问题描述】:

我有这个网站,我经常发现自己试图将信息从一个网页传递到下一个网页,最好的方法是什么?会话几乎是最好的选择,因为如果我需要传递大量信息怎么办?然后呢?

【问题讨论】:

  • 我不知道为什么拥有大量信息会使使用会话成为一种不太理想的方法...如果有的话让它更理想...
  • 不必对...无礼。
  • @user719321:我没有粗鲁......我只是说我认为拥有大量数据会使会话成为最可行的解决方案......

标签: php session


【解决方案1】:

我想你有几种可能的解决方案:

  • 使用cookies存储所有数据;好吧,通常不是一个好主意:
    • 它们的大小是有限的
    • 它们在每个页面加载时来回访问网络(以及在请求资源时,例如 CSS/JS/图像)
    • 它们存储在客户端
  • 将某些标识符从一页传递到下一页(通常使用 URL 中的参数或表单中的隐藏输入),并使用该标识符在某处获取/存储数据
    • 就像在数据库中一样
    • 或 memcached 集群
  • 或者只使用 PHP 会话,它会为你做到这一点,几乎:
    • 标识符通常会在 cookie 中传递,
    • 默认情况下,数据将存储在文件中,但您可以很容易地将其存储在数据库或 memcached 集群中。


但请注意:在 PHP 中,会话标识符通常使用 cookie 传递——浏览器中的所有选项卡都共享该 cookie。

确保您的网站可以使用多个选项卡——从一个选项卡进行的会话修改不会破坏其他选项卡中的导航!

【讨论】:

  • 我究竟如何看待多选项卡的情况?
【解决方案2】:

您可以通过以下方式在页面之间传递值:

  • 请求参数
  • 会话
  • cookies

例如阅读this链接。

【讨论】:

    【解决方案3】:

    我假设您的意思是“在页面之间传递 PHP 变量的最佳方式是什么”。在这种情况下,会话是正确的答案。会话可以处理 php.ini 中内存限制的任意数量的数据。

    您必须在要使用共享变量的所有 PHP 页面的顶部运行 session_start();

    您可以像数组一样管理会话变量:

    <?php
        // Start/resume the session
        session_start();
    
        // Create a variable
        $myvariable = "Hello, world!";
    
        // Set the value of that variable to session
        $_SESSION["myvariable"] = $myvariable;
    
        // You can also set data directly to the session
        $_SESSION["anothervariable"] = "Bye, world!";
    ?>
    

    现在您可以像这样从任何页面访问该数据:

    <?php
        // Start/resume the session
        session_start();
    
        // Now you can fetch data from the same session variable
        echo $_SESSION["myvariable"]; // Hello, world!
        echo $_SESSION["anothervariable"]; // Bye, world!
    ?>
    

    Tizag 有一个关于使用 PHP 会话的创建教程:
    http://www.tizag.com/phpT/phpsessions.php

    祝你好运! :-)

    【讨论】:

      【解决方案4】:

      如果您使用的是 php,并且只是将数据从一个页面传递到另一个页面,您可以这样做 page1.php

      <a href="page2.php?somevalue=whatever&morevalue=somethingelse">Go to page 2</a>
      

      page2.php

      <?
         echo $_GET["somevalue"]; //it will print out whatever
         echo "<br />".$_GET["morevalue"]; // it will print out somethingelse
      ?>
      

      但也要阅读其他人所说的:)

      【讨论】:

        【解决方案5】:

        按照用户可访问性的顺序(从小到大):

        • 会话变量 - $_SESSION['var']
        • Cookie
        • $_POST['var']
        • $_GET['var']

        【讨论】:

          【解决方案6】:

          如果您需要来回移动大量数据,则将这些信息保存到数据库可能是最有效的。它将为您省去将所有信息加载到 cookie/会话/等中的麻烦。然后当你想要你的信息时必须在另一端解复用。

          通过将其存储在数据库中,您可以确保它会持续存在并且您可以随时返回并检索它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多