当前位置:  编程技术>php
本页文章导读:
    ▪IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)       录制+调整花了几个小进才把IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例弄好 有需要的朋友可以下载看看 /uploadfiles/file/iis.rar 说明: IIS6.0+PHP5.x+MySQL5.x+Zend5.0x+GD+phpMyAdmin2.8x通用安装实.........
    ▪PHP生成静态页面详解       我们先回顾一些基本的概念。   一,PHP脚本与动态页面。   PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求.........
    ▪详解:——如何将图片储存在数据库里       如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。 .........

[1]IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
    来源: 互联网  发布时间: 2013-11-30
录制+调整花了几个小进才把IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例弄好
有需要的朋友可以下载看看
/uploadfiles/file/iis.rar

说明:
IIS6.0+PHP5.x+MySQL5.x+Zend5.0x+GD+phpMyAdmin2.8x通用安装实例
建议看附件中的视屏文件,比较直观
为了教程视屏不过于太大,在做视屏教程之前就已经写好步骤,就不用在录制过程中录入文字了
一、下载所需软件
建议软件全部去官方网站下载,防止软件包被人附加或修改文件
1.PHP
使用PHP5.x版本:
http://cn.php.net/get/php-5.1.2-Win32.zip/from/a/mirror
下载所需的版本只要网址中的■php-5.1.2■-Win32.zip
例如要下载php5.1.4 只要将网址改成:
http://cn.php.net/get/php-5.1.4-Win32.zip/from/a/mirror
要下载php5.1.6 只要将网址改成:
http://cn.php.net/get/php-5.1.6-Win32.zip/from/a/mirror
更早的版本也可以使用同样的方法下载到,不用去其它网站下载软件
2.MySQL
实例使用的均是MySQL5.x以上
下载地址:
http://downloads.mysql.com/archives.php
3.Zend Optimizer
Zend Optimizer(3.0.1):
http://www.zend.com/store/free_download.php?pid=13
Zend软件虽然免费下载,但需要注册用户登陆后选择Windows x86的Platform版本
人家毕竟提供这么强大功能的软件,注册一个算是支持软件发展
4.phpMyAdmin
选择当前最新版本,官方网站
http://www.phpmyadmin.net/home_page/index.php

5.GD库
PHP压缩包内包含GD库文件
配置php.ini的时候要将前面的;去掉,即:启用

以上是说明文字,及软件下载地址,有必要看一下

二、安装IIS (即 Internet 信息管理器)
若你的服务器已经安装IIS,些步骤可以省去,若没安装IIS,可以参阅此教程进行相应配置
http://bbs.netdoc.com.cn/viewthread.php?tid=18
三、安装并配置PHP运行环境
1.解压php-5.1.x-Win32.zip 压缩包( X 是PHP的版本号)到所需目录,本实例使用PHP版本为:php-5.1.6
例如
c:\php
d:\php
也可以使用不规则的目录名,如:
c:\abcdefe
d:\abcdefe
不过尽量"不要作用"特殊字符,本实例使用的是d:\php
2.编辑
将目录下的php.ini-dist文件改名为php.ini
用文本编辑软件打开php.ini并作相应修改
使用查找功能
■搜索
register_globals = Off
off 改成 on
■搜索
extension_dir =
改成
extension_dir ="d:\php\ext" (这里的 "d:\php\ext" 目录是PHP安装目录下 ext  若你PHP安装 在c:\php 下,那么这里就要写成 extension_dir ="c:\php\ext")
■搜索
;upload_tmp_dir =
改成
upload_tmp_dir =d:\php\upload_tmp (这里的 upload_tmp 目录是自己建立,默认没有这个文 件夹,尽量"不要作用"特殊字符)
■搜索
Windows Extensions
将一些常用功能前面 的   ; 去掉,即启用相应的模块功能
这里我启用相应的模块
extension=php_mbstring.dll
extension=php_curl.dll
extension=php_dbase.dll
extension=php_gd2.dll
extension=php_ldap.dll
extension=php_mysql.dll
后面会有模块的详细功能说明
■搜索
;session.save_path = "/tmp"
改成
session.save_path = "d:\php\tmp" (这里的 tmp 目录是自己建立,默认没有这个文 件夹,尽量"不要作用"特殊字符)

