为KindEditor在线编辑器增加图片水印和缩略图功能

2018年3月9日 40,978 浏览数 没有评论

  轻量级开源KindEditor在线编辑器非常好用,虽然作者已多年不更新了,但阻挡不了我对它的喜爱。在使用之中,总是想为它加点功能,这样便可使工作更高效!

  我们在图片上传时总想自动添加水印和生成缩略图,但这些实用小功能却没见有人制作,遂Google一下资料自己捣鼓了一个,分享给大家!

  直接放出源码,对应版本为最新的“4.1.11”:

  第一步:修改\editor\kindeditor-all.js中的第7000行,用下面代码替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
hiddenElements.join(''),
'<label style="width:60px;">' + lang.localUrl + '</label>',
'<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> &nbsp;',
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" />',
'<div class="ke-dialog-row">',
'<label style="width:60px;">是否水印</label>',
'<label><input name="iswater" type="radio" value="1" />加水印</label>',
'<label><input name="iswater" type="radio" value="0" checked="checked" />不加水印</label>',
'</div>',
'<div class="ke-dialog-row">',
'<label style="width:60px;">缩略图</label>',
'宽:<input name="thumb_width" type="text" class="ke-input-text" style="width:40px;" /> ',
'高:<input name="thumb_height" type="text" class="ke-input-text" style="width:40px;" />',
'</div>',
'</form>',
'</div>',
'</div>'

  目的是:在图片上传对话框中设置水印和缩略图选项,以便可控。
阅读全文…

php模拟登陆系统,并执行脚本

2016年9月25日 72,495 浏览数 没有评论

  php中的curl非常好用,可它来模拟登陆系统,并执行脚本,非常简便。下面列出自己常用的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
/**
 *该需要编辑cron并让其每隔5分钟自动运行一次
 * 5 * * * * /usr/bin/curl http://localhost/plugin/updata.php?id=1
 *其中id=?动态项目的ID号
 */
$id = (isset($_GET['id']))?(int)$_GET['id']:'';
if (empty($id))exit();
//登陆认证
$url = "http://localhost/login.php?work=checklogin";
$post_data = array('name'=>'username','pwd'=>'password');
$cookie_jar = tempnam('./','cookie');//存放COOKIE的文件
 
// 登录并获取cookie信息
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, '');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设为1则不直接显示获取到的内容
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));  
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);//保存cookie
$output = curl_exec($ch); 
curl_close($ch);
 
//执行脚本运行
$url = "http://localhost/update_d.php?work=create&parent={$id}";
$ch=curl_init();  
curl_setopt($ch, CURLOPT_URL, $url);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); //设0是为了方便调试
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);//代入获取到的cookie
$data=curl_exec($ch);
curl_close($ch);
@unlink($cookie_jar);//删除cookie文件
?>

  将上述代码保存为update.php文件,放在自己的网站空间里。
  再将“5 * * * * /usr/bin/curl http://localhost/plugin/updata.php?id=1”代码保存为root文件,并存放在服务器/var/spool/cron/中,让cron每隔5分钟自动执行一次即可!

分类: 伪编程 标签: ,

突破图片防盗链的解决方法

2016年9月17日 2,582 浏览数 没有评论

  很多网站怕别人链接自己的图片,而使用了防盗链。例如微信公众号的文章,网易博客等,图片链过来后无法显示。

  图片防盗链的原理想必很多人也都清楚,也就是在服务端检测客户浏览器发来的HTTP请求表头里,referer这项是不是包含自己的网站域名,如果是盗链,referer里应该是盗链者网站的域名。

  如果我们把图片地址直接在浏览器里打开,发现图片是可以打开的,而盗链却不行,因为referer这项的内容为空。而我们可以模拟浏览器请求,来得到图片内容。

  知道了原理,解决办法也就很简单了,直接上PHP代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$url = (isset($_GET['url']))?$_GET['url']:'';
$type = getimagesize($url);
$type = $type['mime'];//获取图片头类型,以便后续创建
header("Content-type: ".$type);  
$httpheader = array();
$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_REFERER, '');//referer设置为空
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
	curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_exec($ch);
curl_close($ch);
?>

  将代码保存为lpic.php文件,调用时候直接“http://你的网站域名/lpic.php?url=http://要链的网站图片地址”即可!

分类: 伪编程 标签: ,

PHP中 textarea 标签的换行问题

2013年4月2日 4,727 浏览数 1 条评论

  目的:将textarea标签中的行内容用逗号串起来
  测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form method="post" action="">
     <textarea name="flist" cols="40" rows="2"  wrap="OFF" style="width:98%"></textarea>
     <input type="submit">
</form>
<?php
$list = '';
$flist = (isset($_POST['flist'])) ? $_POST['flist'] : '';
$flist = explode("\n",$flist);
for($i=0 ; $i<count($flist) ; $i++)
{
     if ($list == '')
               {
                    $list = $flist[$i];
               }
               else
               {
                    if(!empty($flist[$i])){
                         $list = $list . ',' . $flist[$i];
                    }
               }
}
echo $list;
?>

  结果:分行成功,但空行无法过滤!
  原因:回想工作环境是apache+php,感觉分行符不是“\n”而是“\r\n”,修改上述代码,过滤空行成功!

1
$flist = explode("\r\n",$flist);
分类: 伪编程 标签: ,

妙用mysql中的instr函数

2013年3月18日 4,375 浏览数 没有评论

  记录中有一个字段名是:cfield,内容如这样:2,4,7,17 现在要通过一次SQL查询取出所有该字段中包含7的记录。这时候使用mysql自带的instr函数将非常方便。测试代码如下:

1
2
3
4
5
6
$aid=7;
$sql="SELECT * FROM news WHERE instr(','+cfield+',',','+$aid+',')>0";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
	echo $row['title'].'<br>';
}

  需要注意的是:要在字段cfield和变量aid前后加逗号,这样可以解决7与17混淆的问题。

  (2016-2-3)注:上述语句中+号的用法会使MYSQL尝试将两端字符进行相加运算,出现了异想不到的结果。比较稳妥的是用CONCAT函数相接:

1
$sql="SELECT * FROM news WHERE instr(concat(',',cfield,','),',$aid,')>0";

  或

1
$sql="SELECT * FROM news WHERE concat(',',cfield,',') LIKE '%,$aid,%'";

  后经查mysql手册,发现find_in_set()函数也是专干这事的!

分类: 伪编程 标签: