php怎么下载

公司在文件存储共享、协同办公效率低?教你5分钟搭建私有云

搭建nextCloud私有云,实现共享存储网盘、在线文档协同办公

大家在团队中需分享个软件和文件,还在用这样的方式:U盘拷贝?局域网共享?邮件或聊天软件发送?这样不仅效率低,而且容易造成数据泄漏。对于小型创业团队来说,商业的协同办公解决方案,咱们又伤不起。那我们来看下nextCloud有什么强大的之处,它是一款私有云存储的完全开源免费的解决方案,不仅可以当个人和团队的文件存储网盘使用,还支持协同办公、webdav、文件同步、多终端客户端使用。现在的硬件成本都不高了,有一般的主机或NAS设备就可以把它部署在局域网,速度杠杆的。

那我们看下怎么搭建,先准备好需要的环境。Nextcloud的核心是基于linux的,用的是php+mysql,所以需准备这些和web服务(可以是apache或nginx)。作者下面演示的是在公有云服务器上安装的,linux系统和软件版本也可以按自己的不要太低就行。

准备好环境后,我们进到nextcloud官网,点击Get Nextcloud或下面的download for server

进去后我们看下官方提供了下载压缩包或一键安装脚本:

这里我们点Web Installer先用脚本安装演示

我把脚本直接下载到服务器上,在上面红色箭头here处,右键复制链接。然后在服务器执行 wget 下载:

下载好后,我们在服务器上建一个站点,并把这个php文件放进去,web站点指向它并在浏览器访问就提示操作就可以了。我们进到nginx配置文件目录,新建一个虚拟主机的配置文件vim nextcloud.conf 内容如下:

记得建好站点目录和放置安装脚本php文件 mkdir –p /data/www/nextcloud,目录还需要web应用有写入权限 chown –R apache:apache /data/www/nextcloud (作者是以apache用户启的web服务)

重启nginx服务或重载nginx配置文件 执行 nginx –s reload 一切就绪后在浏览器访问安装脚本:

出现了安装向导,点next会检测环境依赖和下载项目源码。

出现上面截图说明所有依赖都通过了,输入英文点号继续next,注意这一步需要下载源码压缩包,时间根据网络情况稍有不同,也有可能出现504超时情况。如果网络不稳定,建议采取下面第二种方式先下载好放在本地来配置。

如果出现504超时,可以在nginx和php配置文件上把超时时间加长一些,弄好后再改回来即可。

php.ini的max_execution_time 默认是30,也需改下

一般情况没问题,按提示操作配置一下登录用户和数据库就来安装成功。因为作者在阿里买的云服务器带宽比较小,下载比较慢就不进行下一步演示了。

我们再来看第二种手动下载安装方式。我这里直接用wget下载到服务器

下载后解压 unzip nextcloud-19.0.1.zip (linux系统默认是没有安装zip程序的,没有要安装一下yum install -y zip unzip)把解压的文件夹重命名nextcloud2,并放到web目录 /data/www下面。记得用户组及权限:chown –R apache:apache /data/www/nextcloud2/

新建一个虚拟主机nextcloud2.conf,编辑配置文件内容如下:

虚拟主机配置好后,记得重启web服务或重载配置文件。执行命令Nginx -s reload。

好了,浏览器访问我们配置好的域名或IP:

这一步要求我们配置管理员登录用户密码和数据库,按自己的实际情况配置就好。完了点安装完成就好了。是不是很简单,so easy! 哈哈,还有一个坑,发现安装好后出现404页面,不要慌,那是刚我们没有配置伪静态,项目是用了伪静态访问的。Apache 服务器相对比较简单,按官方说的启用mod_rewrite等就行。

我们现在用的是nginx 服务器找到这个页面把伪静态加上去就好了。

上面介绍的用了ssl证书,我们局域网用就没必要了,所以我精简了一些配置贴出来供参考:

location / {

rewrite ^ /index.php;

}

location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {

deny all;

}

location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {

deny all;

}

location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) {

fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;

set $path_info $fastcgi_path_info;

try_files $fastcgi_script_name =404;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param PATH_INFO $path_info;

# Avoid sending the security headers twice

fastcgi_param modHeadersAvailable true;

# Enable pretty urls

fastcgi_param front_controller_active true;

fastcgi_pass 127.0.0.1:9000;

root /data/www/nextcloud2;

fastcgi_intercept_errors on;

fastcgi_request_buffering off;

}

location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {

try_files $uri/ =404;

index index.php;

}

# Adding the cache control header for js, css and map files

# Make sure it is BELOW the PHP block

location ~ \.(?:css|js|woff2?|svg|gif|map)$ {

try_files $uri /index.php$request_uri;

add_header Cache-Control "public, max-age=15778463";

# Add headers to serve security related headers (It is intended to

# have those duplicated to the ones above)

# Before enabling Strict-Transport-Security headers please read into

# this topic first.

#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;

#

# WARNING: Only add the preload option once you read about

# the consequences in https://hstspreload.org/. This option

# will add the domain to a hardcoded list that is shipped

# in all major browsers and getting removed from this list

# could take several months.

add_header Referrer-Policy "no-referrer" always;

add_header X-Content-Type-Options "nosniff" always;

add_header X-Download-Options "noopen" always;

add_header X-Frame-Options "SAMEORIGIN" always;

add_header X-Permitted-Cross-Domain-Policies "none" always;

add_header X-Robots-Tag "none" always;

add_header X-XSS-Protection "1; mode=block" always;

# Optional: Don't log access to assets

access_log off;

}

location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {

try_files $uri /index.php$request_uri;

# Optional: Don't log access to other assets

access_log off;

}

现在再访问试试,咦,可以了!

至此服务端就安装配置完成,试了上传下载、在线文件预览功能超爽,office文档预览在应用里面下载启用一下onlyoffice即可。里面还有很多应用可以开启如markdown、MindMap思维导图等。接下来就可以下载windows客户端或手机移动端体验网盘和协同办公了。

展开
收起

Kotlin 1.2和PHP 7.2扎堆发新(附源码下载)

【IT168资讯】自从Kotlin获得了Android的官方支持,就备受关注。JetBrains称Kotlin 1.2是其的主要版本,开发人员可以在JVM和JS之间重用代码。该发布声明指出,现在可以编写一次应用程序的业务逻辑,同时重用于前后端和Android移动应用程序,支持多平台项目。目前我们发现IntelliJ IDEA 2017.3已经绑定了Kotlin 1.2,如果是使用Android Studio或更旧版本的IntelliJ IDEA可以获取更新。

JetBrains表示,与Kotlin 1.1相比,Kotlin1.2提供25%的性能提升,在1.2.x更新中,性能将进一步提高。

▲图片来自JetBrains

当然,目前Kotlin正在语言和标准库方面还在做一些改进,例如通过一个更加简洁的语法将多个参数传递给注释。有关Kotlin1.2的更多详细信息可以查看:https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-2-released/

PHP 7.2发新

作为PHP 7系列的第二个特性更新,PHP 7.2.0不负众望带有许多改进和功能。大家可以在下面这个地址下载源码:http://php.net/releases/7_2_0.php

根据发行说明,主要改进和新功能包括转换对象/数组转换中的数字键,对象类型提示,计数不可数对象以及将HasContext作为对象。

PHP 7.2也将TLS常量改进为理智的值。Mycrypt扩展已被删除,添加了新的sodium extension 。

展开
收起

PHP7.1.1和7.0.15正式发布:源码下载

1月19日消息 作为全球最流行的编程语言之一,PHP语言目前服务于全球超过81.7%的网站,今日,PHP 7的更新版PHP 7.1.1和7.0.15已正式发布,有需要的IT之家网友可以在此下载。IT之家

PHP 7.1 (7.1.1)

下载源代码[26.15MB]

VC14 x86 Non Thread Safe (2017-Jan-18 21:06:18)

Zip[21.25MB]

sha1: 0617423638b708c0bc2187b82d5d02757a5bbc80

Debug Pack[20.65MB]

sha1: a26857db59b3fea82a1b693d0ea2162eb309cbfb

VC14 x86 Thread Safe (2017-Jan-18 21:06:49)

Zip[21.29MB]

sha1: 5f80a93f4fcdc3caa2faae182e39a0b69be3397f

