PHPCMS实现自动推送URL到百度站长平台

 更新时间:2016年11月25日 15:34  点击:2473
我们一起来看一篇关于PHPCMS实现自动推送URL到百度站长平台,希望此教程能够帮助到各位朋友。


百度站长平台开放url推送接口,可以使用调用接口的形式主动及时推送url给百度,下面演示在PHPCMS系统中如何使用接口自动推送URL到百度站长平台。


在PHPCMS的libs/functions/global.func.php文件中添加一个百度推送函数:


/**
 * 百度站长平台链接推送
 * @param $bdurls url数组
 * @date 2015.8.8 15:19
 */
function push_baidu($bdurls){
    $api = 'http://data.zz.baidu.com/urls?site=www.dayecn.com&token=自己去百度站长平台获取';
    $ch = curl_init();
    $options =  array(
        CURLOPT_URL => $api,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => implode("\n", $bdurls),
        CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
    );
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    $result = json_decode($result, 1);
    return $result;
}

在需要推送的动作,如发布一篇文章,修改一篇文章,或者生成一篇静态文章页的时候可以调用这个方法。比如我想在批量生成静态页的地方调用这个接口,去modules/content/crete_html.php文件的batch_show方法里,调用上面定义的方法:

foreach($rs as $r) {
 if($r['islink']) continue;
 $this->db->table_name = $tablename;
 $r2 = $this->db->get_one(array('id'=>$r['id']));
 if($r2) $r = array_merge($r,$r2);
 //判断是否为升级或转换过来的数据
 if(!$r['upgrade']) {
  $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']);
 } else {
  $urls[1] = $r['url'];
 }
 $bdurls[] = $r['url'];
 $this->html->show($urls[1],$r,0,'edit',$r['upgrade']);
}
//推送百度平台
$push_result = push_baidu($bdurls);
$msg = '';
if($push_result['success'] < 1){
 $msg = '百度联盟推送链接失败!';
}
最后几行是修改后新加的代码,首先要把更新哪些静态页的url放进数组里,再调用这个方法传参即可。

要在其他动作如添加或者编辑文章的时候推送,原理是一样的,找到对应的地方调用推送方法就行了

百度链接提交三种方式:

1、主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。

2、sitemap:您可以定期将网站链接放到sitemap中,然后将sitemap提交给百度。百度会周期性的抓取检查您提交的sitemap,对其中的链接进行处理,但收录速度慢于主动推送。

3、手工提交:一次性提交链接给百度,可以使用此种方式。


下面介绍使用curl主动推送链接的方式PHP示例,使用curl扩展:

 

$urls = array(
    'http://www.example.com/1.html',
    'http://www.example.com/2.html',
);
$api = 'http://data.zz.baidu.com/urls?site=www.dayecn.com&token=Db0ZoYUOwUyEp87Z';
$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 $result;
首先要在百度站长平台验证站点,然后获取token密钥,才有权限推送url给百度。百度站长平台:http://zhanzhang.baidu.com

可以在发布一篇文章的时候就把这篇文章的url推送给百度站长平台,或者批量推送,通过返回的$result状态判断推送是否成功,返回的状态码说明:

字段 是否必选 参数类型 说明
success int 成功推送的url条数
remain int 当天剩余的可推送url条数
not_same_site array 由于不是本站url而未处理的url列表
not_valid array 不合法的url列表
我们在php中上传文件最多使用ftp来,但curl也是可以实现的这样不需要ftp即可直接上传了,下面一起来看看PHP使用CURL向远程服务器上传图片的原理吧。


如果图片等资源服务器是远程的,图片上传可以通过cURL方式传到远程服务器,本文简单介绍PHP使用cURL向远程服务器上传图片的原理。


通过cURL传送图片代码片段:


$data = array('img'=>'@'. dirname(__FILE__).'/img/1.jpg');

注意,PHP5.5后不能使用@表示文件。

在文件名前加上@语法表示上传文件,这在PHP5.3中是正常的,但是在PHP5.6中彻底废除了@语法,导致上传图片无法使用。


