【问题标题】:How to pass through a PHP object from one page to the next twice?如何将 PHP 对象从一个页面传递到下一个页面两次?
【发布时间】:2016-01-06 01:50:00
【问题描述】:
$ID= $_GET['id'];

<form method="post" action="updateorder.php?id=?"<?php echo htmlspecialchars($ID);?>">

我正在使用 PHP,我可以将 ID 从 index.php 传递到此页面(openorders)。我想从这个 (openorders.php) 转到另一个页面来更新我的订单 - updateorder.php。我已经找到了如何通过一次,但在那之后就没有了。你会怎么做?谢谢。

【问题讨论】:

  • 你听说过Sessions吗?
  • 你可以在没有会话的情况下做到这一点,但正如@HenriqueBarcelos 所建议的那样,如果你确实使用会话就不会那么麻烦了。尽管php.net/manual/en/book.session.php 应该使用英文链接;-)
  • 谢谢,@Fred-ii-。我认为 php.net geotag 默认将我扔到葡萄牙语版本的网站,我没有注意。
  • @HenriqueBarcelos 不用担心,不客气 ;-)
  • 我只需要一个额外的表格。这就是为什么我没有考虑会话。稍后我将使用会话登录到这里

标签: php mysql post get


【解决方案1】:

如上所述,使用会话和作为示例。

旁注:请在下方进一步咨询我的“编辑”,了解表单中的?id=?"

  • 将会话数组分配给 GET 数组,然后将相同的会话数组用于后续页面。

变量名并不重要,重要的是会话数组。

首先从您将检索 GET 数组的页面开始:

session_start();

if(!empty($_GET['id'])){
   $ID = $_GET['id'];
}

$_SESSION['id'] = $_GET['id'];

$var_page1 = $_SESSION['id'];
   echo "ID #: " . $var_page1;

然后在下一页:

session_start();

if(isset($_SESSION['id'])){

   $var_page2 = $_SESSION['id'];
   echo "ID #: " . $var_page2;

}

以及随后的页面:

session_start();

if(isset($_SESSION['id'])){

   $var_page3 = $_SESSION['id'];
   echo "ID #: " . $var_page3;

}

参考资料:


旁注:如果您的 GET 数组始终是整数,您可以将 (int) 传递给它以获得更多保护。

$ID = (int)$_GET['id'];

参考:


编辑:(我在测试时注意到的) - 我以123 为例,即:

$_GET['id'] = 123;
$ID = (int)$_GET['id'];

由于?id=?",您的表单需要进行调整。 (额外的? 和引用)。

<form method="post" action="updateorder.php?id=?"<?php echo htmlspecialchars($ID);?>">
                                               ^^ extra question mark and quote - delete it

因为这将转换为以下内容(以及 HTML 源代码),即 ? 并添加一个额外的引号,这是您不想要的,并且会让您失望。

<form method="post" action="updateorder.php?id=?"123">

需要改成如下:

<form method="post" action="updateorder.php?id=<?php echo htmlspecialchars($ID);?>">

这将在 HTML 源代码中生成以下内容:

<form method="post" action="updateorder.php?id=123">

【讨论】:

    【解决方案2】:

    您可以使用此代码在 updateorder.php 中获取 id 值。 这只是因为您在 openorders.php 中使用 post 发送数据。 这就是为什么您无法使用 $_GET 全局获取数据的原因

    if(!empty($_POST['id'])){
    $id = $_POST['id'];
    }else{
    $id=0;
    }
    

    【讨论】:

    • 请留下并解释您的代码,以便 OP 了解您的答案将如何提供帮助
    • 那是错误的。您可以同时使用 POST 和 GET。 GET 数组在 PHP 中被捕获(在下一页)。
    • @Fred-ii- 我没有说你不能获得 $_GET 价值。仔细读。他正在尝试使用 get 方法阅读帖子
    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多