mysql ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in 解决办法 代码人生

ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in 如图所示,我在使用MySQL的时候呢,遇到了这种问题,通过度娘找到了答案,在此小计.以便日后查看,大手子绕道,勿喷.

用到两个时间戳相减来做查询条件,由于其两个字段都是unsigned的,并两个的大小是不一样。所以直接相减查询的时候,

07-08-40-49.png

就出现ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in..的错误,因为结果可能会出现负数。。。。

07-08-33-11.png

解决办法呢,就是执行下面这句MySQL语句即可:

mysql>SET sql_mode='NO_UNSIGNED_SUBTRACTION';

07-08-34-06.png

从图中可以看到解决了.原理如下:

类型属性   在介绍数据类型前先来介绍两个属性UNSIGNED和ZEROFILL是否使用这两个属性对选择数据类型有着莫大的关系。  

1. UNSIGNED   UNSIGNED属性就是将数字类型无符号化与C、C++这些程序语言中的unsigned含义相同。例如INT的类型范围是-2 147 483 648  2 147 483 647 INT UNSIGNED的范围类型就是0  4 294 967 295。   看起来这是一个不错的属性选项特别是对于主键是自增长的类型因为一般来说用户都希望主键是非负数。

2.也可以使用 as signed 加在需要执行的MySQL语句解决.



admin 发布于  2015-7-10 07:32 

PHP面试题遇到的几个坑。...面壁ing PHP

1.指针悬挂问题

$array = [1, 2, 3];

echo implode(',', $array), "\n";

foreach ($array as &$value) {}    // by reference

echo implode(',', $array), "\n";

foreach ($array as $value) {}     // by value (i.e., copy)

echo implode(',', $array), "\n";

正确答案应该是:

1,2,3

1,2,2

解释:

我们来分析下。第一个循环过后,$value是数组中最后一个元素的引用。第二个循环开始:

 

第一步:复制$arr[0]$value(注意此时$value$arr[2]的引用),这时数组变成[1,2,1]

第二步:复制$arr[1]$value,这时数组变成[1,2,2]

第三步:复制$arr[2]$value,这时数组变成[1,2,2]

 

 

2.以下结果输出:

<?php 

$test=null;

if(isset($test)){

    echo "true";

}else{

    echo "false";

}

?>

正确答案:false

解释:对于 isset() 函数,变量不存在时会返回false,变量值为null时也会返回false

判断一个变量是否真正被设置(区分未设置和设置值为null),array_key_exists()函数或许更好。

3.以下结果能否打印出来,为什么?

class Config{

    private $values = [];

    public function getValues() {

        return $this->values;

    }

}

$config = new Config();

$config->getValues()['test'] = 'test';

echo $config->getValues()['test'];

正确答案:

不行,因为在PHP中,除非你显示的指定返回引用,否则对于数组PHP是值返回,也就是数组的拷贝。因此上面代码对返回数组赋值,实际是对拷贝数组进行赋值,非原数组赋值。如果把代码改成:

class Config{

    private $values = [];

    // return a REFERENCE to the actual $values array

    public function &getValues() {

        return $this->values;

    }

}

$config = new Config();

$config->getValues()['test'] = 'test';

echo $config->getValues()['test'];

就可以了。

知识要点:PHP中对于对象,默认是引用返回,数组和内置基本类型默认均按值返回。这个要与其它语言区别开来(很多语言对于数组是引用传递)。

4.以下代码运行后服务器输出什么?

$.ajax({

    url: 'http://my.site/ndex.php',

    method: 'post',

    data: JSON.stringify({a: 'a', b: 'b'}),

    contentType: 'application/json'

});

var_dump($_POST);

答案:array(0){}

解释:PHP仅仅解析Content-Type为 application/x-www-form-urlencoded 或 multipart/form-dataHttp请求。之所以这样是因为历史原因,PHP最初实现$_POST时,最流行的就是上面两种类型。因此虽说现在有些类型(比如application/json)很流行,但PHP中还是没有去实现自动处理。因为$_POST是全局变量,所以更改$_POST会全局有效。因此对于Content-Type为 application/json 的请求,我们需要手工去解析json数据,然后修改$_POST变量。

