【问题标题】:Save data with php-script and hold post-variables on error使用 php-script 保存数据并在错误时保留后变量
【发布时间】:2014-10-23 10:49:56
【问题描述】:

我已经在这里和谷歌搜索了答案,但我没有找到任何东西。因为我无法提出正确的问题来找到一些东西。

解决这个问题最好的方法是什么:

我的页面:edit_data.php
我有一个表格 (method="post" action="save.php")。在提交时,我将数据存储在 MySQL 表中。

在 save.php 中:
MySQL 插入(返回数据集的新 id)
如果成功我打电话给edit_data.php?id=<new_id>
如果出错我打电话给error.php?msg=<error message>

问题是我在错误时丢失了数据。

这就是我想要的:
- 返回edit_data.php
- 直接在那里显示错误
- 我希望所有字段都包含其原始数据

我不能接受 $_GET,因为数据太大。

有没有人给我一个简单的解决方案?

谢谢

【问题讨论】:

    标签: php mysql post return call


    【解决方案1】:

    你有什么理由不能使用$_SESSION?这样,您的所有数据都将在会话期间保存,或者直到您将其删除。

    确保每个 PHP 文档在输出任何标题之前都包含 session_start();,这也适用于您的 <?php 标记之前的任何空格。

    要将所有 $_POST 数据放在 $_SESSION['POST'] 中,您可以执行以下操作,

    <?php
      session_start();
      foreach($_POST as $key=>$val) {
        $_SESSION['POST'][$key] = $val;
     } ?>
    

    然后你可以通过访问$_SESSION['POST']['KEYNAMEHERE']来访问你之前的POST变量

    PS:$_GET$_POST 在这里可以互换

    【讨论】:

    • 谢谢。是的,我使用会话。我会试试。我在这里发布结果。
    • 这很容易。有用。我打电话给edit_data.php?restore=1 如果设置了恢复,我会从 SESSION 获取 POST-Variables 谢谢。
    【解决方案2】:

    如果 $_GET 太大,您可以编辑 php.ini 文件。

    请注意,安装了 suhosin 补丁的 PHP 设置将具有 获取参数的默认限制为 512 个字符。虽然不好 实践中,大多数浏览器(包括 IE)最多支持 2000 左右的 URL 字符,而 Apache 的默认值为 8000。

    要使用 suhosin 添加对长参数的支持,请添加 suhosin.get.max_value_length = 在 php.ini 中

    http://www.php.net/manual/en/reserved.variables.get.php#101469

    Max size of URL parameters in _GET

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2016-06-06
      • 2016-08-16
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多