把一大堆旧名片全丢了,放着碍地方,用微信账号登陆,手机号码用1100那个
阅读全文
对方还要要求我一个星期内如果坏的话退回来,估计没有什么大问题
阅读全文
获取IP地址
<?php function GetIP() { if ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if ($_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if ($_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"]; else if (getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); else $ip = "Unknown"; return $ip; } echo GetIP(); ?>
方法二
function getip () { if (getenv(‘http_client_ip’)) { $ip = getenv(‘http_client_ip’); } else if (getenv(‘http_x_forwarded_for’)) { $ip = getenv(‘http_x_forwarded_for’); } else if (getenv(‘remote_addr’)) { $ip = getenv(‘remote_addr’); } else { $ip = $_server[‘remote_addr’]; } return $ip;
PHP通过IP地址判断用户所在城市 上文已经获得了用户IP地址,接下来,我们就是根据这个IP地址获得用户所在城市了。开始之前,我们需要下载一个现成的数据库QQ IP数据库。 最新IP地址数据库://www.jb51.net/softs/10529.html 使用方法:解压后QQWry.Dat就是我们想要IP地址数据库,我们新建一个ipcity文件夹,将数据库放在下面。QQ IP数据库使用非常方便,数据也很齐全,你可以及时关注官方更新以保持数据最新,强力推荐一下:) 接下来,我们在上面的ipcity目录下新建一个ipaddress.php文件,直接复制以下代码进去即可,重要的地方也作了相应注释。B段:
<? /* 函数名称:ipCity 参数说明:$userip——用户IP地址 函数功能:PHP通过IP地址判断用户所在城市 author:lee contact:xpsem2010@gmail.com */ function ipCity($userip) { //IP数据库路径,这里用的是QQ IP数据库 20110405 纯真版 $dat_path = ‘QQWry.dat’; //判断IP地址是否有效 if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $userip)){ return ‘IP Address Invalid’; } //打开IP数据库 if(!$fd = @fopen($dat_path, ‘rb’)){ return ‘IP data file not exists or access denied’; } //explode函数分解IP地址,运算得出整数形结果 $userip = explode(‘.’, $userip); $useripNum = $userip[0] * 16777216 + $userip[1] * 65536 + $userip[2] * 256 + $userip[3]; //获取IP地址索引开始和结束位置 $DataBegin = fread($fd, 4); $DataEnd = fread($fd, 4); $useripbegin = implode(”, unpack(‘L’, $DataBegin)); if($useripbegin < 0) $useripbegin += pow(2, 32); $useripend = implode(”, unpack(‘L’, $DataEnd)); if($useripend < 0) $useripend += pow(2, 32); $useripAllNum = ($useripend – $useripbegin) / 7 + 1; $BeginNum = 0; $EndNum = $useripAllNum; //使用二分查找法从索引记录中搜索匹配的IP地址记录 while($userip1num>$useripNum || $userip2num<$useripNum) { $Middle= intval(($EndNum + $BeginNum) / 2); //偏移指针到索引位置读取4个字节 fseek($fd, $useripbegin + 7 * $Middle); $useripData1 = fread($fd, 4); if(strlen($useripData1) < 4) { fclose($fd); return ‘File Error’; } //提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂 $userip1num = implode(”, unpack(‘L’, $useripData1)); if($userip1num < 0) $userip1num += pow(2, 32); //提取的长整型数大于我们IP地址则修改结束位置进行下一次循环 if($userip1num > $useripNum) { $EndNum = $Middle; continue; } //取完上一个索引后取下一个索引 $DataSeek = fread($fd, 3); if(strlen($DataSeek) < 3) { fclose($fd); return ‘File Error’; } $DataSeek = implode(”, unpack(‘L’, $DataSeek.chr(0))); fseek($fd, $DataSeek); $useripData2 = fread($fd, 4); if(strlen($useripData2) < 4) { fclose($fd); return ‘File Error’; } $userip2num = implode(”, unpack(‘L’, $useripData2)); if($userip2num < 0) $userip2num += pow(2, 32); //找不到IP地址对应城市 if($userip2num < $useripNum) { if($Middle == $BeginNum) { fclose($fd); return ‘No Data’; } $BeginNum = $Middle; } } $useripFlag = fread($fd, 1); if($useripFlag == chr(1)) { $useripSeek = fread($fd, 3); if(strlen($useripSeek) < 3) { fclose($fd); return ‘System Error’; } $useripSeek = implode(”, unpack(‘L’, $useripSeek.chr(0))); fseek($fd, $useripSeek); $useripFlag = fread($fd, 1); } if($useripFlag == chr(2)) { $AddrSeek = fread($fd, 3); if(strlen($AddrSeek) < 3) { fclose($fd); return ‘System Error’; } $useripFlag = fread($fd, 1); if($useripFlag == chr(2)) { $AddrSeek2 = fread($fd, 3); if(strlen($AddrSeek2) < 3) { fclose($fd); return ‘System Error’; } $AddrSeek2 = implode(”, unpack(‘L’, $AddrSeek2.chr(0))); fseek($fd, $AddrSeek2); } else { fseek($fd, -1, SEEK_CUR); } while(($char = fread($fd, 1)) != chr(0)) $useripAddr2 .= $char; $AddrSeek = implode(”, unpack(‘L’, $AddrSeek.chr(0))); fseek($fd, $AddrSeek); while(($char = fread($fd, 1)) != chr(0)) $useripAddr1 .= $char; } else { fseek($fd, -1, SEEK_CUR); while(($char = fread($fd, 1)) != chr(0)) $useripAddr1 .= $char; $useripFlag = fread($fd, 1); if($useripFlag == chr(2)) { $AddrSeek2 = fread($fd, 3); if(strlen($AddrSeek2) < 3) { fclose($fd); return ‘System Error’; } $AddrSeek2 = implode(”, unpack(‘L’, $AddrSeek2.chr(0))); fseek($fd, $AddrSeek2); } else { fseek($fd, -1, SEEK_CUR); } while(($char = fread($fd, 1)) != chr(0)){ $useripAddr2 .= $char; } } fclose($fd); //返回IP地址对应的城市结果 if(preg_match(‘/http/i’, $useripAddr2)) { $useripAddr2 = ”; } $useripaddr = "$useripAddr1 $useripAddr2"; $useripaddr = preg_replace(‘/CZ88.Net/is’, ”, $useripaddr); $useripaddr = preg_replace(‘/^s*/is’, ”, $useripaddr); $useripaddr = preg_replace(‘/s*$/is’, ”, $useripaddr); if(preg_match(‘/http/i’, $useripaddr) || $useripaddr == ”) { $useripaddr = ‘No Data’; } return $useripaddr; } ?>
PHP根据IP地址实现城市切换或跳转 到这里,其实问题已经很简单了,用简单的js就通通搞定。C段如下: //根据IP地址跳转指定页面js取得城市
var city='<?echo ipCity($xp_UserIp);?>’;
//根据IP地址所有城市跳转到指定页面
if(city.indexOf("上海市")>=0){ window.location.href=http://shanghai.demo.com/; }
将开头的A段代码和上面的C段代码分别放在B段代码的头和尾,然后我们在需要跳转的页面加入以下代码:
<script src="/ipcity/ipaddress.php" type="text/javascript" language="javascript"></script>
刷新页面,是不是达到预想的效果了呢? 上面的代码只是简单的判断了ip那里就跳到那,如果出现如,我想把湖南所有IP都跳到长沙去,那像衡阳,刘阳,耒阳 这些就要作多次父线处理了,要想知道请看下集。
阅读全文
首先把这个代码复制到e/class/userfun.php 里面去:
<?php
//—————————用户自定义标签函数文件
//显示结合项筛选选项
function user_ShowFieldandChange($val,$fieldandvar,$fieldandcss,$changefieldandcss,$fieldexp,$valexp,$val3,$ecms=0){
global $public_r,$navclassid;
$fieldandval=$val;
$fieldandvart=$fieldandvar;
$fieldandvar=str_replace(‘#’,’,’,$fieldandvar);
//附加参数
$urlcs=”;
$mid=(int)$_GET[‘mid’];
if($mid)
{
$urlcs.=’&mid=’.$mid;
}
if($_GET[‘classid’])
{
$classid=RepPostVar($_GET[‘classid’]);
$urlcs.=’&classid=’.$classid;
}
else
{
$urlcs.=’&classid=’.$navclassid;
}
if($_GET[‘ttid’])
{
$ttid=RepPostVar($_GET[‘ttid’]);
$urlcs.=’&ttid=’.$ttid;
}
if($_GET[‘ztid’])
{
$ztid=RepPostVar($_GET[‘ztid’]);
$urlcs.=’&ztid=’.$ztid;
}
if($_GET[‘endtime’])
{
$starttime=RepPostVar($_GET[‘starttime’]);
$endtime=RepPostVar($_GET[‘endtime’]);
$urlcs.=’&starttime=’.$starttime.’&endtime=’.$endtime;
}
$line=(int)$_GET[‘line’];
if($line)
{
$urlcs.=’&line=’.$line;
}
$tempid=(int)$_GET[‘tempid’];
if($tempid)
{
$urlcs.=’&tempid=’.$tempid;
}
if($_GET[‘orderby’])
{
$orderby=RepPostVar($_GET[‘orderby’]);
$myorder=(int)$_GET[‘myorder’];
$urlcs.=’&orderby=’.$orderby.’&myorder=’.$myorder;
}
//间隔字符
$fieldexpr=explode(‘|’,$fieldexp);
$valexpr=explode(‘|’,$valexp);
//上下级
$frt=explode(‘,’,$fieldandvart);
$ftcount=count($frt);
//输出选项
$fr=explode(‘,’,$fieldandvar);
$fcount=count($fr);
$allstr=”;
foreach ($_GET as $key=>$val){ if($val && in_array($key, $fr)){ $url_this=$key.’=’.urlencode($val); $url=str_replace($url_this,”,$_SERVER[REQUEST_URI]); $tj=’已选择条件:’; $yixuan.='<a class="del_jhx" href="’.$url.’">’.$val.’x</a> ‘; } } echo $tj.$yixuan;
$urladd=”;
for($i=0;$i<$fcount;$i++)
{ $nofield="";
$field=$fr[$i];
for($ti=0;$ti<$ftcount;$ti++)
{
$frtval=explode(‘#’,$frt[$ti]);
if($field==$frtval[0]){$nofield="&".$frtval[1]."=";}
}
//选项链接
$getval=”;
if($_GET[$field])
{
$getval=htmlspecialchars($_GET[$field],ENT_QUOTES);
$urladd.=’&’.$field.’=’.urlencode($getval);
}
//选项说明
$vsayr=explode(‘|==|’,$fieldandval[$field]);
//选项内容
$valallstr=”;
$vr=explode(‘|’,$vsayr[1]);
$vcount=count($vr);
for($vi=0;$vi<$vcount;$vi++)
{
$vtr=explode(‘,’,$vr[$vi]);
if($getval==$vtr[1])
{
$css=$changefieldandcss;
}
else
{
$css=$fieldandcss;
}
$valallstr.=$valexpr[0].'<a href="/e/action/ListInfo.php?’.$urlcs.’&ph=1<!–url.add–>&’.$field.’=’.urlencode($vtr[1]).$nofield.’" class="’.$css.’">’.$vtr[0].'</a>’.$valexpr[1];
}
//自定义样式 实现二级自定义样式
if($val3[$field]!="")
{
$fieldexpr2=explode(‘|’,$val3[$field]);
$allstr[$i]=$fieldexpr2[0].$vsayr[0].$valallstr.$fieldexpr2[1];
}
else
{
$allstr[$i]=$fieldexpr[0].$vsayr[0].$valallstr.$fieldexpr[1];
}
//清空没有数据的行
if($vcount==1){$allstr[$i]="";}
}
$allstr=str_replace(‘<!–url.add–>’,$urladd,$allstr);
return $allstr;
}
?>
然后把这个代码放到模板里面:
<?php
$GET=$_GET;
//——- 函数参数设置开始 —–
//要显示的结合项字段列表,多个字段用半角逗号“,”隔开 如果是二级关系用 “#”
$fieldandvar=’quyu,ftitle,jiage’;
//正常链接样式
$fieldandcss=’fieldandcss’;
//已选的选项链接样式
$changefieldandcss=’changefieldandcss’;
//字段与字段的显示间隔符,格式:开始显示字符|结束显示字符
$fieldexp='<table><tr><td>|</td></tr></table>’;
//选项与选项的显示间隔符,格式:开始显示字符|结束显示字符
$valexp=’| ‘;
//字段显示选项设置,多项用“|”号隔开,格式:选项说明|==|内容1,值1|内容2,值2
$val=array();
$val2=array();
$val3=array();
$val[‘quyu’]='<b>区域:</b>|==|老城,老区|新区,新区’;
$val[‘ftitle’]='<b>户型:</b>|==|三室一厅,三室一厅|三室两厅,三室两厅|两室一厅,两室一厅’;
$val[‘jiage’]='<b>价格:</b>|==|50,50|40,40|30,30′;
$val3[‘jiage’]='<div class="gzw">|</div>’;
$val3[‘quyu’]='<div class="gzw">|</div>’;
$val3[‘ftitle’]='<div class="gzw">|</div>’;
$g=user_ShowFieldandChange($val,$fieldandvar,$fieldandcss,$changefieldandcss,$fieldexp,$valexp,$val3);
?>
<?=$g[0]?>
<?=$g[1]?>
<?=$g[2]?>
<?=$g[3]?>
<?=$g[4]?>
这是后台对应的字段,一定要对应你的后台
这个的原理其实就是判断你这个字段里面是不是有这个文字,从而达到赛选的目的
这个是对应的样式,可以通过class进行样式控制
这个是必须要加的,原理的话我也不清楚,反正不加是不显示的
这里是控制筛选的,效果如下
阅读全文
方法1、 调用10条当前tag [showtags]’selfinfo’,10,0,”,0,”,’ ’,0,”,’tagname'[/showtags] 方法2、 内容页调用tag,按tagname调用 <div class="tagsline">Tags:<? $a="$navinfor[infotags]"; $str=str_replace(‘,’, ‘,’, $a); $tag=”; $t= explode(",", $str); for($i=0;$i<count($t);$i++) { if($t[$i]) { $tagslink="[!–news.url–]e/tags/?tagname=".urlencode($t[$i])."&tempid=1"; $tag.="<a href=’$tagslink’ target=’_blank’>".$t[$i]."</a> "; } } echo $tag; ?> </div> 或,按tagname调用 <?php $fr=$empire->fetch1("select infotags from {$dbtbpre}ecms_news_data_{$navinfor[stb]} where id=’$navinfor[id]’"); $infotags=$fr[‘infotags’];//这个就是infotags字段内容 $tag=”; $t=explode(‘,’,$infotags);//去逗号 $d=count($t); for($i=0;$i<count($t);$i++) { if($t[$i]) { $tagslink="[!–news.url–]e/tags/?tagname=".urlencode($t[$i])."&tempid=1"; $tag.="<a href=’$tagslink’ target=’_blank’>".$t[$i]."</a> "; } } echo $tag; ?> 或,按id调用 <? $tbname=$class_r[$navinfor[‘classid’]][‘tbname’]; $ftbname=$dbtbpre."ecms_".$tbname."_data_".$navinfor[‘stb’]; $hlt = $empire->fetch1("select infotags from {$ftbname} where id=’$navinfor[id]’"); $a=$hlt[infotags]; $str=str_replace(‘,’, ‘,’, $a); $tag=”; $t= explode(",", $str); for($i=0;$i<count($t);$i++) { if($t[$i]) { $datar=$empire->fetch1("select tagid from {$dbtbpre}enewstags where tagname=’$t[$i]’ limit 1"); $tagslink="[!–news.url–]e/tags/?tagid=".$datar[tagid].""; $tag.="<a href=’$tagslink’ target=’_blank’>".$t[$i]."</a> "; } } echo $tag; ?> 注释: 限制数量,把$i<count($t)修改为$i<count($t)&&$i<限制数量 mid=1数据模型id tempid=1模型的模板id orderby排列方式 classid=34栏目id &line=5调用条数 如:上面的 &tempid=1 ————————————————————————————————————— 方法3、tags标签实现多颜色样式 <?php $ecms_bq_sql=sys_ReturnEcmsLoopBq("select * from [!db.pre!]enewstagsdata where classid=’$navinfor[classid]’ and id=’$navinfor[id]’ order by tagid",10,24,0); $bqno=0; while($bqr=$empire->fetch($ecms_bq_sql)) { $bqsr=sys_ReturnEcmsLoopStext($bqr); $bqno++; ?> <?php $ecms_bq_sql2=sys_ReturnEcmsLoopBq("select * from [!db.pre!]enewstags where tagid=’$bqr[tagid]’ order by tagid",1,24,0); $bqno2=0; while($bqr2=$empire->fetch($ecms_bq_sql2)) { $bqsr2=sys_ReturnEcmsLoopStext($bqr2); $bqno2++; ?> <a class="tag-<?=$bqno?>" href="<?=$public_r[newsurl]?>e/tags/?tagname=<?=$bqr2[‘tagname’]?>&tempid=1"><?=$bqr2[tagname]?></a> <?php } } ?> 接着在css中定义标签的样式,这个可以自己定义。 .tag-1{background:#ff7094;} .tag-2{background:#94b770;} .tag-3{background:#db94ff;} .tag-4{background:#399;} .tag-5{background:#f60;} 注释:mid=1数据模型id tempid=1模型的模板id orderby排列方式 classid=34栏目id 如:上面的 &tempid=1 ————————————————————————————————————— 方法4、 [e:loop={"select a.*,b.* from [!db.pre!]enewstags a LEFT JOIN [!db.pre!]enewstagsdata b ON a.tagid=b.tagid where b.classid=’$navinfor[classid]’ and b.id=’$navinfor[id]’ group by b.tagid order by a.num desc limit 100",0,24,0}] <a href='<?=$public_r[‘newsurl’]?>e/tags/?tagname=<?=$bqr[‘tagname’]?>’ title='<?=$bqr[‘num’]?>个’><?=$bqr[‘tagname’]?>(<?=$bqr[‘num’]?>)</a> [/e:loop] ————————————————————————————————————— 方法5、 <?php $tsql=$empire->query("select * from {$dbtbpre}enewstagsdata where id=’$navinfor[id]’order by id asc limit 7"); while($tr=$empire->fetch($tsql)){ $tag=$empire->fetch1("select * from {$dbtbpre}enewstags where tagid=’$tr[tagid]’ limit 1"); ?> <span><a class="tag" href="<?=$public_r[newsurl]?>e/tags/?tagname=<?=$tag[‘tagname’]?>"><?=$tag[tagname]?></a></span> <?}?> 方法6.(网友提供,感谢) <?php $tbname="news"; //“news”为新闻数据表名称 $ftbname=$dbtbpre."ecms_".$tbname."_data_".$navinfor[‘stb’]; $hlt = $empire->fetch1("select infotags from {$ftbname} where id=’$navinfor[id]’"); $keyr=explode(‘,’,$hlt[infotags]); for($i=0;$i<count($keyr);$i++) { echo ‘<a href="’.$public_r[newsurl].’e/tags/?tagname=’.$keyr[$i].’" target=_blank>’.$keyr[$i].'</a> ’; } ?> 或 <?php $fr=$empire->fetch1("select infotags from {$dbtbpre}ecms_news_data_{$navinfor[stb]} where id=’$navinfor[id]’"); $keyr=explode(‘,’,$fr[infotags]); for($i=0;$i<count($keyr);$i++) { echo ‘<a href="’.$public_r[newsurl].’e/tags/?tagname=’.$keyr[$i].’" target=_blank>’.$keyr[$i].'</a> ’; } ?> 或 <?php $fr=$empire->fetch1("select infotags from {$dbtbpre}ecms_news_data_{$navinfor[stb]} where id=’$navinfor[id]’"); $infotags=$fr[‘infotags’]; $r_tag=explode(",",$infotags); for($i=0;$i<count($r_tag);$i++){ if($r_tag[$i]){ $tagslink=$public_r[newsurl]."e/tags/?tagname=".urlencode($r_tag[$i]); $tags.="<a class=’tag-link19′ href=’$tagslink’ target=’_blank’ rel=’tag’>".$r_tag[$i]."</a>"; } } ?> tag:<?=$tags?> 注释:限制数量,把$i<count($keyr)修改为$i<count($keyr)&&$i<限制数量
原文链接https://www.moyublog.com/notes/733.html
阅读全文
https://www.jb51.net/cms/76184.html 原文链接
如果你经常上58同城、赶集网、百姓网等分类信息网站时,在茫茫信息中你怎么可以准确的找到自己所需要的信息,这时我们就用到网站提供的筛选功能,从而快速便捷的找到所需要的信息范围。在我们建站中,这个筛选功能经常用到,下面我们以58同城网的租房栏目列表筛选为例,详细讲解帝国cms结合项列表属性筛选功能。
先看图:
一、建立字段
可以看到租房栏目列表筛选用到了4个字段:“区域”、“租金”、“厅室”、“方式”。
(1)字段“区域”的值为:“全鞍山”、“铁东”、“铁西”、“立山”、“千山”、“其他”,字段设置如下图:
(2)字段“租金”的值为:“不限”、“500元以下”、“500-1000元”、“1000-1500元”、“1500-2000元”、“2000-3000元”、“3000-4500元”、“4500元以上”,字段设置如下图:
(3)字段“厅室”的值为:“不限”、“一室”、“两室”、“三室”、“四室”、“四室以上”,字段设置如下图:
(4)字段“方式”的值为:“整套出租”、“单间出租”、“床位”,字段设置如下图:
二、安装修改插件
下载帝国cms官方结合项列表属性筛选插件,然后打开“fieldand.txt”文件,将文件里的所有内容复制到 /e/class/userfun.php 文件里(放在之间任意位置);(推荐用Dreamweaver或Editplus等编辑工具修改)
先在要显示的结合项字段列表,把“$fieldandvar=‘myarea,sex,age’;”改成“$fieldandvar=‘quyu,zujin,tingshi,fangshi’;”,这是我们需要的显示的4个字段列表。
接着我们用4种颜色来表示各字段代码的区域,从而直观的分析他们共同代码点,如下图(2-1):
由上图得到 字段与字段的显示间隔符 “$fieldexp=’
|
”。
然后根据格式:“选项说明|==|内容1,值1##内容2,值2”进行分析:
最后得到修改后的图:
根据代码“全鞍山”得到 已选的选项链接样式 “$changefieldandcss=’select’;”。
根据上图(2-1)结合 选项与选项的显示间隔符格式:开始显示字符|结束显示字符 得到 “$valexp=”;”。
修改好的插件代码如图:
三、测试效果
我们看下效果:
点击“区域”的“铁东”效果如下:
接着点击“租金”的“500元以下”效果如下:
ok,测试没有问题,这一讲就到此。
注意事项:
(1)代码无误,但是筛选后并没有起作用的原因是系统模型相应字段的结合项没有打上勾。
(2)筛选时提示“你来自的连接不存在”是因为地址栏没有指定“&classid=栏目ID” 。
附上:官方插件 ecms jiehexiang
阅读全文
QQ默认会杀QQ的GPS后台,导致我开运动的时候,不记录轨迹,打开一次QQ就定位一次,然后轨迹会变成直线,今天搜索了一下教程,终于学会设置了。
其中一个是在安全中心,应用管理里面的自启动管理,把QQ设置为可以自启动。
还有一个在设置里面电量和性能那里,应用设置,省电策略,找到QQ设置为无限制
然后就OK了
阅读全文
某东是这个价格~感觉30块以内比较合适
我本地实体店买的~40块
还有个防伪码~发短信过去没有消息回来的~
就当买到了个假货吧~
风扇颜色都不一样
不过网上也有黑风扇的
反正发热量不大,差不多就行了
阅读全文
https://blog.csdn.net/sinat_17775997/article/details/54631589
阅读全文
1.1 背景相关与系统架构分析
https://www.runoob.com/w3cnote/android-tutorial-system-architecture-analysis.html
阅读全文
第 20 页,共 103 页« 最新«...10...1819202122...304050...»最旧 »