CKEditor整合ckfinder实现图片上传

 更新时间:2016年11月25日 16:22  点击:1991
搞了半天终于把CKEditor搞了个明明白白,配合ckfinder实现了图片的上传,具体步骤给需要的同志们。 1、建立项目ckeditor,将ckeditor和ckfinder解压缩放到项目下

两个东东的下载地址分别为:

ckeditor:  http://ckeditor.com/download/

ckfinder:  http://ckfinder.com/download

项目目录结构为:

  ckeditor

      ---ckeditor

      --ckfinder

      --test.php 用来测试的PHP文件

2、找到ckfinder目录下的config.php文件打开

  1)定位到CheckAuthentication方法,默认此方法只有返回值false,这样是不允许上传文件到服务器的,需要将其进行修改,函数内已经用英文注明,不建议直接改为false,因为那样会不安全,什么都会上传了,所以用session来处理一下,就成了下面的样子

 代码如下 复制代码

session_start();

function CheckAuthentication()

    if(isset($_SESSION['UseEditor']))//这个随便命名就可以了

    return true;

    else

    return false;

}

2) 配置上传文件位置,

默认ckfinder会把上传文件放到根目录下的ckfinder/userfiles/images文件夹下,我们可以修改成自己的项目目录下,在项目下建立upfiles文件夹,在config.php中找到baseUrl并且修改为:

 代码如下 复制代码

$baseUrl = '/ckeditor/upfiles/';

 这样上传文件会保存到upfiles下的images文件夹。当然,你也可以根据需要设置不同的上传文件夹,至于怎么传值给他以判断上传文件夹,当然是通过session了。

3、修改上传文件名,默认系统以原有名字命名,所以我们重新命名文件。方法为:打开ckfindercoreconnectorphpphp5CommandHandler下FileUpload.php文件

     找到    $sUnsafeFileName  后面加上重命名代码,如下:

 代码如下 复制代码

$sUnsafeFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(CKFinder_Connector_Utils_Misc::mbBasename($uploadedFile['name']));

//先获取原文件后缀

$sExtension=CKFinder_Connector_Utils_FileSystem::getExtension($sUnsafeFileName);

//重新命名文件

$sUnsafeFileName=date('YmdHis').'.'.$sExtension;

 

4、最后在test.php中使用ckfinder,代码如下:

 代码如下 复制代码

session_start();

$_SESSION[‘UseEditor’]=’ok’;//一定别忘记这个哦,否则没法上传

include_once('ckeditor/ckeditor.php');

   include_once('ckfinder/ckfinder.php');

   $fc = new CKEditor();

   CKFinder::SetupCKEditor($fc,'./ckfinder/');

$fc->editor("content", "<p>Initial value.</p>");

本文章总结了两个常用的手机归属地查询程序,一种是利用api调用第三方接口实现,一种是利用我们自己的手机数据库查询然后再判断手机号归属地查询.

先来看一个调用第三方法网站的一个程序

主要使用curl实现,需要开启php对curl的支持.

如果你是windows系统在你的的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了,如下所示:
//取消下在的注释

extension=php_curl.dll

如果您是在Linux下面,那么,您需要重新编译您的PHP了,编辑时,您需要打开编译参数,在configure命令上加上“–with-curl”参数。

然后重启apache

 代码如下 复制代码

<?php
header("Content-Type:text/html;charset=utf-8");
if (isset($_GET['number'])) {
$url = 'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo';
$number = $_GET['number'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "mobileCode={$number}&userId=");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
$data = simplexml_load_string($data);
if (strpos($data, 'http://')) {
echo '手机号码格式错误!';
} else {
echo $data;
}
}
?>
<form action="mobile.php" method="get">
手机号码: <input type="text" name="number" /> <input type="submit" value="提交" />
</form>

实例二
这个实例利用了手机数据库,把文件保存在本地然后查找数据库再来差别,但是你得经常更新数据库才行哦。

 代码如下 复制代码

<html>
<head>
<title>手机号码归属地查询</title>
</head>
<style type="text/css">
 #main{
 height:100%;
 }
 #left {
 float:left;
 height:100%;
 width:10%;
 float:left;
 }
 #right{
 float:left;
 height:100%;
 width:100$;
 }