$_POST = json_decode(file_get_contents('php://input'), true);

这就解释了为什么微信公众平台开发时也要用这个方式获取微信服务器post的数据

 

 

6.以下代码输出的结果是:

for ($c = 'a'; $c <= 'z'; $c++) {

    echo $c . "\n";

}

正确答案:a.......z,aa.....yz

解释:在PHP中不存在char数据类型,只有string类型。明白这点,那么对'z'进行递增操作,结果则为'aa'。对于字符串比较大小,学过C的应该都知道,'aa'是小于'z'的。这也就解释了为何会有上面的输出结果。

但是PHP中如果比较的是两个纯数字的字符串时,首先尝试将其当成数字来比较的。

版权声明:本文为博主原创文章,未经博主允许不得转载。


标签: 代码 php

admin 发布于  2015-7-5 23:21 

Mrxn教你让emlog自动实时提交至百度收录-SEO利器,站长们必看 emlog

Mrxn教你让emlog自动实时提交至百度收录-SEO利器,站长们必看

06-22-49-04.png

本文为Mrxn's Blog https://mrxn.net原创 转载请著名出处和链接,谢谢合作,互相尊重.

判断内容页是否百度收录,并且以博主和或者理员身份访问博客文章时自动向百度提交未收录的文章,后期会加如其他搜索引擎的自动提交功能.请关注Mrxn's Blog https://mrxn.net Email:admin#mrxn.net

下面我来教大家如何实现上述操作:

我们在modul.php底部加上如下代码

<?php
//判断内容页是否百度收录,并且以博主和或者理员身份访问博客文章时自动向百度提交未收录的文章,后期会加如其他搜索引擎的自动提交功能.请关注Mrxn's Blog https://mrxn.net Email:admin#mrxn.net
function baidu($url){
 $url='http://www.baidu.com/s?wd='.$url;
 $curl=curl_init();
 curl_setopt($curl,CURLOPT_URL,$url);
 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
 $rs=curl_exec($curl);
 curl_close($curl);
 if(!strpos($rs,'没有找到')){
     return 1;
   }
 else{
     return 0;
  }   
     }
  function checkbaidu($id){
  $url=Url::log($id);
  if(baidu($url)==1){
   echo "百度已收录";
  } else {
   if (ROLE == 'admin' || ROLE == 'writer') {
    $urls = array(
      $url,
  );
  $api = 'http://data.zz.baidu.com/urls?site=mrxn.net&token=你自己的token值';
  $ch = curl_init();
  $options =  array(
     CURLOPT_URL => $api,
     CURLOPT_POST => true,
     CURLOPT_RETURNTRANSFER => true,
     CURLOPT_POSTFIELDS => implode("\n", $urls),
     CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),);
  curl_setopt_array($ch, $options);
  $result = curl_exec($ch);
  echo 'success';
   }
     echo "<a style=\"color:red;\" rel=\"external nofollow\" title=\"点击提交收录!\" target=\"_blank\" href=\"http://zhanzhang.baidu.com/sitesubmit/index?sitename=$url\">已自动提交度娘等待收录</a>";
  }
 }
?>

(文章结尾有代码下载)然后在文章内容页引用即可,具体方法,不会的朋友请前往这里查看:传送门-点我

需要注意的其一:


$api = 'http://data.zz.baidu.com/urls?site=mrxn.net&token=你自己的token值';



$api 中的token值请换成你自己的token,获取方法:前往百度站长平台获取:http://zhanzhang.baidu.com/linksubmit/index


需要注意的其二,我把百度官方的函数做了一个小小的修改,将


$result = curl_exec($ch); echo $result;修改成了:$result = curl_exec($ch);echo 'success';


因为不修改的话就会出现这种情况:


06-22-51-53.png返回值...很碍眼和排版,当然觉得没啥的可以改回去.修改后的效果:

06-23-23-44.png是不是好看多了 -_- || 个人觉得....

至于是不是真的成功了.请往下看:

06-22-41-04.png

