当前位置: 编程技术>php
本页文章导读:
▪php文件上传表单摘自drupal的代码
drupal文件上传表单的例子 代码如下: function upload_form() { $form = array(); // If this #attribute is not present, upload will fail on submit $form['#attributes']['enctype'] = 'multipart/form-data'; $form['file_upload'] = array( '#titl.........
▪php 连接mysql连接被重置的解决方法
新装了windows7 64位系统后,配备布置许多东西,总是有这样的那样子的拂意,昨天在开始配备布置php+apache的时候,echo phpinfo()完全没问题,但是一朝连接mysql就会呈现页面被重置的问题。原.........
▪php中获取关键词及所属来源搜索引擎名称的代码
代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>greengnn codes</tit.........
[1]php文件上传表单摘自drupal的代码
来源: 互联网 发布时间: 2013-11-30
drupal文件上传表单的例子
function upload_form() {
$form = array();
// If this #attribute is not present, upload will fail on submit
$form['#attributes']['enctype'] = 'multipart/form-data';
$form['file_upload'] = array(
'#title' => t('Upload file'),
'#type' => 'file',
);
$form['submit_upload'] = array(
'#type' => 'submit',
'#value' => 'Submit'
);
return $form;
}
function upload_submit($form, &$form_state) {
$validators = array();
$dest = file_directory_path();
$file = file_save_upload('file_upload', $validators, $dest);
//$file will be 0 if the upload doesn't exist, or the $dest directory
//isn't writable
if ($file != 0) {
$file->filepath; // 文件相对路径
}
else {
form_set_error('myform', t("Failed to save the file."));
}
}
PHP文件上传功能代码实例教程
在PHP网站开发中,PHP程序如何实现文件上传功能,一直是新手的课题。而且文件上传功能一般都用得着,比如图片上传。今天就结合具体代码实例和详细注解和大家分享如何编写PHP文件上传代码,适合php初学者学习。
PHP代码实例主要讲述的是图片上传,看懂程序后你可以修改相关文件类型就可以实现其他文件的上传功能。
编程环境
PHP5.2.4,基本上PHP4.3以上版本,此代码都可以使用
准备工作
检查upload_tmp_dir项
如果PHP的开发环境是自行搭建的,你需要在编写文件上传程序前编辑php.ini文件,找到并编辑upload_tmp_dir选项,此项用来设定文件上传至服务器时的临时文件夹,比如upload_tmp_dir = E:/phpos/uploads,然后再重启Apache。如果PHP的开发环境使用的是傻瓜式一键安装包,一般upload_tmp_dir都是设定好了的,你也可以用phpinfo()函数查看下配置。
编写一个upload文件,设定文件上传表单
<form enctype="multipart/form-data" action="/blog_article/upload.html" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">
<input type="submit" value="上传文件">
</form>
注意
1、表单中enctype=”multipart/form-data”必须指定,以便让服务器知道文件带有常规的表单信息。
2、必须有一个可以设置上传文件最大长度的表单区域,即允许上传文件的最大值(按字节计算),它是隐藏值域,即max_file_size,通过设置其Value(值)可以限制上传文件的大小,避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。但是一般别人可以绕过这个值,所以安全起见,最好是在php.ini文件中配置upload_max_filesize选项,设定文件上传的大小,默认是2M。
文件上传程序
function uploadfile($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir)
{
$MAX_SIZE = 2000000;
$FILE_MIMES = array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png');
$FILE_EXTS = array('.jpg','.gif','.png','.JPG','.GIF','.PNG');
$file_path = $upload_dir.$targetname;
if(!is_dir($upload_dir))
{
if(!mkdir($upload_dir))
die("文件上传目录不存在并且无法创建文件上传目录");
if(!chmod($upload_dir,0755))
die("文件上传目录的权限无法设定为可读可写");
}
if($size>$MAX_SIZE)
die("上传的文件大小超过了规定大小");
if($size == 0)
die("请选择上传的文件");
if(!in_array($type,$FILE_MIMES) || !in_array($ext,$FILE_EXTS))
die("请上传符合要求的文件类型");
if(!move_uploaded_file($tmp_name, $file_path))
die("复制文件失败,请重新上传");
switch($error)
{
case 0:
return ;
case 1:
die("上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值");
case 2:
die("上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
case 3:
die("文件只有部分被上传");
case 4:
die("没有文件被上传");
}
}
参数说明
$type,$name,$size,$error,$tmp_name对应全局变量$_FILES中的相关变量,即:
$_FILES['userfile']['type']:文件的MIME类型,需要浏览器提供该信息的支持,例如图片类型“image/gif”。
$_FILES['userfile']['name']:客户端文件的原名称。
$_FILES['userfile']['size']:已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name']:文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']:和该文件上传相关的错误代码,即
值:0:没有错误发生,文件上传成功。
值:1:上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
值:2:上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
值:3:文件只有部分被上传。
值:4:没有文件被上传。
$ext:上传文件扩展名
$targetname:文件上传后的最终文件名
$upload_dir:上传至哪个目录下,采用的是相对路径
注释:
第3行~第6行:设定图片文件上传的大小,以及文件的MIME类型以及扩展名,由于此代码为图片文件上传程序,所以两个数组中罗列了所有的图片类型,比如PNG,GIF,JEPG等。
第17行~第24行:如果文件是空的,size等于0;如果图片文件的扩展名或者类型不符,则跳出。
第26行:move_uploaded_file函数的功能是将upload_tmp_dir设定的服务端临时目录中的文件移至由$file_path指定的文件,注意如果目标文件已存在则覆盖目标文件
如何上传多个文件?比如同时上传3个文件
只需将
<input name="userfile" type="file">
改成
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
对应的在调用此函数时,$_FILES['userfile']['name'][0],代表第一个文件的相关文件信息,依此类推,其他也一样。
总结
此函数是PHP文件上传中最简单的核心代码,图片上传只是其中一种,只需要修改或者扩充$FILE_MIMES和$FILE_EXTS数组的相关信息,即可实现其他类型的文件上传功能。在函数的外围,根据自己的需要编写相关的其他代码即可实现其他功能,比如和数据库的关联等。
代码如下:
function upload_form() {
$form = array();
// If this #attribute is not present, upload will fail on submit
$form['#attributes']['enctype'] = 'multipart/form-data';
$form['file_upload'] = array(
'#title' => t('Upload file'),
'#type' => 'file',
);
$form['submit_upload'] = array(
'#type' => 'submit',
'#value' => 'Submit'
);
return $form;
}
function upload_submit($form, &$form_state) {
$validators = array();
$dest = file_directory_path();
$file = file_save_upload('file_upload', $validators, $dest);
//$file will be 0 if the upload doesn't exist, or the $dest directory
//isn't writable
if ($file != 0) {
$file->filepath; // 文件相对路径
}
else {
form_set_error('myform', t("Failed to save the file."));
}
}
PHP文件上传功能代码实例教程
在PHP网站开发中,PHP程序如何实现文件上传功能,一直是新手的课题。而且文件上传功能一般都用得着,比如图片上传。今天就结合具体代码实例和详细注解和大家分享如何编写PHP文件上传代码,适合php初学者学习。
PHP代码实例主要讲述的是图片上传,看懂程序后你可以修改相关文件类型就可以实现其他文件的上传功能。
编程环境
PHP5.2.4,基本上PHP4.3以上版本,此代码都可以使用
准备工作
检查upload_tmp_dir项
如果PHP的开发环境是自行搭建的,你需要在编写文件上传程序前编辑php.ini文件,找到并编辑upload_tmp_dir选项,此项用来设定文件上传至服务器时的临时文件夹,比如upload_tmp_dir = E:/phpos/uploads,然后再重启Apache。如果PHP的开发环境使用的是傻瓜式一键安装包,一般upload_tmp_dir都是设定好了的,你也可以用phpinfo()函数查看下配置。
编写一个upload文件,设定文件上传表单
代码如下:
<form enctype="multipart/form-data" action="/blog_article/upload.html" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">
<input type="submit" value="上传文件">
</form>
注意
1、表单中enctype=”multipart/form-data”必须指定,以便让服务器知道文件带有常规的表单信息。
2、必须有一个可以设置上传文件最大长度的表单区域,即允许上传文件的最大值(按字节计算),它是隐藏值域,即max_file_size,通过设置其Value(值)可以限制上传文件的大小,避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。但是一般别人可以绕过这个值,所以安全起见,最好是在php.ini文件中配置upload_max_filesize选项,设定文件上传的大小,默认是2M。
文件上传程序
代码如下:
function uploadfile($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir)
{
$MAX_SIZE = 2000000;
$FILE_MIMES = array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png');
$FILE_EXTS = array('.jpg','.gif','.png','.JPG','.GIF','.PNG');
$file_path = $upload_dir.$targetname;
if(!is_dir($upload_dir))
{
if(!mkdir($upload_dir))
die("文件上传目录不存在并且无法创建文件上传目录");
if(!chmod($upload_dir,0755))
die("文件上传目录的权限无法设定为可读可写");
}
if($size>$MAX_SIZE)
die("上传的文件大小超过了规定大小");
if($size == 0)
die("请选择上传的文件");
if(!in_array($type,$FILE_MIMES) || !in_array($ext,$FILE_EXTS))
die("请上传符合要求的文件类型");
if(!move_uploaded_file($tmp_name, $file_path))
die("复制文件失败,请重新上传");
switch($error)
{
case 0:
return ;
case 1:
die("上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值");
case 2:
die("上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
case 3:
die("文件只有部分被上传");
case 4:
die("没有文件被上传");
}
}
参数说明
$type,$name,$size,$error,$tmp_name对应全局变量$_FILES中的相关变量,即:
$_FILES['userfile']['type']:文件的MIME类型,需要浏览器提供该信息的支持,例如图片类型“image/gif”。
$_FILES['userfile']['name']:客户端文件的原名称。
$_FILES['userfile']['size']:已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name']:文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']:和该文件上传相关的错误代码,即
值:0:没有错误发生,文件上传成功。
值:1:上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
值:2:上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
值:3:文件只有部分被上传。
值:4:没有文件被上传。
$ext:上传文件扩展名
$targetname:文件上传后的最终文件名
$upload_dir:上传至哪个目录下,采用的是相对路径
注释:
第3行~第6行:设定图片文件上传的大小,以及文件的MIME类型以及扩展名,由于此代码为图片文件上传程序,所以两个数组中罗列了所有的图片类型,比如PNG,GIF,JEPG等。
第17行~第24行:如果文件是空的,size等于0;如果图片文件的扩展名或者类型不符,则跳出。
第26行:move_uploaded_file函数的功能是将upload_tmp_dir设定的服务端临时目录中的文件移至由$file_path指定的文件,注意如果目标文件已存在则覆盖目标文件
如何上传多个文件?比如同时上传3个文件
只需将
代码如下:
<input name="userfile" type="file">
改成
代码如下:
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
对应的在调用此函数时,$_FILES['userfile']['name'][0],代表第一个文件的相关文件信息,依此类推,其他也一样。
总结
此函数是PHP文件上传中最简单的核心代码,图片上传只是其中一种,只需要修改或者扩充$FILE_MIMES和$FILE_EXTS数组的相关信息,即可实现其他类型的文件上传功能。在函数的外围,根据自己的需要编写相关的其他代码即可实现其他功能,比如和数据库的关联等。
[2]php 连接mysql连接被重置的解决方法
来源: 互联网 发布时间: 2013-11-30
新装了windows7 64位系统后,配备布置许多东西,总是有这样的那样子的拂意,昨天在开始配备布置php+apache的时候,echo phpinfo()完全没问题,但是一朝连接mysql就会呈现页面被重置的问题。原来问题不大,但是我却走到了误区:
1、我怀疑64位系统的问题;
2、我感觉代码靠不住,因为另外都能执行,轻率写个 substr()也是能显示出来的
......
这个问题纠结了我一天多,但是还是没解决到,无奈之下 我用" php 连接 mysql 连接被重置 "为关键字举行搜索,呈现了不少的零星的信息,1个1个的找,终于有人提到是由于 libmysql.dll 的引用问题。抱着无比激动地心情看完,并参照执行,甚或者我情愿重启电脑,我怕那里的缓存给担搁了。后面终于解决。-----------这事让我深知 误区的重要性,这里把解决的办法贴出来,希望有遇到的人能用患上着。
测验考试libmysql拷入 windows/system32下和libmysql.dll拷贝到apache/bin下。
当然,最省事的方法是:
在apache中:
LoadFile D:/PHP/php5.2.13/libmysql.dll
只上边这一行,mysql便可成功挪用。
我的服务器版本:win7
apache 2.2.13
php 5.2.13
mysql5.1.37
phpmyadmin3.3.2
下面是我的apache的部门配备布置。
PHPIniDir D:/PHP/php5.2.13 #不是必须
LoadFile D:/PHP/php5.2.13/php5ts.dll
LoadFile D:/PHP/php5.2.13/libmysql.dll
LoadModule php5_module D:/PHP/php5.2.13/php5apache2_2.dll
AddType application/x-httpd-php .php
1、我怀疑64位系统的问题;
2、我感觉代码靠不住,因为另外都能执行,轻率写个 substr()也是能显示出来的
......
这个问题纠结了我一天多,但是还是没解决到,无奈之下 我用" php 连接 mysql 连接被重置 "为关键字举行搜索,呈现了不少的零星的信息,1个1个的找,终于有人提到是由于 libmysql.dll 的引用问题。抱着无比激动地心情看完,并参照执行,甚或者我情愿重启电脑,我怕那里的缓存给担搁了。后面终于解决。-----------这事让我深知 误区的重要性,这里把解决的办法贴出来,希望有遇到的人能用患上着。
测验考试libmysql拷入 windows/system32下和libmysql.dll拷贝到apache/bin下。
当然,最省事的方法是:
在apache中:
LoadFile D:/PHP/php5.2.13/libmysql.dll
只上边这一行,mysql便可成功挪用。
我的服务器版本:win7
apache 2.2.13
php 5.2.13
mysql5.1.37
phpmyadmin3.3.2
下面是我的apache的部门配备布置。
PHPIniDir D:/PHP/php5.2.13 #不是必须
LoadFile D:/PHP/php5.2.13/php5ts.dll
LoadFile D:/PHP/php5.2.13/libmysql.dll
LoadModule php5_module D:/PHP/php5.2.13/php5apache2_2.dll
AddType application/x-httpd-php .php
[3]php中获取关键词及所属来源搜索引擎名称的代码
来源: 互联网 发布时间: 2013-11-30
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>greengnn codes</title>
</head>
<body>
<form action="/blog_article/index.html" method="get">
<input name="url" size="80"><button type="submit">GO</button>
</form>
<?php
//获取关键词及所属来源搜索引擎名称
$search_url = isset($_GET['url'])?$_GET['url']:''; //代表传入的地址
/*$search_url = urldecode($search_url);
print_r($search_url);
*/
$config = array(
"s1"=>array(
"domain" => "google.com",
"kw" => "q",
"charset" => "utf-8"
),
"s3"=>array(
"domain" => "google.cn",
"kw" => "q",
"charset" => "utf-8"
),
"s4"=>array(
"domain" => "baidu.com",
"kw" => "wd",
"charset" => "gbk"
),
"s5"=>array(
"domain" => "soso.com",
"kw" => "q",
"charset" => "utf-8"
),
"s6"=>array(
"domain" => "yahoo.com",
"kw" => "q",
"charset" => "utf-8"
),
"s7"=>array(
"domain" => "bing.com",
"kw" => "q",
"charset" => "utf-8"
),
"s8"=>array(
"domain" => "sogou.com",
"kw" => "query",
"charset" => "gbk"
),
"s9"=>array(
"domain" => "youdao.com",
"kw" => "q",
"charset" => "utf-8"
),
);
//函数作用:从url中提取关键词。参数说明:url及关键词前的字符。
function get_keyword($url,$kw_start)
{
$start = stripos($url,$kw_start);
$url = substr($url,$start+strlen($kw_start));
$start = stripos($url,'&');
if ($start>0)
{
$start=stripos($url,'&');
$s_s_keyword=substr($url,0,$start);
}
else
{
$s_s_keyword=substr($url,0);
}
return $s_s_keyword;
}
$arr_key = array();
foreach($config as $item){
$sh = preg_match("/\b{$item['domain']}\b/",$search_url);
if($sh){
$query = $item['kw']."=";
$s_s_keyword = get_keyword($search_url,$query);
$F_Skey=urldecode($s_s_keyword);
if($item['charset']=="utf-8"){
$F_Skey=iconv( "UTF-8","gb2312//IGNORE",$F_Skey); //最终提取的关键词
}
$keys = explode(" ",$F_Skey);
$arr_key[$item['domain']] = $keys;
}
}
echo "<pre>";
print_r($arr_key);
?>
最新技术文章: