如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量

 

转帖:http://dev.youkuaiyun.com/author/musttieying/5920e05d93cf49f9b1ba923abeb45caa.html

可以使用以下函数来实现:

<?php
function posttohost($url, $data) {
$url = parse_url($url);
if (!$url) return "couldn't parse url";
if (!isset($url['port'])) { $url['port'] = ""; }
if (!isset($url['query'])) { $url['query'] = ""; }

$encoded = "";

while (list($k,$v) = each($data)) {
$encoded .= ($encoded ? "&" : "");
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}

$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
if (!$fp) return "Failed to open socket to $url[host]";

fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query']));
fputs($fp, "Host: $url[host]/n");
fputs($fp, "Content-type: application/x-www-form-urlencoded/n");
fputs($fp, "Content-length: " . strlen($encoded) . "/n");
fputs($fp, "Connection: close/n/n");

fputs($fp, "$encoded/n");

$line = fgets($fp,1024);
if (!eregi("^HTTP/1/.. 200", $line)) return;

$results = ""; $inheader = 1;
while(!feof($fp)) {
$line = fgets($fp,1024);
if ($inheader && ($line == "/n" || $line == "/r/n")) {
$inheader = 0;
}
elseif (!$inheader) {
$results .= $line;
}
}
fclose($fp);

return $results;
}
?>
--------------------------------------------------------------------------------------------------
也可以这样

<?php
$URL="www.mysite.com/test.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://$URL");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "Data1=blah&Data2=blah");
curl_exec ($ch);
curl_close ($ch);
?>

 

 
<think>首先,用户的问题是关于PHP的:如何在PHP中将前端POST过来的数据转发给一个方法处理。具体是:"请问php接收前端post数据并转发到一个方法处理"。我需要参考提供的引用内容来构建我的回答。系统指令要求使用站内引用,并在回答中自然地添加引用标识。关键引用:-引用[1]:基本介绍PHP使用postget传值接收数据。-引用[2]:提到在特殊情况下,不能用$_POST接收数据,需要其他方式处理。-引用[3]:提供方法一使用file_get_contents('php://input')来读取原始POST数据。-引用[4]:显示如何使用$GLOBALS['HTTP_RAW_POST_DATA']或file_get_contents('php://input')接收JSON数据。-引用[5]:直接使用$_POST来获取表单字段的值。我的回答需要清晰结构化:1.**接收前端POST数据**:讨论如何接收数据。-可以使用$_POST超全局变量,适用于表单提交。-对于非表单提交或特殊数据,可以使用file_get_contents('php://input')。-例如,如果数据是JSON格式,可能需要解码。-参考引用[3][4][5]。2.**转发到一个方法处理**:这意味着将数据传递给PHP中的一个函数或方法。-在PHP中,函数调用是直接的。一旦你获取了数据,你就可以调用一个函数并传递数据作为参数。-例如,定义一个函数processData($data),然后在接收数据的脚本中调用它。步骤:-接收数据:使用$_POSTphp://input。-处理或转发:调用一个方法。系统指令:-使用$...$格式$$...$$格式。-使用中文回答。-生成相关问题。结构化回答:1.**介绍问题**:简述用户的问题。2.**接收前端POST数据的方法**:解释如何接收,参考引用。-方法1:直接使用$_POST,适用于表单提交。[^5]-方法2:使用file_get_contents('php://input'),适用于原始数据。[^3][^4]3.**转发到一个方法处理**:举例说明如何调用一个函数。-例如,定义functionprocessData($data),并调用它。4.**代码示例**:提供PHP代码片段。-使用独立格式的LaTeX代码块。5.**总结**。6.**相关问题**:生成相关问题。代码示例:假设有一个场景:前端发送JSON数据PHP接收并调用一个方法处理。```php<?php//接收前端POST数据$rawData=file_get_contents('php://input');$jsonData=json_decode($rawData,true);//假设是JSON格式//定义一个方法处理数据functionprocessData($data){//处理逻辑,例如保存到数据库或打印echo"处理数据:".print_r($data,true);}//调用方法处理数据processData($jsonData);?>```在回答末尾添加引用标识。相关问题:根据系统指令:1.PHP中处理JSON数据的常见方法?2.如何在不同PHP文件中共享数据?3.PHP的HTTP请求处理优化建议?确保回答真实可靠,基于引用。</think> ### PHP中接收前端POST数据并转发到一个方法处理 在PHP中,接收前端通过POST方式发送的数据,并转发给一个方法(函数)处理,是一个常见的开发任务。以下是详细的解决方案,基于站内引用的方法实践经验: #### 1. **接收前端POST数据的方法** PHP提供了多种方式接收POST数据,核心是通过超全局变量`$_POST`或读取原始输入流: - **使用`$_POST`**:适用于标准HTML表单提交的场景。例如,如果前端表单中的字段名为`data`,则可以直接获取: ```php $data = $_POST['data']; // 获取特定字段值[^5] ``` 或者获取所有字段: ```php $postData = $_POST; // 整个POST数据数组[^1][^5] ``` - **使用`file_get_contents('php://input')`**:适用于非表单提交或原始数据(如JSON或XML)。这种读取方式能处理未经过PHP自动解析的数据流: ```php $rawData = file_get_contents('php://input'); // 获取原始POST数据[^3][^4] // 如果数据是JSON格式,可以解码为数组 $jsonData = json_decode($rawData, true); // 将JSON转换为关联数组[^3][^4] ``` #### 2. **转发到一个方法处理** 一旦获取到数据,即可调用PHP中的其他函数进行处理。这是一个面向过程的示例: ```php <?php // 接收前端POST数据(假设是JSON格式) $rawData = file_get_contents('php://input'); $jsonData = json_decode($rawData, true); // 解码为数组[^3][^4] // 定义一个方法(函数)来处理数据 function processData($data) { // 在这里添加业务逻辑,例如验证或存储 if (isset($data['key'])) { return "处理成功: " . $data['key']; } return "无效数据"; } // 调用一个方法并传入数据 $result = processData($jsonData); // 转发数据到processData方法 echo $result; ?> ``` - **面向对象场景**:如果使用类方法: ```php class DataProcessor { public function handle($input) { // 处理数据逻辑 return json_encode(['status' => 'success', 'data' => $input]); } } $processor = new DataProcessor(); $result = $processor->handle($jsonData); // 转发数据到类方法[^2] ``` #### 关键注意事项 - **数据验证**:在转发前,建议验证数据是否为空或格式错误,例如使用`isset()`或`is_array()`。 - **内容类型**:如果前端发送JSON,确保设置HTTP头`Content-Type: application/json`,避免解析错误[^4]。 - **安全性**:使用过滤函数(如`filter_input()`)防止SQL注入或XSS攻击[^1]。 - **性能**:直接调用方法不会额外开销,但大型数据传递建议使用引用(如`&$data`)减少内存占用[^2]。 #### 总结 PHP接收POST数据主要通过`$_POST`或`php://input`,转发时只需调用目标函数或方法并传入参数即可。这种方法简单高效,适用于API开发、表单处理等场景[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值