分类 分享 下的文章

之前有想过做个美女图片站试试,但是一直没有机会,主要还是因为太吃硬盘和带宽的事。

偶然在嘀嗒萌工作过程中得知了贴图库这个东西,真是个好东西啊。

官方提供了api接口,只需要对接一下,就可以把图片发到贴图库了。

我之前也一直很推崇twcms,原因就在这里就不讲了,不是重点,直接上代码

打开admin/control/article_control.class.php 文件

大约在600行左右找到

private function auto_pic($table, $uid, $id = 0) {

将整个function替换为

private function auto_pic($table, $uid, $id = 0) {
		$pic_arr = $this->cms_content_attach->find_fetch(array('id'=>$id, 'uid'=>$uid, 'isimage'=>1), array(), 0, 1);
		$pic_arr = current($pic_arr);
		$cfg = $this->runtime->xget();
		$path = $pic_arr['filepath'];
		$pic = image::thumb_name($path);
		$src_file = TWCMS_PATH.$path;
		$dst_file = TWCMS_PATH.$pic;
		if(!is_file($dst_file)) {
			image::thumb($src_file, $dst_file, $cfg['thumb_'.$table.'_w'], $cfg['thumb_'.$table.'_h'], $cfg['thumb_type'], $cfg['thumb_quality']);
		}
		return $path;
	}

对接的后台发布路径

 

打开/twcms/model/cms_content_attach_model.class.php 文件

大约在45行找到

public function remote_down($uri, &$conf) {

替换整个try为

try{
			// 抓取远程图片
			$context = stream_context_create(array('http'=>array('follow_location'=>false, 'timeout'=>60))); // 不重定向抓取
			//$img = file_get_contents($uri, false, $context);

			// 图片大小验证
			$filesize = strlen($img);
			$maxSize = $conf['maxSize']*1024;
			if($filesize > $maxSize) return FALSE;

			// 创建图片目录
			//$dir = date('Ym/d/');
			//$updir = $conf['upDir'].$dir;
			//if(!is_dir($updir) && !mkdir($updir, 0755, true)) {
			//	return FALSE;
			//}

			// 图片写入自己的服务器
			//$filepath = $dir.date('His').uniqid().random(6, 3).'.'.$fileExt;
			//if(!file_put_contents($conf['upDir'].$filepath, $img)) return FALSE;
			
			//图片上传到贴图库
			$time60 =time()+60;
			$tokens = '贴图库获取到token';
			$post_data = array(  
			'Token='.$tokens,
			'deadline='.$time60,  
			'aid=相册ID',
			'fileurl='.$uri,
			); 
			//print_r($post_data);
			 $post_data = implode('&',$post_data);  
			 $url='http://up.tietuku.com/';  
			 $ch = curl_init();  
			 curl_setopt($ch, CURLOPT_POST, 1);  
			 curl_setopt($ch, CURLOPT_URL,$url);  
			 //传递一个作为HTTP “POST”操作的所有数据的字符串。  
			 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);  
			 ob_start();  
			 curl_exec($ch);  
			 $result = ob_get_contents() ;  
			 ob_end_clean(); 
			 //开始解析json
			 $exiturl=json_decode($result); 
			 //print_r($exiturl);
			 //echo '这是一个贴图库的上传演示,用以集成到cms编辑器内实现自动转存图片的功能。<br>图片地址为:'.$exiturl->linkurl;
			
			
			//图片上传结束
			$filepath = $exiturl->linkurl;
			// 记录到数据库
			$data = array(
				'cid' => $conf['cid'],
				'uid' => $conf['uid'],
				'id' => $conf['id'],
				'filename' => basename($uri),
				'filetype' => $fileExt,
				'filesize' => $filesize,
				'filepath' => $filepath,
				'dateline' => $_ENV['_time'],
				'downloads' => 0,
				'isimage' => 1,
			);
			if(!$this->create($data)) return FALSE;

			return $exiturl->linkurl;
		}

token在这里获取http://open.tietuku.com/createtoken

对应相册ID,获取token,贴入到相应位置。

进入后台清除缓存。

发布文章的时候选择远程图片本地化,会直接把图片转存到贴图库。

补:使用此方法后不得开启图片水印功能

 

 

2016-01-13

PS:由于受PHP运行和服务器配置限制,此方法已经放弃,改用火车头插件模式,保证100%不失败。传送门http://www.skyerblog.com/article/2705.html

当然是重装咯,因为在之前升级php的时候zend optimizer已经被删除了,升级为Zend guard。所以降级后的wdcp只能重新安装zend opitmizer

1、下载Zend optimizer

wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz    #32位

wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz  #64位

2、安装Zend optimizer

拷贝ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendGuardLoader.so  文件,通过ftp工具上传到 vps里的/usr/local/zend 里,没有这个路径的话自己新建

3、配置Zend optimizer

找到/www/wdlinux/etc/php.ini

在最后加上

[Zend Optimizer]

zend_optimizer.optimization_level=15

zend_extension="/usr/local/Zend/ZendOptimizer.so"

4、重启web服务器

service httpd restart

就可以在phpinfo里看到3.3.9的ZendOptimizer了。

 

有升有降,只为和谐社会

SH如下

wget -c http://dl.wdlinux.cn:5180/soft/php-5.2.17.tar.gz
tar zxvf php-5.2.17.tar.gz
cd php-5.2.17
./configure --prefix=/www/wdlinux/php-5.2.17 --with-config-file-path=/www/wdlinux/etc --with-mysql=/www/wdlinux/mysql --with-iconv=/usr --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt=/usr --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-ftp --with-apxs2=/www/wdlinux/apache/bin/apxs
make
make install
rm -f /www/wdlinx/php
ln -s /www/wdlinux/php-5.2.17 /www/wdlinux/php
service httpd restart

 

dedecms自定义留言板,插入数据库

-- phpMyAdmin SQL Dump
-- version 3.3.7
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2015 年 10 月 13 日 15:31
-- 服务器版本: 5.1.63
-- PHP 版本: 5.2.17p1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 数据库: `qiye032`
--

-- --------------------------------------------------------

--
-- 表的结构 `sk_diyform1`
--

CREATE TABLE IF NOT EXISTS `sk_diyform1` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ifcheck` tinyint(1) NOT NULL DEFAULT '0',
  `s_name` varchar(250) NOT NULL DEFAULT '',
  `s_title` varchar(250) NOT NULL DEFAULT '',
  `s_phone` varchar(250) NOT NULL DEFAULT '',
  `s_email` varchar(250) NOT NULL DEFAULT '',
  `s_content` mediumtext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- 转存表中的数据 `sk_diyform1`
--

INSERT INTO `sk_diyform1` (`id`, `ifcheck`, `s_name`, `s_title`, `s_phone`, `s_email`, `s_content`) VALUES
(1, 1, 'aaaaa', 'bbbb', 'ccc', 'cdd', 'ddd');

-- phpMyAdmin SQL Dump
-- version 3.3.7
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2015 年 10 月 13 日 15:32
-- 服务器版本: 5.1.63
-- PHP 版本: 5.2.17p1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 数据库: `qiye032`
--

-- --------------------------------------------------------

--
-- 表的结构 `sk_diyforms`
--

CREATE TABLE IF NOT EXISTS `sk_diyforms` (
  `diyid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `posttemplate` varchar(50) NOT NULL,
  `viewtemplate` varchar(50) NOT NULL,
  `listtemplate` varchar(50) NOT NULL,
  `table` varchar(50) NOT NULL DEFAULT '',
  `info` text,
  `public` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`diyid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- 转存表中的数据 `sk_diyforms`
--

INSERT INTO `sk_diyforms` (`diyid`, `name`, `posttemplate`, `viewtemplate`, `listtemplate`, `table`, `info`, `public`) VALUES
(1, '在线留言', 'post_diyform1.htm', 'view_diyform1.htm', 'list_diyform1.htm', 'sk_diyform1', '\n<field:s_name itemname="姓名" autofield="1" type="text" isnull="true" default=""  maxlength="250" page="">\r\n</field:s_name>\r\n\n<field:s_title itemname="标题" autofield="1" type="text" isnull="true" default=""  maxlength="250" page="">\r\n</field:s_title>\r\n\n<field:s_phone itemname="电话" autofield="1" type="text" isnull="true" default=""  maxlength="250" page="">\r\n</field:s_phone>\r\n\n<field:s_email itemname="邮箱" autofield="1" type="text" isnull="true" default=""  maxlength="250" page="">\r\n</field:s_email>\r\n\n<field:s_content itemname="内容" autofield="1" type="multitext" isnull="true" default=""  maxlength="250" page="">\r\n</field:s_content>\r\n', 1);

插入html代码

<iframe frameborder="0" id="iframepage" marginheight="0" marginwidth="0" onload="iFrameHeight()" scrolling="no" src="http://www.njlyx.com/plus/diy.php?action=list&amp;diyid=1"></iframe><script type="text/javascript" language="javascript"> 
function iFrameHeight() { 
var ifm= document.getElementById("iframepage"); 
var subWeb = document.frames ? document.frames["iframepage"].document : ifm.contentDocument; 
if(ifm != null && subWeb != null) {
ifm.height = subWeb.body.scrollHeight;
ifm.width = subWeb.body.scrollWidth;
} 
} 
</script>
<form action="/plus/diy.php" enctype="multipart/form-data" method="post">
<input name="action" type="hidden" value="post" /> <input name="diyid" type="hidden" value="1" /> <input name="do" type="hidden" value="2" /> <input name="dede_fields" type="hidden" value="s_name,text;s_title,text;s_phone,text;s_email,text;s_content,multitext" /><input name="dede_fieldshash" type="hidden" value="9a4d6a38f673a57a56301bfce3368241" />
<table cellpadding="0" cellspacing="1" style="width:97%;">
<tbody>
<tr>
<td align="right" valign="top">
姓名:</td>
<td>
<input class="intxt" id="s_name" name="s_name" style="width:250px" type="text" value="" /></td>
</tr>
<tr>
<td align="right" valign="top">
标题:</td>
<td>
<input class="intxt" id="s_title" name="s_title" style="width:250px" type="text" value="" /></td>
</tr>
<tr>
<td align="right" valign="top">
电话:</td>
<td>
<input class="intxt" id="s_phone" name="s_phone" style="width:250px" type="text" value="" /></td>
</tr>
<tr>
<td align="right" valign="top">
邮箱:</td>
<td>
<input class="intxt" id="s_email" name="s_email" style="width:250px" type="text" value="" /></td>
</tr>
<tr>
<td align="right" valign="top">
内容:</td>
<td>
<textarea id="s_content" name="s_content" style="width:90%;height:80"></textarea></td>
</tr>
</tbody>
</table>
<div align="center" style="height:30px;padding-top:10px;">
<input class="coolbg" name="submit" type="submit" value="提 交" /> &nbsp; <input class="coolbg" name="reset" type="reset" value="重 置" /></div>
</form>

 

很怪诞,杰奇cms根本没有在后台提供修改分类的地方,只能是修改php文件来实现

修改配置文件 /configs/article/sort.php, 是一个php数组,在程序里面是已此处数组的序号来判断文章类别,序号不要重复

很简单吧,1.7亲测可用,其他版本需要大家来发掘