【问题标题】:session variable won't display会话变量不会显示
【发布时间】:2015-05-27 23:39:36
【问题描述】:

我正在尝试将 POST 数据发送到 SESSION 变量中

$_SESSION['plan'] = $_POST['plan']

info.php 显示会话已加载。 浏览器 -> 检查元素似乎显示会话已初始化但没有键 => 值。

但我无法显示会话值。 apache 日志中没有错误。

主动态框架:

猫索引.php

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta name="robots" content="index,follow"/>
<link rel="icon" href="images/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<nav class="nav">
        <ul>
              BLAH
        </ul>
</nav>
<div id="content">
        <?php
                $pages_dir = 'pages';
                if (!empty($_GET['p'])) {
                        $pages = scandir($pages_dir, 0);
                        unset($pages[0], $pages[1]);
                        $p=$_GET['p'];
                        if(in_array($p.'.inc.php', $pages)){
                                include($pages_dir.'/'.$p.'.inc.php');
                        }else {
                                echo 'Sorry, page not found.';
                        }
                }else{
                        include($pages_dir.'/home.inc.php');
                }
        ?>

</div>
</body>

</html>

用户表单页面:

cat pages/payment.inc.php

<?php
//$_SESSION['plan'] = $_POST['plan'];
?>
<div id="content_pay">

<form action="pages/scheckout.php" method="post">
        <div>

                <input type="radio" id="plan1" name="plan" value="2500"> Beta membership <br><br>
                <input type="radio" id="plan2" name="plan" value="3500"> VIP membership <br><br>

                <label for="plan"> If you would like to pay another amount, enter the amount here:</label>
                <input type="text" id="plan3" name="plan" />
                <br>
                <label for="invoice_num"> Enter the invoice number here:</label>
                <input type="text" name="invoice_num" /> <br>
                <input type="submit" value="submit" name="submit">
        </div>
</form>


</div>

基本上,这个页面在这里只是为了捕获 POST 并将其分配给 SESSION,然后在加载 SESSION 的情况下重定向:

cat pages/scheckout.php

<?php
session_start();

$_SESSION['plan'] = $_POST['plan'];

//needed to prevent weird race conditions
session_write_close();
header("location: ../index.php?p=scheckout");
die();

echo "<br>";
echo $_SESSION['plan'];

?>

去哪儿了:

cat pages/scheckout.inc.php

<?php

require_once('pages/sconfig.php');

?>

<div id="content_pay">

<form action="pages/scharge.php" method="post">
        <div>


        <script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
                data-key="<?php echo $stripe['publishable_key']; ?>"
                myElem.setAttribute('data-amount', <?php $_SESSION['plan']; ?>);
                myElem.setAttribute('data-description', <?php $_SESSION['plan']; ?>); >
        </script>
        </div>

</form>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>


<?php
echo $_SESSION['plan'];
?>

如何让 SESSIONS 从 POST 加载到显示?

【问题讨论】:

  • 会话是否在所有页面会话中启动?
  • 只要我将单选按钮放入一个表单并将文本输入放入另一个表单,我就能够正确地发布和检索数据。我从来没有找到一种方法可以让一个按钮同时操作两个元素。我只是受了两个按钮的困扰。

标签: php forms session post


【解决方案1】:

您只需在 html 输出之前启动会话一次。会话保持打开状态,直到您使用 session_destroyunset $_SESSION 变量,或关闭浏览器。我建议你删除除 index.php 中的 session_starts 之外的所有 session_starts。

【讨论】:

  • index.php 是一个框架,在该框架内是 $pages = scandir($pages_dir, 0);这就是我所有的 .inc.php 文件所在的位置。它们是动态绘制的。因此 index.php 将 session_start() 级联到所有 .inc.php 页面。除非我尝试将 session_start 添加到 .inc.php 页面,否则日志中没有错误(会话已经开始)
【解决方案2】:

你使用 SESSION['plan'],但应该使用 echo SESSION['plan']

<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
            data-key="<?php echo $stripe['publishable_key']; ?>"
            myElem.setAttribute('data-amount', <?php echo($_SESSION['plan']); ?>);
            myElem.setAttribute('data-description', <?php echo($_SESSION['plan']); ?>); >
    </script>

【讨论】:

  • 更改后同样的问题。我在日志中收到错误 -> Undefined index: PLAN in pages/scheckout.inc.php on line 35
猜你喜欢
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 2015-10-10
相关资源
最近更新 更多