当前位置:  编程技术>php
本页文章导读:
    ▪如何利用php+mysql保存和输出文件       本地文件上传到服务器后,服务器的脚本对文件进行保存,一般有两种方式,一种是作为 文件保存到机器的特定目录下,但是这里就有很多诸如文件重名带来的种种不便之处,有的程 序自.........
    ▪消息持续发送的完整例子       测试过的环境  win2000/IIS linux/apache win2000 下的 apache 没有成功!不知道为什么!!! <? echo "你会看到这个技术的前景!哈哈!...什么?没看到,刷新一次看看!! 看到了吧!!"; $i = 1; .........
    ▪PHP+MYSQL的文章管理系统(一)       ###############################################  此篇文章属原创,如有引用,请标明作者信息。  Email: leo_cdp@yeah.net http://www.cfeng.net/ 本文代码任意转载,使用请保留此声明 #################################.........

[1]如何利用php+mysql保存和输出文件
    来源: 互联网  发布时间: 2013-11-30
本地文件上传到服务器后,服务器的脚本对文件进行保存,一般有两种方式,一种是作为
文件保存到机器的特定目录下,但是这里就有很多诸如文件重名带来的种种不便之处,有的程
序自动改文件名字,把名字加上上传时间等方法以保证文件名的唯一性,这样失去了文件的原
始名字,通过文件名查询特定的文件信息也有很多困难,不利于文件的统一管理;一种是把文
件保存到数据库中利用数据库的强大功能,可以方便的实现文件的各种操作。本文采用的是第
二种方法。

    这一组程序演示了,如何将硬盘的一个文件通过网页,上传到服务器的数据库里面,并且
读出文件的内容。

使用说明:
一共有5个程序,说明如下:
1. file.sql      --- 本程序要用到的数据库表的结构[注:数据库用的是test]
2. upload.php    --- 上传表单
3. submit.php    --- 上传处理程序
4. show_info.php --- 显示部分上传的文件信息
5. show_add.php  --- 显示[下载]文件

//////////////////////////////////////////////////////////////////////
(1)file.sql ---
//简要说明
保存上传得文件的基本信息的数据库结构,此处注意保存文件内容的字段,使用longtext类型
因为普通的blob类型最大存储64K字节。另外,一般php的默认配置最大上传文件为2M,如果上
传的文件特别大,莫忘了调整php.ini的设置哦。
//文件源码
create table receive(
    id int NOT NULL auto_increment, #主键,自动累加
    file_data longblob,             #文件内容
    file_type varchar(100),         #文件类型
    file_name varchar(255),         #文件名字  
    file_size int,                  #文件大小
    PRIMARY KEY(id) #主键
)

//////////////////////////////////////////////////////////////////////
(2)upload.php ---
//简要说明
上传界面,用户选择文件,然后提交给submit.php处理
值得注意的是一个 MAX_FILE_SIZE的隐藏值域,通过设置其VALUE可  
以限制上载文件的大小。
//程序源码
<html>   
<head>   
<title>文件上传表单</title>   
</head>   
<body>   
<table>   
<form enctype='multipart/form-data' name='myform' action='/blog_article/submit.html'  
method='post'>   
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000">
<tr><td>选择上传文件</td><td>
<input name='myfile' type='file'></td></tr>  
<tr><td colspan='2'><input name='submit' value='上传'   
type='submit'></td></tr>   
</table>   
</body>   
</html>