Debug Pack[20.68MB]

sha1: 7ae69a1608a732282f2bd833983327d49449f3d2

VC14 x64 Non Thread Safe (2017-Jan-18 21:06:20)

Zip[23.21MB]

sha1: aede63d1123d3a586fad1b669a0e52cc8bba5e4b

Debug Pack[20.76MB]

sha1: 4c7f5191b88edfeb98b67ea413deca8c14be2b68

VC14 x64 Thread Safe (2017-Jan-18 21:06:35)

Zip[23.28MB]

sha1: 84aefb5b1f4148a1895e8ae88726279a57850629

Debug Pack[20.74MB]

sha1: b0111a94fb646bcef1f149bbfa3e8e735895d7f6

PHP 7.0 (7.0.15)

下载源代码[25.5MB]

VC14 x86 Non Thread Safe (2017-Jan-18 00:32:27)

Zip[21.11MB]

sha1: 59f936916e365f70fbeb9c106db1355cee9c0e14

Debug Pack[20.12MB]

sha1: 3ae9b4a2ac20be8f58db638e61ca9f1ece07ef75

VC14 x86 Thread Safe (2017-Jan-18 00:32:27)

Zip[21.17MB]

sha1: 120b7f2bbd153c7bafccf3381f63f8190bdea992

Debug Pack[20.22MB]

sha1: 28a7d49556b92bef809e58dcb076c6b2270051de

VC14 x64 Non Thread Safe (2017-Jan-18 00:32:26)

Zip[23.05MB]

sha1: 320d247d5087f5129082a47215578b9b047ae959

Debug Pack[20.22MB]

sha1: 162e1b0669ea3989b89986169456963cfdf7097e

VC14 x64 Thread Safe (2017-Jan-18 00:32:28)

Zip[23.14MB]

sha1: d49f5fb61edba9a7d53d469f11d7ec13f1207d86

Debug Pack[20.26MB]

sha1: 36d12a89b90accedfcbf24ca3b528ba7c2d64a6c

展开
收起

PHP情人节自动生成表白小程序下载

浪漫七夕 为爱绽放 表白神器为你助力!程序男也可以很浪漫!

今天站主把这款程序分享出来,如果你需要,可以拿去使用。程序中图片和文字都可进行替换编辑,还自带背景音乐(谷歌浏览器无法放出音乐)

程序运行原理:给页面文字添加span标签,设置id="text-xx"唯一属性,使用contenteditable="true",开启该元素的编辑模式,用jQuery属性.click()判断点击,用.text()返回此元素的文本内容,并用正则进行判断内容是否合法,然后通过AJAX POST给php处理,php对传入的参数进行过滤,然后读取模版文件,替换模版文件对应内容,保存为新文件并记录操作,最后返回数据给前端,前端处理数据并更新页面。

使用说明:上传解压后的文件夹love到网站根目录,通过 http://你的域名/love/ 进行访问

展开
收起

下载一个公司网站模板,后台是php好还是asp好?

要建立一个公司网站,虽然说可以下载网站模板来建站,但是很多小白用户对网站模板的后台不是很了解,主要是后台源码,目前网站模板的后台源码有:php、asp、asp.net、java等,目前国内这几个是主流的后台源码,但是使用的比较多的还是php和asp类型的,那对于建一个公司网站来说,是要下载php源码类的模板好还是asp类源码好呢?

技术性的分析就不一一介绍了。

下面海站格根据多年的模板建站经验按照下面3个基本要素给大家分析下php源码和asp源码区别?

一:运行速度

ASP:ASP是建立在COM体系结构之上的。当用VBScript写ASP脚本时,实际上实在使用COM的对象,当向用户浏览器发送信息时,它用的是Response对象的write方法,当它访问数据库和文件系统的时候,它用的是其他的COM对象。这些COM对象的使用使运行速度下降。

PHP:在PHP代码中,所有的工作都运行在PHP的内存空间中,也就是说PHP不是基于COM对象的,所以的他的运行速度会快一些;

所以哪个运行速度要快一些,相信大家肯定会选择php!

php源码

二:对主机要求

ASP由于其语言结构,所以asp的网站模板对ASP主机的服务器资源比PHP主机的服务器占用更高;