</style>
<body>
<?php
require ('function.php');
$pwd="xiaolin"; //密码,请修改
if (!isset($_GET["action"]) ){
header("Location:manage.php?action=login");

}
if ($_GET["action"]=="login"){

?>
<form action="manage.php?action=loginin" method="POST">
<p>请输入密码:</p>
<p><input type="password" value="" name="pwd"></p>
<p><input type="submit" value="登录"></p>
</form> 
<?php
}elseif ($_GET["action"]=="loginin"){
 $repwd=$_POST["pwd"];
 if ($repwd != $pwd){
 echo "Sorry,密码错误~!";
 }else {
 $_SESSION["flag"]=true;
 leftnav();
 }
 
}elseif ($_GET["action"]== "info" ){
 leftnav();
 getinfo();
?>
</div>
 </div> 
<?php
}elseif ($_GET["action"]=="edit"){
leftnav();
?>
<form action="manage.php?action=editp" method="POST">
<p>手机号码:<input type="text" name="num">(至少7位)</p>
<p>详细资料:<input type="text" name="info"></p>
<input type="submit" value="更新">
</form> 
 
<?php
 
}elseif ($_GET["action"]== "loginout"){
 if (isset($_SESSION["flag"])){
 unset($_SESSION["flag"]);
 session_destroy();
 }
 echo "<p><a>登出</a></p><p><a href='manage.php'>返回</a></p>";


}elseif ($_GET["action"]=="editp"){
 leftnav();
 $num=$_POST["num"];
 $info=$_POST['info'];
 if (!empty($num) && !empty($info) && strlen($num)>=7 ){
 update($num,$info);
 }else{
 die ("不得为空!");
 }
}elseif ("about"==$_GET["action"]){
 leftnav();
 showabout();
 }
?>
</body>
</html>

index.php

