【问题标题】:Create a session for a page input and submit at final page为页面输入创建会话并在最后一页提交
【发布时间】:2015-05-22 17:09:52
【问题描述】:

我有 4 页 第 1 页有一个带有输入的表单 第 2 页没有表单,但会重定向 第 3 页有一个带有输入的表单 第 4 页有一个带有输入的表单。

已编辑 - (添加代码)

Page 1
<form action="page2" method="POST">
    <input type="text" name="sex">
    <input type="submit" value="Submit">
</form>

Page 2
    <?php require_once 'detect.php'; ?>
    <input type="text" name="size">
    <input type="hidden" name="sex" value="<?php echo $_POST['sex'] ?>" >
    <script type="text/JavaScript">
    <!--
    setTimeout("location.href = 'page4';",5000);
     -->
    </script>

Page 3
<form action="page4" method="POST">
    <input type="text" name="colors">
    <input type="hidden" name="sex" value="<?php echo $_POST['sex'] ?>" >
    <input type="submit" value="Submit">
</form>

Page 4
<form action="verNote.php" method="POST">
    <input type="text" name="likes">
    <input type="hidden" name="sex" value="<?php echo $_POST['sex'] ?>" >
    <input type="hidden" name="colors" value="<?php echo $_POST['colors'] ?>" >    <input type="submit" value="Submit">
</form>

我正在考虑使用 session(),因为它是处理这个问题的最方便的方法,它可以收集所有页面的输入并将其发布到最终的 php 处理程序,在这种情况下是“verNote.php”。

如果我能找到一个实用的解决方案,我也将不胜感激。

谢谢。

【问题讨论】:

  • 当然(不是雪莉),你可以谷歌这个。那里有很多例子。
  • 我认为您不应该为此使用 cookie,因为 cookie 是用户可编辑的。取决于您需要携带哪些信息,我仍然会选择 SESSION 解决方案。你肯定知道如何将东西放入会话中,如果你不知道,你应该谷歌它。
  • 隐藏输入有什么问题?我一直使用它们来隐藏要发送到下一页的数据。如果实在用不上,就照 Eda190 说的做:会话对象。
  • 有什么实际应用让我能理解吗?我已经用谷歌搜索并应用了它,但对我不起作用,也许我做错了什么。
  • 这个问题是too broad。可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。

标签: php session session-cookies


【解决方案1】:
  • 试试这个,这里不需要middle.php

page1.php

<?php
session_start();

if ( isset( $_POST[ "anything" ] ) ){ 
  $_SESSION[ "anything" ] = $_POST[ "anything" ]; // by this value from the form are stored in $_SESSION[ "anything" ]
  header( "Location: page2.php" );
}

else header( "Location: page1.php" );

?>
<html>
  <head>
    <title>Session</title>
  </head>
  <body>
    Welcome to page 1.
    <br/>
    <br/>
    <form method="post" action="page1.php">
      Type anything
      <input type="text" name="anything" />
      <input type="submit" value="Send value to page 2" />
    </form>
  </body>
</html>

page2.php

<?php
session_start();
?>
<html>
  <head>
    <title>Session</title>
  </head>
  <body>
    Welcome to page 2.
    <br/>
    <br/>
    This is the value from page 1 :
    <input type="text" value="<?php echo $_SESSION['anything'];?>" />
  </body>
</html>

【讨论】:

    【解决方案2】:

    使用 Session,您无需在每个页面的每种形式中都存储相同的值(就像您对“sex”所做的那样)。使用 Session,您可以将值存储一次,然后它就会保留在那里。现在举个例子。

    页面 1 向页面 2 发送数据,需要一个中间脚本从输入表单中获取值并将其存储在 Session 中。下面的代码就是一个例子。

    page1.php(将值发送到第 2 页)。

    <?php
    session_start();
    ?>
    <html>
      <head>
        <title>Session</title>
      </head>
      <body>
        Welcome to page 1.
        <br/>
        <br/>
        <form method="post" action="middle.php">
          Type anything
          <input type="text" name="anything" />
          <input type="submit" value="Send value to page 2" />
        </form>
      </body>
    </html>
    

    middle.php(从第 1 页获取值并将其存储在会话中)

    <?php
    session_start();
    if ( IsSet( $_POST[ "anything" ] ) )
         { $_SESSION[ "anything" ] = $_POST[ "anything" ];
           header( "Location: page2.php" );
         }
    else header( "Location: page1.php" );
    ?>
    

    page2.php(显示从第 1 页收到的值)

    <?php
    session_start();
    ?>
    <html>
      <head>
        <title>Session</title>
      </head>
      <body>
        Welcome to page 2.
        <br/>
        <br/>
        This is the value from page 1 :
        <input type="text" value="<?php echo $_SESSION["anything"];?>" />
      </body>
    </html>
    

    Ruse Yee,创建 3 个文本文件并将它们命名为 page1.php、middle.php 和 page2.php,复制粘贴其中的相应代码并在浏览器中运行 page1.php:

    http://localhost/page1.php

    如有必要,您可以添加端口:

    http://localhost:80/page1.php

    如果您有更多的页面,其中包含发送更多数据的表单,那么您将需要更多的 middle.php 文件。

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      在每个php页面写第一行

      session_start(); // this must be the first line of every page in php
      

      然后在此之后,创建会话变量如下:

      $_SESSION['sex']=<variable_name_to_store> ;
      

      稍后在您要访问此会话变量值的每个页面中,直接使用 $_SESSION['sex']。 赞&lt;?php echo $_POST['sex'] ?&gt;

      【讨论】:

      • 所以,如果 page1.php 发布到 page2.php,Page2.php 应该有类似: 正确吗?
      • 类似的东西,Ruse Yee,但不完全是,也不是那么容易。要将值存储在 Session 中,您需要在第 1 页和第 2 页之间的中间脚本:第 1 页从表单输入中发送值,中间脚本将其存储在 Session 中,然后第 2 页可以从 Session 中获取值。
      • 是这样的..但是“include('detect.php');”中有一个错误它必须是“include 'detect.php';”并且它不会将数据发布到任何其他页面。这样,您只是创建了一个会话,并且是在浏览器中创建的。浏览器存储该数据。简单地说,这意味着您通过 page1.php 在浏览器中的某个位置存储数据,并通过会话变量从任何其他页面访问该数据。即 $_SESSION['sex'];
      • 并且不要忘记将第一条语句写为 session_start();在您要访问该数据的每个 php 页面中。
      • 在 middle.php 中,“isset( $_POST[ "anything" ])" 的语法是这样的。不是 "IsSet( $_POST[ "anything" ] )"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 2012-07-21
      相关资源
      最近更新 更多