我最近问了这个问题Posting data with curl - 实际上刷新到下一页,但我很快意识到解决方案并不是很好......
所以我在几个地方的 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 或隐藏表单;我想控制体验
- 我需要有效地在两个页面之间发送数据。不喜欢某些应用程序的会话,因为我需要设置和取消设置每个页面的变量。
我知道这是一项艰巨的任务,但如果有人能提供帮助,将不胜感激!