//////////////////////////////////////////////////////////////////////
(3)submit.php ---
//简要说明
把用户上传得文件连同文件的基本信息保存到数据库里
//程序源码
<?php   
    if($myfile != "none" && $myfile != "") { //有了上传文件了  

        //设置超时限制时间,缺省时间为 30秒,设置为0时为不限时
        $time_limit=60;          
        set_time_limit($time_limit); //

        //把文件内容读到字符串中
        $fp=fopen($myfile,  "rb");
        if(!$fp) die("file open error");
        $file_data = addslashes(fread($fp, filesize($myfile)));
        fclose($fp);
        unlink($myfile);  

        //文件格式,名字,大小
        $file_type=$myfile_type;
        $file_name=$myfile_name;
        $file_size=$myfile_size;

        //连接数据库,把文件存到数据库中
        $conn=mysql_connect("127.0.0.1","***","***");
        if(!$conn) die("error : mysql connect failed");
        mysql_select_db("test",$conn);

        $sql="insert into receive  
        (file_data,file_type,file_name,file_size)  
        values ('$file_data','$file_type','$file_name',$file_size)";
        $result=mysql_query($sql);

        //下面这句取出了刚才的insert语句的id
        $id=mysql_insert_id();

        mysql_close($conn);

        set_time_limit(30); //恢复缺省超时设置  

        echo "上传成功--- ";
        echo "<a href='/blog_article/show_info/id/$id.html'>显示上传文件信息</a>";
    }   
    else {   
        echo "你没有上传任何文件";   
    }   
?>  

//////////////////////////////////////////////////////////////////////
(4)show_info.php ---
//简要说明
从数据库里取出文件的基本信息[文件名和文件大小]。
//程序源码
<?php         
    if(!isset($id) or $id=="") die("error: id none");

    //定位记录,读出
    $conn=mysql_connect("127.0.0.1","***","***");
    if(!$conn) die("error: mysql connect failed");
    mysql_select_db("test",$conn);

    $sql =  "select file_name ,file_size from receive where id=$id";
    $result = mysql_query($sql);
    if(!$result) die(" error: mysql query");

    //如果没有指定的记录,则报错
    $num=mysql_num_rows($result);
    if($num<1) die("error: no this recorder");

    //下面两句程序也可以这么写
    //$row=mysql_fetch_object($result);
    //$name=$row->name;
    //$size=$row->size;
    $name = mysql_result($result,0,"file_name");
    $size = mysql_result($result,0,"file_size");

    mysql_close($conn);

    echo "<hr>上传的文件的信息:";
    echo "<br>The file's name - $name";   
    echo "<br>The file's size - $size";  
    echo "<br><a href=/blog_article/show_add/id/$id/gt;附件/lt;/a/gt;.html";
?>

//////////////////////////////////////////////////////////////////////
(5)show_add.php ---
//简要说明
从数据库里取出文件内容
//程序源码
<?php         
    if(!isset($id) or $id=="") die("error: id none");

    //定位记录,读出
    $conn=mysql_connect("127.0.0.1","***","***");
    if(!$conn) die("error : mysql connect failed");
    mysql_select_db("test",$conn);
    $sql    =  "select * from receive where id=$id";
    $result =  mysql_query($sql);
    if(!$result) die("error: mysql query");

    $num=mysql_num_rows($result);
    if($num<1) die("error: no this recorder");

    $data = mysql_result($result,0,"file_data");
    $type = mysql_result($result,0,"file_type");
    $name = mysql_result($result,0,"file_name");

    mysql_close($conn);

    //先输出相应的文件头,并且恢复原来的文件名
    header("Content-type:$type");
    header("Content-Disposition: attachment; filename=$name");
    echo $data;
?>

本程序在 win2000 pro + apache 1.13.19 + php 4.0.5 + mysql 3.23.36 下通过。 

    
[2]消息持续发送的完整例子
    来源: 互联网  发布时间: 2013-11-30
测试过的环境  
win2000/IIS
linux/apache

win2000 下的 apache 没有成功!不知道为什么!!!

<?

echo "你会看到这个技术的前景!哈哈!...什么?没看到,刷新一次看看!! 看到了吧!!";
$i = 1;  
for($j=0;$j<500;$j++)print(" "); //这一行就是不用刷新页面就能显示的部分,因为浏览器缓冲的原因