3.复制
■复制 php.ini 到 %windir% 
(%windir%指的是Windows的安装目录,若你的系统安装在c盘并且是Server 2003 系统,那么%windir% 指的是c:\windows,若系统安装在d盘并且系统是Windws server2000 那么%windir%指的是:c:\winnt,实例使用的操作系统是Server 2003 并且装在c盘,所以要将php.ini 复制到c:\windows)
■复制php安装目录下所有的dll 文件(指根目录文件,"不包含" ext 文件夹下的dll文件)到 %windir%\system32   (说明同上,实例使用的是c:\windows\system32)
■■■以上的复制步骤可以使用批处理文件来执行,使用方便、快捷
copy php.ini %windir% /y 
copy *.dll %windir%\system32 /y
md tmp /y
md upload_tmp /y
将上面的命令复制到记事本中保存,并将文件名改成copy.bat  双击即可自动执行复制步骤

好像没有自动建立目录,再试一下看看,呵呵,昏,非要单独执行,算了,大家还是手动建立那两个目录吧,我是找简单的方法才使用那种方法的
解释:
copy php.ini %windir% /y 复制php.ini 到c:\windows        /y  指若文件存在,则覆盖原文件
copy *.dll %windir%\system32 /y 复制 d:\php  下所有扩展名为dll 文件 到c:\windows\system32        /y  指若文件存在,则覆盖原文件
md tmp /y 建立文件夹tmp  /y  指若文件存在,则覆盖原目录
md upload_tmp /y 建立文件夹upload_tmp  /y  指若文件存在,则覆盖原目录

3.配置
配置 IIS 使其支持 PHP :
■展开IIS目录树
右击“网站”--选择“属性”---选择"主目录”---选择"配置"---选择"应用程序映射“选项 ----“添加”按钮新增一个扩展名映射,在弹出的窗口中单击“浏览”将可执行文件指向 php5isapi.dll 所在位置,本文实例为:D:\php\php5isapi.dll
扩展名为 .php ,动作限于”GET,HEAD,POST,TRACE“,将“脚本引擎”“确认文件是否存在”选中
看操作
■右击"WEB 服务器扩展" 设置ISAPI 扩展允许
这里还要添加一个ISAPI扩展,之前写步骤时忘记了,不好意思
以上操作完成后需要重启IIS后PHP运行环境才能生效
待重启完成后,测试一下PHP是否能正常运行
建立文本文件并保存为 check.php 
内容:
<?php
phpinfo();
?>
若能正常显示运行信息,则PHP的运行环境已经配置完成
四、安装 Zend 2.6x 或2.6x 以上版本
实例使用ZendOptimizer-3.0.1 (下载后得到:ZendOptimizer-3.0.1-Windows-i386.exe 文件,双击安装)
安装步骤请看操作,这里我安装路径为d:\php\zend
  (本人喜欢将同类或类似同类的软件安装到同一目录,比如我喜欢将zend 安装到php的目录下(d:\php\zend),暂时不知道有没有什么不妥之处,根据个人喜好或安全,也可以安装到其它目录)
Zend 在安装过程中会自动配置 php.ini 启用zend模块,安装后可以看到php.ini文件最后会写入:
[Zend]
zend_extension_manager.optimizer_ts="D:\php\Zend\lib\Optimizer-3.0.1"
zend_extension_ts="D:\php\Zend\lib\ZendExtensionManager.dll"

我喜欢将同类软件或类似同类的软件安装到同一目录,这样比较好管理,这是根据个人喜好或安全才这样设置
五、安装GD库
去掉php.ini 中;extension=php_gd2.dll  前面的 ;  就行了  其实之前已经去掉前面的; 了,这里就不用再做同样的操作啦
六、安装MYSQL
安装比较简单,请看视屏操作
过程中会让输入MYSQL 中的root用户密码,这里我设置密码为:123456

七、安装 phpMyAdmin:
本实例使用phpMyAdmin-2.8.1
要修改的地方有:
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin';  phpmyadmin的WEB访问URL
$cfg['blowfish_secret'] = 'fsdfDF433%$^$%';   COOKIES加密密匙,随便写,越复杂越好
$cfg['Servers'][$i]['auth_type']     = 'cookie';  认证方式 (config, http , cookie)  这里选择cookie,安全一点
$cfg['Servers'][$i]['user']          = '';   MySQL用户
$cfg['Servers'][$i]['password']      = '';   MySQL密码
使用查找功能,根据需要修改

