Language agnostic 在执行POST提交重定向时,如何在POST后保留确认消息?
你好,Language agnostic 在执行POST提交重定向时,如何在POST后保留确认消息?,language-agnostic,web-applications,Language Agnostic,Web Applications,你好, 我正在寻找有关如何在web应用程序中的单个请求之间共享某些数据位(即提交后确认消息)的建议。让我解释一下: 目前的做法: 用户提交资源的添加/编辑表单 如果没有错误,将向用户显示一条确认信息,其中包含以下链接: 提交新资源(用于“添加”表单) 查看提交/编辑的资源 查看所有资源(层次结构中的上一步) 然后,用户必须单击三个链接中的一个才能继续(即转到“上面”的页面) 在编程方面,表单及其确认页面是一组类。上面那一页是另一页。它们可以在技术上共享代码,但目前它们在处理单个请求时都是独立
我正在寻找有关如何在web应用程序中的单个请求之间共享某些数据位(即提交后确认消息)的建议。让我解释一下: 目前的做法:
- 提交新资源(用于“添加”表单)
- 查看提交/编辑的资源
- 查看所有资源(层次结构中的上一步)
M.听起来需要一种用户信息系统。我的意思是,过程可能类似于以下内容:
PHP 然而,对于PHP来说,情况似乎不是很容易,我想到的所有解决方案都有设计的味道: 会话 使用会话将数据标记为特定标志,然后在“概述”页面上检查并使用它们。您只需确保在不再需要这些数据后总是取消设置这些数据,这可能会很棘手 数据库 将数据库中的数据按队列排列,但我认为这样查询每个请求不是一个好主意。如果应用程序稍大一些,DB服务器上会有很多请求,这可能会减慢速度 卷曲 如果有机会,请利用PHP中的cURL:
<?php
$curl = curl_init( );
curl_setopt( $curl, CURLOPT_URL, "http://localhost/something.php" );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $_POST );
curl_exec( $curl );
curl_close( $curl );
?>
<form action="test.php" method="post">
<input id="textfield" name="textfield" />
<input type="submit" />
</form>
这段代码在服务器端获取something.php
,允许向其发送POST数据并显示其内容(在本例中可能只是print\r($POST);
).这一个可以做你需要的,但它又有一个缺陷-URL不会改变,所以用户可能会感到困惑-我不会真的推荐它
我个人认为您的案例可能是一个设计缺陷。为什么要将表单页面中的所有资源移到其他页面上?在为其设计的文件/类中处理数据,然后决定结果不是很容易吗?如果出现问题,它将返回表单页面上的用户,如果一切顺利,您将发布将数据发送到DB并显示概览页面,其中包含一些令人高兴的消息,表示一切正常
如果您真的想继续将所有内容发送到其他页面,那么使用AJAX/AJAJ可能是您的另一种解决方案。我敢肯定之前已经以不同的形式回答了这个问题-检查这个问题,看看它是否对您有帮助-(或者,尝试在[Post Get Redirect]上搜索)tag,因为这个问题有很多问题。)@Jeff:你当然是对的。我不知道这个问题的正确术语是Post-Get-Redirect(PRG),很高兴知道。有很多很好的替代方法来处理它-谢谢你的指导,非常感谢!嗨,Ondrej,谢谢你的反馈。只是澄清一个可能的误解:我不想在不同的页面上处理数据-我希望它们被同一个页面/类处理,允许它们编辑数据。redirect将在之后发挥作用,以解决我问题末尾的两个数字项目。嗨,confusedGeek,谢谢你的建议。这实际上是我自己考虑的一个选项,但为了解决确认消息处理问题,使用DB存储似乎是一种过度使用。从处理点来看,使用$s锡安将更有效,因为在这种情况下,它只是一个临时存储-但这两种选择都必须处理额外的检查,以防止