上图显示的是我博客每天的提交量(配额)上限:50 ,PS: 这个配额其实就是百度分配给每个网站的提交上限,超过这个数量,即使你提交了,度娘也是不要你的....555

她这个配额是根据你网站的每天访问量,活跃度,PR值.等等综合因数决定的,具体的请自行去度娘那里慢慢查看.我就不细说了.

我打开两个我最近刚刚写的文章(估计度娘未收录的):

06-22-51-53.png 图一

06-23-23-44.png图二


06-22-42-15.png 图三


在查看我的工具显示剩余配额还有多少.即验证是否成功提交了一次:

06-22-56-20.png

从图中我们可以看到剩余配额已近减少了两次.OK 至此,我们的方法成功了.以后我们写完一篇文章在查看一下,是不是就自动完成了SEO任务之一了呢?

当然,百度已近收录的就会显示如下效果:

06-22-49-04.png

各位看官,看完了还不赶紧去试试.让你的收录飞速提升!!!  看完了是不是应该评论评论吐槽吐槽呢?

注意:刷流量的孩子,在操作的时录后台了.不然可能优化过度,出现不良反应哦.


本文为Mrxn's Blog https://mrxn.net原创 转载请著名出处和链接,谢谢合作,互相尊重.

判断内容页是否百度收录,并且以博主和或者理员身份访问博客文章时自动向百度提交未收录的文章,后期会加如其他搜索引擎的自动提交功能.请关注Mrxn's Blog https://mrxn.net Email:admin#mrxn.net

源代码下载:baidu-seo.zip





admin 发布于  2015-6-27 23:26 

Mrxn分享emlog技巧之---让emlog文章中显示中文星期几的方法 emlog

Mrxn分享emlog技巧之---让emlog文章中显示中文星期几的方法,先上效果图,就像本博客微语公告一样的效果:

01.png

先介绍几种将php中星期几以中文方式显示的方法:


<?php
function get_chinese_weekday($datetime)
{
    $weekday = date('w', strtotime($datetime));
    return '星期' . ['日', '一', '二', '三', '四', '五', '六'][$weekday];
}
?>

以上是PHP>=5.4版本的.



<?php
function get_chinese_weekday($datetime)
{
    $weekday  = date('w', strtotime($datetime));
    $weeklist = array('日', '一', '二', '三', '四', '五', '六');
    return '星期' . $weeklist[$weekday];
}
?>

以上是PHP<5.4版本的.

Debain / Ubuntu 若有安裝 php5-intl 的套件, 可以使用 IntlDateFormatter 来写 (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)

下面介绍在emlog中具体实现方法:

以默认模版为例在log_list.php找到:


<?php echo gmdate('Y-n-j', $value['date']); ?>


替换为:

<?php $weekarray=array("日","一","二","三","四","五","六");echo gmdate('Y年n月j日 G:i', $value['date']);echo" 星期".$weekarray[gmdate('w', $value['date'])];?>

如果是内容页请使用下面代码,以默认模版为例在echo_log.php找到

<?php echo gmdate('Y-n-j', $date); ?>

替换为:

<?php $weekarray=array("日","一","二","三","四","五","六");echo gmdate('Y年n月j日 G:i', $date);echo " 星期".$weekarray[gmdate('w',$date)];?>






admin 发布于  2015-6-27 17:52 

Mrxn分享本博客的幻灯片样式小计--气死 -_- | emlog

Mrxn分享本博客的幻灯片样式小计--气死 -_- |

QQ截图20150626235257.png

喜欢的就按照以下步骤折腾:


代码是借助封装js代码msclass进行修改,需要修改三个文件:module.php,head.php,index.php或者log_list.php。具体代码修改如下:

一、在

module .php

文件底部加入如下代码