但是相同配置的php环境的稳定性更好,对内存消耗更少速度更快,而且asp主机的价格也是高于php主机的,所以从对主机要求可以认为php主机更加的稳定价格也更低!

三:网站维护

Asp语言网站目前占有的市场已经不能和php网站相提并论,由于网站优化的要求,php语言所搭建的网站基本上都能符合网站优化要求,并且由于php主机可以伪静态化网站,即使有动态网站路径产生,也可以伪静态化,而对于asp网站这些是做不到的。

并且由于php系统的网站大多数是开源的系统,具有很多函数库,资源丰富,并且后期的网站迁移,数据库同步,在线压缩等对于相同大小的网站php系统的网站所需时间更少。而asp文件所需时间更长。

从上面基本的3个方面分析,相信大家对于建一个公司网站来说选择哪种语言的模板有更清楚的放向吧!

目前建立一个网站大多数用的还是php源码的网站比较多,因为php所要求的网站搭建环境是php+mysql,而这类环境的主机相当多,而符合asp网站所需的环境ASP+access的主机已经不多,即使有价格也是比php的高。

所以很容易得出一个答案:建立公司网站用php源码的网站模板比较好!

展开
收起

PHP技巧之操作FTP类包括 {上传、下载、移动、创建等}

1.使用PHP操作FTP-用法<?php // 联接FTP服务器 $conn = ftp_connect(ftp.server.com); // 使用username和password登录 ftp_login($conn, “john”, “doe”); // 获取远端系统类型 ftp_systype($conn); // 列示文件 $filelist = ftp_nlist($conn, “.”); // 下载文件 ftp_get($conn, “data.zip”, “data.zip”, FTP_BINARY); // 关闭联接 ftp_quit($conn); //初结化一个FTP联接,PHP提供了ftp_connect()这个函数,它使用主机名称和端口作为参数。在上面的例子里,主机名字为 “ftp.server.com”;如果端口没指定,PHP将会使用“21”作为缺省端口来建立联接。 //联接成功后ftp_connect()传回一个handle句柄;这个handle将被以后使用的FTP函数使用。 $conn = ftp_connect(ftp.server.com); //一旦建立联接,使用ftp_login()发送一个用户名称和用户密码。你可以看到,这个函数ftp_login()使用了 ftp_connect()函数传来的handle,以确定用户名和密码能被提交到正确的服务器。 ftp_login($conn, “john”, “doe”); // close connection ftp_quit($conn); //登录了FTP服务器,PHP提供了一些函数,它们能获取一些关于系统和文件以及目录的信息。 ftp_pwd() //获取当前所在的目录 $here = ftp_pwd($conn); //获取服务器端系统信息ftp_systype() $server_os = ftp_systype($conn); //被动模式(PASV)的开关,打开或关闭PASV(1表示开) ftp_pasv($conn, 1); //进入目录中用ftp_chdir()函数,它接受一个目录名作为参数。 ftp_chdir($conn, “public_html”); //回到所在的目录父目录用ftp_cdup()实现 ftp_cdup($conn); //建立或移动一个目录,这要使用ftp_mkdir()和ftp_rmdir()函数;注意:ftp_mkdir()建立成功的话,就会返回新建立的目录名。 ftp_mkdir($conn, “test”); ftp_rmdir($conn, “test”); //上传文件,ftp_put()函数能很好的胜任,它需要你指定一个本地文件名,上传后的文件名以及传输的类型。比方说:如果你想上传 “abc.txt”这个文件,上传后命名为“xyz.txt”,命令应该是这样: ftp_put($conn, “xyz.txt”, “abc.txt”, FTP_ASCII); //下载文件:PHP所提供的函数是ftp_get(),它也需要一个服务器上文件名,下载后的文件名,以及传输类型作为参数,例如:服务器端文件为his.zip,你想下载至本地机,并命名为hers.zip,命令如下: ftp_get($conn, “hers.zip”, “his.zip”, FTP_BINARY); //PHP提供两种方法:一种是简单列示文件名和目录,另一种就是详细的列示文件的大小,权限,创立时间等信息。 //第一种使用ftp_nlist()函数,第二种用ftp_rawlist().两种函数都需要一个目录名做为参数,都返回目录列做为一个数组,数组的每一个元素相当于列表的一行。 $filelist = ftp_nlist($conn, “.”); //函数ftp_size(),它返回你所指定的文件的大小,使用BITES作为单位。要指出的是,如果它返回的是 “-1”的话,意味着这是一个目录 $filelist = ftp_size($conn, “data.zip”); ?> 2. FTP上传类 (ftp.php)<?php /******************************************** * MODULE:FTP类 *******************************************/ class ftp { public $off; // 返回操作状态(成功/失败) public $conn_id; // FTP连接 /** * 方法:FTP连接 * @FTP_HOST -- FTP主机 * @FTP_PORT -- 端口 * @FTP_USER -- 用户名 * @FTP_PASS -- 密码 */ function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS) { $this->conn_id = @ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP服务器连接失败"); @ftp_login($this->conn_id,$FTP_USER,$FTP_PASS) or die("FTP服务器登陆失败"); @ftp_pasv($this->conn_id,1); // 打开被动模拟 } /** * 方法:上传文件 * @path -- 本地路径 * @newpath -- 上传路径 * @type -- 若目标目录不存在则新建 */ function up_file($path,$newpath,$type=true) { if($type) $this->dir_mkdirs($newpath); $this->off = @ftp_put($this->conn_id,$newpath,$path,FTP_BINARY); if(!$this->off) echo "文件上传失败,请检查权限及路径是否正确!"; } /** * 方法:移动文件 * @path -- 原路径 * @newpath -- 新路径 * @type -- 若目标目录不存在则新建 */ function move_file($path,$newpath,$type=true) { if($type) $this->dir_mkdirs($newpath); $this->off = @ftp_rename($this->conn_id,$path,$newpath); if(!$this->off) echo "文件移动失败,请检查权限及原路径是否正确!"; } /** * 方法:复制文件 * 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径 * @path -- 原路径 * @newpath -- 新路径 * @type -- 若目标目录不存在则新建 */ function copy_file($path,$newpath,$type=true) { $downpath = "c:/tmp.dat"; $this->off = @ftp_get($this->conn_id,$downpath,$path,FTP_BINARY);// 下载 if(!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!"; $this->up_file($downpath,$newpath,$type); } /** * 方法:删除文件 * @path -- 路径 */ function del_file($path) { $this->off = @ftp_delete($this->conn_id,$path); if(!$this->off) echo "文件删除失败,请检查权限及路径是否正确!"; } /** * 方法:生成目录 * @path -- 路径 */ function dir_mkdirs($path) { $path_arr = explode('/',$path); // 取目录数组 $file_name = array_pop($path_arr); // 弹出文件名 $path_p = count($path_arr); // 取层数 foreach($path_arr as $val) // 创建目录 { if(@ftp_chdir($this->conn_id,$val) == FALSE) { $tmp = @ftp_mkdir($this->conn_id,$val); if($tmp == FALSE) { echo "目录创建失败,请检查权限及路径是否正确!"; exit; } @ftp_chdir($this->conn_id,$val); } } for($i=1;$i<=$path_p;$i++) // 回退到根 { @ftp_cdup($this->conn_id); } } /** * 方法:关闭FTP连接 */ function close() { @ftp_close($this->conn_id); } } // class class_ftp end /************************************** 测试 *********************************** $ftp = new ftp('222.13.67.42',21,'hlj','123456'); // 打开FTP连接 $ftp->up_file('aa.wav','test/13548957217/bb.wav'); // 上传文件 //$ftp->move_file('aaa/aaa.php','aaa.php'); // 移动文件 //$ftp->copy_file('aaa.php','aaa/aaa.php'); // 复制文件 //$ftp->del_file('aaa.php'); // 删除文件 $ftp->close(); // 关闭FTP连接 //******************************************************************************/ 3. PHP用FTP函数创建目录<?php // create directory through FTP connection function FtpMkdir($path, $newDir) { $server='ftp.yourserver.com'; // ftp server $connection = ftp_connect($server); // connection // login to ftp server $user = "me"; $pass = "password"; $result = ftp_login($connection, $user, $pass); // check if connection was made if ((!$connection) || (!$result)) { return false; exit(); } else { ftp_chdir($connection, $path); // go to destination dir if(ftp_mkdir($connection,$newDir)) { // create directory return $newDir; } else { return false; } ftp_close($conn_id); // close connection } } ?>

