扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、安装php运行环境
在大理州等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都网站设计 网站设计制作按需网站开发,公司网站建设,企业网站建设,品牌网站设计,全网营销推广,外贸网站制作,大理州网站建设费用合理。
2、安装数据库
3、将网站目录指向网站源码所在的文件夹
详细步骤如下:
===========
===========
===========
Windows 2000/XP/2003 下 IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置
关键词:Windows IIS下配置支持PHP+MYSQL
Apache下支持PHP的配置方法比较简单,这里就不写了
一般WIN主机推荐PHP环境组合:PHP4.4.x+MySQL4.0.x,故以下关于PHP4.4.x+MySQL4.0.x组合的安装以蓝色文字显示,如果你只需要安装PHP4.4.x+MySQL4.0.x的组合只看蓝色文字的相关内容即可
当然喜欢体验的或者WIN2003系统也可体验尝试最新的版本,推荐组合PHP5.1.x+MYSQL5.0.x/MySQL4.1.x
一、软件准备:以下均为截止2006-1-20的最新正式版本,下载地址也均长期有效
1.PHP,推荐PHP4.4.0的ZIP解压版本:
PHP(4.4.0):
[供选用]:
PHP(5.1.2):
2.MySQL,配合PHP4推荐MySQL4.0.26的WIN系统安装版本:
MySQL(4.0.26):
... p/from/pick#mirrors
[供选用]:
MySQL(4.1.16):
... p/from/pick#mirrors
MySQL(5.0.18):
... p/from/pick#mirrors
3.Zend Optimizer,当然选择当前最新版本拉:
Zend Optimizer(2.6.2):
(Zend软件虽然免费下载,但需要注册用户,这里提供本人注册好的帐户名:
xqincom
和密码:
xqin.com
,方便大家使用,请不要修改本帐号或将本帐户用于其他费正当途径,谢谢!)
登陆后选择Windows x86的Platform版本,如最新版本2.6.2
;zbid=995
4.phpMyAdmin,当然同样选择当前最新版本拉,注意选择for Windows 的版本哦:
phpMyAdmin(2.7.0):
假设 C:\ 为你现在所使用操作系统的系统盘,如果你目前操作系统不是安装在 C:\ ,请自行对应修改相应路径。同时由于C盘经常会因为各种原因重装系统,数据放在该盘不易备份和转移
选择安装目录,故本文将所有PHP相关软件均安装到D:\php目录下,这个路径你可以自行设定,如果你安装到不同目录涉及到路径的请对应修改以下的对应路径即可
二、安装 PHP :本文PHP安装路径取为D:\php\php4\
(为避混淆,PHP5.1.x版本安装路径取为D:\php\php5\)
(1)、下载后得到 php-4.4.0-Win32.zip ,解压至D:\php目录,将得到二级目录php-4.4.0-Win32,改名为 php4,也即得到PHP文件存放目录D:\php\php4\[如果是PHP5.1.2,得到的文件是php-5.1.2-Win32.zip,直接全 部接压至D:\php\php5目录即可得PHP文件存放目录D:\php\php5\
];
(2)、再将D:\php\php4目录和D:\php\php4\dlls目录[
PHP5为D:\php\php5\
]下的所有dll文件拷到c:\Windows\system32(win2000系统为 c:/winnt/system32/)下,覆盖已有的dll文件;
(3)、将php.ini-dist用记事本打开,利用记事本的查找功能搜索并修改:
搜索
CODE:
[Copy to clipboard]
register_globals = Off,将 Off 改成 On ,即得到register_globals = On;
注:这个对应PHP的全局变量功能,考虑有很多PHP程序需要全局变量功能故打开,打开后请注意-PHP程序的严谨性,如果不需要推荐不修改保持默认Off状态
再搜索
CODE:
[Copy to clipboard]
extension_dir =,并将其路径指到你的 PHP 目录下的 extensions 目录,比如:修改extension_dir = "./"为extension_dir = "D:/php/php4/extensions/" ;
PHP扩展功能目录[PHP5对应修改为extension_dir = "D:/php/php5/ext/"]
在D:\php下建立文件夹并命名为tmp
查找
CODE:
[Copy to clipboard]
;upload_tmp_dir =将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定 义上传文件存放的临时路径,在这里你还可以修改并给其定义一个绝对路径,这里设置的目录必须有读写权限。
这里我设置为upload_tmp_dir = D:/php/tmp (即前面建立的这个文件夹呵)
搜索找到
CODE:
[Copy to clipboard]
;Windows Extensions将下面一些常用的项前面的;去掉
CODE:
[Copy to clipboard]
;extension=php_mbstring.dll
CODE:
[Copy to clipboard]
;extension=php_curl.dll
CODE:
[Copy to clipboard]
;extension=php_dbase.dll
CODE:
[Copy to clipboard]
;extension=php_gd2.dll
这个是用来支持GD库的,一般需要,必选
CODE:
[Copy to clipboard]
;extension=php_ldap.dll
CODE:
[Copy to clipboard]
extension=php_zip.dll去掉前面的";"
对于PHP5的版本还需要查找
CODE:
[Copy to clipboard]
;extension=php_mysql.dll并同样去掉前面的";"
这个是用来支持MYSQL的,由于PHP5将MySQL作为一个独立的模块来加载运行的,故要支持MYSQL必选
查找
CODE:
[Copy to clipboard]
;session.save_path =去掉前面;号,本文这里将其设置置为
session.save_path = D:/php/tmp
其他的你可以选择需要的去掉前面的;然后将该文件另存为为php.ini到C:\Windows ( Windows 2000 下为 C:\WINNT)目录下,注意更改文件后缀名为ini,得到C:\Windows\php.ini ( Windows 2000 下为 C:\WINNT\php.ini)
本人配置成功后的PHP.INI文件示例可供大家参考:
对应版本为PHP4.4.0
对应版本为PHP5.1.12
若路径等和本文相同可直接保存到C:\Windows ( Windows 2000 下为 C:\WINNT)目录下使用若路径等和本文相同可直接保存到C:\Windows ( Windows 2000 下为 C:\WINNT)目录下使用
一些朋友经常反映无法上传较大的文件或者运行某些程序经常超时,那么可以找到C:\Windows ( Windows 2000 下为 C:\WINNT)目录下的PHP.INI以下内容修改:
max_execution_time = 30 ; 这个是每个脚本运行的最长时间,可以自己修改加长,单位秒
max_input_time = 60 ; 这是每个脚本可以消耗的时间,单位也是秒
memory_limit = 8M ; 这个是脚本运行最大消耗的内存,也可以自己加大
upload_max_filesize = 2M ; 上载文件的最大许可大小 ,自己改吧,一些图片论坛需要这个更大的值
(4)、配置 IIS 使其支持 PHP :
首先必须确定系统中已经正确安装 IIS ,如果没有安装,需要先安装 IIS ,安装步骤如下:
Windows 2000/XP 下的 IIS 安装:
用 Administrator 帐号登陆系统,将 Windows 2000 安装光盘插入光盘驱动器,进入“控制面板”点击“添加/删除程序”,再点击左侧的“添加/删除 Windows 组件”,在弹出的窗口中选择“Internet 信息服务(IIS)”,点下面的“详细信息”按钮,选择组件,以下组件是必须的:“Internet 服务管理器”、“World Wide Web 服务器”和“公用文件”,确定安装。
安装完毕后,在“控制面板”的“管理工具”里打开“服务”,检查“IIS Admin Service”和“World Wide Web Publishing Service”两项服务,如果没有启动,将其启动即可。
Windows 2003 下的 IIS 安装:
由于 Windows 2003 的 IIS 6.0 集成在应用程序服务器中,因此安装应用程序服务器就会默认安装 IIS 6.0 ,在“开始”菜单中点击“配置您的服务器”,在打开的“配置您的服务器向导”里左侧选择“应用程序服务器(IIS,ASP.NET)”,单击“下一步”出 现“应用程序服务器选项”,你可以选择和应用程序服务器一起安装的组件,默认全选即可,单击“下一步”,出现“选择总结界面”,提示了本次安装中的选项, 配置程序将自动按照“选择总结”中的选项进行安装和配置。
打开浏览器,输入:
,看到成功页面后进行下面的操作:
PHP 支持 CGI 和 ISAPI 两种安装模式,CGI 更消耗资源,容易因为超时而没有反映,但是实际上比较安全,负载能力强,节省资源,但是安全性略差于CGI,本人推荐使用 ISAPI 模式。故这里只解介绍 ISAPI 模式安装方法:(以下的截图因各个系统不同,窗口界面可能不同,但对应选项卡栏目是相同的,只需找到提到的对应选项卡即可)
在“控制面板”的“管理工具”中选择“Internet 服务管理器”,打开 IIS 后停止服务,对于WIN2000系统在”Internet 服务管理器“的下级树一般为你的”计算机名“上单击右键选择“属性”,再在属性页面选择主属性”WWW 服务“右边的”编辑“
对于XP/2003系统展开”Internet 服务管理器“的下级树一般为你的”计算机名“选择”网站“并单击右键选择“属性”
在弹出的属性窗口上选择“ISAPI 筛选器”选项卡找到并点击“添加”按钮,在弹出的“筛选器属性”窗口中的“筛选器名称”栏中输入:PHP ,再将浏览可执行文件使路径指向 php4isapi.dll 所在路径,如本文中为:D:\php\php4\sapi\php4isapi.dll[PHP5对应路径为D:\php\php5\ php5isapi.dll
]。
打开“站点属性”窗口的“主目录”选项卡,找到并点击“配置”按钮
在弹出的“应用程序配置”窗口中的”应用程序映射“选项卡找到并点击“添加”按钮新增一个扩展名映射,在弹出的窗口中单击“浏览”将可执行文件指向 php4isapi.dll 所在路径,如本文中为:D:\php\php4\sapi\php4isapi.dll[
PHP5对应路径为D:\php\php5\php5isapi.dll
],扩展名为 .php ,动作限于”GET,HEAD,POST,TRACE“,将“脚本引擎”“确认文件是否存在”选中,然后一路确定即可。如果还想支持诸如 .php3 ,.phtml 等扩展名的 PHP 文件,可以重复“添加”步骤,对应扩展名设置为需要的即可如.PHPX。
此步操作将使你服务器IIS下的所有站点都支持你所添加的PHP扩展文件,当然如果你只需要部分站点支持PHP,只需要在“你需要支持PHP的Web站 点”比如“默认Web站点”上单击右键选择“属性”,在打开的“ Web 站点属性”“主目录”选项卡,编辑或者添加PHP的扩展名映射即可或者将你步需要支持PHP的站点中的PHP扩展映射删除即可
再打开“站点属性”窗口的“文档”选项卡,找到并点击“添加”按钮,向默认的 Web 站点启动文档列表中添加 index.php 项。您可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开 index.php 文档。
确定 Web 目录的应用程序设置和执行许可中选择为纯脚本,然后关闭 Internet 信息服务管理器
对于2003系统还需要在“Internet 服务管理器”左边的“WEB服务扩展”中设置ISAPI 扩展允许,Active Server Pages 允许
完成所有操作后,重新启动IIS服务。
在CMD命令提示符中执行如下命令:
net stop w3svc
net stop iisadmin
net start w3svc
到此,PHP的基本安装已经完成,我们已经使网站支持PHP脚本。
检查方法是,在 IIS 根目录下新建一个文本文件存为 php.php ,内容如下:
CODE:
[Copy to clipboard]
打开浏览器,输入:
,将显示当前服务器所支持 PHP 的全部信息,可以看到 Server API的模式为:ISAPI 。
或者利用PHP探针检测
下载后解压到你的站点根目录下并访问即可
三、安装 MySQL :
对于MySQL4.0.26下载得到的是mysql-4.0.26-win32.zip,解压到mysql-4.0.26-win32目录双击执行 Setup.exe 一路Next下一步,选择安装目录为D:\php\MySQL和安装方式为Custom自定义安装,再一路Next下一步即可。
安装完毕后,在CMD命令行中输入并运行:
CODE:
[Copy to clipboard]
D:\php\MySQL\bin\mysqld-nt -install如果返回Service successfully installed.则说明系统服务成功安装
新建一文本文件存为MY.INI,编辑配置MY.INI,这里给出一个参考的配置
(
可以下载后直接保存到WINDOWS或者WINNT目录使用)
CODE:
[Copy to clipboard]
[mysqld]
basedir=D:/php/MySQL
#MySQL所在目录
datadir=D:/php/MySQL/data
#MySQL数据库所在目录,可以更改为其他你存放数据库的目录
#language=D:/php/MySQL/share/your language directory
#port=3306
set-variable = max_connections=800
skip-locking
set-variable = key_buffer=512M
set-variable = max_allowed_packet=4M
set-variable = table_cache=1024
set-variable = sort_buffer=2M
set-variable = thread_cache=64
set-variable = join_buffer_size=32M
set-variable = record_buffer=32M
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=64M
set-variable = connect_timeout=10
set-variable = wait_timeout=10
server-id = 1
[isamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[myisamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[WinMySQLadmin]
Server=D:/php/MySQL/bin/mysqld-nt.exe保存后复制此MY.INI文件到C:\Windows ( Windows 2000 下为 C:\WINNT)目录下
回到CMD命令行中输入并运行:
CODE:
[Copy to clipboard]
net start mysqlMySQL 服务正在启动 .
MySQL 服务已经启动成功。
将启动 MySQL 服务;
DOS下修改ROOT密码:当然后面安装PHPMYADMIN后修改密码也可以通过PHPMYADMIN修改
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例:给root加个密码xqin.com
首先在进入CMD命令行,转到MYSQL目录下的bin目录,然后键入以下命令
mysqladmin -uroot password xqin.com
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
D:\php\MySQL\binmysqladmin -uroot password xqin.com回车后ROOT密码就设置为xqin.com了
如果你下载的是 MySQL5.x或者MySQL4.1.x,例mysql-5.0.18-win32:解压后双击执行 Setup.exe ,Next下一步后选择Custom自定义安装,再Next下一步选择安装路径这里我们选择D:\php\MySQL,继续Next下一步跳过Sign UP完成安装。
安装完成后会提示你是不是立即进行配置,选择是即可进行配置。当然一般安装后菜单里面也有配置向导MySQL Server Instance Config Wizar,运行后按下面步骤配置并设置ROOT密码即可
Next下一步后选择Standard Configuration
Next下一步,钩选Include .. PATH
Next下一步,设置ROOT密码,建议社设置复杂点,确保服务器安全!
Apply完成后将在D:\php\MySQL目录下生成MY.INI配置文件,添加并启动MySQL服务
如果你的MySQL安装出错,并且卸载重装仍无法解决,这里提供一个小工具系统服务管理器
,用于卸载后删除存在的MYSQL服务,重起后再按上述说明进行安装一般即可成功安装
四、安装 Zend Optimizer :
下载后得到 ZendOptimizer-2.6.2-Windows-i386.exe ,直接双击安装即可,安装过程要你选择 Web Server 时,选择 IIS ,然后提示你是否 Restart Web Server,选择是,完成安装之前提示是否备份 php.ini ,点确定后安装完成。我这里安装到D:\php\Zend
以下两步的目录根据你自己的默认WEB站点目录来选,当然也可以选择到D:\php\Zend目录
Zend Optimizer 的安装向导会自动根据你的选择来修改 php.ini 帮助你启动这个引擎。下面简单介绍一下 Zend Optimizer 的配置选项。以下为本人安装完成后 php.ini 里的默认配置代码(分号后面的内容为注释):
zend_extension_ts="D:\php\Zend\lib\ZendExtensionManager.dll"
;Zend Optimizer 模块在硬盘上的安装路径。
zend_extension_manager.optimizer_ts="D:\php\Zend\lib\Optimizer-2.6.2"
;优化器所在目录,默认无须修改。
zend_optimizer.optimization_level=1023
;优化程度,这里定义启动多少个优化过程,默认值是 15 ,表示同时开启 10 个优化过程中的 1-4 ,我们可以将这个值改为 1023 ,表示开启全部10个优化过程。
调用phpinfo()函数后显示:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies with Zend Optimizer v2.6.2, Copyright (c) 1998-2006, by Zend Technologies 则表示安装成功。
?php
//文件和图片上传类
class UploadFile
{//类定义开始
public $maxSize = -1; // 上传文件的最大值
public $supportMulti = true; // 是否支持多文件上传
public $allowExts = array();// 允许上传的文件后缀// 留空不作后缀检 查
public $allowTypes = array(); // 允许上传的文件类型 // 留空不做检查
public $thumb = false; // 使用对上传图片进行缩略图处理
public $thumbMaxWidth; // 缩略图最大宽度
public $thumbMaxHeight; // 缩略图最大高度
public $thumbPrefix = 'thumb_'; // 缩略图前缀
public $thumbSuffix = '';
public $thumbPath = ''; // 缩略图保存路径
public $thumbFile = '';// 缩略图文件名
public $thumbRemoveOrigin =false;// 是否移除原图
public $zipImages = false; // 压缩图片文件上传
public $autoSub = false; // 启用子目录保存文件
public $subType = 'hash';// 子目录创建方式 可以使用hash date
public $dateFormat = 'Ymd';
public $hashLevel = 1; // hash的目录层次
public $savePath = ''; // 上传文件保存路径
public $autoCheck = true; // 是否自动检查附件
public $uploadReplace = false;// 存在同名是否覆盖
// 例如可以是 time uniqid com_create_guid 等
// 必须是一个无需任何参数的函数名 可以使用自定义函数
public $saveRule = '';// 上传文件命名规则
// 例如可以是 md5_file sha1_file 等// 上传文件Hash规则函数名
public $hashType = 'md5_file';
private $error = '';// 错误信息
private $uploadFileInfo ;// 上传成功的文件信息
/**
+----------------------------------------------------------
* 架构函数
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
*/
public function __construct($maxSize='',$allowExts='',$allowTypes='',$savePath='',$saveRule='')
{
if(!empty($maxSize) is_numeric($maxSize)) {
$this-maxSize = $maxSize;
}
if(!empty($allowExts)) {
if(is_array($allowExts)) {
$this-allowExts = array_map('strtolower',$allowExts);
}else {
$this-allowExts = explode(',',strtolower($allowExts));
}
}
if(!empty($allowTypes)) {
if(is_array($allowTypes)) {
$this-allowTypes = array_map('strtolower',$allowTypes);
}else {
$this-allowTypes = explode(',',strtolower($allowTypes));
}
}
if(!empty($savePath)) {
$this-savePath = $savePath;
}
if(!empty($saveRule)) {
$this-saveRule = $saveRule;
}
}
private function save($file)
{
$filename = $file['savepath'].$file['savename'];
if(!$this-uploadReplace is_file($filename)) {// 不覆盖同名文件
$this-error = '文件已经存在!'.$filename;
return $this - error;
}
// 如果是图像文件 检测文件格式
if( in_array(strtolower($file['extension']),array('gif','jpg','jpeg','bmp','png','swf')) $this - error === getimagesize($file['tmp_name'])) {
$this-error = '非法图像文件';
return $this - error;
}
if(!move_uploaded_file($file['tmp_name'], iconv('utf-8','gbk',$filename))) {
$this-error = '文件上传保存错误!';
return $this - error;
}
if($this-thumb in_array(strtolower($file['extension']),array('gif','jpg','jpeg','bmp','png'))) {
$image = getimagesize($filename);
if($this - error !== $image) {
//是图像文件生成缩略图
$thumbWidth = explode(',',$this-thumbMaxWidth);
$thumbHeight = explode(',',$this-thumbMaxHeight);
$thumbPrefix = explode(',',$this-thumbPrefix);
$thumbSuffix = explode(',',$this-thumbSuffix);
$thumbFile = explode(',',$this-thumbFile);
$thumbPath =
$this-thumbPath?$this-thumbPath:$file['savepath'];
// 生成图像缩略图
if(file_exists(dirname(__FILE__).'/Image.class.php'))
{
require_once(dirname(__FILE__).'/Image.class.php');
$realFilename = $this-autoSub?basename($file['savename']):$file['savename'];
for($i=0,$len=count($thumbWidth); $i$len; $i++) {
$thumbname = $thumbPath.$thumbPrefix[$i].substr($realFilename,0,strrpos($realFilename, '.')).$thumbSuffix[$i].'.'.$file['extension'];
Image::thumb($filename,$thumbname,'',$thumbWidth[$i],$thumbHeight[$i],true);
}
if($this-thumbRemoveOrigin) {
// 生成缩略图之后删除原图
unlink($filename);
}
}
}
}
return true;
}
/**
+----------------------------------------------------------
* 上传文件
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param string $savePath 上传文件保存路径
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function upload($savePath ='') {
if(empty($savePath)) //如果不指定保存文件名,则由系统默认
$savePath = $this-savePath;
$savePath .= date('Ym',time())."/";
if(!is_dir($savePath)) { // 检查上传目录
if(is_dir(base64_decode($savePath))) {// 检查目录是否编码后的
$savePath = base64_decode($savePath);
}else{
if(!mkdir($savePath)){ // 尝试创建目录
$this-error = '上传目录'.$savePath.'不存在';return $this - error;
}
}
}else {
if(!is_writeable($savePath)) {
$this-error = '上传目录'.$savePath.'不可写'; return $this - error;
}
}
$fileInfo = array();
$isUpload = $this - error;
// 获取上传的文件信息
// 对$_FILES数组信息处理
$files = $this-dealFiles($_FILES);
foreach($files as $key = $file) {
//过滤无效的上传
if(!empty($file['name'])) {
//登记上传文件的扩展信息
$file['key'] = $key;
$file['extension'] = $this-getExt($file['name']);
$file['savepath'] = $savePath;
$file['savename'] = $this-getSaveName($file);
// 自动检查附件
if($this-autoCheck) {
if(!$this-check($file))
return $this - error;
}
//保存上传文件
//echo "pre";print_r( $file );
if(!$this-save($file)) return $this - error;
/*
if(function_exists($this-hashType)) {
$fun = $this-hashType;
$file['hash'] = $fun(auto_charset($file['savepath'].$file['savename'],'utf-8','gbk'));
}
*/
//上传成功后保存文件信息,供其他地方调用
unset($file['tmp_name'],$file['error']);
$fileInfo[] = $file;
$isUpload = true;
}
}
if($isUpload) {
$this-uploadFileInfo = $fileInfo;
return $fileInfo;
}else {
$this-error = '没有选择上传文件';
return $this - error;
}
}
/**
+----------------------------------------------------------
* 转换上传文件数组变量为正确的方式
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param array $files 上传的文件变量
+----------------------------------------------------------
* @return array
+----------------------------------------------------------
*/
private function dealFiles($files) {
$fileArray = array();
foreach ($files as $file){
if(is_array($file['name'])) {
$keys = array_keys($file);
$count = count($file['name']);
for ($i=0; $i$count; $i++) {
foreach ($keys as $key)
$fileArray[$i][$key] = $file[$key][$i];
}
}else{
$fileArray = $files;
}
break;
}
return $fileArray;
}
/**
+----------------------------------------------------------
* 获取错误代码信息
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param string $errorNo 错误号码
+----------------------------------------------------------
* @return void
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
protected function error($errorNo)
{
switch($errorNo) {
case 1:
$this-error = '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
break;
case 2:
$this-error = '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
break;
case 3:
$this-error = '文件只有部分被上传';
break;
case 4:
$this-error = '没有文件被上传';
break;
case 6:
$this-error = '找不到临时文件夹';
break;
case 7:
$this-error = '文件写入失败';
break;
default:
$this-error = '未知上传错误!';
}
return ;
}
/**
+----------------------------------------------------------
* 根据上传文件命名规则取得保存文件名
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param string $filename 数据
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
private function getSaveName($filename)
{
$rule = $this-saveRule;
if(empty($rule)) {//没有定义命名规则,则保持文件名不变
$saveName = $filename['name'];
}else {
if(function_exists($rule)) {
//使用函数生成一个唯一文件标识号
$saveName = $rule().rand(1001,9999).".".$filename['extension'];
}else {
//使用给定的文件名作为标识号
$saveName = $rule.rand(1001,9999).".".$filename['extension'];
}
}
if($this-autoSub) {
// 使用子目录保存文件
$saveName = $this-getSubName($filename).'/'.$saveName;
}
return $saveName;
}
/**
+----------------------------------------------------------
* 获取子目录的名称
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param array $file 上传的文件信息
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
private function getSubName($file)
{
switch($this-subType) {
case 'date':
$dir = date($this-dateFormat,time());
break;
case 'hash':
default:
$name = md5($file['savename']);
$dir = '';
for($i=0;$i$this-hashLevel;$i++) {
$dir .= $name{0}.'/';
}
break;
}
if(!is_dir($file['savepath'].$dir)) {
mkdir($file['savepath'].$dir);
}
return $dir;
}
/**
+----------------------------------------------------------
* 检查上传的文件
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param array $file 文件信息
+----------------------------------------------------------
* @return boolean
+----------------------------------------------------------
*/
private function check($file) {
if($file['error']!== 0) {
//文件上传失败
//捕获错误代码
$this-error($file['error']);
return $this - error;
}
//检查文件Mime类型
if(!$this-checkType($file['type'])) {
$this-error = '上传文件MIME类型不允许!';
return $this - error;
}
//检查文件类型
if(!$this-checkExt($file['extension'])) {
$this-error ='上传文件类型不允许';
return $this - error;
}
//文件上传成功,进行自定义规则检查
//检查文件大小
if(!$this-checkSize($file['size'])) {
$this-error = '上传文件大小超出限制!';
return $this - error;
}
//检查是否合法上传
if(!$this-checkUpload($file['tmp_name'])) {
$this-error = '非法上传文件!';
return $this - error;
}
return true;
}
/**
+----------------------------------------------------------
* 检查上传的文件类型是否合法
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param string $type 数据
+----------------------------------------------------------
* @return boolean
+----------------------------------------------------------
*/
private function checkType($type)
{
if(!empty($this-allowTypes))
return in_array(strtolower($type),$this-allowTypes);
return true;
}
/**
+----------------------------------------------------------
* 检查上传的文件后缀是否合法
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param string $ext 后缀名
+----------------------------------------------------------
* @return boolean
+----------------------------------------------------------
*/
private function checkExt($ext)
{
if(!empty($this-allowExts))
return in_array(strtolower($ext),$this-allowExts,true);
return true;
}
/**
+----------------------------------------------------------
* 检查文件大小是否合法
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param integer $size 数据
+----------------------------------------------------------
* @return boolean
+----------------------------------------------------------
*/
private function checkSize($size)
{
return !($size $this-maxSize) || (-1 == $this-maxSize);
}
/**
+----------------------------------------------------------
* 检查文件是否非法提交
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param string $filename 文件名
+----------------------------------------------------------
* @return boolean
+----------------------------------------------------------
*/
private function checkUpload($filename)
{
return is_uploaded_file($filename);
}
/**
+----------------------------------------------------------
* 取得上传文件的后缀
+----------------------------------------------------------
* @access private
+----------------------------------------------------------
* @param string $filename 文件名
+----------------------------------------------------------
* @return boolean
+----------------------------------------------------------
*/
private function getExt($filename)
{
$pathinfo = pathinfo($filename);
return $pathinfo['extension'];
}
/**
+----------------------------------------------------------
* 取得上传文件的信息
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return array
+----------------------------------------------------------
*/
public function getUploadFileInfo()
{
return $this-uploadFileInfo;
}
/**
+----------------------------------------------------------
* 取得最后一次错误信息
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
public function getErrorMsg()
{
return $this-error;
}
}//类定义结束
?
可以参考:
一般是单独导入的,
在mysql上,要用mysql_import工具 把文本导入
sqlserver上可以用数据库备份工具恢复导入, 也可以使用其他数据库引擎通过ado到。
不需要源码,但是需要了解php源码所需要的库表结构。一般php源码里好多都有建立空库结构的源码。
想要部署代码,首先先把环境装好,根据你的系统,我装的是Ubuntu的,一般都是先装PHP,再装Apache,再装数据库。然后讲你的项目上传到相关的目录,然后再Apache配置里面指定目录,再重启Apache,就可以访问了
php学生管理系统源码,供大家参考,具体内容如下
功能:
1.添加/删除/修改
2.数据存储.
界面分布:
index.php
---主界面
add.php ---stu添加
action --- sql中add/del/update
(处理html表单--mysql的数据存储 && 页面跳转)
edit.php ---stu修改
menu.php
--首页
1. index.php
!DOCTYPE html
html lang="en"
head
meta charset="UTF-8"
title学生信息管理/title
script
function doDel(id) {
if(confirm('确认删除?')) {
window.location='action.php?action=delid='+id;
}
}
/script
/head
body
center
?php
include ("menu.php");
?
h3浏览学生信息/h3
table width="500" border="1"
tr
thID/th
th姓名/th
th性别/th
th年龄/th
th班级/th
th操作/th
/tr
?php
// 1. 链接数据库
try{
$pdo = new PDO("uri:mysqlPdo.ini","root","1");
}catch (PDOException $e) {
die('connection failed'.$e-getMessage());
}
//2.执行sql
$sql_select = "select * from stu";
//3.data 解析
foreach ( $pdo-query($sql_select) as $row) {
echo "tr";
echo "th{$row['id']} /th";
echo "th{$row['name']}/th";
echo "th{$row['sex']} /th";
echo "th{$row['age']} /th";
echo "th{$row['classid']}/th";
echo "td
a href='edit.php?id={$row['id']}'修改/a
a href='javascript:void(0);' onclick='doDel({$row['id']})'删除/a
/td";
echo "/tr";
}
?
/table
/center
/body
/html
2. add.php
!DOCTYPE html
html lang="en"
head
meta charset="UTF-8"
title学生管理系统/title
/head
body
center
?php include ('menu.php'); ?
h3增加学生信息/h3
form action="action.php?action=add" method="post"
table
tr
td姓名/td
tdinput type="text" name="name"/td
/tr
tr
td年龄/td
tdinput type="text" name="age"/td
/tr
tr
td性别/td
tdinput type="radio" name="sex" value="男"男/td
tdinput type="radio" name="sex" value="女"女/td
/tr
tr
td班级/td
tdinput type="text" name="classid"/td
/tr
tr
!-- td /td--
tda href="index.php"返回/td
tdinput type="submit" value="添加"/td
tdinput type="reset" value="重置"/td
/tr
/table
/form
/center
/body
/html
3. action.php
?php
/**
* Created by PhpStorm.
* User: hyh
* Date: 16-7-7
* Time: 下午9:37
*/
//1. 链接数据库
try{
$pdo = new PDO("uri:mysqlPdo.ini","root","1");
}catch (PDOException $e) {
// echo 'Connection failed: ' . $e-getMessage();
die('connection failed'.$e-getMessage());
}
//2.action 的值做对操作
switch ($_GET['action']){
case 'add'://add
$name = $_POST['name'];
$sex = $_POST['sex'];
$age = $_POST['age'];
$classid = $_POST['classid'];
$sql = "insert into stu (name, sex, age, classid) values ('{$name}', '{$sex}','{$age}','{$classid}')";
$rw = $pdo-exec($sql);
if ($rw 0){
echo "scriptalter('添加成功');/script";
}else{
echo "scriptalter('添加失败');/script";
}
header('Location: index.php');
break;
case 'del'://get
$id = $_GET['id'];
$sql = "delete from stu where id={$id}";
$rw = $pdo-exec($sql);
if ($rw 0){
echo "scriptalter('删除成功');/script";
}else{
echo "scriptalter('删除失败');/script";
}
header('Location: index.php');
break;
case 'edit'://post
$id = $_POST['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$classid = $_POST['classid'];
$sex = $_POST['sex'];
// echo $id, $age, $age, $name;
$sql = "update stu set name='{$name}', age={$age},sex='{$sex}',classid={$classid} where id={$id};";
// $sql = "update myapp.stu set name='jike',sex='女', age=24,classid=44 where id=17";
print $sql;
$rw = $pdo-exec($sql);
if ($rw 0){
echo "scriptalter('更新成功');/script";
}else{
echo "scriptalter('更新失败');/script";
}
header('Location: index.php');
break;
default:
header('Location: index.php');
break;
}
4.edit.php
!DOCTYPE html
html lang="en"
head
meta charset="UTF-8"
title学生管理系统/title
/head
body
center
?php include ('menu.php');
//1. 链接数据库
try{
$pdo = new PDO("uri:mysqlPdo.ini","root","1");
}catch (PDOException $e) {
die('connection failed'.$e-getMessage());
}
//2.执行sql
$sql_select = "select * from stu where id={$_GET['id']}";
$stmt = $pdo-query($sql_select);
if ($stmt-rowCount() 0) {
$stu = $stmt-fetch(PDO::FETCH_ASSOC); // 解析数据
}else{
die("no have this id:{$_GET['id']}");
}
?
h3修改学生信息/h3
form action="action.php?action=edit" method="post"
input type="hidden" name="id" value="?php echo $stu['id'];?"
table
tr
td姓名/td
tdinput type="text" name="name" value="?php echo $stu['name'];?"/td
/tr
tr
td年龄/td
tdinput type="text" name="age" value="?php echo $stu['age'];?"/td
/tr
tr
td性别/td
td
input type="radio" name="sex" value="男" ?php echo ($stu['sex'] == "男")? "checked":"";? 男
/td
td
input type="radio" name="sex" value="女" ?php echo ($stu['sex'] == "女")? "checked":"";? 女
/td
/tr
tr
td班级/td
tdinput type="text" name="classid" value="?php echo $stu['classid']?"/td
/tr
tr
td /td
tdinput type="submit" value="更新"/td
tdinput type="reset" value="重置"/td
/tr
/table
/form
/center
?php
?
/body
/html
5. menu.php
!DOCTYPE html
html lang="en"
body
h2学生管理系统/h2
a href="index.php" 浏览学生/a
a href="add.php" 添加学生/a
hr
/body
/html
推荐easyphp(如果你用的是windows的话),直接把你的php文件拖到easyphp下的www文件夹下就ok了(如果需要可能会设置下数据库配置文件之类的)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流