如何在不使用PHP表单的情况下设置post值?

时间:2014-05-10 04:52:03

标签: php post

我正在收集有关使用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
?>

我怎样才能做到这一点?

3 个答案:

答案 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>