-1

我有一个表单,用户可以在其中输入详细信息,结果显示在同一页面上。然后可以提交这些结果。

First_page.php

<?php
session_start();

if (isset($_POST['applySubmit'])) { 
    $_SESSION['amountdiv'] = $amountdiv;
    $_SESSION['fixedrate'] = $fixedrate;
    $_SESSION['deliverydiv'] = $deliverydiv;
    $_SESSION['date'] = $date;  
    $_SESSION['total'] = $total;    
    $_SESSION['grandtotal'] = $grandtotal;      
    $_SESSION['reference'] = $reference;
}
?>

我已经看到了很多关于这方面的例子,我正在使用这篇文章PHP Pass variable to next page中的这个例子。我遇到的问题是,在我想输出详细信息的第二页上,什么都没有出现。

Second_page.php

<?php
session_start();
//*************Session form details to carry through*****************//
$amountdiv = $_SESSION['amountdiv'];
$fixedrate = $_SESSION['fixedrate'];
$deliverydiv = $_SESSION['deliverydiv'];
$date = $_SESSION['date'];  
$total = $_SESSION['total'];    
$grandtotal = $_SESSION['grandtotal'];
$reference = $_SESSION['reference'];
?> 

然后我想将此信息回显到屏幕上,但什么也没有出现。

<td class="blaah1"><?php echo $_SESSION['amountdiv'] ;?></td>
<td class="blaah1"><?php echo $_SESSION['grandtotal'] ;?></td>
<td class="blaah3"><?php echo $_SESSION['date'] ; ?></td>

为什么什么都没有出现?

4

4 回答 4

0

您需要为这些变量分配一些东西。目前,看起来您在$amountdiv为它分配任何东西之前就在使用它,所以它将是null.

<?php
session_start();

if (isset($_POST['applySubmit'])) { 
    $amountdiv = $_POST['applySubmit'];
    $_SESSION['amountdiv'] = $amountdiv;

但实际上,这一切都可能一步到位:

<?php
session_start();

if (isset($_POST['applySubmit'])) { 
    $_SESSION['amountdiv'] = $_POST['amountdiv'];

显然,您还应该验证和清理输入。例如

<?php
session_start();

if (isset($_POST['applySubmit'])) { 
    $_SESSION['amountdiv'] = (int)$_POST['amountdiv'];

或使用filter_var(),filter_input()或您自己的自定义过滤/清洁功能。

于 2013-03-15T10:45:32.810 回答
0

这里 :

if (isset($_POST['applySubmit'])) { 
    $_SESSION['amountdiv'] = $amountdiv;
    $_SESSION['fixedrate'] = $fixedrate;
    $_SESSION['deliverydiv'] = $deliverydiv;
    $_SESSION['date'] = $date;  
    $_SESSION['total'] = $total;    
    $_SESSION['grandtotal'] = $grandtotal;      
    $_SESSION['reference'] = $reference;
}

你在哪里为这些变量赋值:$amountdiv$fixedrate......所有变量看起来都是空的。

其次,检查您的代码是否if在第一页的条件内执行。

于 2013-03-15T10:26:59.187 回答
0
<form method="POST" action="Second_page.php">
    <input type="text" name="amountdiv" />
    <input type="text" name="fixedrate" />
    <input type="text" name="deliverydiv" />
    <input type="text" name="date" />
    <input type="text" name="total" />
    <input type="text" name="grandtotal" />
    <input type="text" name="reference" />
    <input type="submit" name="applySubmit" />
</form>

second_page.php

<?php
   echo "<pre>";
   print_r($_POST);
   echo "</pre>";
?>

<td class="blaah1"><?php echo $_POST['amountdiv'] ;?></td>
<td class="blaah1"><?php echo $_POST['grandtotal'] ;?></td>
<td class="blaah3"><?php echo $_POST['date'] ; ?></td>
于 2013-03-15T10:27:22.407 回答
-1

第一页.php

  <?php
    session_start();

    extract($_POST);

    if (isset($_POST['applySubmit'])) { 
        $_SESSION['amountdiv'] = $amountdiv;
        $_SESSION['fixedrate'] = $fixedrate;
        $_SESSION['deliverydiv'] = $deliverydiv;
        $_SESSION['date'] = $date;  
        $_SESSION['total'] = $total;    
        $_SESSION['grandtotal'] = $grandtotal;      
        $_SESSION['reference'] = $reference;
    }
    ?>
  1. session_start() 之前没有空格。
  2. 并使用此“提取($_POST);” 在 firstpage.php => 它工作正常。
于 2013-03-15T10:23:05.280 回答