<html>
<head>
<title>手机号码归属地查询</title>
</head>
<body>
<form action="index.php?action=search" method="POST">
<p>请输入你要查询的手机号码:<input type="text" name="phone"></p>
<p><input type="submit" value="查询手机号码归属地"></p></p>
</form>
<?php
if (isset($_GET["action"])){
if ("search"==$_GET["action"] ){
require ('function.php');
$phone=(isset($_POST["phone"]))?$_POST["phone"]:die ("请返回");
echo "你查询的手机号码<font color=red>".$phone."</font>属于<font color=red>".getphone($phone)."</font>";

}
?>
</body>
</html>

function.php函数

<?php

session_start();
   
function update($num,$info){
 $dbpath="xiaolin/";
 $len=strlen($num);
 if ( $len < 7 ){
 return "手机号码最低7位哦";
 }
 $par="[0-9]";
 for ($i=0;$i<$len;$i++){
  if(!ereg($par,substr($num,$i,1) ) ){
  return "手机号码只能为数字";
  }
 }
 $sunum=scandir($dbpath); //得到支持的手机号码前缀
  array_splice($sunum,0,1); //把当前目录取消
  array_splice($sunum,0,1); //把上一级目录去掉
 $sub=substr($num,0,3); //取得该号码的前三位
 if (in_array($sub,$sunum) ){
   $num1=ltrim(substr($num,3,4),"0");
  $search=file($dbpath.$sub);
  $tmp=$search[$num1];
  $search[$num1]=$num1.'='.$info."n";
  $fp1=fopen($dbpath.$sub.'1','wb+');
for ($i=0;$i<10000;$i++){
 //$phone=str_pad($i,4,"0",STR_PAD_LEFT);
 //$phoneinfo="";
 //$phoneinfo.=$phone."=";
 //$phoneinfo=(isset($search[$i]))?$search[$i]:"";
 //$phoneinfo.="n";
 fwrite($fp1,$search[$i]);
}
fclose($fp1);
 echo "$num 已更新";
 }else{
 die ("暂不支持$sub");
 }
 }
function getphone($phone){
 $dbpath="xiaolin/";
 $len=strlen($phone);
 if ( $len < 7 ){
 return "手机号码最低7位哦";
 }
 $par="[0-9]";
 for ($i=0;$i<$len;$i++){
  if(!ereg($par,substr($phone,$i,1) ) ){
  return "手机号码只能为数字";
  }
 }
 $sunum=scandir($dbpath); //得到支持的手机号码前缀
  array_splice($sunum,0,1); //把当前目录取消
  array_splice($sunum,0,1); //把上一级目录去掉
 $sub=substr($phone,0,3); //取得该号码的前三位
 if (in_array($sub,$sunum) ){
   $num=ltrim(substr($phone,3,4),"0");
  $search=file($dbpath.$sub);
  $tmp=$search[$num];
  $result=substr($tmp,strpos($tmp,"=")+1,strlen($tmp)-strpos($tmp,"=")-2); //处理数据
  return (strlen($result)>1)?$result:"无数据";
 }else{
 return "暂不支持$sub";
 }
}

function check(){
 if (!isset($_SESSION["flag"]) ){
 die ("<p>请<a href='manage.php?action=login'>登录!</a></p>"); 
 }elseif ($_SESSION["flag"] != true){
 die ("<p>请<a href='manage.php?action=login'>登录!</a></p>"); 
 }
}

function getinfo(){
check();
 $nums=array("130","131","132","133","134","135","136","137","138","139","150","151","153","155","156","157","158","159");
 $counts="";
 for($j=0;$j<count($nums);$j++){
  $id=$j;
  if ($id >= count($nums) ){ die ("OVER"); }
   $nownum=$nums[$id]; //当前的号码段
  $dbpath="xiaolin/";
  $fp=fopen("xiaolin/$nownum",'r');
  while(!feof($fp)){
   $line=fgets($fp);
   $tmp=explode("=",$line);
   $num1[$tmp[0]]=substr($line,strpos($line,"=")+1,strlen($line)-strpos($line,"=")-2);
  }
  fclose($fp);
 $flag=0;
  for($i=0;$i<10000;$i++){
   $ser=str_pad($i,4,"0",STR_PAD_LEFT);
   if(!strlen($num1[$ser]) ==0 ){
   ++$flag;
  }
 }
 $counts+=$flag;
  echo "$nownum:段记录$flag</p>";
}
 echo "总计$counts";}
 function leftnav(){
  check();
?>
<div>

<div id="right">

<?php
}
function showabout(){
 echo "<p>手机号码归属地查询</p>
";
 }
?>

swfupload是一个用来文件上传的组件,对于大文件我们觉得是很不错的,下面我来介绍swfupload配置与使用方法吧。

swfupload对于大文件上传等比较好用,下面以classic form demo为例,简单说明下用法

下载地址:http://code.google.com/p/swfupload/downloads/list

其中 SWFUpload_v250_beta_3_samples.zip 为实例代码,解压后重命名为swfupload,保存到本地主文件夹(nginx+php环境)下,便可以通过

http://localhost/swfupload/demos/ 访问

其中两个文件夹,demos 为客户端的实例,samples 提供了各语言的文件保存代码。

切换到 http://localhost/swfupload/demos/formsdemo/ 即普通表单模式

在/demos/formsdemo/下新建文件夹 uploads

将 /smaples/php/upload.php 中的代码拷贝到 /demos/formsdemo/upload.php 开头,即

 // The Demos don't save files

这个注释下面。

修改其中的

 代码如下 复制代码

view sourceprint?$upload_name = "filedata";

为:

view sourceprint?$upload_name = "resume_file";

 (与/demos/formsdemo/index.php中的表单元素名称一致)

此时,可以使用表单正常上传文件,上传的文件保存在/demos/formsdemo/uploads/目录下

数据库处理部分,应修改下面的代码:

 

 代码如下 复制代码

if (isset($_FILES["resume_file"]) && is_uploaded_file($_FILES["resume_file"]["tmp_name"]) && $_FILES["resume_file"]["error"] == 0) { 

    echo rand(1000000, 9999999);    // Create a pretend file id, this might have come from a database. 

}

这段代码是原来demo中的upload,其作用时返回一个已经上传的文件的id并赋给表单的hidFileID标签(注意到,这个标签是一个hidden元素)

原demo是随机产生的一个数,在这要修改为数据库插入操作得到的一个数据库表的id值。即下面的做法:

去掉对$_FILES的if判断(这在上面的move_uploaded_file之后is_uploaded_file判断为false);进行数据库插入操作;直接echo得到的id(数字型)。

对于大文件上传,需要首先修改表单部分的,即

 代码如下 复制代码

/demos/formsdemo/index.php中

view sourceprint?file_size_limit : "100 MB",

修改为期待的尺寸(最大2G)

修改nginx.conf,/etc/init.d/nginx reload,若不添加下面的设置,则nginx会出现413 Request Entity Too Large错误

 代码如下 复制代码

view sourceprint?http { 

... 

client_max_body_size 128M 

... 

}

同时需要修改服务器配置 php.ini, /etc/init.d/php-cgi reload

 代码如下 复制代码

view sourceprint?upload_max_filesize 100M 

post_max_size 100M 

memory_limit 128M

注意到swfupload并不要求修改max_execution_time和max_input_time的配置。

本文章总结了php定时执行PHP脚本一些方法总结,有,linux中,windows,php本身的方法,有需要的朋友可参考参考。

linux下定时执行php脚本


执行PHP脚本

方法1
如果你想定时执行某一个PHP脚本 可以直接这样写:
*/1 * * * * root -q /bin/local/php /path/to/your/php/script.php (每一分钟执行一次script.php)
注意,这样写需要把PHP变成可执行的脚本文件。在命令行下,脚本所在目录
chmod +x script.php

crontab+php-cgi 定时执行PHP脚本

1. 在web根目录创建请求的脚本index.php

    我的文件路径(根据安装路径不同有不同路径):/usr/local/webserver/htdosc/index.php

2. 创建crontab文件

     2.1   crontab -e

     2.2  * * * * * /usr/local/webserver/php/bin/php-cgi -q /usr/local/webserver/htdosc/index.php

      #编辑crond计划,每分钟请求index.php

完成,以上步骤完成后,在我的电脑中能正常每分钟请求index.php


注意事项:

 一. /usr/local/webserver/php/  是我的php安装路径

二. php-cgi 是php解析器(我的理解是这样,总感觉我理解的不对,希望大虾们指正),有些资料是用./bin/php,我电脑上就不能,所以用php-cgi,可能安装的方式不对吧。

三. -q 是安静模式(某些资料中看到的)运行php脚本

四. 有些资料是 把在index.php的首行添加#!  /usr/local/webserver/php/bin/php -q ,并对index.php添加执行权限。我没有这样做,也能正常请求index.php


最后介绍一个PHP定时执行任务的实现

用到的函数  ignore_user_abort(),set_time_limit(0),sleep($interval)
此代码只要运行一次后关闭浏览器即可。

 代码如下 复制代码

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
 //这里是你要执行的代码 
 sleep($interval);// 等待5分钟
}while(true);

