php与mysql留言板程序实现代码

 更新时间:2016年11月25日 15:47  点击:1578
本程序仅供php+mysql爱好者学习测试用,测试过程中,可能会出现错误,请朋友们根据错误提示修改本程序,本程序为安装版,先运行install目录,然后根据提示操作!


关于PHP语法的那些就不说了,我就说一下连接mysql吧!

 代码如下 复制代码
$conn =@mysql_connect("localhost","root","mydown") or die("数据库链接错误");
mysql_select_db("bbs", $conn);
mysql_query("set names 'GBK'");

第一句就是描述了连接数据库的语句,并且如果失败的提示”数据库连接错误“;前面的三个参数分别代表了 数据库地址localhost,数据库用户名root,连接数据库密码mydown;

第二句就是描述了连接到数据库表bbs,后面的$conn代表哪个数据库。

第三句话就是转换编码格式,显示中文。

连接好了数据库之后,我们来看下 数据库语句怎么在PHP中提交运行!

 代码如下 复制代码
    $sql="INSERT INTO message (id,user,title,content,lastdate) values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())";
mysql_query($sql);

上面中的蓝色字体大家应该面熟,意思就是 在数据库中插入信息。第二句是在数据库中运行该语句。想起中类似$_POST[title]的变量,大家应该知道,这是通过网页提交获取的信息


实例

install安装

 代码如下 复制代码

<html>
<head>
<title>留言板安装</title>
</head>
<body>
<form action="check_install.php" method="POST">
<table>
<tr><td align="right"><font color="Red">*</font> 输入数据库服务器地址:</td><td><input name="llcc_server" type="text" value="localhost"></td></tr>
<tr><td align="right"><font color="Red">*</font> 输入数据库服务器用户名:</td><td><input name="llcc_user_name" type="text" value=""></td></tr>
<tr><td align="right"><font color="Red">*</font> 输入数据库服务器密码:</td><td><input name="llcc_user_pass" type="text" value=""></td></tr>
<tr><td align="right"><font color="Red">*</font> 输入数据库名称:</td><td><input name="llcc_data_name" type="text" value=""> </td></tr>
<tr><td><input type="submit" name="bt_install" value="提交"></td></tr>
</table>
</form>
</body>
</html>

check_install.php

 代码如下 复制代码

<?php
//获取提交的数据库值
$llcc_server=$_POST['llcc_server'];
$llcc_user_name=$_POST['llcc_user_name'];
$llcc_user_pass=$_POST['llcc_user_pass'];
$llcc_data_name=$_POST['llcc_data_name'];
//打开数据库配置文件
$fp=fopen("../config.php",'w');

if (!$fp) {
    echo "sorry,try again!";
}
//写入文件内容
$outconfig="<?phpn";
$outconfig.='$server=';
$outconfig.="".$llcc_server.";//数据库所在IP,如果是本地,默认localhostn";
$outconfig.='$server_name=';
$outconfig.="".$llcc_user_name.";//连接数据库用户名,一般为rootn";
$outconfig.='$server_pass=';
$outconfig.="".$llcc_user_pass.";//连接数据库密码。n";
$outconfig.='$server_data=';
$outconfig.="".$llcc_data_name.";//数据库名n";
$outconfig.="?>";
$fw=fwrite($fp,$outconfig);

if ($fw) {
    echo "<br><br><br><center>安装完成!请手动删除目录下install文件夹<br><a href='../'>返回首页</a></center>";
}


?>

login.php

 代码如下 复制代码

<?php
include("header.php");
include("conn.php");

  if($_GET[out]){
   setcookie("cookie", "out");
    echo "<script language="javascript">location.href='login.php';</script>";
  }


  if($_POST[id]=='admin'){
    $pw=md5($_POST[pw]);
    if($pw=='1b3ae77a2e06580c8cb57e112ddc4a26'){
     setcookie("cookie", "ok");
       echo "<script language="javascript">location.href='login.php';</script>";
    }
  }
if($_COOKIE['cookie']!='ok'){
?>

<SCRIPT language=javascript>
function Checklogin()
{
 if (myform.id.value=="")
 {
  alert("请填写登录名");
  myform.id.focus();
  return false;
 }
  if (myform.pw.value=="")
 {
  alert("密码不能为空");
  myform.pw.focus();
  return false;
 }
}
</SCRIPT>
<table width="400">
<form action="" method="post" name="myform" onsubmit="return Checklogin();">
  <tr><th>登录名:</th><td><input type="text" name="id" /></td></tr>
  <tr><th>密码:</th><td><input type="password" name="pw" /></td></tr>
  <tr><td colspan="2"><input type="submit" name="submit" value="登陆"/></td></tr>
  </form>
  </table>
<?
}else{
?>
 <a href='?out=login'>退出</a><form name="ff">
 <input type="submit" name="sub" value="清空数据库"></form>
 <?php
 if($_GET[sub]=="清空数据库")
 {
 $sql="delete from message";
 $query=mysql_query($sql);
 }
 ?>
<?php
}
?>

conn.php数据库连接

 代码如下 复制代码
<?php
include("config.php");
$conn =@mysql_connect($server,$server_name,$server_pass) or die("数据库链接错误");
mysql_select_db($server_data, $conn);//此处代表的要打开的数据库名称,"bbs"是我的数据库名,修改成自己的!
mysql_query("set names 'GBK'"); //使用GBK中文编码;
?>

index.php文件

 代码如下 复制代码

<?php
include("conn.php");
include("header.php");
?>
自由屋留言板<hr width="70%"><table width=750 border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<?php
$sql="select * from message order by id DESC";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
?>
  <tr bgcolor="#eff3ff">
  <td><b><?php echo $row[id];?>用户名:</b><?php echo $row[user];?>&nbsp;&nbsp;&nbsp;&nbsp;<b>标题:</b><?php echo $row[title];?>&nbsp;&nbsp;&nbsp;<b>发表时间:</b><?php echo $row[lastdate];?></td>
  </tr>
  <tr bgColor="#ffffff">
  <td><b>内容:<?php echo $row[content];?></b></td>
  </tr>
 <?php
  }
?>
</table>

add.php增加留方程序

 代码如下 复制代码

<?php
include("header.php");
include("conn.php");
if($_POST["submit"])
{
$sql="INSERT INTO message (id,user,title,content,lastdate) values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())";
mysql_query($sql);
echo "留言已提交";
};
?><center>

<table border="0" width="450">
<form name="add" method="post" onsubmit="return CheckPost();">
<tr><th>用户:</th><td><input type="text" name="user" size="10"></td></tr>
<tr><th>标题:</th><td><input type="text" name="title" size="30"></td></tr>
<tr><th>内容:</th><td><textarea name="content"></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="发表留言"> &nbsp;&nbsp;&nbsp;<input type="reset" value="重设"></td></tr>
</form>
</table>
</center>

<SCRIPT language=javascript>
function CheckPost()
{
 if (add.user.value=="")
 {
  alert("请填写用户名");
  add.user.focus();
  return false;
 }
 if (add.title.value.length<5)
 {
  alert("标题不能少于5个字符");
  add.title.focus();
  return false;
 }
 if (add.content.value=="")
 {
  alert("必须要填写留言内容");
  add.content.focus();
  return false;
 }
}
</SCRIPT>

test.php数据库结构

 代码如下 复制代码

<?php
include("config.php");
include("conn.php");
$sql="CREATE TABLE `message` (
  `id` tinyint(1) NOT NULL auto_increment,
  `user` varchar(25) NOT NULL,
  `title` varchar(50) NOT NULL,
  `content` tinytext NOT NULL,
  `lastdate` date NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;";
$query=mysql_query($sql);
if($query){
echo"执行成功";}
else echo"执行失败!";
?>

phpExcel是php中一个excel插件操作类,可以很好的解决在excel各种操作,包括如,读,写,删除,插入等excel操作,下面笔者来给各位同学介绍介绍phpExcel用法吧。

