【问题标题】:maintain session between the pages in php?维护 php 中页面之间的会话?
【发布时间】:2012-08-01 06:07:11
【问题描述】:

我是 PHP 新手。

我想在页面之间传输数据。

在我的要求中,我首先有主页,因为我有 3 个字段:nameaddresspin,然后是 提交按钮

当我输入上述字段然后点击提交时,它移动到page2.php,它有表单数据。

我已将第一个表单数据传输到第二页。现在在第二页我有一个提交按钮。当我单击该按钮时,数据将提交到 MySQL 数据库。

我的问题是,如何将首页值移动到insertdata.php 页面并提交数据?

【问题讨论】:

标签: php mysql forms session


【解决方案1】:

有两种方法可以做到这一点

  1. 会话
  2. 隐藏的输入字段

会话

要将数据从一个页面传递到另一个页面,您首先需要在所有将使用$_SESSION 超全局变量的页面上调用session_start()。 然后您可以使用

将您的值存储在会话中
$_SESSION['name'] = $_POST['name'];
$_SESSION['address'] = $_POST['address'];
$_SESSION['pin'] = $_POST['pin'];

要在第二页中使用这些值,只需按名称调用它们即可。例如:

$name = $_SESSION['name']; // will contain the value entered in first page

================================================ ====================================

隐藏的输入字段

这是一种比较乏味的方法,但它仍然可以完成工作。该过程涉及将需要传递到不同页面的数据存储在隐藏字段中,然后通过$_POST$_GET 超全局访问它们。

page1.php(发布到 page2.php)

<input type="text" value="Page 1 content" name="content" />
<input type="text" value="Page 1 body" name="body" />

page2.php(发布到 page3.php)

<input type="hidden" value="<?php echo $_POST['content']; ?>" name="content" />
<input type="hidden" value="<?php echo $_POST['body']; ?>" name="body" />
<input type="text" value="Page 2 content" name="content2" />
<input type="text" value="Page 2 body" name="body2" />

page3.php

echo $_POST['content']; // prints "Page 1 content"
echo $_POST['body']; // prints "Page 1 body"
echo $_POST['content2']; // prints "Page 2 content"
echo $_POST['body2']; // prints "Page 2 body"

【讨论】:

  • +1 表示隐藏的输入字段,虽然你没有解释太多。
  • @AlexLunix 谢谢。我没有进入隐藏字段,因为这个过程有点长,而且会话击败了隐藏字段。无论如何,我会在回家后添加解释。
  • “声明session_start()”是什么意思?因为,来自 C,这意味着“创建一个名为 session_start() 的函数”,这似乎不是您的意思。
  • @NicHartley 也许我应该措辞更好。 “声明”是指“调用函数”。
【解决方案2】:

只需在您的第一页中使用以下代码&lt;?php session_start(); ?&gt; 并在您的第二页中使用以下代码

<?php
$name = $_SESSION['name'];
$address = $_SESSION['address'];
$pin = $_SESSION['pin'];
echo $name."<br/>";
echo $address."<br/>";
echo $pin."<br/>";
?>

或者您可以使用postget 方法如下

对于 GET 方法

<?php
$name = $_GET['name'];
$address = $_GET['address'];
$pin = $_GET['pin'];
echo $name."<br/>";
echo $address."<br/>";
echo $pin."<br/>";
?>

对于 POST 方法

    <?php
    $name = $_POST['name'];
    $address = $_POST['address'];
    $pin = $_POST['pin'];
    echo $name."<br/>";
    echo $address."<br/>";
    echo $pin."<br/>";
    ?>

【讨论】:

    【解决方案3】:

    要在页面更改之间存储数据,您可以使用超全局 $_SESSION 数组。

    例子

    第 1 页

    $_SESSION['name'] = "John";
    

    第 2 页

    echo $_SESSION['name'];
    

    输出

    John
    

    确保将session_start() 放在需要使用会话的每个页面的顶部。

    Click here for more information on Sessions.

    【讨论】:

      【解决方案4】:

      基本上,当您在第一页提交数据时,将它们保存在会话中,然后重定向到第二页。

      在第二页加载它们。

      第 1 页:

      <?php session_start(); 
      
           $_SESSION["var_name"]  = $some_value;
      
      
      ?>
      

      第 2 页:

      <?php session_start(); 
      
           $my_var = $isset($_SESSION["var_name"])?$_SESSION["var_name"]:null;
      
      
      
      
      ?>
      

      您测试 my_var 的值,如果它为空,则重定向到第一页或显示错误消息。

      会话教程 http://www.w3schools.com/php/php_sessions.asp

      Mysql插入教程 http://www.tizag.com/mysqlTutorial/mysqlinsert.php

      POST/GET 教程 http://www.tizag.com/phpT/postget.php

      【讨论】:

        【解决方案5】:

        REQUEST 一样,PHP 维护一个会话映射,您可以在其中转储这些值并跨页面转储。 例如

        $_SESSION['name']='foo';
        

        但是你想使用会话的页面,你需要使用session_start();方法启动会话。但是这个方法调用应该是你 php 中的第一行。

        http://www.w3schools.com/php/php_sessions.asp

        【讨论】:

        • 请不要将人们推荐给 w3schools。原因见这里w3fools.com
        • 当然。以后我会改正自己的。感谢这篇文章。
        • 如果有人阅读第一条评论,现在引用的链接包括“今天,W3Schools 已在很大程度上解决了这些问题并解决了大多数签名开发人员的担忧。对于许多初学者来说,W3Schools 提供了结构化的教程和游乐场,提供了不错的学习体验。因此,该评论应被删除,因为它不再适用。
        猜你喜欢
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        • 2013-10-18
        • 1970-01-01
        相关资源
        最近更新 更多