PHP遗忘变量值

时间:2015-02-23 14:09:59

标签: php echo

我目前正在为客户整理一个小型项目。 由于客户端的Web主机不支持PHP,因此我不得不从另一台主机iframe表单。它并不理想,但它是我现在必须与之合作的。

通常我不会对表单有太多问题,除非此表单是多页面的。 它还需要PHP,因为它包含API密钥。

这是代码的主要部分。

<?php

echo file_get_contents("make.html");

if (isset($_POST['devicemake']))
  {
    $deviceMake = $_POST['devicemake'];
    echo "<script type='text/javascript'>\n";
    echo "document.body.innerHTML = ''";
    echo "</script>";
    echo $deviceMake;
    echo file_get_contents("model.html");
 }

 if (isset($_POST['devicemodel']))
  {
    $deviceModel = $_POST['devicemodel'];
    echo "<script type='text/javascript'>\n";
    echo "document.body.innerHTML = ''";
    echo "</script>";
    echo $deviceMake . $deviceModel;
    echo file_get_contents("description.html");
 }

 ?>

它会加载表单的第一页,然后一旦用户选择了一个选项,它就会将答案放入变量中,清除页面然后加载下一页。

我已经对每个页面进行了单独测试,似乎能够在提交后将每个值放入变量中但是我似乎无法弄清楚的一个问题是为什么它只会回显最后一个变量已保存。 例如,如果我提交第二个表单页面,我现在应该有两个变量。 但在回应两者时,只回显 deviceModel 变量。

这是为什么? 我已经对此进行了搜索和搜索,似乎无法找到为什么它不会跨页面保存变量。 PHP文件本身没有重新加载所以它不应该是一个问题,对吗?

2 个答案:

答案 0 :(得分:1)

您的第二个POST会重置传递的变量。您可以切换到GET并连接变量,也可以第二次将$deviceMake作为隐藏变量发布。

答案 1 :(得分:1)

PHP是服务器端语言,因此即使您每次都没有重新加载整个页面,当您向PHP脚本发送新的POST请求时,它也会将其视为独立请求,并且不会记住您之前请求中的任何值

您需要做的是,您应该将早期值保存在php session中。

例如, 如果您想在第一个请求中保存$_POST['devicemake']值,在第二个请求中保存$_POST['devicemodel']。您可以使用以下代码存储第一个值。

session_start();
if (isset($_POST['devicemake']))
  {
    $_SESSION['deviceMake'] = $_POST['devicemake'];
    echo "<script type='text/javascript'>\n";
    echo "document.body.innerHTML = ''";
    echo "</script>";
    echo $_SESSION['deviceMake'];
    echo file_get_contents("model.html");
 }

根据下一个请求,您可以使用$_SESSION['deviceMake']