for($i; $i < 30; $i++){  
print("\n
$i");
flush();  
sleep(1);  
}  
?>  

    
[3]PHP+MYSQL的文章管理系统(一)
    来源: 互联网  发布时间: 2013-11-30
###############################################  
此篇文章属原创,如有引用,请标明作者信息。  
Email: leo_cdp@yeah.net
http://www.cfeng.net/
本文代码任意转载,使用请保留此声明
###############################################  
去年写了个文本管理总觉得有些不爽再加上申请了主机所以写个PHP+MYSQL的对文章进行管理测试期间
受到广大网友的支持现将代码公布
功能说明:
文章的基本操作:添加,修改,锁定,解锁,推荐,删除等待
并有强大功能的搜索,评论,推荐给朋友等功能,并对安全性进行着重加强,漂亮的界面人性化的设计。
主要文件列表:
setup.php    安装程序,运行后即可使用本系统!
index.php    显示
manager.php  添加,管理文章。
change.php   对已存在文章的操作。
edit_article.php 文章修改
commend.php  推荐文章给朋友。
read_article.php 文章阅读。
ping.php     发表文章评论。
search.php   文章搜索
type_manager.php  类型管理
login.php    管理员登陆。
config.php   主要配置文件
func.php     函数文件
footer.inc,header.inc,nav.inc包含文件。
list.txt     类型列表
以及其它一些周边程序
管理系统演示地址:
http://www.cfeng.net/article/
########################config.php 主要配置文件##########################
<?
$host="localhost";                   #数据库主机
$database_usn="cfeng.net";           ##数据库用户
$database_pwd="cfeng.net";           ##数据库密码
$database="cfeng.net";               ##数据库
$table="cfeng.net";                  ##要存放文章的表
$ping_tab="ping_tab1";               ##存放评论的表
$admin_usn="leo";                    ##管理员用户名
$admin_pwd="leo";                    ##管理员密码
$admin_mail="leo_cdp@yeah.net";      ##管理员信箱
$pagenum="20";                       ##每页显示文章数
$sess=md5($admin_usn.$admin_pwd);    ##登陆认证采用MD5生成
?>
#####################func.php  函数文件 ###################################
<?
require "./inc/config.php";
function mscon()##数据库链接
{   
  global $host,$database_usn,$database_pwd;
  @mysql_connect("$host","$database_usn","$database_pwd") or die("对不起,数据库连接错误!请稍候再来,或与管理员联系");
}
function check_login()
{  global $sess;
if(!session_is_registered("sess_0230a09a07cab1df8112d00b1f9a9719"))
   {
    if($sess_0230a09a07cab1df8112d00b1f9a9719!=$sess)
       {
         redir("login.php");
         exit;
       }
   }
}
function redir($addr)
  {
    header("location:$addr");
   }
function add_article()##本系统实行宽进严出所以添加文章部份显得略为简单!
{
   global $database,$table,$title,$cont,$type,$html;
   $dat=date(Y年m月d日);
   $title=htmlspecialchars($title);
   $query="insert into $table(title,cont,type,time,html) values('$title','$cont','$type','$dat','$html')";
   $res=mysql_db_query("$database",$query);
   if(!$res)
   echo mysql_error();
}
function add_hits($id)##添加浏览次数!
{
global $database,$table;
$query="update $table set hits=hits+1 where id=$id";
   $res=mysql_db_query("$database",$query);
}
function add_comm($id)##把本文加为推荐文章
{
global $database,$table;
$query="update $table set comm=1 where id=$id";
   $res=mysql_db_query("$database",$query);
}
function un_comm($id)##清除推荐!
{
global $database,$table;
$query="update $table set comm='0' where id=$id";
   $res=mysql_db_query("$database",$query);
}
function add_lock($id)##锁定文章
{
global $database,$table;
$query="update $table set locked='1' where id=$id";
   $res=mysql_db_query("$database",$query);
}

function un_lock($id)##清除锁定!
{
global $database,$table;
$query="update $table set locked=0 where id=$id";
   $res=mysql_db_query("$database",$query);
}
function add_p_num($id)##添加评论次数!
{
global $database,$table;
$query="update $table set p_num=p_num+1 where id=$id";
   $res=mysql_db_query("$database",$query);
}
function add_del($id)##删除文章!
{
global $database,$table;
$query="delete from $table where id='$id'";
   $res=mysql_db_query("$database",$query);
}
########################setup.php 安装文件######################
<?  
session_start();
require"./inc/func.php";
check_login();
?>
<?
if($sub)
{
   $file_cont="<?\n #don't edit thisfile use the setup.php\n";
   $file_cont.="\$host=\"$host\";#your database server address\n";
   $file_cont.="\$database_usn=\"$database_usn\";\n";
   $file_cont.="\$database_pwd=\"$database_pwd\";\n";
   $file_cont.="\$database=\"$database\";\n";
   $file_cont.="\$table=\"$table\";\n";
   $file_cont.="\$ping_tab=\"$ping_tab\";\n";
   $file_cont.="\$admin_usn=\"$admin_usn\";\n";
   $file_cont.="\$admin_pwd=\"$admin_pwd\";\n";
   $file_cont.="\$admin_mail=\"$admin_mail\";\n";
   $file_cont.="\$pagenum=\"$pagenum\";\n";
   $file_cont.="\$sess=md5(\$admin_usn.\$admin_pwd);\n";
   $file_cont.="\n";
   $file_cont.="?>";
   $fp=fopen("./inc/config.php","w");
   if(fputs($fp,$file_cont))
      echo "配置完成正检测各选项的正确性<BR>";
   else echo "文件写入错误,请检测文件所在目录的权限<br>";
   fclose($fp);
      echo "正在检测数据连接.........." ;
   if(@mysql_connect("$host","$database_usn","$database_pwd"))
      {
        echo  "成功!<BR>" ;
        $query="CREATE TABLE $table(
                     id int(4) NOT NULL auto_increment,
                     title varchar(55) NOT NULL,
                     cont text NOT NULL,
                     time varchar(14) NOT NULL,
                     type varchar(20) NOT NULL,
                     comm int(1) DEFAULT '0' NOT NULL,
                     p_num int(2) DEFAULT '0' NOT NULL,
                     locked int(1) DEFAULT '0' NOT NULL,
                     hits int(4) DEFAULT '0' NOT NULL,
                     html int(1) DEFAULT '1' NOT NULL,
                     PRIMARY KEY (id),
                     UNIQUE id (id),
                     KEY id_2 (id)
                     ) " ;
        if(mysql_db_query($database,$query))
          echo"数据库 $table 建立成功<BR>".mysql_error();
        else
          echo"数据库 $table 建立失败<BR>";
        $query="CREATE TABLE $ping_tab (
                      id int(4) NOT NULL auto_increment,
                      p_id int(4) DEFAULT '0' NOT NULL,
                      name varchar(50) NOT NULL,
                      mail varchar(200) NOT NULL,
                      p_cont text NOT NULL,
                      time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
                      ip varchar(15) NOT NULL,
                      PRIMARY KEY (id),
                      UNIQUE id (id),
                      KEY id_2 (id)
                      )";
        if(mysql_db_query($database,$query))
          {
            echo"用户评论数据库 $ping_tab 建立成功<BR>恭喜,文章管理系统安装成功!请<a href=/blog_article/login.php>这边走</a>进行基本设置!<BR>/index.html";
            $fp=fopen("setup.php","r");
            $file_cont=fread($fp,filesize("setup.php"));
            $file_cont="<? \nsession_start();\nrequire\"./inc/func.php\";\n check_login();\n?>\n".$file_cont;
            $fp=fopen("setup.php","w");
            fputs($fp,$file_cont);
            fclose($fp);
          }
        else
          echo"用户评论数据库$ping_tab建立失败<BR>";
    }
   else
      echo "数据库连接失败!请检测你用户名密码的正确性!<BR>";
  exit();
  }
