当前位置: 首页 > 编程笔记 >

php利用fsockopen GET/POST提交表单及上传文件

亢琦
2023-03-14
本文向大家介绍php利用fsockopen GET/POST提交表单及上传文件,包括了php利用fsockopen GET/POST提交表单及上传文件的使用技巧和注意事项,需要的朋友参考一下

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.1\r\n"; 
$out .= "Host: ${host}\r\n"; 
$out .= "Connection:close\r\n\r\n"; 
 
fputs($fp, $out); 
 
// get response 
$response = ''; 
while($row=fread($fp, 4096)){ 
  $response .= $row; 
} 
 
fclose($fp); 
 
$pos = strpos($response, "\r\n\r\n"); 
$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.1\r\n"; 
$out .= "Host:${host}\r\n"; 
$out .= "Content-type:application/x-www-form-urlencoded\r\n"; 
$out .= "Content-length:".strlen($data)."\r\n"; 
$out .= "Connection:close\r\n\r\n"; 
$out .= "${data}"; 
 
fputs($fp, $out); 
 
// get response 
$response = ''; 
while($row=fread($fp, 4096)){ 
  $response .= $row; 
} 
 
fclose($fp); 
 
$pos = strpos($response, "\r\n\r\n"); 
$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 = "--$boundary\r\n"; 
 
// form data 
foreach($form_data as $key=>$val){ 
  $data .= "Content-Disposition: form-data; name=\"".$key."\"\r\n"; 
  $data .= "Content-type:text/plain\r\n\r\n"; 
  $data .= rawurlencode($val)."\r\n"; 
  $data .= "--$boundary\r\n"; 
} 
 
// file data 
foreach($file_data as $file){ 
  $data .= "Content-Disposition: form-data; name=\"".$file['name']."\"; filename=\"".$file['filename']."\"\r\n"; 
  $data .= "Content-Type: ".mime_content_type($file['path'])."\r\n\r\n"; 
  $data .= implode("",file($file['path']))."\r\n"; 
  $data .= "--$boundary\r\n"; 
} 
 
$data .="--\r\n\r\n"; 
 
$out = "POST ${url} HTTP/1.1\r\n"; 
$out .= "Host:${host}\r\n"; 
$out .= "Content-type:multipart/form-data; boundary=$boundary\r\n"; // multipart/form-data 
$out .= "Content-length:".strlen($data)."\r\n"; 
$out .= "Connection:close\r\n\r\n"; 
$out .= "${data}"; 
 
fputs($fp, $out); 
 
// get response 
$response = ''; 
while($row=fread($fp, 4096)){ 
  $response .= $row; 
} 
 
fclose($fp); 
 
$pos = strpos($response, "\r\n\r\n"); 
$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.'">'; 
} 
?> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍php实现表单提交上传文件功能,包括了php实现表单提交上传文件功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php实现表单提交上传文件功能的具体代码,供大家参考,具体内容如下 首先创建含表单的html文件:upload.html 再创建服务端文件:upload.php 点击提交后呈现出文件: 本文已被整理到了《php文件上传操作汇总》 ,更多精彩内容,欢迎大家学

  • 问题内容: 我意识到这个问题的变体已经出现了很多次,但是我找不到在这种情况下能回答这个问题的人。 我正在使用第三方fileuploader,该文件利用jQuery并在文件上传完成时给出成功回调。 我要实现的是一个带有文本字段的表单以及fileuploader,当您单击“提交”时,该表单将触发上传功能(文件开始使用进度条开始上传),并等待成功回调之前继续提交表格。 我必须立即承认我是jQuery的白

  • 问题内容: 我有一个带有以下输入标记的HTML页面: 单击页面上的按钮将打开文件对话框。如果要进行实际的上载,则需要另一个按钮来单击(提交),因为此输入文件按钮仅用于提供文件的路径。 选择文件后,是否可以单击浏览按钮,选择文件并立即启动上传功能?如果是,任何人都可以提供代码段吗?谢谢。 问题答案: 如果您希望在用户选择之后提交表单,则只需添加

  • 问题内容: 是否可以在没有jQuery或IFrames的情况下提交AJAX表单(因此仅是纯JavaScript)?我当前正在发送到有效的struts fileUploadAction。操作的代码是否仍可与异步提交一起使用,或者是否需要进行其他操作以获取异步表单提交? 我正在使用struts 1.x,目前我的表单是: 可以提交此表格,从而通过AJAX上传文件吗? 问题答案: 如果我理解正确,则可以使

  • 问题内容: 我有一个简单的文件上传表格。选择文件后,如何使其自动提交?我不希望用户必须单击“提交”按钮。 问题答案: 您可以在输入文件时简单地调用表单的方法。

  • 出身背景 我目前有一个正在工作的C#代码,可以从网页上读取HTTP POST表单提交中的值。看起来是这样的: 我也有工作代码从页面上的文件上传控件读取附件: 显然,最后一段代码还有一点,但我希望它至少能说明我的问题。 我的问题 我现在尝试将这两段代码结合起来。我认为将数据传输对象放在Post函数中一样简单: 这导致在执行HTTP POST时,以下内容返回到浏览器: {“Message”:“此资源不