<pre style="overflow:auto" ;class="prettyprint lang-php linenums"><?php
//slide数据源
//定义函数,只有一个参数$num,即为调用的数据条数
function get_flash_data_img($num){
//面向对象中静态方法实例化数据库对象(我是这么理解的)
$db = MySql::getInstance();
//下面是数据库语句,即获取gid,title,data,content等内容,非隐藏,时间正序,总共$num条数据,按照时间排序(包括首页置顶和分类置顶)
$sql = "SELECT gid,title,date,content FROM ".DB_PREFIX."blog inner join ".DB_PREFIX."sort WHERE hide='n' AND type='blog' AND top='y' | sortop='y' AND sortid=sid order by date DESC LIMIT 0,$num";
// $sql = "SELECT gid,title,date,content FROM ".DB_PREFIX."blog WHERE hide='n' ORDER BY date DESC LIMIT 0,$num";
$go = $db->query($sql);
//开始循环进行显示
while($row = $db->fetch_array($go)){
$img_url = '';
//picthumb()函数为获取文章附件图片的函数,后面会补上
//如果附件中含有图片,那么$img_url就等于附件图片的地址
if(picthumb($row['gid'])){
$img_url = picthumb($row['gid']);
//pin_thumb()函数为获取文章中图片链接的函数,后面会补上
//如果附件中不含图片,但是文章中有外链图片,则$img_url等于外链图片的地址
}elseif(pic_thumb($row['content'])){
$img_url = pic_thumb($row['content']);
//如果以上两种情况都没有图片,那么$img_url就等于默认图片
//如下默认图片的路径是模板路径下images文件夹下的default_flash.jpg文件
}else{
$img_url = TEMPLATE_URL.'images/default_flash.jpg';
}
//下面这一句是非常关键的,$data即为我们上面步骤所说的数据
//第二步骤中我们知道格式为“<b><span style="color:#e53333;"><div><img src="图片地址1" stitle="标题名1" slink="链接地址1" /></div></span></b>”
//如下格式必须和上面步骤中提取出来的数据格式一致。如果是不同的幻灯片插件,只需此处的格式不同而已。
$data1 = '<li><img src="'.$img_url.'" stitle="'.$row['title'].'" slink="'.Url::log($row['gid']).'" /></li>';
$data2 = '<li><a href="'.Url::log($row['gid']).'">'.$row['title'].'</a></li>';
//最后打印出数据,由于当前代码的位置是在while的循环体,因此会循环$num条数据
?>
<li><a href="<?php echo Url::log($row['gid']); ?>"><img src="<?php echo $img_url; ?>" alt="<?php echo $row['title']; ?>" width="510" height="280" /></a></li>
<?php } ?>
<?php } ?>
<?php
//slide数据源
//定义函数,只有一个参数$num,即为调用的数据条数
function get_flash_data_art($num){
//面向对象中静态方法实例化数据库对象
$db = MySql::getInstance();
//下面是数据库语句,即获取gid,title,data,content等内容,非隐藏,时间正序,总共$num条数据,按照时间排序(包括首页置顶和分类置顶)
$sql = "SELECT gid,title,date,content FROM ".DB_PREFIX."blog WHERE hide='n' AND type='blog' AND top='y' | sortop='y' AND sortid=sid order by date DESC LIMIT 0,$num";
// $sql = "SELECT gid,title,date,content FROM ".DB_PREFIX."blog WHERE hide='n' ORDER BY date DESC LIMIT 0,$num";
$go = $db->query($sql);
//开始循环进行显示
while($row = $db->fetch_array($go)){
$img_url = '';
//picthumb()函数为获取文章附件图片的函数,后面会补上
//如果附件中含有图片,那么$img_url就等于附件图片的地址
if(picthumb($row['gid'])){
$img_url = picthumb($row['gid']);
//pin_thumb()函数为获取文章中图片链接的函数,后面会补上
//如果附件中不含图片,但是文章中有外链图片,则$img_url等于外链图片的地址
}elseif(pic_thumb($row['content'])){
$img_url = pic_thumb($row['content']);
//如果以上两种情况都没有图片,那么$img_url就等于默认图片
//如下默认图片的路径是模板路径下images文件夹下的default_flash.jpg文件
}else{
$img_url = TEMPLATE_URL.'images/default_flash.jpg';
}
//下面这一句是非常关键的,$data即为我们上面步骤所说的数据
//第二步骤中我们知道格式为“<b><span style="color:#e53333;"><div><img src="图片地址1" stitle="标题名1" slink="链接地址1" /></div></span></b>”
//如下格式必须和上面步骤中提取出来的数据格式一致。如果是不同的幻灯片插件,只需此处的格式不同而已。
$data1 = '<li><img src="'.$img_url.'" stitle="'.$row['title'].'" slink="'.Url::log($row['gid']).'"></li>';
$data2 = '<li><a href="'.Url::log($row['gid']).'">'.$row['title'].'</a></li>';
//最后打印出数据,由于当前代码的位置是在while的循环体,因此会循环$num条数据
?>
<li class=""><a href="<?php echo Url::log($row['gid']); ?>"><?php echo $row['title']; ?></a></li>
<?php } ?>
<?php } ?>
<?php
//get thumbs(获取附件图片)
function picthumb($blogid) {
$db = MySql::getInstance();
$sql = "SELECT FROM ".DB_PREFIX."attachment WHERE blogid=".$blogid." AND (filepath LIKE '%jpg' OR filepath LIKE '%gif' OR filepath LIKE '%png') ORDER BY aid ASC LIMIT 0,1";
// die($sql);
$imgs = $db->query($sql);
while($row = $db->fetch_array($imgs)){
$pict.= ''.BLOG_URL.substr($row['filepath'],3,strlen($row['filepath'])).'';
}
return $pict;
}
?>
<?php
//get thumbs(获取图片链接)
function pic_thumb($content){
//preg_match_all全局匹配content中的图片地址,并存入$img变量
preg_match_all("|<img[^>]+src=\"([^>\"]+)\"?[^>]
>|is", $content, $img);
//当图片存在时,获取第一张图片,地址保存在$imgsrc中
$imgsrc = !empty($img[1]) ? $img[1][0] : '';
if($imgsrc):
return $imgsrc;
endif;
}
?>

二、在

head.php

引入封装js特效代码:




<pre style="overflow:auto" ;class="prettyprint lang-php linenums"><script type="text/javascript" src="<?php echo TEMPLATE_URL; ?>js/MSClass.js" language="javascript"></scrip

三、在

index.php

或者

log_list.php

添加调用参数:




<pre style="overflow:auto" ;class="prettyprint lang-php linenums"><script type="text/javascript">
function $(id){return document.getElementById(id)};
</script>
<div id="focusPic">
<div id="focusLeft"><ul id="focuscontent"><?php echo get_flash_data_img(10); ?></ul></div>
<div id="focusTitle"><ul id="focusMenu"><?php echo get_flash_data_art(10); ?></ul></div>
<div class="clear"></div>
</div>
<script type="text/javascript">
new Marquee(
{
MSClassID : "focusLeft",
ContentID : "focuscontent",
TabID : "focusMenu",
Direction : 0,
Step : 0.3,
Width : 515,
Height : 280,
Timer : 20,
DelayTime : 3000,
WaitTime : 0,
ScrollStep: 280,
SwitchType: 0,
AutoStart : 1,
})
</script>

最后,附加css样式表,在首页css样式表文件中加入如下样式表代码:



<pre style="overflow:auto" ;class="prettyprint lang-css linenums">#focusPic{width:100%; height:300px; margin:0 auto; clear:both; text-align:center; padding:0px;background-color:#ffffff;}

focusPic ul{margin:0;padding:0;border:0}

#focusPic #focusTitle{width:300px; float:right; font-size:12px; text-align:left;}
#focusPic #focusTitle li{height:28px; line-height:28px; background:url(images/focusTitleBg.gif) left 0 no-repeat; cursor:pointer; font-size:12px; padding-left:20px;overflow:hidden;}
#focusPic #focusMenu li.active{background-position:0 -29px; font-weight:bold;}
#focusPic #focusMenu li.active a{color:#f2f2f2;}
#focusPic #focusLeft{width:515px; height:280px; overflow:hidden; float:left;margin-top: 5px;}
#focusPic #focusLeft #focuscontent li{width:515px;height:280px; overflow:hidden;}</pre>

附件可以在这里下载,或者是自己 Ctrl+U 下载 : MSClass.js.7z.zip

最后感谢 简爱Finally 提供的友情帮助  思密达! -_- ||



admin 发布于  2015-6-26 23:05 

修复emlog绕过验证码刷评论的bug 代码人生

 最近博客常常被人刷评论,最狠的一次被刷了10000多广告。

    先看看评论验证码是怎么检查的。

    emlog/include/controller/comment_controller.php,先获得$imgcode:

<pre style="overflow:auto" ;class="prettyprint lang-php linenums">$imgcode = isset($_POST['imgcode']) ? addslashes(trim(strtoupper($_POST['imgcode']))) : '';

  检查:


<pre style="overflow:auto" ;class="prettyprint lang-php linenums">} elseif (ISLOGIN == false && Option::get('comment_code') == 'y' && session_start() && $imgcode != $_SESSION['code']) {
emMsg('评论失败:验证码错误');
}


上述代码,几个判断依次是:

  1. 没有登录(非管理员和作者)
  2. 后台开启了评论验证码
  3. 开启session
  4. 将session中的code与$imgcode比较,不相等则验证码错误


    第4步明显有问题。熟悉php验证码流程的同学应该清楚,验证码生成的时候将会设置一个session,这里就是code,再和POST过来的也就是用户输入的做比较。

    然而如果我们并没有访问验证码生成页面,那么也就没生成session。那么$_SESSION['code']就是NULL。

    php中==是弱类型比较,NULL和''(空字符串)比较的结果是TRUE的。

    所以这里,我们的$imgcode如果输入一个空值,并且不去访问生成验证码的页面,那么这个$imgcode != $_SESSION['code']就不成立,就不会提示验证码错误,从而绕过了验证码检查逻辑。

    所以,我这里做测试。

    先正常留言,填写验证码,中途抓包:

    QQ20150614-1@2x.png

    将PHPSESSID修改成随意一个值,目的是让其$_SESSION不存在。再将imgcode修改成空:

    QQ20150614-2@2x.png

    发送数据包,可见没有提示失败(302跳转了),说明评论成功:

    QQ20150614-3@2x.png

    载入一个字典,即可刷评论:

    QQ20150614-4@2x.png

    QQ20150614-5@2x.png


    修复方法是判断session是否为空:


<pre style="overflow:auto" ;class="prettyprint lang-php linenums">empty($_SESSION['code']) || $_SESSION['code'] != $imgcode


  不满足这个条件即提示错误。

    另外的方法是和我博客一样,使用第三方验证码,简洁又方便:极验

还有就是像我博客这样,增加一个打勾的措施也可以在一定程度上防止机器人刷评论.

注:  这只是对开了验证码的有效,没有开验证码想我博客这样的可以不修改.

原文地址:https://www.leavesongs.com/PENETRATION/emlog-comment-captcha-bypass.html


admin 发布于  2015-6-18 14:22 

Emlog gid自动补全断号id的方法 emlog

Emlog文章连接使用gid自增号作为文章的ID,但是由于后台有删除文章的功能,一旦删除文章那么gid自增就会出现断号。
    其实断号问题解决很方便,只要在添加文章的时候判断gid之前的有没有断号问题,有的话直接插入,没有的话自增。
    我这里的解决方法是这样的,我把gid自增段顺序读取作为值写入数组,自增段是从1开始的,但是数组键值是0开始的,那么先把数组($gidarr[0]='0')赋值掉,然后把$gidarr[]=gid,然后只要发现$gidarr键和键值不等就是断号了。

    找到我们的addlog添加文章和页面函数。路径在include/model/log_model.php中的


<pre style="overflow:auto" ;class="prettyprint lang-php linenums"> /**

  • 添加文章、页面
  • @param array $logData
  • @return int
    */
    function addlog($logData) {
    $kItem = array();
    $dItem = array();
    foreach ($logData as $key => $data) {
    $kItem[] = $key;
    $dItem[] = $data;
    }
    $field = implode(',', $kItem);
    $values = "'" . implode("','", $dItem) . "'";
    $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
    $logid = $this->db->insert_id();
    return $logid;
    }

    修改为:



    <pre style="overflow:auto" ;class="prettyprint lang-php linenums">function addlog($logData) {
    $kItem = array();
    $dItem = array();
    foreach ($logData as $key => $data) {
    $kItem[] = $key;
    $dItem[] = $data;
    }
    $field = implode(',', $kItem);
    $values = "'" . implode("','", $dItem) . "'";
    $gidarr[0]='0';
    $res = $this->db->query("SELECT gid From " . DB_PREFIX . "blog ORDER BY gid ASC");
    while ($row = $this->db->fetch_array($res)) {
    $gidarr[] = $row['gid'];
    }
    foreach($gidarr as $key=>$val){
    if($key!=$val){
    $field = 'gid,'.$field;
    $values = "'".$key."',".$values;
    break;
    }
    }
    $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
    $logid = $this->db->insert_id();
    return $logid;
    }

    通过改变是否需要插入语句添加gid和gid值,来自增或者插入。 假如你有多篇文章删除,添加一篇的话,只有从开始的断号,慢慢补全断号。
          友情提示,在更改文件时请先做好备份。



admin 发布于  2015-6-8 23:49 

css控制不溢出,不换行,溢出部分省略号显示 PHP

css控制不溢出,不换行,溢出部分省略号显示:white-space:nowrap;text-overflow:ellipsis;overflow:hidden;

ext-overflow 取值:
clip : 默认值。不显示省略标记(...),而是简单的裁切
ellipsis : 当对象内文本溢出时显示省略标记(...)
 
white-space : normal | pre | nowrap 取值:
normal : 默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行
pre : 换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为 standards-compliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-compliant mode ,此属性可以使用,但是不会发生作用。结果等同于 normal 。参阅 pre 对象
nowrap : 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。参阅 noWrap 属性

overflow : visible | auto | hidden | scroll 取值:
visible : 默认值。不剪切内容也不添加滚动条。假如显式声明此默认值,对象将以包含对象的 window 或 frame 的尺寸裁切。并且 clip 属性设置将失效
auto : 在必需时对象内容才会被裁切或显示滚动条
hidden : 不显示超过对象尺寸的内容
scroll : 总是显示滚动条

标签: 编程 代码 css

admin 发布于  2015-6-8 23:41 

Mrxn教你用表格给你的emlog加上个性化的版权吧 emlog

Mrxn教你用表格给你的emlog加上个性化的版权吧!

我看了大部分的emlog模板版权都很简单,基本上都是一句话写完的,很是不美观!我认为哈!!!

大家可以现在看一下我的博客的文章版权还是不错的吧! ---  效果如下图所示:

点击查看原图


<pre style="overflow:auto" ;class="prettyprint lang-html linenums"><table width="770px" cellspacing="0" cellpadding="0" table-layout: fixed border-style:dashed; border-width:1px; border-color:#EEEEEE;>
<tr>
<th width="75" align="left" bgcolor="#F9F9F9" scope="row">本文标签:</th>
<td width="420" align="left" bgcolor="#F9F9F9" white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;><?php blog_tag($logid);?></td>
<td width="105" rowspan="4" align="center" background="http://api.k780.com:88/?app=qr.vget&amp;level=L&amp;size=4&amp;appkey=11926&amp;sign=4d1a837e7024195acf7d80362b610dcf&amp;data=&lt;?php echo $logurl;?>"></td>
</tr>
<tr>
<th width="75" align="left" bgcolor="#F9F9F9" scope="row">本文标题:</th>
<td width="420" align="left" bgcolor="#F9F9F9" white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;><a href="<?php echo $logurl;?>"><?php echo $log_title; ?></a></td>
</tr>
<tr>
<th width="75" align="left" bgcolor="#F9F9F9" scope="row">本文地址:</th>
<td width="420" align="left" bgcolor="#F9F9F9" white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;><a href="<?php echo $logurl;?>"><?php echo $logurl;?></a>(扫二维码进入博客触屏版哦)</td>
</tr>
<tr>
<th colspan="2" align="left" bgcolor="#F9F9F9" scope="row" white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;>除非注明,文章均为 《<a style="color:red;"<?php blog_author($author); ?>》>></a><a href="<?php echo BLOG_URL;?>">原创</a> ,欢迎转载!转载请注明本文地址,谢谢!</th>
</tr>
</table>

上面我把代码放出来.需要的自己看着折腾吧,不会的请在留言板留言,或者是加入QQ群反馈.



标签: 代码 emlog

admin 发布于  2015-6-7 07:49 

分享4个自动生成网址二维码图片的方法 免费资源

二维码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据。高密度编码,信息容量大。一直广泛用于电子商务、广告媒体、支付等等平台。

    二维码在线生成的免费服务并不新奇,现在网络提供二维码生成服务的网站非常多,如果你自己感兴趣也可以自己下载一个二维码生成器本地生成。这次我们就来说说如何在自己的博客或者网站上,自动根据当前网址生成二维码吧。

说明:把url=后面的网址改成你的,二者任选一。

http://b.bshare.cn/barCode?site=weixin&amp;url=https://mrxn.net

http://s.jiathis.com/qrcode.php?url=https://mrxn.net

说明:下面是EMLOG程序专用的,把代码复制到EMLOG模板echo_log.php你需要的位置即可。

http://b.bshare.cn/barCode?site=weixin&amp;url=&lt;?php echo Url::log($logid);?>

http://s.jiathis.com/qrcode.php?url=&lt;?php echo Url::log($logid);?> 


 第三个(推荐):

http://qr.liantu.com/api.php?text=

引用方式如下:


  • 可以使用<img src="http://qr.liantu.com/api.php?text=x"/>进行引用
  • 2下载图片 http://qr.liantu.com/api.php?text=x 进行引用
  • 3直接引用网址 http://qr.liantu.com/api.php?text=x
x 必须用UTF8编码格式,x内容出现 & 符号时,请用 %26 代替,
换行符使用 %0A
引用参数

以下参数可用于引用二维码图片时定义图片样式

参数引用例子:http://qr.liantu.com/api.php?&bg=ffffff&fg=cc0000&text=x

参数 描述 赋值例子
bg 背景颜色 bg=颜色代码,例如:bg=ffffff
fg 前景颜色 fg=颜色代码,例如:fg=cc0000
gc 渐变颜色 gc=颜色代码,例如:gc=cc00000
el 纠错等级 el可用值:h\q\m\l,例如:el=h
w 尺寸大小 w=数值(像素),例如:w=300
m 静区(外边距) m=数值(像素),例如:m=30
pt 定位点颜色(外框) pt=颜色代码,例如:pt=00ff00
inpt 定位点颜色(内点) inpt=颜色代码,例如:inpt=000000
logo logo图片 logo=图片地址,例如:logo=http://www.liantu.com/images/2013/sample.jpg


第四个(推荐): 官网地址: http://www.k780.com

1.png

介绍
在线生成二维码
注:API URL可直接在html img标签中使用,如data参数为中文请先urlencode('中文')

qr.get为匿名接口,每IP每小时不得超出720次.
付费用户请使用qr.vget接口参数带入您的appkey及sign,其它不变.
请求方式
Get/Post
请求参数说明
参数名称 类型 是否必须 说明
data string 1 需要生成二维码内例如:test
level string 0 纠错级别 <'L','M','Q','H'>,默认: L
size number 0 大小 <1-20>,默认: 6
返回参数说明
参数名称 类型 说明
success {0/1} 执行结果,当出错时将会出现此节点出现,否则不出现
msg string 出错消息,当出错时将会出现此节点,否则不出现
请求示例json
http://api.k780.com:88/?app=qr.get&data=test&level=L&size=6
请求示例jsonp
http://api.k780.com:88/?app=qr.get&data=test&level=L&size=6
请求示例xml
http://api.k780.com:88/?app=qr.get&data=test&level=L&size=6
那我们emlog可以这样使用:

$url = Url::log($arr['logid']);//提取本页面的URL

然后php调用就OK

<?php echo Url::log($logid);?> 


admin 发布于  2015-6-7 04:49