展开
收起

3分钟短文|PHP下载小小的网络资源文件,用啥办法最快?

引言

在程序内下载资源文件,这本身就是一个充满了不确定因素的事情。可能会因为网络超时连接中断,或者程序故障抛出各种异常,在实际中我们一般要避免在程序流程中下载文件。

如果是实在无法避免,用什么办法比较高效呢?或者说比较轻量级呢?本文就来说一说。

学习时间

最直接的办法就是使用内置函数 file_get_contents。参数形式如下:

int file_put_contents( string $filename, mixed $data[, int $flags = 0[, resource $context]] )

这个函数设计的很巧妙,兼容了很多场景下的使用。我们只需要按照相应的参数填入,就可以组装出各种各样的功能。

如果是下载资源,那么会分为两步。第一,把远程资源拿到本地。第二,把该资源写入本地文件。使用代码实现如下:

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

其中在位置参数 $data 的位置,传入了一个fopen生成的文件句柄。

根据函数手册上所说,如果$data 指定的是流,则该流的缓冲区将被复制到指定的文件。对标的函数是 stream_copy_to_stream。那样写起来就得是这样的:

是不是没有file_put_contents精简。难怪很多敲代码的老司机,习惯于使用这一个函数进行网络请求呢!

文件操作

纯粹使用文件操作,也没有问题,使用PHP提供的 fopen fclose fwrite fread 等函数,完全可以胜任。我们将其封装为一个助手函数:

因为不能确定原始文件的长度,在读写的时候,需要注意缓存区的大小,分块读入和写入。其中参数 1024 * 8,指定每次读写 8K 字节。使用 feof 判断文件是否到尾部。

网络请求

既然是网络资源文件,使用上面的函数,无非都要发起 HTTP 请求。既然是网络请求,何不把这个功能交给 cURL 呢?这样对于请求头,请求体,响应体等等全程 HTTP 环节,都可以在程序内操作,容错性肯定不差。

下面我们使用 cURL 库进行文件请求操作:

如果是小小的资源文件,下载起来不费时间,也不会阻碍接下来的流程。如果是超大文件,费时间,而且还可能中断,有没有断点续传?有没有自动压缩?这都是问题。

所以,使用网络请求下载大文件,这已经超出了 PHP 内置函数的范畴。我们需要功能更为强大的下载器,多资源,多线程,断线续传,自动重试。

写在最后

本文通过3中方法对比了实现小文件下载的功能,各有优劣,根据不同的场景需要开发者做出适当的选择。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

展开
收起

php开源网校源码,有免费的可以下载么?

最近在网上经常看到有人在搜php开源网校源码,有免费的可以下载么?也难怪,毕竟现在是个网校盛行的时代,而你想要做网校,那么就少不了php开源网校源码,今天大黄蜂云课堂就来给大家说说php开源网校源码相关分享。

一.php开源网校源码

其实关于php开源网校源码这方面,如果你是想找免费的,我觉得大可不必再找了,因为天上是不会掉馅饼的,你觉得真的有哪个程序猿无聊到做个php开源网校源码丢到网上?然后分文不取么?人总要吃饭的,没有任何利益是不会有人做的,那些所谓的php开源网校源码免费下载,其实就是商家的一点营销套路而已,把一些阉割版(大部分功能都用不了)的php开源网校源码丢上网上,用来吸引人,当你下载了,想用的时候却会发现很多功能都用不了,只能用一些最基础的功能,想要用也可以,直接找他们商家交钱买个正版的,完全是不存在免费这个说法的。就算是有,给你找到了,你以为不会有病毒?你敢用?就像我上面说的无利可图,谁会费时费力去做事,你要知道一个php开源网校源码,市场上的价格可是几万块不等。

 二.php开源网校源码的价格