下面是总结的几个使用方法

  include ‘PHPExcel.php’;

  include ‘PHPExcel/Writer/Excel2007.php’;

  //或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的

  创建一个excel

  $objPHPExcel = new PHPExcel();

  保存excel—2007格式

  $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

  //或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式

  $objWriter->save(”xxx.xlsx”);

  直接输出到浏览器

  $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

  header(”Pragma: public”);

  header(”Expires: 0″);

  header(”Cache-Control:must-revalidate, post-check=0, pre-check=0″);

  header(”Content-Type:application/force-download”);

  header(”Content-Type:application/vnd.ms-execl”);

  header(”Content-Type:application/octet-stream”);

  header(”Content-Type:application/download”);;

  header(’Content-Disposition:attachment;filename=”resume.xls”‘);

  header(”Content-Transfer-Encoding:binary”);

  $objWriter->save(’php://output’);

  ——————————————————————————————————————–

  设置excel的属性:

  创建人

  $objPHPExcel->getProperties()->setCreator(”Maarten Balliauw”);

  最后修改人

  $objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);

  标题

  $objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);

  题目

  $objPHPExcel->getProperties()->setSubject(”Office 2007 XLSX Test Document”);

  描述

  $objPHPExcel->getProperties()->setDescription(”Test document for Office 2007 XLSX, generated using PHP classes.”);

  关键字

  $objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);

  种类

  $objPHPExcel->getProperties()->setCategory(”Test result file”);

  ——————————————————————————————————————–

  设置当前的sheet

  $objPHPExcel->setActiveSheetIndex(0);

  设置sheet的name

  $objPHPExcel->getActiveSheet()->setTitle(’Simple’);

  设置单元格的值

  $objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘String’);

  $objPHPExcel->getActiveSheet()->setCellValue(’A2′, 12);

  $objPHPExcel->getActiveSheet()->setCellValue(’A3′, true);

  $objPHPExcel->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);

  $objPHPExcel->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);

  合并单元格

  $objPHPExcel->getActiveSheet()->mergeCells(’A18:E22′);

  分离单元格

  $objPHPExcel->getActiveSheet()->unmergeCells(’A28:B28′);

生成Excel常用方法

<?
//设置PHPExcel类库的include path
set_include_path('.'. PATH_SEPARATOR .
'D:ZealPHP_LIBS' . PATH_SEPARATOR .
get_include_path());


require_once 'PHPExcel.php';


// uncomment
////require_once 'PHPExcel/Writer/Excel5.php'; // 用于其他低版本xls
// or
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式

// 创建一个处理对象实例
$objExcel = new PHPExcel();

// 创建文件格式写入对象实例, uncomment
////$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式
// or
////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式
//$objWriter->setOffice2003Compatibility(true);

//*************************************
//设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");

//*************************************
//设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);


$objActSheet = $objExcel->getActiveSheet();

//设置当前活动sheet的名称
$objActSheet->setTitle('测试Sheet');

//*************************************
//设置单元格内容
//
//由PHPExcel根据传入内容自动判断单元格内容类型
$objActSheet->setCellValue('A1', '字符串内容'); // 字符串内容
$objActSheet->setCellValue('A2', 26); // 数值
$objActSheet->setCellValue('A3', true); // 布尔值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式

//显式指定内容类型
$objActSheet->setCellValueExplicit('A5', '847475847857487584',
PHPExcel_Cell_DataType::TYPE_STRING);

//合并单元格
$objActSheet->mergeCells('B1:C22');

//分离单元格
$objActSheet->unmergeCells('B1:C22');

//*************************************
//设置单元格样式
//

//设置宽度
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30);

$objStyleA5 = $objActSheet->getStyle('A5');

//设置单元格内容的数字格式。
//
//如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
//这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的
//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
//为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要
//修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,
//在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
//行代码:
//if($ifmt === '0') $ifmt = 1;
//
//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
//都按原始内容全部显示出来。
$objStyleA5
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);

//设置字体
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');

//设置对齐方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

//设置边框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

//设置填充颜色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');

//从指定的单元格复制样式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');


//*************************************
//添加图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);


//添加一个新的worksheet
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle('测试2');

//保护单元格
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');


//*************************************
//输出内容
//
$outputFileName = "output.xls";
//到文件
////$objWriter->save($outputFileName);
//or
//到浏览器
////header("Content-Type: application/force-download");
////header("Content-Type: application/octet-stream");
////header("Content-Type: application/download");
////header('Content-Disposition:inline;filename="'.$outputFileName.'"');
////header("Content-Transfer-Encoding: binary");
////header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
////header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
////header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
////header("Pragma: no-cache");
////$objWriter->save('php://output');

?>

本文章来给各位朋友详细介绍关于在php学日期时间函数的一些用法与参数介绍,php支持的时间函数有很多,例如:getdate()、mktime()、gmdate()等等,下面我来给大家介绍有兴趣的朋友可以在网上搜索相关资料。

获取日期时间也是网站设计中经常用到的。php提供了date()时间函数来实现这一功能,结构形式如下:

实例:

 代码如下 复制代码