本实例到已经完成,您的服务器已经支持PHP+MySQL+Zend+GD+phpMyAdmin运行环境了,谢谢欣赏!!!
本实例可以自由转载,请注明出处:
网医在线,有问必答  http://bbs.netdoc.com.cn

实例视屏在附件中
http://mindway.cn/archives/2006/08/307.html

    
[2]PHP生成静态页面详解
    来源: 互联网  发布时间: 2013-11-30
我们先回顾一些基本的概念。
  一,PHP脚本与动态页面。
  PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求进行处理。无论以何种方式,它的基本原理是这样的。由客户端提出请求,请求某一页面 -----> WEB服务器引入指定相应脚本进行处理 -----> 脚本被载入服务器 -----> 由服务器指定的PHP解析器对脚本进行解析形成HTML语言形式 ----> 将解析后的HTML语句以包的方式传回给浏览器。由此不难看出,在页面发送到浏览器后,PHP就不存在了,已被转化解析为HTML语句。客户请求为一动态文件,事实上并没有真正的文件存在在那里,是PHP解析而成相对应的页面,然后发送回浏览器。这种页面处理方式被称为“动态页面”。
  二,静态页面。
  静态页面是指在服务器端确实存在的仅含HTML以及JS,CSS等客户端运行脚本的页面。它的处理方式是。由客户端提出请求,请求某一页面 ----> WEB服务器确认并载入某一页面 ----> WEB服务器将该页面以包的形式传递回浏览器。由这一过程,我们对比一下动态页面,即可方现。动态页面需由WEB服务器的PHP解析器进行解析,而且通常还需连接数据库,进行数据库存取操作,然后才能形成HTML语言信息包;而静态页面,无须解析,无须连接数据库,直接发送,可大大减轻服务器压力,提高服务器负载能力,大幅提供页面打开速度和网站整体打开速度。但其缺点是,不能动态地对请求进行处理,服务器上必须确实存在该文件。
  三,模板及模板解析。
  模板即尚未填充内容html文件。例如:
 temp.html

<HTML>
  <TITLE>{ title }</TITLE>
  <BODY>
     this is a { file } file's templets
  </BODY>
</HTML> 

PHP处理:
 templetest.php

<?php
  $title = "拓迈国际测试模板";
  $file   = "TwoMax Inter test templet,<br>author:Matrix@Two_Max";
 $fp          = fopen ("temp.html","r");
  $content  = fread ($fp,filesize ("temp.html"));
  $content .= str_replace ("{ file }",$file,$content);
  $content .= str_replace ("{ title }",$title,$content);
  echo $content;
?> 

 
  模板解析处理,即将经PHP脚本解析处理后得出的结果填充(content)进模板的处理过程。通常借助于模板类。目前较流行的模板解析类有phplib,smarty,fastsmarty等等。模板解析处理的原理通常为替换。也有些程序员习惯将判断,循环等处理放进模板文件中,用解析类处理,典型应用为block概念,简单来说即为一个循环处理。由PHP脚本指定循环次数,如何循环代入等,再由模板解析类具体实施这些操作。
  好了,对比过静态页面与动态页面各自的优劣,现在我们就来说说,如何用PHP生成静态文件。
  PHP生成静态页面并不是指PHP的动态解析,输出HTML页面,而是指用PHP创建HTML页面。同时因为HTML的不可写性,我们创建的HTML若有修改,则需删掉重新生成即可。(当然你也可以选择用正则进行修改,但个人认为那样做倒不如删掉重新生成来得快捷,有些得不偿失。)
  言归正传。用过PHP文件操作函数的PHP FANS知道,PHP中有一个文件操作函数fopen,即打开文件。若文件不存在,则尝试创建。这即是PHP可以用来创建HTML文件的理论基础。只要用来存放HTML文件的文件夹有写权限(即权限定义0777),即可创建文件。(针对UNIX系统而言,Win系统无须考虑。)仍以上例为例,若我们修改最后一句,并指定在test目录下生成一个名为test.html的静态文件:

<?php
  $title = "拓迈国际测试模板";
  $file   = "TwoMax Inter test templet,<br>author:Matrix@Two_Max";
 $fp          = fopen ("temp.html","r");
  $content  = fread ($fp,filesize ("temp.html"));
  $content .= str_replace ("{ file }",$file,$content);
  $content .= str_replace ("{ title }",$title,$content);
  // echo $content;

  $filename = "test/test.html";
  $handle    = fopen ($filename,"w"); //打开文件指针,创建文件
  /*
 检查文件是否被创建且可写
  */
  if (!is_writable ($filename)){ 
     die ("文件:".$filename."不可写,请检查其属性后重试!");
  }
  if (!fwrite ($handle,$content)){  //将信息写入文件
     die ("生成文件".$filename."失败!");
  } 
  fclose ($handle); //关闭指针

  die ("创建文件".$filename."成功!");
?>   

  实际应用中常见问题解决方案参考:
  一,文章列表问题:
  
  在数据库中创建字段,记录文件名,每生成一个文件,将自动生成的文件名存入数据库,对于推荐文章,只需指向存放静态文件的指定文件夹中的该页面即可。利用PHP操作处理文章列表,存为字符串,生成页面时替换此字符串即可。如,在页面中放置文章列表的表格加入标记{ articletable },而在PHP处理文件中:
<?php
  $title = "拓迈国际测试模板";
  $file   = "TwoMax Inter test templet,<br>author:Matrix@Two_Max";
 $fp          = fopen ("temp.html","r");
  $content  = fread ($fp,filesize ("temp.html"));
  $content .= str_replace ("{ file }",$file,$content);
  $content .= str_replace ("{ title }",$title,$content);

  //  生成列表开始
  $list = '';
  $sql = "select id,title,filename from article";
  $query = mysql_query ($sql);
  while ($result = mysql_fetch_array ($query)){ 
     $list .= '<a href='/blog_article/.$root.$result['filename'].' target=_blank>'.$result['title'].'</a><br>';
  }
  $content .= str_replace ("{ articletable }",$list,$content);

  //生成列表结束
  // echo $content;

  $filename = "test/test.html";
  $handle    = fopen ($filename,"w"); //打开文件指针,创建文件
  /*
 检查文件是否被创建且可写
  */
  if (!is_writable ($filename)){ 
     die ("文件:".$filename."不可写,请检查其属性后重试!");
  }
  if (!fwrite ($handle,$content)){  //将信息写入文件
     die ("生成文件".$filename."失败!");
  } 
  fclose ($handle); //关闭指针

  die ("创建文件".$filename."成功!");