生成静态页面一般是把动态页面生成html页面,这样可以减少服务器负载也是现在各大网站常用的优化方法,下面我来分享一个把php生成静态(html)页面类。
 代码如下 复制代码

 

<?php

class create_html {

private $template;

//模版

private $file_name;

//文件名

private $array;

//数据数组

function __construct($file_name, $template, $array) {

//构造类

$this->template = $this->read_file($template, "r");

//读取模板文件

$this->file_name = $file_name;

$this->array = $array;

//数据数据

$this->html();

//生成html

}

function html() {

//生成html

while (ereg ("{([0-9]+)}", $this->template, $regs)) {

//循环模版中所能的{1}…..

$num = $regs[1];

//得到1、2、3序列

$this->template = ereg_replace("{".$num."}", $this->array[$num], $this->template);

//把数据替换成html内容

$this->write_file($this->file_name, $this->template, "w+");

//生成HTML文件

}

}

function read_file($file_url, $method = "r") {

//读取文件

$fp = @fopen($file_url, $method);

//打开文件

$file_data = fread($fp, filesize($file_url));

//读取文件信息

return $file_data;

}

function write_file($file_url, $data, $method) {

//写入文件

$fp = @fopen($file_url, $method);

//打开文件

@flock($fp, LOCK_EX);

//锁定文件

$file_data = fwrite($fp, $data);

//写入文件

fclose($fp);

//关闭文件

return $file_data;

}

}

#例子———————-

#读取邮件回复模版———————————————————————————-

$title = "标题";

$navigation = "浏览器";

$happy_origin = "作者";

$name = "test2.htm";

$template = "default_tmp.php";

//模版中用{1}{2}来替换

$daytype = array(1 => $title,

2 => $navigation,

3 => $happy_origin);

$htm = new Restore_email($template, $daytype);

echo $htm->pint();

?>

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23
  • python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
  • 使用PHP下载CSS文件中的图片的代码

    共享一段使用PHP下载CSS文件中的图片的代码 复制代码 代码如下: <?php //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //not...2013-10-04
  • DWVA上传漏洞挖掘的测试例子

    DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞...2016-11-25
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • PHP swfupload图片上传的实例代码

    PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
  • ps怎么制作图片阴影效果

    ps软件是现在很多人比较喜欢的,有着非常不错的使用效果,这次文章就给大家介绍下ps怎么制作图片阴影效果,还不知道制作方法的赶紧来看看。 ps图片阴影效果怎么做方法/...2017-07-06