我正在收集有关使用PHP访问我网站的用户的数据。它的工作方式是重定向到包含收集用户信息的脚本的页面。然后,该页面重定向回到他们来自的页面。我只想知道如何为原始页面设置POST变量,告诉它集合已完成,以避免重定向循环。原始页面上的代码是:
<?php
if(isset($_POST['userdata'])) {
//The data collection has completed
} else {
header("Location: /datacollector.php");
};
?>
/datacollector.php上的代码是
<?php
//code to collect data is here
//code to redirect back to original page with $_POST['userdata'] set to true or something here
?>
我怎样才能做到这一点?
答案 0 :(得分:0)
要创建POST请求,请使用fsockopen()
打开与主机的TCP连接,然后对fwrite()
返回的处理程序使用fsockopen()
,其中包含某些值使用header()
函数的示例:
header("POST $path HTTP/1.1\r\n");
header("Host: $host\r\n");
header("Content-type: application/x-www-form-urlencoded\r\n");
header("Content-length: " . strlen($data) . "\r\n");
header("Connection: close\r\n\r\n");
header($data);
或者只是尝试使用上面的代码header()
函数。
或者,您可以使用cURL库。
答案 1 :(得分:0)
这就是你在幕后做的事情。使用jQuery post(http://api.jquery.com/jquery.post/)将数据发送到后端的php文件。
html javascript
<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: "POST",
url: '/scripts/processData.php',
data: { 'value1' : 'valueIwanttosend' }
});
}
</script>
processData.php:
<?php
$value1 = $_POST['value1'];
// do database ops with the value
?>
答案 2 :(得分:0)
在没有post
的情况下使用form
不是一个好习惯,因为它不具备可维护性和可读性。除非您使用ajax
。
但我想你真正想要的不是在你的html中使用form
元素而是没有显示它。在这种情况下,您可以使用表单的隐藏字段来传递数据,而不会将其显示给客户端。
<form name="myform" action="yourAction.php" method="POST">
<input type="hidden" name="NoOneCanSee" value="whatever">
</form>