php post请求和jquery中post请求有什么不同吗?该如何处理
data
php
post
quot
url
php post请求和jquery中post请求有什么不同吗?
自己写了一个php的socket http请求,
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> public function sendpost($postType='POST') { $url = $this->postURL; $data = $this->postData == '' ? array() : $this->postData; //先解析url $url = parse_url($url); $url_port = !isset($url['port']) ? (($url['scheme'] == 'http') ? 80 : 443) : $url['port']; if (!$url) { $this->errMessage = "couldn't parse url"; return false; } //将参数拼成URL key1=value1&key2=value2 的形式 $encoded = ""; while (list($k, $v) = each($data)) { $encoded .= ($encoded ? '&' : ''); $encoded .= rawurlencode($k)."=".rawurlencode($v); } //echo $encoded;exit; $len = strlen($encoded); //拼上http头 $out = "{$postType} ".$url['path'].(isset($url['query']) ? ('?'.$url['query']) : '')." HTTP/1.1\r\n"; $out .= "Host:".$url['host']."\r\n"; $out .= "Content-type: application/x-www-form-urlencoded\r\n"; $out .= "Connection: Close\r\n"; $out .= "Content-Length: $len\r\n"; $out .= "\r\n"; $out .= $encoded."\r\n"; //打开一个sock $fp = @fsockopen($url['host'], $url_port); $line = ""; if (!$fp) { $this->errMessage = "$errstr($errno)\n"; return false; } else { fwrite($fp,$out); while (!feof($fp)) { $line .= fgets($fp, 2048); } } //去掉头文件 if ($line) { $body = stristr($line, "\r\n\r\n"); $body =substr($body, 4, strlen($body)); $line = $body; } fclose($fp); return $line; }
登录后复制
同时,用jquery的ajax请求测试。
- JScript code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> $.ajax({ type : "POST", cache : false, url : _url, data : _data, dataType : 'json', success : function(data) { } });
登录后复制
发现php的请求总是返回错误的信息,而ajax请求则返回正确的,应该都是http post请求数据返回数据,没什么区别吧。
服务器端还可以检测出是ajax请求还是php请求?
------解决方案--------------------
- PHP code
[User:root Time:03:17:09 Path:/home/apache/web]$ cat test.php <?php // http only, no error check. function post_request($url, $data) { $post_data = http_build_query($data); $request = "POST /main.php HTTP/1.1\r\n" . "Host: 192.168.1.10\r\n" . "Content-Type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($post_data) . "\r\n\r\n" . $post_data; echo $request . PHP_EOL; $sockfd = fsockopen("192.168.1.10", 80); fwrite($sockfd, $request); $response = ""; while (($ret= fgets($sockfd)) !== false) { $response .= $ret; } return $response; } $response = post_request("http://192.168.1.10/main.php", array('a' => "baidu", 'b' => "client backend")); echo $response; ?> [User:root Time:03:17:12 Path:/home/apache/web]$ cat main.php <?php echo $_POST['a'] . PHP_EOL; echo $_POST['b'] . PHP_EOL; ?> <br><font color="#e78608">------解决方案--------------------</font><br>另外,https你的代码是无力的,必须用php支持的context参数利用stream_context_create配合file_get_contents之类的使用或者fopen之类的使用,或者直接用curl。 <div class="clear"> </div>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写
