【问题标题】:Variable persistence in PHPPHP中的变量持久性
【发布时间】:2010-11-12 03:57:02
【问题描述】:

我有一个 php 页面, 在那个页面上,我有文本框和提交按钮, 这个按钮在一个部分运行php:

if(isset($_POST['Add'])){code}

这在这里工作正常,并且在该部分中计算和使用 $name、$base、$location 等。但那段代码会生成另一个提交按钮,驱动另一段代码。

我希望在第二部分代码中将数据添加到数据库中。 现在我已经知道如何做到这一点,问题是变量 $name 等此时的值为 NULL.. 但它们只能在第一个代码部分运行后才能调用它们获得价值。

我如何保持这些值直到我添加它们?

资源:
该页面可以随意尝试: 位置必须采用“DNN:NN:NN:NN”形式,其中 D 是“D”,N 是 0-9 整数
http://www.teamdelta.byethost12.com/postroute.php

php文件的代码作为文本文件!
http://www.teamdelta.byethost12.com/postroute.php
第 116 和 149 行是 2 个按钮运行部分的开始!

【问题讨论】:

  • 你确定第二个链接是正确的吗?
  • 这两个链接是相同的——我们看不到您的 PHP 代码,因为它在输出到浏览器之前由服务器执行。尝试复制该文件并将其命名为 postroute.php.txt 或类似名称。

标签: php variables persistence


【解决方案1】:

我想你正在寻找 PHP 的会话处理的东西......

以第一页为例:

session_start(); # start session handling.
$_SESSION['test']='hello world';
exit();

第二页:

session_start(); # start session handling again.
echo $_SESSION['test']; # prints out 'hello world'

在幕后,当你第一次调用 session start 时,php 在用户浏览器中设置了一个 cookie,在执行结束时将 $_SESSION 数组序列化到磁盘,然后当它在下一页请求中接收到 cookie 时,它匹配序列化的数据,并在您调用 session_start() 时将其作为 $_SESSION 数组加载;

关于会话处理的完整细节:

http://uk.php.net/manual/en/book.session.php

【讨论】:

    【解决方案2】:

    您正在围绕添加按钮创建第二个表单。如果您想在此表单中包含数据,则必须创建隐藏的输入字段。因为您要在这里发送第二份表格。或者您正在将添加按钮移动到另一个表单。

    或者正如其他人提到的那样。将值保存到会话中。

    【讨论】:

      【解决方案3】:

      您可以将它们存储在会话中

      // first part of form, store name in session
      $_SESSION['name'] = $_POST['name'];
      
      // 2nd part of form, store in database
      $name = mysql_real_escape_string($_SESSION['name']); 
      $sql = "INSERT INTO table (name_column) VALUES ('$name');
      

      【讨论】:

      • session 也好像是空的很奇怪!
      • 您必须在需要访问会话数据的每个“页面”上调用 session_start()。您还应该在您的开发服务器上设置 error_reporting=E_ALL 和 display_errors=On 以查看任何“警告:无法发送标头 yadda yadda”消息(或密切关注 error.log)
      【解决方案4】:

      您也可以尝试使用隐藏的表单变量来存储数据

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多