//支持远程文件上传
if(empty($urlinfo['host'])){
    $tmp_name=dirname($file['tmp_name']).'/'.$file['title'].'.'.$file['extension'];//加上文件后缀
    rename($file['tmp_name'],$tmp_name);
    $fields['file'] = '@'.$tmp_name;//加@符号curl就会把它当成是文件上传处理
}else{
    $fields['url']=$file['tmp_name'];
}

第5行,在文件名前加上@符合,curl会把它当作文件上传处理,这在PHP5.3中是正常的。cURL上传文件代码如下:


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$this->config['postUrl']);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); //连接超时
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
$data=curl_exec ($ch);
$info=curl_getinfo($ch);
curl_close($ch);

在PHP5.6中,curl中CURLOPT_POSTFIELDS参数这样写表示上传文件:


curl_setopt(ch, CURLOPT_POSTFIELDS, [
    'file' => new CURLFile(realpath('image.png')),
]);

CURLFile方法是在PHP5.5中新加的,在PHP5.6中彻底废除了@语法,因此要么使用PHP5.3的方式,要么使用PHP5.6的方式,两者只能选其一,不能兼容。实在没办法,可以用:


if (version_compare(phpversion(), '5.4.0') >= 0)

这个函数来判断PHP版本选择不同的方式,但是这种方式不推荐,还是统一环境最好。

如果一定要兼容不同版本的PHP,参考以下写法:


if(empty($urlinfo['host'])){
    $tmp_name=dirname($file['tmp_name']).'/'.$file['title'].'.'.$file['extension'];//加上文件后缀
    rename($file['tmp_name'],$tmp_name);
    if(version_compare(phpversion(),'5.5.0') >= 0 && class_exists('CURLFile')){
        $fields['file'] = new CURLFile(realpath($tmp_name));
    }else{
        $fields['file'] = '@'.$tmp_name;//加@符号curl就会把它当成是文件上传处理
    }
}else{
    $fields['url']=$file['tmp_name'];
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$this->config['postUrl']);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); //连接超时
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
$data=curl_exec ($ch);
$info=curl_getinfo($ch);
curl_close($ch);

 

然后远程服务器上up.php接受请求保存图片的代码片段示例:

 

if($_FILES){
  $filename = $_FILES['img']['name'];
  $tmpname = $_FILES['img']['tmp_name'];
  if(move_uploaded_file($tmpname,dirname(__FILE__).'/upload/'.$filename)){
     echo json_encode('上传成功');
  }else{
     $data = json_encode($_FILES);
     echo $data;
 }
}
它实际上跟本地传文件原理是一样的,只是通过cURL把文件传送过去,还是使用$_FILES来接收文件进行保存。

PHP对验证码的认证过程文章重点为告诉各位如何防止机器注册这个问题了,下面我们一起来看看例子,希望对各位有帮助。


    这段时间在写php脚本,接触到web前端以及web安全问题比较多,这时给大家简单地谈一下我们网站验证码的验证过程及其安全问题。

    从三个方面去谈一下关于验证码的使用:验证码的生成,验证的过程,验证中注意的安全问题。

    验证码的生成,首先还是要说说验证码的作用。众所周知,验证码的存在,是为了防止一些机器,或是刷恶意留言、无限注册用户或是暴力破解账号密码。现在普通的验证码是由一个php脚本生成的,比如打开我们emlog的include/lib/文件夹,底下有个checkcode.php,这就是生成验证码的脚本。

    我们可以简单看一下它的代码:
session_start();

$randCode = '';
$chars = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPRSTUVWXYZ23456789';
for ( $i = 0; $i < 5; $i++ ){
 $randCode .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}

$_SESSION['code'] = strtoupper($randCode);

$img = imagecreate(70,22);
$bgColor = isset($_GET['mode']) && $_GET['mode'] == 't' ? imagecolorallocate($img,245,245,245) : imagecolorallocate($img,255,255,255);
$pixColor = imagecolorallocate($img,mt_rand(30, 180), mt_rand(10, 100), mt_rand(40, 250));