php开源网校源码的价格是多少?其实每家的php开源网校源码的价格都是不一样的,最低的一万多的也有,最高的几十万也有,主要看功能,如果你只是要最基础的教学功能,那么可能价格很便宜,一切的费用基于你的需求。如果你是小企业小公司,那么其实是不建议你直接购买php开源网校源码的,你可以选择租用网校系统,按年收费,一年只需要几千块钱,而且还有团队专门帮你维护,你只需要专心教学就可以,如果你是卖的网校源码,那么费钱不说,而且因为是买断的,基本是不会有团队帮你维护的,你还需要请几个人维护,成本方面还是比较高的。

以上就是大黄蜂云课堂对于php开源网校源码的一些相关看法,希望以上的观点对大家有帮助。最后再提醒大家一句,切莫贪小便宜,要记住无利可图的事情是绝对不会有人做的,如果真的有人做了,那么肯定存在着猫腻。

展开
收起

php函数-强制下载指定文件

forceDownload("robots.txt");

function forceDownload($filename) {

if (false == file_exists($filename)) {

return false;

}

// http headers

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

header('Content-Disposition: attachment; filename="' . basename($filename) .'"');

header('Content-length: ' . filesize($filename));

// for IE6

if (false === strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) {

header('Cache-Control: no-cache, must-revalidate');

}

header('Pragma: no-cache');

// read file content and output

return readfile($filename);;

}

展开
收起

PHP-文件上传和下载「程序员培养之路第三十八天」

第一节 上传设置

客户端设置

form:method=post、enctype="multipart/form-data"

input:type=file

<form action="upload.php" method="post" enctype = "multipart/form-data"><input type="file" name="fname"> <!--MAX_FILE_SIZE有兼容问题--> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <button type="submit">提交</button></form>

服务端设置

在php.ini中进行设置:

默认uploadmaxfilesize = 2M,如果你想上传超过8M的文件,比如:20M,你在设定uploadmaxfilesize = 20M的同时,还要修改postmaxsize选项(默认为8M)。否则post数据超出限制,$_FILES将会为空(报错)。

$_FILES数组

$_FILES超全局数组中,包含着从客户端提交文件的全部信息:

array (size=1)'fname' => //上传文件表单项的name array (size=5) 'name' => string 'home.html' (length=21) //上传文件的名称 'type' => string 'text/html' (length=9) //文件类型(常见文件都可以上传) 'tmp_name' => string 'C:\wamp\tmp\php57A2.tmp' (length=23) //上传文件的临时文件名 'error' => int 0 //上传文件遇到的错误号 'size' => int 28131 //上传文件的大小

上传步骤

var_dump($_FILES);$file=$_FILES["fname"];

获取$_FILES文件 临时文件

$tmp_file=$file["tmp_name"];

获取后缀名

$ext=pathinfo($file["name"],PATHINFO_EXTENSION);//后缀名

创建新文件名

$new_file="file".rand(1,1000000).".".$ext;

保存路径

$path="./files";

格式化路径

$path=rtrim($path,'/')."/";

拼接上传目录

$new_file=$path.$new_file;

临时文件转换成正式文件

move_uploaded_file($tmp_file,$new_file);

PHP

第二节 下载设置

浏览器对于可识别的文件格式(html、txt、png、jpg等),默认是直接打开的,对于无法识别的文件,才作为附件来下载。为了可以让可识别的文件也直接可以下载,需要进行如下设置:

<a title="点击下载" href="down.php?name=01.jpg&type=image/jpeg"><img src="01.jpg"></a>

1. 读取文件

$fliename=$_GET["name"];$filetype=$_GET["type"];

2. 文件的描述信息 Content-Disposition(内容配置)指定为attachment(附件)(必须)

header("Content-Disposition:attachment;filename={$filename}");

3. 指定被下载文件的类型(非必须)

header("Content-Type:{$filetype}");

4. 指定被下载文件大小(非必须)

header("Content-Length:".filesize($filename));

5. 将内容读入内存缓冲区

readfile($filename);

注意:在 readfile($filename) 之前,不能有任何输出语句(错误信息、var_dump调试语句,echo输出等),否则下载的文件会出错。

PHP-文件处理系统「程序员培养之路第三十七天」

PHP-错误日志处理「程序员培养之路第三十六天」

PHP-日期时间操作函数「程序员培养之路第三十五天」

展开
收起