http://blog.51yip.com/php/686.html
一,利用fsockopen来上传文件
以前我写过一篇关于socket通信原理的博文http://blog.51yip.com/php/673.html
有
兴趣的朋友可以看看,前面讲的那篇博文,socket的服务器和客户端都是要用php命令来运行的。平常我们上传文件是浏览本地文件,通过一个php程序
将文件上传一个地方,这个时候我们用php命令来运行php程序就不方便了。这个时候我们可以用fsockopen来打开一个socket通道,并且可以
通过浏览器来访问页面。下面有一个例子,大家可以试一下。
二,upload.html
-
<
html
>
-
<
body
>
-
<
form
action
=
'image.php'
method
=
'post'
name
=
'form'
enctype
=
'multipart/form-data'
>
-
<
input
type
=
'file'
name
=
'photo'
>
-
<
input
type
=
submit
value
=
'submit'
>
-
</
form
>
-
</
body
>
-
</
html
>
浏览本地文件上传到中间文件image.php
三,image.php来向socket传送数据
-
<?php
-
$fp
=
fsockopen
(
"127.0.0.1"
, 10008,
$errno
,
$errstr
, 10);
-
-
$array
=
$_FILES
[
'photo'
];
-
-
if
(!
$fp
){
-
echo
"open fail"
;
-
}else
{
-
-
if
(!
empty
empty
(
$array
)){
-
-
$str
=
'filename:'
.
$array
[
'name'
];
-
fwrite($fp
,
$str
);
-
$filename
=
$array
[
'tmp_name'
];
-
$handle
=
fopen
(
$filename
,
"r"
);
-
-
$contents
=
fread
(
$handle
,
filesize
(
$filename
));
-
-
fwrite($fp
,
$contents
);
-
}
-
echo
$fp
;
-
}
-
fclose($fp
);
-
?>
他的作用是和SOCKET服务器,建立通信,将数据输送到socket通道中
四,server.php接收到数据
-
<?php
-
-
$tcp
=
getprotobyname
(
"tcp"
);
-
$socket
= socket_create(AF_INET, SOCK_STREAM,
$tcp
);
-
socket_bind($socket
,
'127.0.0.1'
, 10008);
-
socket_listen($socket
);
-
-
-
$buffer
=
"connect"
;
-
$path
=
"/home/zhangy/www/test/"
;
-
while
(true) {
-
-
$connection
= socket_accept(
$socket
);
-
if
(!
$connection
){
-
echo
"connect fail"
;
-
}else
{
-
echo
"Socket connected\n"
;
-
-
if
(
$buffer
!=
""
) {
-
echo
"send data to client\n"
;
-
socket_write($connection
,
$buffer
.
"\n"
);
-
echo
"Wrote to socket\n"
;
-
} else
{
-
echo
"no data in the buffer\n"
;
-
}
-
-
-
while
(
$flag
= @socket_recv(
$connection
,
$data
, 2048, 0)){
-
if
(false !==
strpos
(
$data
,
'filename:'
)){
-
$filename
=
substr
(
$data
,9);
-
-
$filename
=
$path
.
$filename
;
-
-
$fp
=
fopen
(
$filename
,
"wb"
);
-
continue
;
-
}
-
fwrite($fp
,
$data
);
-
}
-
fclose($fp
);
-
}
-
-
socket_close($connection
);
-
-
printf("Closed the socket\n"
);
-
}
-
?>
他的作用是接收数据,并将数据存储存起来
分享到:
相关推荐
总之,“socket-php文件分段上传”技术是解决大文件上传的有效方案,它利用了Socket通信的灵活性和HTML5的File API,实现了高效、可靠的文件传输。对于开发大型、高并发的Web应用,尤其是涉及到大量文件操作的场景,...
总的来说,这个项目利用Flash的多文件选择和进度显示能力,结合PHP的文件处理功能,实现了批量上传文件并带有进度条的特性。尽管现在Flash已经逐渐被HTML5取代,但理解这种技术实现对于理解现代Web开发的历史和技术...
多线程FTP上传是指通过多个并发连接同时上传文件,以提高文件上传的速度和效率。这种技术尤其适用于大文件或大批量文件的传输,因为它可以充分利用网络带宽资源。 在实现FTP多线程上传时,我们需要考虑以下几个关键...
PHP利用fsockopen函数进行GET和POST请求,以及如何通过fsockopen上传文件的知识点是本篇内容的核心。fsockopen是PHP内置的函数,它能够创建一个网络连接到指定主机的指定端口,允许开发者通过套接字进行原始的网络...
7. **安全考虑**:在实际部署时,需注意防止非法文件上传、权限控制以及服务器资源的合理利用,确保系统的安全性和稳定性。 综上,这个"Flash+PHP拍照系统源码"是一个完整的基于Web的图像捕捉和上传解决方案,涵盖...
这个PHP实例是专门用于创建和管理BT种子的程序,可以帮助开发者理解如何利用PHP实现P2P文件传输的功能。 BT种子程序的核心功能包括生成和解析.torrent文件,以及参与BT网络中的数据交换。以下是对这些关键知识点的...
**远程溢出**是PHP早期版本中一个严重的安全漏洞,尤其在PHP-4.1.2及以下版本中,文件上传功能可能导致远程缓冲区溢出,进而被攻击者利用。公开的攻击程序(如Packet Storm和Shadow Penguin提供的示例)展示了这一...
PHP内置了对FTP(文件传输协议)和SFTP(安全文件传输协议)的支持,使得文件上传下载、目录管理等功能的实现变得简单高效。这些模块不仅适用于网站文件的管理,也广泛用于自动化备份、数据同步等场景。 #### 4. ...
"PHP编程一百例"这个资源提供了丰富的实践案例,涵盖了多种常见的PHP应用场景,包括QQ在线状态检测、会员系统、聊天室构建、留言板功能以及文件上传等。这些实例可以帮助开发者更好地理解和运用PHP语言,提升实际...
7. **文件与目录操作**:PHP可以读取、写入、创建、删除文件和目录,这对于处理上传下载、生成静态页面等功能非常有用。 8. **网络编程**:PHP可以通过cURL库发送HTTP请求,实现数据的获取或提交,也可以通过...
免费虚拟主机“我要安家”提供了基础的Web服务,包括Linux操作系统(Fedora Core 1.0或2.0),Apache web服务器,PHP 4.3.8版本,以及MySQL 4.0.20数据库支持,但不支持mail函数和socket函数。虽然空间有限(100M...
9. **文件系统操作**:在PHP中,可以进行文件读写、目录操作、文件上传下载等,这对于处理用户交互和数据存储非常重要。 10. **网络编程**:PHP也能进行网络通信,如HTTP请求、socket编程,可以实现API调用、...
5. **文件系统操作**:PHP5提供了一系列的文件系统函数,用于读写文件、创建目录、移动或删除文件,以及处理文件上传等操作。 6. **网络编程**:包括HTTP协议的处理,如发送HTTP请求,解析HTTP响应,使用cURL库进行...
此外,还可以利用cURL库进行远程数据交换,或使用fsockopen函数进行Socket编程。 9. **安全性**:在【暗月技术小组培训专用php版】中,免杀性能的优化表明了对Web安全的关注。开发者应了解常见的安全威胁,如XSS...
1. **远程溢出漏洞**:在PHP 4.1.2之前的版本中,存在文件上传远程缓冲区溢出漏洞,这允许攻击者上传恶意代码并执行。因此,保持PHP版本的更新至关重要。 2. **远程拒绝服务(DoS)漏洞**:PHP 4.2.0和4.2.1版本中...
10. **文件上传与分享**:集成云存储服务(如阿里云OSS或Amazon S3)实现文件的上传、下载和分享功能。 综上所述,构建一款基于PHP的在线聊天软件涉及到的技术栈广泛,涵盖了服务器端开发、前端界面设计、数据库...
7. 图像处理和文件操作:PHP 可以处理图像,如缩略图生成、图像转换等,同时支持文件上传和下载功能。 8. PDF 生成:通过PHP,可以生成PDF文档,这对于报表生成和电子文档管理非常有用。 【出入登记系统PHP源码分析...
在PHP Qvod播放客户端中,开发者可能利用了PHP的文件系统操作功能来读取和处理视频文件,如获取文件元信息、切片等。此外,为了实现P2P传输,可能还涉及到网络编程,包括socket通信、HTTP或UDP协议的解析与构建,...
***这个上传漏洞利用的原理只是针对form格式上传的asp和php脚本*** NC(Netcat) 用于提交数据包 DOS界面下运行: NC -vv www.***.com 80<1.txt -vv: 回显 80: www端口 1.txt: 就是你要发送的...