for($i = 0; $i < 5; $i++){
 $x = $i * 13 + mt_rand(0, 4) - 2;
 $y = mt_rand(0, 3);
 $text_color = imagecolorallocate($img, mt_rand(30, 180), mt_rand(10, 100), mt_rand(40, 250));
 imagechar($img, 5, $x + 5, $y + 3, $randCode[$i], $text_color);
}
for($j = 0; $j < 60; $j++){
 $x = mt_rand(0,70);
 $y = mt_rand(0,22);
 imagesetpixel($img,$x,$y,$pixColor);
}

header('Content-Type: image/png');
imagepng($img);
imagedestroy($img);

    第一个for循环在$chars这个字符串中随机取了5个字符,这实际上就是我们的真实验证码。然后我们可以看到:$_SESSION['code'] = strtoupper($randCode); 他把我们的验证码转换成大写赋值到session里了。

    有的朋友要问,问什么赋值到SESSION里了不赋值到COOKIE里。这就说明你对他们二者关系不了解。cookie和session都作为网站临时保存客户端相关信息的一个“容器”,但是cookie是保存在客户端里的,也就是网站的访问者可以随意查看和修改cookie里的内容,那就没有验证码存在的意义了,因为用户可以直接从cookie中读到验证码,当然机器也可以。而session是保存在服务器上的内容,我生成好的验证码,用户不可能读取到。

    再看源码,后面的两个循环分别是生成彩色的带验证码的图片和在图片上加噪点。是为了加大机器识别验证码的难度。最后我们看到,header('Content-Type: image/png'); 把我们这个页面定义成为图片的格式。

    这样,我们就可以用html代码来让验证码显示出来:


<img src="checkcode.php" />

     类似这样:
    那么验证的过程就是,我们首先生成5个随机字符,保存到session里。然后把这5个字符画成一个图片给用户看,让用户识别,填写在表单里提交后和我们session里的验证码比对。

    其实就是这么简单。

    最后来说说验证码的安全性。我们emlog和wordpress其实验证码并不是很强大,我们这个简单的验证码可以写一个小脚本很容易地识别,所以并不适合比较大型的网站使用。像类似腾讯、百度这种网站的验证码很多字符能旋转、扭曲,并且背影上的干扰物更多,甚至是中文验证码。不过对于小型网站来说,普通等级的验证码足矣防范很多刷评论的机器。

    还有一点很重要,注意验证码使用过后要记住删除相应的session。否则验证码就失去了其意义,这也是我之前犯过的错误。

    为什么这么说。作为一个正常用户,我们每访问一次需要填写验证码的页面,生成验证码的脚本都会执行一次,也就说会生成一个新验证码赋值到session里,没有任何问题。但对于一个机器(或一个暴力破解密码脚本),它第一次访问需要填写验证码的页面,然后在session中得到一个验证码,它以后就不用再次访问这个页面了。直接把第一次的数据包更改并再次发送即可,于是,如果没有清除session的网站,每次的验证码都和第一次相同,也就丧失了验证码的本来作用。

    这是我们做网站需要注意的地方。希望大家在写程序的时候多注意网站的安全性,避免在网站发布后出现问题

 

通过网上的一些实例,拼凑出一个验证码登陆测试程序。详细代码如下:

生成验证码程序ttt.php。通过random生成随机数,然后保存在session里:

 


login.htm页面

 


<html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head>
<title>login</title>
<style type="text/css">
<!--
.textbox {
height: 18px;
width: 100px;
}
.text {
font-size: 14px;
vertical-align: bottom;
color: #0000FF;
}
.style1 {
font-size: 18px;
color: #0000FF;
font-family: "幼圆";
}
-->
</style>
</head>
<body>
<table width="200">
<tr><td align="center" valign="bottom" class="style1" bgcolor="#C7D3F9">请输入验证码</td>
</tr>
</table>
<form method="post" action="login.php">
<table width="200" border="0" bgcolor="C7D3F9">
  <tr>
    <td class="text">验证码:</td>
    <td align="right" valign="bottom"><input type="text" name="auth" class="textbox"></td>
  </tr>
</table>
<img src="ttt.php?act=yes" align="middle">
<table width="200"><tr><td align="right"><input type="button" value="看不清楚验证码" onclick="window.location.reload();"><input name="submit" type="submit" value="Submit"></td></tr></table>
</form>
</body>
</html>


login.php

<?php
session_start();
$name = $_POST['user'];
$password = $_POST['passwd'];
$auth = $_POST['auth'];
#require("db.php");
#$db = new db();
#$sql = "select * from user where name = '$name' and password = '$password'";
#$result = $db->query($sql);
if($_SESSION['seccode'] == $auth)
{
  #$_SESSION['user'] = $name;
  #$_SESSION['passwd'] = $password;
 # header("Location: main.php");
#echo ("登录成功!");

$_SESSION['seccode']='';
  print '
  <script language=javascript>
   alert("登录成功!");
  </script>';
}else
{
  print '
  <script language=javascript>
   alert("登录失败,请重新登录!");
   self.window.location="login.html";
  </script>';
}
?>

ttt.php验证码生成程序

<?php
session_start();

function random($length, $numeric = 0) {
 mt_srand((double)microtime() * 1000000);
 if($numeric) {
  $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
 } else {
  $hash = '';
  $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
  $max = strlen($chars) - 1;
  for($i = 0; $i < $length; $i++) {
   $hash .= $chars[mt_rand(0, $max)];
  }
 }
 return $hash;
}

#if(preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) != preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_HOST'])) {
# exit('Access Denied');
#}

 

//if($_GET['update']) {
 $seccode = random(4, 1);
//}

#if($seccode < 1 || $seccode > 9999) {
# exit('Access Denied');
#}

$_SESSION['seccode'] = $seccode;
$seccode = sprintf('%04d', $seccode);

if(!$nocacheheaders) {
 @header("Expires: -1");
 @header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
 @header("Pragma: no-cache");
}

if(function_exists('imagecreate') && function_exists('imagecolorset') && function_exists('imagecopyresized') && function_exists('imagecolorallocate') && function_exists('imagesetpixel') && function_exists('imagechar') && function_exists('imagecreatefromgif') && function_exists('imagepng')) {

 $im = imagecreate(62, 25);
 $backgroundcolor = imagecolorallocate ($im, 255, 255, 255);

 $numorder = array(1, 2, 3, 4);
 shuffle($numorder);
 $numorder = array_flip($numorder);

 for($i = 1; $i <= 4; $i++) {
  $imcodefile = 'seccode/'.$seccode[$numorder[$i]].'.gif';
  $x = $numorder[$i] * 13 + mt_rand(0, 4) - 2;
  $y = mt_rand(0, 3);
  if(file_exists($imcodefile)) {
   $imcode = imagecreatefromgif($imcodefile);
   $data = getimagesize($imcodefile);
   imagecolorset($imcode, 0 ,mt_rand(50, 255), mt_rand(50, 128), mt_rand(50, 255));
   imagecopyresized($im, $imcode, $x, $y, 0, 0, $data[0] + mt_rand(0, 6) - 3, $data[1] + mt_rand(0, 6) - 3, $data[0], $data[1]);
  } else {
   $text_color = imagecolorallocate($im, mt_rand(50, 255), mt_rand(50, 128), mt_rand(50, 255));
   imagechar($im, 5, $x + 5, $y + 3, $seccode[$numorder[$i]], $text_color);
  }
 }

 $linenums = mt_rand(10, 32);
 for($i=0; $i <= $linenums; $i++) {
  $linecolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  $linex = mt_rand(0, 62);
  $liney = mt_rand(0, 25);
  imageline($im, $linex, $liney, $linex + mt_rand(0, 4) - 2, $liney + mt_rand(0, 4) - 2, $linecolor);
 }

 for($i=0; $i <= 64; $i++) {
  $pointcolor = imagecolorallocate($im, mt_rand(50, 255), mt_rand(50, 255), mt_rand(50, 255));
  imagesetpixel($im, mt_rand(0, 62), mt_rand(0, 25), $pointcolor);
 }

 $bordercolor = imagecolorallocate($im , 150, 150, 150);
 imagerectangle($im, 0, 0, 61, 24, $bordercolor);

 header('Content-type: image/png');
 imagepng($im);
 imagedestroy($im);

} else {

 $numbers = array
  (
  0 => array('3c','66','66','66','66','66','66','66','66','3c'),
  1 => array('1c','0c','0c','0c','0c','0c','0c','0c','1c','0c'),
  2 => array('7e','60','60','30','18','0c','06','06','66','3c'),
  3 => array('3c','66','06','06','06','1c','06','06','66','3c'),
  4 => array('1e','0c','7e','4c','2c','2c','1c','1c','0c','0c'),
  5 => array('3c','66','06','06','06','7c','60','60','60','7e'),
  6 => array('3c','66','66','66','66','7c','60','60','30','1c'),
  7 => array('30','30','18','18','0c','0c','06','06','66','7e'),
  8 => array('3c','66','66','66','66','3c','66','66','66','3c'),
  9 => array('38','0c','06','06','3e','66','66','66','66','3c')
  );

 for($i = 0; $i < 10; $i++) {
  for($j = 0; $j < 6; $j++) {
   $a1 = substr('012', mt_rand(0, 2), 1).substr('012345', mt_rand(0, 5), 1);
   $a2 = substr('012345', mt_rand(0, 5), 1).substr('0123', mt_rand(0, 3), 1);
   mt_rand(0, 1) == 1 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a1);
   mt_rand(0, 1) == 0 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a2);
  }
 }

 $bitmap = array();
 for($i = 0; $i < 20; $i++) {
  for($j = 0; $j < 4; $j++) {
   $n = substr($seccode, $j, 1);
   $bytes = $numbers[$n][$i];
   $a = mt_rand(0, 14);
   switch($a) {
    case 1: str_replace('9', '8', $bytes); break;
    case 3: str_replace('c', 'e', $bytes); break;
    case 6: str_replace('3', 'b', $bytes); break;
    case 8: str_replace('8', '9', $bytes); break;
    case 0: str_replace('e', 'f', $bytes); break;
   }
   array_push($bitmap, $bytes);
  }
 }

 for($i = 0; $i < 8; $i++) {
  $a = substr('012', mt_rand(0, 2), 1) . substr('012345', mt_rand(0, 5), 1);
  array_unshift($bitmap, $a);
  array_push($bitmap, $a);
 }

 $image = pack('H*', '424d9e000000000000003e000000280000002000000018000000010001000000'.
   '0000600000000000000000000000000000000000000000000000FFFFFF00'.implode('', $bitmap));

 header('Content-Type: image/bmp');
 echo $image;

}

?>

in_array函数是判断数据中是否存在指定的内容了,对于这个函数用法非常的简单但在使用过程中会我发现有一些问题,下面我们就对于这些问题来看看如何处理吧。


先介绍一下需求背景:

发票方式:
0=捐赠(不要问我为什么,历史原因)
1=对中寄送
2=索取
3=电子发票

现在要对用户提交的数据进行检测:

if(!in_array($_POST['invoice_action'], array(0,1,2,3))){
    throw new Exception('请选择正确的发票方式');
}

这个时候出现一个问题,如果压根就不存在$_POST[‘invoice_action’]这个值,为什么没有抛出异常?
经确认,这就是PHP作为弱类型语言的一个坑!!!没错,这是一个坑!!!
看一下这组代码:


echo in_array('', array(0)) ? 1 : 0;     // 结果:1
echo in_array(null, array(0)) ? 1 : 0;   // 结果:1
echo in_array(false, array(0)) ? 1 : 0;  // 结果:1

这么大一个坑,我们要怎么绕过或者填起呢?
方法一:in_array支持第三个参数,强制对数据类型检测


echo in_array('', array(0), true) ? 1 : 0;     // 结果:0
echo in_array(null, array(0), true) ? 1 : 0;   // 结果:0
echo in_array(false, array(0), true) ? 1 : 0;  // 结果:0

方法二:依然是数据类型方向,把数组中的0改为字符串


echo in_array('', array('0'), true) ? 1 : 0;     // 结果:0
echo in_array(null, array('0'), true) ? 1 : 0;   // 结果:0
echo in_array(false, array('0'), true) ? 1 : 0;  // 结果:0

