仿dedecms顶评[顶,踩]功能源码下载
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Digg Demo</title>
<style>
.buttons{margin:20px 12px 12px;text-align:center;}
.buttons img{margin:0 5px 0 0;}
.mark{padding:15px 0 0 40px;overflow:hidden;zoom:1;}
#mark0, #mark1{width:189px;height:48px;background:url('./img/mark.gif') no-repeat -189px 0;border:0px none;cursor:pointer;position:relative;margin:0;padding:0;overflow:hidden;float:left}
#mark1{background-position:-378px 0;margin-left:10px;}
.bar{position:absolute;left:9px;top:32px;width:55px;height:5px;border:1px solid #40a300;background-color:#fff;overflow:hidden;text-align:left;}
#mark1 .bar{border-color:#555;}
.bar div{background:url('./img/sprites.gif') repeat-x 0 -265px;height:5px;overflow:hidden}
#mark1 .bar div{background-position:0 -270px;}
#barnum1, #barnum2{position:absolute;top:30px;left:70px;font:400 10px/12px arial;color:#333;}
</style>
<script language="javascript" src="./digg.js"></script>
<script type="text/javascript">
var url ='http://127.0.0.1/digg/';
</script>
</head>
<body>
<div class="mark">
<div id="mark0" onmouseover="this.style.backgroundPosition='0 0'" onmouseout="this.style.backgroundPosition='-189px 0'" onfocus="this.blur()" onClick="sEval(1190,1)">
<div class="bar"><div id="eimg1" style="width:50px"></div></div>
<span id="barnum1"><span id="sp1">92.7%</span> (<span id="s1">18199</span>)</span>
</div>
<div id="mark1" onmouseover="this.style.backgroundPosition='-567px 0'" onmouseout="this.style.backgroundPosition='-378px 0'" onfocus="this.blur()" onclick="sEval(1190,2)">
<div class="bar"><div id="eimg2" style="width:4px"></div></div>
<span id="barnum2"><span id="sp2">7.3%</span> (<span id="s2">1431</span>)</span>
</div>
</div>
</body>
</html>
js代码
function $Obj(o){
return document.getElementById(o);
}
var etag=false;
function sEval(softid,et){
if(etag==true)
{
alert('您已经投过票了,感谢您的参与!');
return;
}
var file=url +'digg.php?et='+et+'&id='+softid;
var html_doc=document.getElementsByTagName('head')[0];
var js=document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', file);
js.onreadystatechange=function(){
if(js.readyState=='loaded'||js.readyState=='complete'){
sEvalRes();
}
}
js.onload=function(){
sEvalRes();
}
html_doc.appendChild(js);
etag=true;
}
function sEvalRes(){
if(re[2]=='success'){
var s=$Obj('s'+re[1]).innerHTML;
$Obj('s'+re[1]).innerHTML=parseInt(s)+1;
sUpdate();
alert(re[3]);
}
else if(re[2]=='fail'){
alert(re[3]);
}
else{
alert('未知错误');
}
}
function sUpdate(){
var sUp=parseInt($Obj('s1').innerHTML);
var sDown=parseInt($Obj("s2").innerHTML);
var sTotal=sUp+sDown;
var spUp=(sUp/sTotal)*100;
spUp=Math.round(spUp*10)/10;
var spDown=100-spUp;
spDown=Math.round(spDown*10)/10;
$Obj('sp1').innerHTML=spUp+'%';
$Obj('sp2').innerHTML=spDown+'%';
$Obj('eimg1').style.width = parseInt((sUp/sTotal)*55)+'px';
$Obj('eimg2').style.width = parseInt((sDown/sTotal)*55)+'px';
}
php代码
<?php
$id =intval($id);
$et =intval($et);
if($_COOKIE['digg'.$id]=='' || empty($_COOKIE['digg'.$id]) ){
setcookie("digg".$id, $id, time()+3600); /* expire in 1 hour */
//读写数据库操作部分省略
echo "var re=new Array();re[0]=".$id.";re[1]=".$et.";re[2]="success";re[3]="投票成功!";";
}else{
echo "var re=new Array();re[0]=".$id.";re[1]=".$et.";re[2]="fail";re[3]="嬲你的, php 根据IP显示地区代码
<?php
define('IPDATA_MINI', PHPCMS_ROOT.'include/ipdata/mini.Dat');
define('IPDATA_FULL', PHPCMS_ROOT.'include/ipdata/QQWry.Dat');
class ip_area
{
var $fp = NULL;
var $func;
var $offset;
var $index;
function ip_area()
{
if(@file_exists(IPDATA_MINI))
{
$this->func = 'data_mini';
$this->fp = @fopen(IPDATA_MINI, 'rb');
$this->offset = unpack('Nlen', fread($this->fp, 4));
$this->index = fread($this->fp, $this->offset['len'] - 4);
}
elseif(@file_exists(IPDATA_FULL))
{
$this->func = 'data_full';
$this->fp = @fopen(IPDATA_FULL, 'rb');
}
}
function get($ip)
{
$return = '';
if(preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip))
{
$iparray = explode('.', $ip);
if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31)))
{
$return = 'LAN';
}
elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255)
{
$return = 'Invalid IP Address';
}
else
{
$return = $this->func ? $this->{$this->func}($ip) : '';
if(strpos($return, ' ') !== false) $return = substr($return, 0, strpos($return,' '));
}
if(strtolower(CHARSET) == 'utf-8') $return = iconv('gbk', 'utf-8', $return);
}
return $return;
}
function data_mini($ip)
{
$ipdot = explode('.', $ip);
$ipdot[0] = (int)$ipdot[0];
$ipdot[1] = (int)$ipdot[1];
$ip = pack('N', ip2long($ip));
$length = $this->offset['len'] - 1028;
$start = unpack('Vlen', $this->index[$ipdot[0] * 4] . $this->index[$ipdot[0] * 4 + 1] . $this->index[$ipdot[0] * 4 + 2] . $this->index[$ipdot[0] * 4 + 3]);
for($start = $start['len'] * 8 + 1024; $start < $length; $start += 8)
{
if($this->index{$start} . $this->index{$start + 1} . $this->index{$start + 2} . $this->index{$start + 3} >= $ip)
{
$this->index_offset = unpack('Vlen', $this->index{$start + 4} . $this->index{$start + 5} . $this->index{$start + 6} . "x0");
$this->index_length = unpack('Clen', $this->index{$start + 7});
break;
}
}
fseek($this->fp, $this->offset['len'] + $this->index_offset['len'] - 1024);
if($this->index_length['len'])
{
return str_replace('- ', '', fread($this->fp, $this->index_length['len']));
}
else
{
return 'Unknown';
}
}
function data_full($ip)
{
rewind($this->fp);
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
if(!($DataBegin = fread($this->fp, 4)) || !($DataEnd = fread($this->fp, 4)) ) return;
@$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
@$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = $ip2num = $ip1num = 0;
$ipAddr1 = $ipAddr2 = '';
$EndNum = $ipAllNum;
while($ip1num > $ipNum || $ip2num < $ipNum)
{
$Middle= intval(($EndNum + $BeginNum) / 2);
fseek($this->fp, $ipbegin + 7 * $Middle);
$ipData1 = fread($this->fp, 4);
if(strlen($ipData1) < 4)
{
fclose($this->fp);
return 'System Error';
}
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
if($ip1num > $ipNum)
{
$EndNum = $Middle;
continue;
}
$DataSeek = fread($this->fp, 3);
if(strlen($DataSeek) < 3)
{
fclose($this->fp);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($this->fp, $DataSeek);
$ipData2 = fread($this->fp, 4);
if(strlen($ipData2) < 4)
{
fclose($this->fp);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
if($ip2num < $ipNum)
{
if($Middle == $BeginNum)
{
fclose($this->fp);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
$ipFlag = fread($this->fp, 1);
if($ipFlag == chr(1))
{
$ipSeek = fread($this->fp, 3);
if(strlen($ipSeek) < 3)
{
fclose($this->fp);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($this->fp, $ipSeek);
$ipFlag = fread($this->fp, 1);
}
if($ipFlag == chr(2))
{
$AddrSeek = fread($this->fp, 3);
if(strlen($AddrSeek) < 3)
{
fclose($this->fp);
return 'System Error';
}
$ipFlag = fread($this->fp, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($this->fp, 3);
if(strlen($AddrSeek2) < 3)
{
fclose($this->fp);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($this->fp, $AddrSeek2);
}
else
{
fseek($this->fp, -1, SEEK_CUR);
}
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($this->fp, $AddrSeek);
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr1 .= $char;
}
else
{
fseek($this->fp, -1, SEEK_CUR);
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($this->fp, 1);
if($ipFlag == chr(2))
{
$AddrSeek2 = fread($this->fp, 3);
if(strlen($AddrSeek2) < 3)
{
fclose($this->fp);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($this->fp, $AddrSeek2);
}
else
{
fseek($this->fp, -1, SEEK_CUR);
}
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr2 .= $char;
}
if(preg_match('/http/i', $ipAddr2)) $ipAddr2 = '';
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') $ipaddr = 'Unknown';
return ''.$ipaddr;
}
function close()
{
@fclose($this->fp);
}
}
?>
本文章来讲一个简单的关于strrpos explode is_array等函数的使用方法哦,
关于strrpos判断
字符中是否存在要查的字符strrpos($j_rs->selectedjob,'-')
关于explode判断
把字符以什么形式开成数组array = explode('-',$j_rs->selectedjob);
is_array
判断当前参数是否是数组is_array( $array )
$ja ='0';
$jb ='0';
if(strrpos($j_rs->selectedjob,'-') )//用strrpos
{
$array = explode('-',$j_rs->selectedjob);
if( is_array( $array ) )
{
$ja =getJobType( $array[0] );
$jb =getJobType( $array[1] );
}
else
{
$ja =getJobType( $j_rs->selectedjob );
}
}
else
{
$ja =getJobType( $j_rs->selectedjob );
}
i
下面我们一一看讲一下这些函数的使用教程吧。
in_array($array)
这个函数是判断当前值是否为数组哦
EX:
$array= array(1,2);
if( in_array( $array ) )
{
die('in_array判断它是数组');
}
echo '不是数组';
result:
in_array判断它是数组
trim($value)
trim函数是去除参数的空值包括null," "
isset($value)
isset是判断变量是否存在
unset($value)
销毁变量
下面我们来看看isset,unset实例吧。
$a = 'v';
isset( $a ) ? $a:NULL;
unset( $a );
isset( $a ) ? $a:NULL;
结果是:
v
Null
is_numeric($num)
$num =3;
if( is_numeric($num) )
{
echo $num;
}
else
{
echo '不是数值';
}
本站原创转载注明来自www.111cn.net/phper/php.html
php 去除数组空值
我们要使用教程中经常会看到关于如何去除php数据中的空值了,下面我们提供二种去除空值的方法
$t=",,,,中国WEB第一站,www.111cn.net"
$ar= explode(',',$t);
function filter($var)
{
if($var == '')
{
return false;
}
return true;
}
array_filter($ar, "filter");
/*
foreach( $ar as $temp=>$k)
{
if( $k )
{
unset( $ar[$k] );
}
}
print_r( $ar );
*/
上面函数得出的结果为
中国WEB第一站,www.111cn.net
本站原创转载注明来自www.111cn.net/phper/php.html
相关文章
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 拜读一个开源框架,最想学到的就是设计的思想和实现的技巧。废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过,不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery又给扫一遍我也不会照本宣科的翻译...2014-05-31
- 举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07
- 这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
- 有很多人在做微信的扫一扫下载。但是在微信更新之后微信将该功能给禁止掉了,也不能说是全面禁止吧,因为腾讯、微信是一家嘛,通过应用宝审核的应用好像还是可以通过扫一扫直接下载的,下面通过本篇文章给大家介绍微信扫一扫下载app的代码片段,感兴趣的朋友一起看看吧...2016-01-02
- 源码的重要性相信不用再多说什么了吧,特别是用Vue 框架的,一般在面试的时候面试官多多少少都会考察源码层面的内容,下面这篇文章主要给大家介绍了关于vue3源码剖析之简单实现的相关资料,需要的朋友可以参考下...2021-09-07
- 这篇文章主要介绍了Javascript前端下载后台传来的文件流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-08-19
- Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。这篇文章主要介绍了underscore源码分析相关知识,感兴趣的朋友一起学习吧...2016-01-02
- 一般来说, 我们可以通过直接让URL指向一个位于Document Root下面的文件, 来引导用户下载文件.但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让PHP来做转发, 为用户提供文件下载...2014-06-07
- 这篇文章主要为大家详细介绍了C#开发教程之FTP上传下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要介绍了python3.8下载及安装步骤详解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-04-27
【详解】Android远程http下载和动态注册第三方so lib库教程
本教程我们为您介绍Android的第三方库so lib库如何远程http下载和动态注册,远程下载so库主要解决的是下载so存放的位置及读写权限,大家可以参考一下。 一、背景...2016-09-20- 这篇文章主要为大家详细介绍了springboot+vue实现文件上传下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-18
- 这篇文章主要介绍了Android Studio如何查看源码并调试的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-15
- bom头其实是一个非常可恶的东西,有时因为bom头导致页面乱码之类的问题,但有的时间加bom头是必须的,下面我们来看一个PHP 下载文件时自动添加bom头的方法,希望文章对大家有...2016-11-25
Spring Boot使用GridFS实现文件的上传和下载方式
这篇文章主要介绍了Spring Boot使用GridFS实现文件的上传和下载方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-23php 超大文件下载程序[http 缓存协商,Etag标记,断点续传]
<?php教程 002 $file_path = './download/download_cn.rar'; 003 004 //使用方法 005 downFile($file_path); 006 007 // 服务器文件路径,下载文件名字(默认...2016-11-25- 这篇文章主要介绍了JavaScript实现图片合成下载的示例,帮助大家更好的理解和学习JavaScript,感兴趣的朋友可以了解下...2020-11-19
- 6、下载不采用弹出窗口式说明 ...2016-05-19