• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php post请求和jquery中post请求有什么不同吗?该如何处理

php 搞代码 3年前 (2022-01-24) 20次浏览 已收录 0个评论

php post请求和jquery中post请求有什么不同吗?
自己写了一个php的socket http请求,

PHP code

<!---ecms 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 <strong>+本文来源gao@daima#com搞(%代@#码网</strong><pre>搞代gaodaima码

(!$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

<!---ecms 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 <?phpecho $_POST['a'] . PHP_EOL;echo $_POST['b'] . PHP_EOL;?>
------解决方案--------------------
另外,https你的代码是无力的,必须用php支持的context参数利用stream_context_create配合file_get_contents之类的使用或者fopen之类的使用,或者直接用curl。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php post请求和jquery中post请求有什么不同吗?该如何处理
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址