?> 

 
  二,分页问题。
  如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i < allpages; $i++),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die ("创建文件".$filename."成功!";这句去掉,放到循环后的显示,因为该语句将中止程序执行。例:
<?php
  $fp          = fopen ("temp.html","r");
  $content  = fread ($fp,filesize ("temp.html"));
  $onepage  = '20';
  $sql          = "select id from article where channel='$channelid'";
  $query      = mysql_query ($sql);
  $num        = mysql_num_rows ($query);
  $allpages   = ceil ($num / $onepage);
  for ($i = 0;$i<$allpages; $i++){ 
     if ($i == 0){ 
        $indexpath = "index.html";
      } else { 
        $indexpath = "index_".$i."html";
      }
     $start = $i * $onepage;
     $list    = '';
     $sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage";
     $query_for_page = mysql_query ($sql_for_page);
     while ($result = $query_for_page){ 
        $list .= '<a href='/blog_article/.$root.$result['filename'].' target=_blank>'.$title.'</a><br>';
      }

     $content = str_replace ("{ articletable }",$list,$content);
     if (is_file ($indexpath)){ 
        @unlink ($indexpath); //若文件已存在,则删除
      }
     $handle    = fopen ($indexpath,"w"); //打开文件指针,创建文件
     /*
    检查文件是否被创建且可写
     */
     if (!is_writable ($indexpath)){ 
        echo "文件:".$indexpath."不可写,请检查其属性后重试!"; //修改为echo
      }
     if (!fwrite ($handle,$content)){  //将信息写入文件
        echo "生成文件".$indexpath."失败!"; //修改为echo
      } 
     fclose ($handle); //关闭指针
  }
  fclose ($fp);
  die ("生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!");
?>   

  大致思路如此,其中如其它数据生成,数据输入输出检查,分页内容指向等可酌情在页面中加入。
  在实际文章系统处理过程当中,还有许多问题有待考虑,与动态页面不同之处,需注意的地方还有很多。但大致思路即是如此,其它方面可举一反三而得。 

    
[3]详解:——如何将图片储存在数据库里
    来源: 互联网  发布时间: 2013-11-30

如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。

本文概述:

。在mysql中建立一个新的数据库

。一个怎样储存文件的例子程序

。一个怎样访问文件的例子程序

在mysql中建立一个新的database

首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,

你必须做下列步骤:

。进入MySql控制器

。输入命令"create database binary_data;"

。输入命令"use binary_data;"

。输入命令

"CREATE TABLE binary_data ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,description CHAR(50), bin_data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50));" (不能断行)

如果没有意外,数据库 和 表 应该建立好了。

一个怎样储存文件的例子程序

用这个例子你可以通过Html表单将文件传输到数据库中。

store.php3
<?php
// store.php3 - by Florian Dittmer <dittmer@gmx.net>
?>
<HTML>
<HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD>
<BODY>
<?php
// 如果提交了表单,代码将被执行:
if ($submit) {
// 连接到数据库
// (你可能需要调整主机名,用户名和密码)
MYSQL_CONNECT( "localhost", "root", "password");
mysql_select_db( "binary_data");
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY( "INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) 
[接上一行:] VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); 
$id= mysql_insert_id();
  print "<p>This file has the following Database ID: <b>$id</b>";
MYSQL_CLOSE();
} else {
// 否则显示储存新数据的表单
?>
<form method="post" action="/blog_article/</php echo $PHP_SELF; /gt;.html" enctype="multipart/form-data">
File Description:<br>
<input type="text" name="form_description" size="40">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload/store in database:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>
<?php
}
?>
</BODY>
</HTML>

如果你执行了这个程序,你将会看见一个简单的Html表单,单击“浏览”选择一个文件,然后单击提交。

当文件上传至web服务器之后,程序将会告诉你刚刚上传的文件的ID,记住这个ID,待会要用的。

一个怎样访问文件的例子程序

你可以通过这个程序访问你刚才储存的文件

<?php
// getdata.php3 - by Florian Dittmer <dittmer@gmx.net>
// 调用方法: getdata.php3?id=<id>
if($id) {
// 你可能需要调整主机名,用户名和密码:
 @MYSQL_CONNECT( "localhost", "root", "password");
 @mysql_select_db( "binary_data");
 $query = "select bin_data,filetype from binary_data where id=$id";
 $result = @MYSQL_QUERY($query);
 $data = @MYSQL_RESULT($result,0, "bin_data");
 $type = @MYSQL_RESULT($result,0, "filetype");
Header( "Content-type: $type");
echo $data;
};
?>

程序必须知道要访问那个文件, 你必须将ID作为一个参数。

例如: 一个文件在数据库中的ID为2. 你可以这样调用它:

getdata.php3?id=2

如果你将图片储存在数据库里, 你可以向调用图片一样调用它。

Example: 一个图片文件在数据库中的ID为3. 你可以这样调用它:

怎样储存大于1MB的文件:

如果你想储存大于1MB的文件,你必须对你的程序、PHP设置、SQL设置进行许多修改,。

下面几条也许可以帮助你储存小于24MB的文件:

1、修改 store.php3 ,将 MAX_FILE_SIZE 的值改成 24000000。

2、修改你的PHP设置,在一般情况下,PHP只允许小于2MB的文件,你必须将max_filesize(在php.ini中)的值改成24000000

3、去掉MYSQL的数据包大小限制,在一般情况下 MYSQL 小于1 MB的数据包.

4、你必须用以下参数重启你的MYSQL

/usr/local/bin/safe_mysqld -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=24M

5、如果仍然出错:

可能是超时错误,如果你通过一个很慢的连接来储存一个很大的文件,PHP缺省的时间限制为30秒。你可以将max_execution_time(在php.ini中)的值改为-1


    
最新技术文章:
▪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