phppost文件
‘壹’ php怎么将接收到的post数据发送到另一个php文件中
可以用 Curl、socket、file_get_contents 等方式来发送POST数据
‘贰’ php将post过来的$_FILES多张图片同时保存在同一个文件夹
if(!isset($_FILES['userfile'])){
echo "失败";
}else{
//文件夹不存在则创建文件夹(文件夹路径:$dirname)
if (!file_exists($dirname){
mkdir($dirname);
}
$max_files=5; //设置最多上传文件的个数
//遍历图片并存放至文件夹(图片文件集合$src)
for($i=0;$i<$max_files;$i++){
//如果没出错
if($_FILES['userfile']['error'][$i]==0){
//设置完整存放路径+文件名
$file_path=$dirname. "/" .$_FILES['userfile']['name'][$i];
//图片正常读写就存放至文件夹
if (@fopen($src,'r')){
file_put_contents($file_path, $_FILES['userfile']);
}
}
}
}
‘叁’ php如何接收别的服务器post过来的数据 - 技术问答
通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP的$_POST接收用户POST到服务器的数据,并进行适当的处理。但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用$_POST来识别,那又该如何处理呢?
我们介绍php接受post数据的三种方式:
1.$_POST方式接收数据
$_POST方式是通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。如使用$_POST[‘name’]就可以接收到网页表单以及网页异步方式post过来的数据,
即$_POST只能接收文档类型为Content-Type: application/x-www-form-urlencoded提交的数据,也就是表单POST过来的数据。
2.$GLOBALS[‘HTTP_RAW_POST_DATA’]方式接收数据
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST过来的数据取决于centent-Type的设置,只有在PHP在无法识别的Content-Type的情况下,才会将POST过来的数据原样地填入变量$GLOBALS[‘HTTP_RAW_POST_DATA’]中,像Content-Type=application/x-www-form-urlencoded时,该变量是空的。
另外,它同样无法读取Content-Type为multipart/form-data的POST数据,也需要设置php.ini中的always_populate_raw_post_data值为On,PHP才会总把POST数据填入变量$http_raw_post_data。
3.php://input方式接收数据
如果访问原始 POST 数据的更好方法是 php://input。php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的php.ini设置,php://input不能用于 enctype=”multipart/form-data”。对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”)来获取原始数据。事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。php://input读取不到$_GET数据。是因为$
‘肆’ 求助PHP如何POST提交数据
用PHP向服务器发送HTTP的POST请求,代码如下:
<?php
/**
*发送post请求
*@paramstring$url请求地址
*@paramarray$post_datapost键值对数据
*@returnstring
*/
functionsend_post($url,$post_data){
$postdata=http_build_query($post_data);
$options=array(
'http'=>array(
'method'=>'POST',
'header'=>'Content-type:application/x-www-form-urlencoded',
'content'=>$postdata,
'timeout'=>15*60//超时时间(单位:s)
)
);
$context=stream_context_create($options);
$result=file_get_contents($url,false,$context);
return$result;
}
使用的时候直接调用上面定义的send_post方法:
$post_data=array(
'username'=>'username',
'password'=>'password'
);
send_post('网址',$post_data);
‘伍’ php curl post 上传文件 接收文件 $_FILES 为空 是服务器配置问题吗还是什么原因
原因找到了。就是$data['img']="@/tmp/1.jpg";这句话
一定要用绝对路径。
$ch=curl_init();
define('_ROOT',str_replace("\",'/',dirname(__FILE__)));
$data['img']="@"._ROOT."/tmp/1.jpg";
curl_setopt($ch,CURLOPT_URL,"http://www.biubiu.com/huahua.php");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result=curl_exec($ch);
curl_close($ch);
echo$result;
‘陆’ php发送get,post请求的几种方法
POST方法比较适合用于发送一个保密的(比如信用卡号)或者比较大量的数据到服务器,但速度慢。而Get方法会将所要传输的数据附在网址后面,然后一起送达服务器,因此传送的数据量就会受到限制且不安全,但是执行效率却比 Post方法好。具体来说如下:
1、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
2、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
3、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
4、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
5、Get是Form的默认方法。
‘柒’ http post参数值字符过长,PHP服务端接收数据为空
Windows 环境下的修改方法
第一步:修改在php下POST文件大小的限制
1.用编辑器打开php.ini
找到:max_execution_time =30 ,这个是每个脚本运行的最长时间,单位秒,修改为:
max_execution_time = 150
找到:max_input_time = 60,这是每个脚本可以消耗的时间,单位也是秒,修改为:
max_input_time = 300
找到:memory_limit = 128M,这个是脚本运行最大消耗的内存,根据你的需求更改数值,这里修改为:
memory_limit = 256M
找到:post_max_size = 8M,表单提交最大数据为8M,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的。限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等…这里修改为:
post_max_size = 20M
找到:upload_max_filesize = 2M ,上载文件的最大许可大小 ,修改为:
upload_max_filesize = 10M
第二步: Apache环境中的档案上传大小控制
修改位于Apahce目录下的httpd.conf
添加下面内容
LimitRequestBody10485760
即10M=10*1024*1024,有的文章中提到应改为 600000000
重新启动apache,就可以在设置里看到你要的大小
Linux 环境下的修改方法
vim /etc/php.ini
找到 File Uploadsh区域修改以下几个参数: file_uploads = on;是否允许通过HTTP上传文件的开关。默认为ON即是开 upload_tmp_dir;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹(moodle可以不改)
upload_max_filesize = 8m ;允许上传文件大小的最大值.
找到 Data Handling区域,修改 post_max_size = 8m;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
设上述四个参数后,上传小于8M的文件一般不成问题。但如果上传大于8M的文件,只还得设置以下参数:
在Resource Limits 区域: max_execution_time = 600;每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time = 600;每个PHP页面接收数据所需的最大时间,默认60秒 memory_limit = 8m;每个PHP页面所吃掉的最大内存,默认8M
‘捌’ PHP中put和post区别
1.使用支持和范围的区别:
PHP提供了对PUT方法的支持,在Http定义的与服务器的交互方法中,PUT是把消息本体中的消息发送到一个URL,形式上跟POST类似;
PHP 提供对诸如 Netscape Composer 和 W3C Amaya 等客户端使用的 HTTP PUT 方法的支持;
PHP 4 中,必须使用标准的输入流来读取一个 HTTP PUT 的内容;
PUT方法没有POST方法使用广泛,但PUT方法却是向服务器上传文件最有效率的方法:
2.上传过程的区别:
POST上传文件时,通常需要将所有的信息组合成multipart 传送过去,然后服务器再解码这些信息,解码过程则必不可少的会消耗内存和CPU资源,这种现象在上传大文件时尤其明显;
PUT方法则允许你通过与服务器建立的socket链接传递文件的内容,而不附带其他的信息,效果上更直接;
3.上传效果的区别:
PHP 接受到 PUT 方法的请求时,会把上传的文件储存到和其它用 POST 方法处理过的文件相同的临时目录;请求结束时,临时文件将被删除。
用来处理 PUT 的 PHP 脚本必须将该文件拷贝到其它的地方;
4. POST和PUT请求根本区别
POST请求的URI表示处理该封闭实体的资源,该资源可能是个数据接收过程、某种协议的网关、或者接收注解的独立实体;
PUT请求中的URI表示请求中封闭的实体-用户代理知道URI的目标;
服务器无法将请求应用到其他资源;
如果服务器希望该请求应用到另一个URI,就必须发送一个301响应;
用户代理可通过自己的判断来决定是否转发该请求;
‘玖’ php大神来,post提交文本或者提交文件
前端 index.php
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>无标题文档</title>
</head>
<body>
<formmethod="post"enctype="multipart/form-data"action="./manage.php"name="">
<inputtype="file"name="uploadfile"id="uploadfile">
<inputtype="submit"name="upload"id="upload"value="上传">
<form>
</body>
</html>
后端manage.php与index.php同一层
<?php
if(!empty($_FILES["uploadfile"]['tmp_name'])){
$up_name=$_FILES["uploadfile"];
$up_size=$up_name["size"];
$up_type=$up_name["type"];
$up_path=$up_name['tmp_name'];
$up_fname=$up_name['name'];
$exten=pathinfo($up_fname,PATHINFO_EXTENSION);
$objname=date('YmdHis',time());
$save=$objname.'.'.$exten;
$max_size='314572800';//300M1024*1024*300
$up_limit=array("application/msword","text/html","application/pdf","application/vnd.ms-powerpoint","text/plain","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
if(in_array($up_type,$up_limit)&&$up_size<=$max_size&&$up_size>=0){
if(move_uploaded_file($up_path,$save)){
$msg='上传成功';
}
else{
$msg='上传失败';
}
}
else{
$msg='上传类型或大小不符合';
}
}
else{
$msg='无上传文件';
}
echo$msg;
?>