Heim  >  Artikel  >  Backend-Entwicklung  >  php post请求乱码的有关问题

php post请求乱码的有关问题

WBOY
WBOYOriginal
2016-06-13 12:42:18913Durchsuche

php post请求乱码的问题
使用最土模板里的post请求源码如下

<br />
	static public function DoPost($url,$post_data=array()){<br />
		$url2 = parse_url($url);<br />
		$url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);<br />
		$url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);<br />
		$host_ip = @gethostbyname($url2["host"]);<br />
		$fsock_timeout = 2; //2 second<br />
		if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){<br />
			return false;<br />
		}<br />
		$request =  $url2["path"].($url2["query"] ? "?" . $url2["query"] : "");<br />
		$post_data2 = http_build_query($post_data);<br />
		$post_data2=urldecode($post_data2);<br />
		$in  = "POST " . $request . " HTTP/1.0\r\n";<br />
		$in .= "Accept: */*\r\n";<br />
		$in .= "Host: " . $url2["host"] . "\r\n";<br />
		$in .= "User-Agent: Lowell-Agent\r\n";<br />
		$in .= "Content-type: application/x-www-form-urlencoded\r\n";<br />
		$in .= "Content-Length: " . strlen($post_data2) . "\r\n";<br />
		$in .= "Connection: Close\r\n\r\n";<br />
		$in .= $post_data2 . "\r\n\r\n";<br />
		unset($post_data2);<br />
		if(!@fwrite($fsock, $in, strlen($in))){<br />
			fclose($fsock);<br />
			return false;<br />
		}<br />
		return self::GetHttpContent($fsock);<br />
	}<br />
<br />
	static private function GetHttpContent($fsock=null) {<br />
		$out = null;<br />
		while($buff = @fgets($fsock, 2048)){<br />
			$out .= $buff;<br />
		}<br />
		fclose($fsock);<br />
		$pos = strpos($out, "\r\n\r\n");<br />
		$head = substr($out, 0, $pos);    //http head<br />
		$status = substr($head, 0, strpos($head, "\r\n"));    //http status line<br />
		$body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body<br />
		if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){<br />
			if(intval($matches[1]) / 100 == 2){<br />
				return $body;  <br />
			}else{<br />
				return false;<br />
			}<br />
		}else{<br />
			return false;<br />
		}<br />
	}<br />

实现的是http短信发送 因为运营商没有urldecode 我这里只能想到参数原文字请求 发送到手机的短信是乱码的本人接触php也不久 想请教下各位 有没有什么办法 能解决乱码问题。
可不可以通过其他方式请求http。

PHP 乱码
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn