php利用fsockopen get/post提交表单及上传文件,具体内容如下
1.get
get.php
<?php
$host = 'demo.fdipzone.com';
$port = 80;
$errno = '';
$errstr = '';
$timeout = 30;
$url = '/socket/getapi.php';
$param = array(
'name' => 'fdipzone',
'gender' => 'man'
);
$url = $url.'?'.http_build_query($param);
// create connect
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp){
return false;
}
// send request
$out = "get ${url} http/1.1rn";
$out .= "host: ${host}rn";
$out .= "connection:closernrn";
fputs($fp, $out);
// get response
$response = '';
while($row=fread($fp, 4096)){
$response .= $row;
}
fclose($fp);
$pos = strpos($response, "rnrn");
$response = substr($response, $pos+4);
echo $response;
?>
getapi.php
<?php $name = $_get['name']; $gender = $_get['gender']; echo 'name='.$name.'<br>'; echo 'gender='.$gender; ?>
2.post
post.php
<?php
$host = 'demo.fdipzone.com';
$port = 80;
$errno = '';
$errstr = '';
$timeout = 30;
$url = '/socket/postapi.php';
$param = array(
'name' => 'fdipzone',
'gender' => 'man',
'photo' => file_get_contents('photo.jpg')
);
$data = http_build_query($param);
// create connect
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp){
return false;
}
// send request
$out = "post ${url} http/1.1rn";
$out .= "host:${host}rn";
$out .= "content-type:application/x-www-form-urlencodedrn";
$out .= "content-length:".strlen($data)."rn";
$out .= "connection:closernrn";
$out .= "${data}";
fputs($fp, $out);
// get response
$response = '';
while($row=fread($fp, 4096)){
$response .= $row;
}
fclose($fp);
$pos = strpos($response, "rnrn");
$response = substr($response, $pos+4);
echo $response;
?>
postapi.php
<?php
define('upload_path', dirname(__file__).'/upload');
$name = $_post['name'];
$gender = $_post['gender'];
$photo = $_post['photo'];
$filename = time().'.jpg';
file_put_contents(upload_path.'/'.$filename, $photo, true);
echo 'name='.$name.'<br>';
echo 'gender='.$gender.'<br>';
echo '<img src="upload/'.$filename.'">';
?>
3.上传文件
file.php
<?php
$host = 'demo.fdipzone.com';
$port = 80;
$errno = '';
$errstr = '';
$timeout = 30;
$url = '/socket/fileapi.php';
$form_data = array(
'name' => 'fdipzone',
'gender' => 'man',
);
$file_data = array(
array(
'name' => 'photo',
'filename' => 'photo.jpg',
'path' =>'photo.jpg'
)
);
// create connect
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp){
return false;
}
// send request
srand((double)microtime()*1000000);
$boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);
$data = "--$boundaryrn";
// form data
foreach($form_data as $key=>$val){
$data .= "content-disposition: form-data; name="".$key.""rn";
$data .= "content-type:text/plainrnrn";
$data .= rawurlencode($val)."rn";
$data .= "--$boundaryrn";
}
// file data
foreach($file_data as $file){
$data .= "content-disposition: form-data; name="".$file['name'].""; filename="".$file['filename'].""rn";
$data .= "content-type: ".mime_content_type($file['path'])."rnrn";
$data .= implode("",file($file['path']))."rn";
$data .= "--$boundaryrn";
}
$data .="--rnrn";
$out = "post ${url} http/1.1rn";
$out .= "host:${host}rn";
$out .= "content-type:multipart/form-data; boundary=$boundaryrn"; // multipart/form-data
$out .= "content-length:".strlen($data)."rn";
$out .= "connection:closernrn";
$out .= "${data}";
fputs($fp, $out);
// get response
$response = '';
while($row=fread($fp, 4096)){
$response .= $row;
}
fclose($fp);
$pos = strpos($response, "rnrn");
$response = substr($response, $pos+4);
echo $response;
?>
fileapi.php
<?php
define('upload_path', dirname(__file__).'/upload');
$name = $_post['name'];
$gender = $_post['gender'];
$filename = time().'.jpg';
echo 'name='.$name.'<br>';
echo 'gender='.$gender.'<br>';
if(move_uploaded_file($_files['photo']['tmp_name'], upload_path.'/'.$filename)){
echo '<img src="upload/'.$filename.'">';
}
?>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持硕编程。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!