require "./inc/header.inc";
?>
<script language="javascript">
function db_pwd()
{
  var theResult = true;
  var elem4 = null;

  if (document.forms[0].elements[2].value == "" || document.forms[0].elements[2].value!=document.forms[0].elements[3].value)
  {
    alert("您两次输入的数据库密码不一致,或者为空!");
    document.forms[0].elements[2].value="";
    document.forms[0].elements[3].value="";
    theResult = false;

     }
  return theResult;
}
function admin_pwd()
{
  var theResult = true;
  var elem4 = null;
if (document.forms[0].elements[8].value == "" || document.forms[0].elements[8].value!=document.forms[0].elements[9].value)
  {
    alert("您两次输入的管理员密码不一致,或者为空!");
    document.forms[0].elements[8].value="";
    document.forms[0].elements[9].value="";
    theResult = false;

     }
  return theResult;
}
function go()
{
var theResult=true;
theResult =db_pwd()&&admin_pwd();
return theResult;
}
</script>
</head>
<body bgcolor="#FFFFFF">
<? require "./inc/nav.inc";?>
<form name="form1" method="post" action="/blog_article/</ echo $PHP_SELF; /gt;.html" onsubmit="return go()";>
  <table border="0" cellspacing="0" cellpadding="0" align="center" 3">
        <div align="center">蓝狐文章管理安装程序<br>
          (请正确填写以下内容否则程序将无法使用)</div>
      </td>
    </tr>
    <tr>
      <td>数据库服务器:</td>
      <td colspan="2">
        <input type="text" name="host" value="localhost" size="30">
      </td>
    </tr>
    <tr>
      <td>数据库用户名: </td>
      <td colspan="2">
        <input type="text" name="database_usn" size="30">
      </td>
    </tr>
    <tr>
      <td>数据库用户密码:</td>
      <td colspan="2">
        <input type="password" name="database_pwd" size="30">
      </td>
    </tr>
    <tr>
      <td>数据库密码确认:</td>
      <td colspan="2">
        <input type="password" name="database_pwd2" size="30">
      </td>
    </tr>
    <tr>
      <td>数据库名:</td>
      <td colspan="2">
        <input type="text" name="database" size="30">
      </td>
    </tr>
    <tr>
      <td>存放文章的表:</td>
      <td colspan="2">
        <input type="text" name="table" size="30">
      </td>
    </tr>
    <tr>
      <td>存放评论的表:</td>
      <td colspan="2">
        <input type="text" name="ping_tab" size="30">
      </td>
    </tr>
    <tr>
      <td>管理员用户名:</td>
      <td colspan="2">
        <input type="text" name="admin_usn" size="30">
      </td>
    </tr>
    <tr>
      <td>管理员密码:</td>
      <td colspan="2">
        <input type="password" name="admin_pwd" size="30">
      </td>
    </tr>
    <tr>
      <td>管理员密码确认:</td>
      <td colspan="2">
        <input type="password" name="admin_pwd2" size="30">
      </td>
    </tr>
    <tr>
      <td>管理员邮件地址:</td>
      <td colspan="2">
        <input type="text" name="admin_mail" size="30">
      </td>
    </tr>
    <tr>
      <td>每页显示文章数:</td>
      <td colspan="2">
        <input type="text" name="pagenum" size="30">
      </td>
    </tr>
    <tr>
      <td>
        <div align="center"><br>
        </div>
      </td>
      <td>
        <div align="left"><br>
          <input type="submit" name="sub" value="submit" >
            
          <input type="reset" name="reset" value="reset" >
        </div>
      </td>
    </tr>
  </table>
  <p>  </p>
  </form>
<?require "./inc/footer.inc";?> 

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3