2013-03-15 126 views
-1

我有一个表单,用户输入详细信息并将结果显示在同一页面上。然后可以提交这些结果。将PHP变量传递给其他页面

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> 

为什么没有出现?

+0

您是否正在发布到'First_page.php'?你有没有尝试''回声'你的'if内的东西作为基本的调试步骤,看看它们是否设置?此外,直到你有它的工作,只是'var_dump($ _ SESSION);'在两页的末尾,看看你得到什么。 – 2013-03-15 10:17:44

+3

认为问题不在会话中,而是如何将数据放入会话中。我看到你检查$ _POST。所以我建议你想把你的表单放入这些会话中。在这种情况下,您应该使用$ amountdiv的$ _POST ['amountdiv']即时。也许你可以发表你的表格? – 2013-03-15 10:18:58

+1

它不工作,因为你不能满足这个条件:if(isset($ _ POST ['applySubmit'])) – 2013-03-15 10:19:09

回答

-1

Firstpage.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. 并使用这个'extract($ _ POST);'在firstpage.php =>它的工作正常。
+2

extract()函数。作为其安全问题 – 2013-03-15 10:24:59

+0

切勿在$ _POST上使用extract()。假设您在配置文件中拥有来自付款提供商的$ paymentURL。现在有人向您的文件发送$ _POST ['paymentURL']。你提取它,$ paymentURL将被覆盖。 – 2013-03-15 10:29:13

+0

感谢您的提示。 – MKV 2013-03-15 10:35:29

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条件内执行。

+0

他们被分配在Javascript中。总额=金额+交付; fixedrate = total/100 * 12.2; grandtotal = fixedrate + total; document.getElementById(“amountdiv”)。innerHTML = amount.toFixed(2); document.getElementById(“deliverydiv”)。innerHTML = delivery.toFixed(2); document.getElementById(“total”)。innerHTML = total.toFixed(2); document.getElementById(“fixedrate”)。innerHTML = fixedrate.toFixed(2); document.getElementById(“grandtotal”)。innerHTML = grandtotal.toFixed(2); – Janatan 2013-03-15 11:39:14

+1

@Janatan:在使用它之前,你需要在PHP中进行分配。 – 2013-03-15 11:43:33

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> 
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()或您自己的自定义过滤器/清洗功能。