【发布时间】:2012-04-19 12:07:52
【问题描述】:
我最近问了这个问题Posting data with curl - actually refreshing to the next page,但我很快意识到这个解决方案并不是很好......
所以我在几个地方的 PHP 页面之间传递数据。这是我目前的问题:
我依赖于 cookie,因此我会在每个页面的顶部检查是否启用了 cookie:
session_start();
if (!isset($_COOKIE['PHPSESSID'])) {
if ($_GET['rd'] == '1') {
header('Location: *redirect url*');
} else {
*refresh the page, setting 'rd' to '1'*
}
}
但是,由于这是每个页面上的“标题”,因此它必须是通用的。例如,任何发送给它的帖子或获取数据(从另一个页面或表单)都应该发送到重定向页面。
获取很容易,因为我可以将它包含在 url 中,但是我在使用 Post 时遇到了问题。
我开始使用 cURL 将 Post 数据发送到下一页,但我意识到它实际上并没有转到该页面
$ch = curl_init($some_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'myvar=something');
curl_exec($ch);
curl_close($ch);$ch = curl_init($some_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'myvar=something');
curl_exec($ch);
curl_close($ch);
cURL 之后不会加载 $url;它返回它
所以有人建议我使用 Sessions,但我很快意识到这不是一个很好的解决方案;
- 重定向时,如果我将Post数据设置为Session变量(存储数据),那么每个使用Post数据的页面都需要检查数据是在Post还是Session中。
- 效率不高 - 我在两个页面之间发送数据,不一定是有关会话的信息。
关于数字 2,我设置了另一个会话变量来告诉下一页是否已将 Post 数据移动到 Session。但是,每次我都必须重新设置该变量,这只会让事情变得复杂和不整洁。
示例: 我有一个将表单数据发送到验证页面的注册页面。这两个都有检查cookie是否启用的标题。
发布数据被发送到验证页面,如果出现问题,我无法将数据发布回验证页面(告诉用户问题出在哪里),我必须设置一个会话变量注册错误。每次,我都必须取消设置注册错误变量。
目前我认为验证页面不需要cookie,但我不希望有任何漏洞,也不知道以后会添加什么。
回到问题
- 我需要检查每个页面是否启用了 cookie。
- 我不知道是否 我当前的应用程序是最有效的方式(重定向);它是 肯定会造成很多问题
- 如果有人能告诉我如何 在不重定向的情况下检查 cookie(并且不与 其他任何东西),这和 解决方案
- 我不想依赖 javascript 或隐藏表单;我想掌控体验
- 我需要在两个页面之间发送数据 有效率的。不喜欢某些应用程序的会话,因为我 需要设置和取消设置 每个页面的变量。
我知道这是一项艰巨的任务,但如果有人能提供帮助,将不胜感激!
【问题讨论】:
-
更准确地说,您想要做什么?为什么“在两页之间发送数据”?用户将在页面之间移动,您需要每个页面都知道另一个页面上的数据吗?这只是为了完成表单,还是您正在做一些更复杂的事情?
-
假设我有两个页面:一个表单和另一个验证。表单通过一个表单发送发布数据,另一个则检查错误。如果有错误,则必须将错误发送回表单以显示它们。我可以使用会话,但数据仅用于 1 页,每次我在两页之间发送数据时,我都必须设置和取消设置会话变量。在此示例中,如果我将两个页面放在一起,它会起作用,但还有其他情况;最重要的是检查 cookie 并保留帖子数据 - 阅读我在底部的帖子,它解释了我的主要问题