php的慢速日志引起的Mysql 2013错误怎么办,下面我们就一起来看看这个问题的解决办法,希望例子能够帮助到各位。


Description:
————
If mysql query is longer as request_slowlog_timeout, connection breaks.

Test script:


<?php
// request_slowlog_timeout = 10s  (at /etc/php5/fpm/php-fpm.conf)
 
// $mysqli =
// ...
$query = "SELECT SLEEP (15)";
 
$res = $mysqli->query($query);
if (!$res) {
    echo $mysqli->error; // Error Code: 2013. Lost connection to MySQL server during query
    exit;
}
Expected result:
—————-
connection must be preserved and the request should be executed

[!--infotagslink--]

相关文章

  • 百度网盟和google网盟推广那种效果好

    专做了百度和google的网盟推广以作推广效果的评估比较。百度的周期为6天,google为4天。   从百度的统计数据可以看出这六天的点击次数总共为464,平均点击花费了0.30元...2017-07-06
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • MyBatis-Plus自动填充功能失效导致的原因及解决

    这篇文章主要介绍了MyBatis-Plus自动填充功能失效导致的原因及解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • SQLMAP结合Meterpreter实现注入渗透返回shell

    sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25
  • PHP实现今天是星期几的几种写法

    复制代码 代码如下: // 第一种写法 $da = date("w"); if( $da == "1" ){ echo "今天是星期一"; }else if( $da == "2" ){ echo "今天是星期二"; }else if( $da == "3" ){ echo "今天是星期三"; }else if( $da == "4"...2013-10-04
  • 如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)

    以下是使用js代码实现百度地图计算两地距离,代码如下所示:<script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script><script language="javascript" type="text/javascript" src="js/...2015-10-30
  • 百度联盟封号了解封申请攻略

    百度联盟封号对于许多的站长来说肯定是会影响到心情的,那么既然是百度联盟封号了我们就肯定有一些原因的,虽然不是你自己搞的或一些其它因素都有可能,我们下面整理一下百...2016-10-10
  • C#实现延时并自动关闭MessageBox的方法

    这篇文章主要介绍了C#实现延时并自动关闭MessageBox的方法,非常实用的功能,需要的朋友可以参考下...2020-06-25
  • 原生js实现fadein 和 fadeout淡入淡出效果

    js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。 先来看看设置透明度的兼容性代码: 复制代码 代码如下: function setOpacity(ele, opacity) { if (...2014-06-07
  • 基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标

    本文给大家介绍javascript实现高德地图和百度地图提取行政区边界经纬度坐标的相关知识,本文实用性非常高,代码简单易懂,需要的朋友参考下吧...2016-01-24
  • 网站被百度拔毛 一月重新回归经验分离

    网站被K后,笔者做的第一件事便是在网站上增加更新模块。百度算法更新,对于网站内容给予了相当大的权重,这是笔者网站最欠缺的部分,保证了及时的更新便有了吸引蜘蛛爬取的...2016-10-10
  • 如何用PS将百度熊抱枕做成大头枕?

    我们知道百度熊抱枕很大,只想要百度熊的大头,该怎么办呢?下面我们就来看看详细的教程。 1、首先打开photoshopCS6软件,新建一个“1600*1600”的白色背景图,并从右上角...2016-12-31
  • Android中用HttpClient实现Http请求通信

    本文我们需要解决的问题是如何实现Http请求来实现通信,解决Android 2.3 版本以后无法使用Http请求问题,下面请看正文。 Android开发中使用HttpClient来开发Http程序...2016-09-20
  • 如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)

    以下是使用js代码实现百度地图计算两地距离,代码如下所示:<script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script><script language="javascript" type="text/javascript" src="js/...2015-10-30
  • SpringMvc自动装箱及GET请求参数原理解析

    这篇文章主要介绍了SpringMvc自动装箱及GET请求参数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
  • mysql存储过程实现split示例

    复制代码 代码如下:call PROCEDURE_split('分享,代码,片段',',');select * from splittable;复制代码 代码如下:drop PROCEDURE if exists procedure_split;CREATE PROCEDURE `procedure_split`( inputstring varc...2014-05-31