<?php             
 echo date("F j, Y, g:i a"). "&nbsp&nbsp&nbsp&nbsp&nbsp"; 
 echo date("m.d.y"). "&nbsp&nbsp&nbsp&nbsp&nbsp";  
 echo  date("j, n, Y"). "&nbsp&nbsp&nbsp&nbsp&nbsp";  
 echo  date("Ymd"). "&nbsp&nbsp&nbsp&nbsp&nbsp";    
 echo  date('h-i-s, j-m-y, it is w Day z '). "&nbsp&nbsp&nbsp&nbsp&nbsp";
 
 echo  date('it is the jS day.'). "&nbsp&nbsp&nbsp&nbsp&nbsp";
 
 echo  date("D M j G:i:s T Y"). "&nbsp&nbsp&nbsp&nbsp&nbsp"; 
 echo  date('H:m:s m is month'). "&nbsp&nbsp&nbsp&nbsp&nbsp"; 
 
 echo  date("H:i:s"). "&nbsp&nbsp&nbsp&nbsp&nbsp";   
 echo date('l dS of F Y h:i:s A');       
 echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));   
?>

format参数及其含义
参数 含义 备注
a 上午或下午 am或pm
A 上午或下午 AM或PM
B 互联网时间 000~999
d 月份中的第几天 01~31
D 替换成星期几的英文简称 Mon~Sun
F 用英文表示月份 January~December
g 小时 1~12
G 小时 0~23
h 小时 01~12
H 小时 00~23
i 分钟 00~59
I 是否为夏令时 是为1,否为0
j 月份中的第几天 1~31
l 星期几 Sunday~Saturday
L 是否为闰年 闰年为1,不是闰年为0
m 用数字表示月份,按两位输出 01~12
M 月份缩写的英文单词 Jan~Dec
n 月份按阿拉伯数字格式输出 1~12
s 秒数 00~59
S 每月天数英文后缀 1st~2nd
t 指定月份的天数 28~31
T 本机设置的时区 如EST
w 一周的第几天(从0~6) 0~6
Y 替换成4位年号 如2011
y 替换成2位的年号 如11
z 一年中第几天 0~366
Z 以秒表示的时区偏差 -43200~43200

getdate()定义和用法

getdate() 函数取得日期/时间信息。

语法
getdate(timestamp)参数 描述
timestamp 可选。规定 Unix 时间格式中的时间。

说明
返回一个根据 timestamp 得出的包含有日期信息的结合数组。如果没有给出时间戳,则认为是当前本地时间。

数组中的单元如下:

 代码如下 复制代码

<?php
print_r(getdate());
?>输出:

Array
(
[seconds] => 45
[minutes] => 52
[hours] => 14
[mday] => 24
[wday] => 2
[mon] => 1
[year] => 2006
[yday] => 23
[weekday] => Tuesday
[month] => January
[0] => 1138110765
)

键名 说明 返回值例子
"seconds" 秒的数字表示 0 到 59
"minutes" 分钟的数字表示 0 到 59
"hours" 小时的数字表示 0 到 23
"mday" 月份中第几天的数字表示 1 到 31
"wday" 星期中第几天的数字表示 0(表示星期天)到 6(表示星期六)
"mon" 月份的数字表示 1 到 12
"year" 4 位数字表示的完整年份 例如:1999 或 2003
"yday" 一年中第几天的数字表示 0 到 365
"weekday" 星期几的完整文本表示 Sunday 到 Saturday
"month" 月份的完整文本表示 January 到 December
0 自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。 系统相关,典型值为从 -2147483648 到 2147483647。

mktime() 定义和用法

mktime() 函数返回一个日期的 Unix 时间戳。

参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。

参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

语法
mktime(hour,minute,second,month,day,year,is_dst)

例子
mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入:

 代码如下 复制代码
<?php
echo(date("M-d-Y",mktime(0,0,0,12,36,2001)));
echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));
echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));
echo(date("M-d-Y",mktime(0,0,0,1,1,99)));
?>

输出:

Jan-05-2002
Feb-01-2002
Jan-01-2001
Jan-01-1999

参数 描述
hour 可选。规定小时。
minute 可选。规定分钟。
second 可选。规定秒。
month 可选。规定用数字表示的月。
day 可选。规定天。
year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。
is_dst

可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。

自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。

小编来给大家介绍在php中删除指定数组元素与删除空数组的实例代码与方法,有需要了解的朋友可进入参考参考。。

php删除数组指定元素可以通过以下两种方法实现:

1、遍历数组,然后判断元素的值是否指定值,如果是则用unset()删除。示例代码如下:

 代码如下 复制代码

//$var是要删除的元素值,$array是目标数组;
function array_del($var,$array){
 $i=0;
 foreach($array as $val){
  if($var==$val){
   unset($array[$i]);
   break;
  }
  $i++;
 }
 return $array;
}

2、使用array_flip()函数,该函数的作用是将键名和值反转。示例代码如下:

 代码如下 复制代码

<?php
$a=array('php','css','java','html','jquery');
$a=array_flip($a);  //将键名和值反转
unset($a['html']);  //删除指定值元素
$a=array_flip($a);  //将数组再次反转,还原数组的键名和值
var_dump($a);
?>

删除数组中的空元素

实例:

 代码如下 复制代码

<?php
    $array = ('a' => "abc", 'b' => "bcd",'c' =>"cde",'d' =>"def",'e'=>"");
    array_filter($array);
    echo "<pre>";
    print_r($array);
?>

结果:

Array (

     [a] => abc

     [b] => bcd

     [c] => cde

    [d] => def

   )

去除数组中的空元素以及重复元素

 代码如下 复制代码

<?php

$array = array('2',19,33,88,2,4,5,5,99,99,'',33,'');
function delArrayRepeat($arr){
 if(is_array($arr)){
  $arr = array_unique($arr);
  foreach($arr as $k=>$v){
   if($v==''){
    unset($arr[$k]);
   }
  }
  $result = $arr;
 }else{
  $result = "参数必需是数组!";
 }
 return $result;
}
$res = delArrayRepeat($array);
print_r($res);

?>

在php中如果要实现下载如图片文件,php文件,html文件这些文件我们如果在网站上点击都是直接打开了,如果要实现下载我们可以利用php header函数来操作,下面我来介绍利用php header函数实现文件下载的实例,有需要的朋友可参考。

例1

 代码如下 复制代码

function download($file_url,$new_name=''){
 if(!isset($file_url) || trim($file_url)==''){
  return '500';
 }
 if(!file_exists($file_url)) { //检查文件是否存在
  return '404';
 }
 $file_name=basename($file_url);
 $file_type=explode('.',$file_url);
 $file_type=$file_type[count($file_type)-1];
 $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;
 $file_type=fopen($file_url,'r'); //打开文件
 //输入文件标签
 header("Content-type: application/octet-stream");
 header("Accept-Ranges: bytes");
 header("Accept-Length: ".filesize($file_url));
 header("Content-Disposition: attachment; filename=".$file_name);
 //输出文件内容
 echo fread($file_type,filesize($file_url));
 fclose($file_type);
}

例2

以下php代码可以解决:
 

 代码如下 复制代码
<?
if( empty($_GET['FileName'])|| empty($_GET['FileDir'])|| empty($_GET['FileId'])){
    echo'<script> alert("非法连接 !"); location.replace ("index.php") </script>'; exit();
}
$file_name=$_GET['FileName'];
$file_dir=$_GET['FileDir'];
$FileId=$_GET['FileId'];
$file_dir = $file_dir."/";
if   (!file_exists($file_dir.$file_name))   {   //检查文件是否存在 
  echo   "文件找不到"; 
  exit;   
  }   else   { 
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit();
}
?>

直接下载文件

 代码如下 复制代码
<?php  
$file = get_file_address();// 文件的真实地址(支持url,不过不建议用url)  
 
if (file_exists($file)) {  
    header('Content-Description: File Transfer');  
    header('Content-Type: application/octet-stream');  
    header('Content-Disposition: attachment; filename='.basename($file));  
    header('Content-Transfer-Encoding: binary');  
    header('Expires: 0');  
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');  
    header('Pragma: public');  
    header('Content-Length: ' . filesize($file));  
    ob_clean();  
    flush();  
    readfile($file);  
    exit;  
}  
?>

小提示,header函数不只是可以实现文件下载,他还有很多的功能哦,如发送404,301等等状态信息都是可以的哦。

注意:在使用header之前我们必须在header之前没有任何输出,否则就会报错。

[!--infotagslink--]

相关文章

  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • SQLMAP结合Meterpreter实现注入渗透返回shell

    sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • node.js+express留言板功能实现示例

    本文介绍基于nodejs+express+art-template的留言板功能。包含列表界面、添加界面和发送留言功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-21