linux php python mysql jquery JavaScript 学习之窗
标签类目:php

常用得php函数:随机字符串,截取字符串,取得客户端ip地址………

在php开发中,我们经常会遇到一些函数,下面是整理好的,可以直接使用,方便开发效率,不过建议大家一定要先看懂,然后在这个基础上增加功能就提高了自身能力了
1.产生随机字符串函数
function random($length) {
$hash = @#@#;
$chars = @#abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz@#;
$max = strlen($chars) – 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
2.截取一定长度的字符串
注:该函数对gb2312使用有效
function wordscut($string, $length ,$sss=0) {
if(strlen($string) > $length) {
if($sss){
$length=$length – 3;
$addstr=@# …@#;
}
for($i = 0; $i < $length; $i++) {
if(ord($string[$i]) > 127) {
$wordscut .= $string[$i].$string[$i + 1];
$i++;
} else {
$wordscut .= $string[$i];
}
}
return $wordscut.$addstr;
}
return $string;
}
3.取得客户端ip地址
function getip(){
if (getenv("http_client_ip") && strcasecmp(getenv("http_client_ip"), "unknown"))
$ip = getenv("http_client_ip");
else if (getenv("http_x_forwarded_for") && strcasecmp(getenv("http_x_forwarded_for"), "unknown"))
$ip = getenv("http_x_forwarded_for");
else if (getenv("remote_addr") && strcasecmp(getenv("remote_addr"), "unknown"))
$ip = getenv("remote_addr");
else if (isset($_server[@#remote_addr@#]) && $_server[@#remote_addr@#] && strcasecmp($_server[@#remote_addr@#], "unknown"))
$ip = $_server[@#remote_addr@#];
else
$ip = "unknown";
return($ip);
}
4.创建相应的文件夹
function createdir($dir=@#@#)
{
if (!is_dir($dir))
{
$temp = explode(@#/@#,$dir);
$cur_dir = @#@#;
for($i=0;$i<count($temp);$i++)
{
$cur_dir .= $temp[$i].@#/@#;
if (!is_dir($cur_dir))
{
@mkdir($cur_dir,0777);
}
}
}
}
5.判断邮箱地址
function checkemail($inaddress)
{
return (ereg("^([a-za-z0-9_-])+@([a-za-z0-9_-])+(\.[a-za-z0-9_-])+",$inaddress));
}
6.跳转
function gotourl($message=@#@#,$url=@#@#,$title=@#@#)
{
$html ="<html><head>";
if(!empty($url))
$html .="<metahttp-equiv=@#refresh@# content=\"3;url=@#".$url."@#\">";
$html .="<linkhref=@#../templates/style.css@# type=text/css rel=stylesheet>";
$html .="</head><body><br><br><br><br>";
$html .="<tablecellspacing=@#0@#cellpadding=@#0@#border=@#1@#width=@#450@#align=@#center@#>";
$html .="<tr><tdbgcolor=@##ffffff@#>";
$html .="<tableborder=@#1@#cellspacing=@#1@#cellpadding=@#4@#width=@#100%@#>";
$html .="<trclass=@#m_title@#>";
$html .="<td>".$title."</td></tr>";
$html .="<trclass=@#line_1@#><tdalign=@#center@#height=@#60@#>";
$html .="<br>".$message."<br><br>";
if (!empty($url))
$html .="系统将在3秒后返回<br>如果您的浏览器不能自动返回,请点击[<a href=".$url." target=_self>这里</a>]进入";
else
$html .="[<a href=@##@#=@#history.go(-1)@#>返回</a>]";
$html .="</td></tr></table></td></tr></table>";
$html .="</body></html>";
echo $html;
exit;
}
7.分页(两个函数配合使用)
function getpage($sql,$page_size=20)
{
global $page,$totalpage,$sums; //out param
$page = $_get["page"];
//$eachpage = $page_size;
$pagesql = strstr($sql," from ");
$pagesql = "select count(*) as ids ".$pagesql;
$result = mysql_query($pagesql);
if($rs = mysql_fetch_array($result)) $sums = $rs[0];
$totalpage = ceil($sums/$page_size);
if((!$page)||($page<1)) $page=1;
$startpos = ($page-1)*$page_size;
$sql .=" limit $startpos,$page_size ";
return $sql;
}
function showbar($string="")
{
global $page,$totalpage;
$out="共<font ".$totalpage."color=@#red@#><b>".$totalpage."</b></font>页 ";
$linknum =4;
$start = ($page-round($linknum/2))>0 ? ($page-round($linknum/2)) : "1";
$end = ($page+round($linknum/2))<$totalpage ? ($page+round($linknum/2)) : $totalpage;
$prestart=$start-1;
$nextend=$end+1;
if($page<>1)
$out .= "<ahref=@#?page=1&&".$string."@#title=第一页>第一页</a> ";
if($start>1)
$out.="<ahref=@#?page=".$prestart."@# title=上一页>..<<</a> ";
for($t=$start;$t<=$end;$t++)
{
$out .= ($page==$t) ? "<font [".$t."]color=@#red@#><b>[".$t."]</b></font> " : "<a$thref=@#?page=$t&&".$string."@#>$t</a> ";
}
if($end<$totalpage)
$out.="<ahref=@#?page=".$nextend."&&".$string."@# title=下一页>>>..</a>";
if($page<>$totalpage)
$out .= " <ahref=@#?page=".$totalpage."&&".$string."@# title=最后页>最后页</a>";
return $out;
}
8.获取新插入数据的id
<?
mysql_insert_id();
?>
 

php随机页面跳转方法,适合在网吧做网站推广用,呵呵

很简单的一个PHP随机页面重定向,用来在网吧做网站推广很适合, 比如说你在网吧IE浏览器首页设置成你的网站,每次都是那一个页面了,如果你想改一下,比如说换成你的论坛的,那 就比较麻烦了。      网吧一般做一次系统才换IE首页的。 因此,你可以将这个PHP文件,放在你的网站下面,让网吧的老板将IE首页设置成这个,以后你要控制首页就比较方便。当然,不要放网吧老板不同意的哟,那样生意就没得做了。

下面这个是可以随机重定向到三个地址的, 比如说 首页 ,博客首页, 新闻首页。   还可以是其他的。

在其他方面应该也用地上。  呵呵    代码如下, 很简单。就一个rand和一个循环。

 

< ?php
$x = rand(1,3);
switch ($x)
{
case 1:
  header("location:url1");
  break;
case 2:
  header("location:url2");
  break;
case 3:
  header("location:url3");
  break;
default:
  echo "现在带你回到论坛!";
  header("location:url0");
}
?>

 

总结PHP中页面跳转有三种方法:

1 header(”Location:index.php”);
  header()是php内置函数,用于实现页面跳转。  
2 echo(”<script>window.location=index.php</script>”);
  利用JAVASCRIPT实现页面跳转。
3 echo(”<meta http-equiv=refresh content=0;url=index.php>”);
  利用HTML方法实现页面跳转,该方法较为实用,可以设置刷新时间,推荐使用
 

跳转到其他页面时参数如何传过去?

可以在链接后面加参数:index.php?id=4&action=add&……

到其他的页面以后参数如何取出

按上例而言,可以这么读取参数, $id=$_GET[id]; $action=$_GET[action];




PHP常用函数类-比较实用的几PHP函数方法

<?php
class useful{
 
/*
  * 常用函数类
  * 作    者:多菜鸟
  * 联系邮箱:kingerq AT msn DOT com
  * 创建时间:2005-07-18
  * 来源:
http://blog.csdn.net/kingerq
  */

 
 
/*
  * 功能:格式化数字,以标准MONEY格式输出
  */

 
 
function formatnumber($num){
 
return number_format($num, 2, ".", ",");
 
}
 
 
/*
  * 功能:格式化文本,将\n转成<br>等
  * 参数:$string 来源字符串
  * 返回:处理后的字符串
  */

 
function formatstring($string = ""){
 
$string = preg_replace(array("/ /", "/ /"), array("&nbsp;", "&nbsp;&nbsp;"), $string);
 
return nl2br($string);
 
}
 
 
/*
  * 功能:格式化文本输出
  * 参数 $text 为需格式化的文本内容
  */

 
function formatcontent($text){
 
$trans = get_html_translation_table(HTML_SPECIALCHARS);
 
$trans = array_flip($trans);
 
$text = strtr($text, $trans);
 
//$text = str_replace("\n", "<br>", $text);
 
//$text = str_replace(" ", "&nbsp;", $text);
 
return $text;
 
}
 
 
/*
  * 将字节转换成Kb或者Mb…
  * 参数 $num为字节大小
  */

 
function bitsize($num){
 
if(!preg_match("/^[0-9]+$/", $num)) return 0;
 
$type = array( "B", "KB", "MB", "GB", "TB", "PB" ) "color: gray">;
 
 
$j = 0;
 
while( $num >= 1024 ) {
  
if( $j >= 5 ) return $num.$type[$j];
  
$num = $num / 1024;
  
$j++;
 
}
 
return $num.$type[$j];
 
}
 
 
/*
  * 功能:不足3的倍数位的数字,用0补足
  * $num 需补充的数字
  * 返回补充完整的数字串
  */

 
function prefix($num){
 
if( strlen( $num ) % 3 == 0 ) {
  
return $this->prefix("0".$num);
 
}
 
return $num;
 
}
 
 
/*
  * 功能:连续建目录
  * $dir 目录字符串
  */

 
function makedir( $dir, $mode = "0777" ) {
 
if( ! $dir ) return 0;
 
$dir = str_replace( "\\", "/", $dir );
 
 
$mdir = "";
 
foreach( explode( "/", $dir ) as $val ) {
  
$mdir .= $val."/";
  
if( $val == ".." || $val == "." ) continue;
  
  
if( ! span>file_exists( $mdir ) ) {
    
if(!@mkdir( $mdir, $mode )){
    
echo "创建目录 [".$mdir."]失败.";
    
exit;
    
}
  
}
 
}
 
return true;
 
}
 
 
/*
  * 功能:检测时间的正确性
  * $date 为时间,例:YYYY-MM-DD
  * 返回:通过返回true,反之返回false
  */

 
function chkdate( $date ) {
 
$d = explode( "-", $date );
 
if( checkdate( $d[1], $d[2], $d[0] ) ) {
  
return true;
 
}else {
  
return false;
 
}
 
}
 
 
/*
  * 防注入处理(为变量加入斜杠)函数
  * 参数 $array 为防注入变量数组
  */

 
function add_s(&$array){
 
foreach($array as $key=>$value){
  
if(!is_array($value)){
    
$array[$key]=addslashes($value);
  
}else{
    
$this->add_s($array[$key]);
  
}
 
}
 
}
 
 
/*
  * 转换HTML特殊字符(表单提交的时候使用,防止恶意JS代码)
  * 参数 $array 为需转换的字符串或者数组
  */

 
function specialhtml(&$array){
 
if(is_array($array)){//数组处理
  
foreach($array as $key=>$value){
    
if(!is_array($value)){
    
$array[$key]=htmlspecialchars($value);
    
}else{
    
$this->specialhtml($array[$key]);
    
}
  
}
 
}else{
  
$array = htmlspecialchars($array);
 
}
 
}
 
 
/*
  * 可以避免乱码的截取汉字
  * 参数 $str 为字符串,$start 为开始字符,$len 结束字符
  * 返回截取后的字符
  */

 
function msubstr($str, $start, $len) {
 
$tmpstr = "";
 
$strlen = $start + $len;
 
for($i = 0; $i < $strlen; $i++) {
  
if(ord(substr($str, $i, 1)) > 0xa0) {
    
$tmpstr .= substr($str, $i, 2);
    
$i++;
  
} else
    
$tmpstr .= substr($str, $i, 1);
 
}
 
return $tmpstr;
 
}
 
 
/*
  * 功能:综合提示JS代码输出
  * 参数 $msg 为提示信息
  *      $direct 为提示类型 0为提示(默认)1为提示刷新返回 2为提示返回
  * 输出提示代码并结束程序
  */

 
function alert_msg($msg, $direct = "0"){
 
switch($direct){
  
case 0://提示
    
$script = "";
  
case 1://提示刷新返回
    
$script = "location.href=\"".$_SERVER["HTTP_REFERER"]."\";";
    
break;
  
case 2://提示返回
    
$script = "history.back();";
    
break;
  
default://提示转向指定页面
    
$script = "location.href=\"".$direct."\";";
 
}
 
echo "<script language=’javascript’>window.alert(’".$msg."‘);".$script."</script>";
 
exit;
 
}
 
 
/*
  * 功能:取得给定日期所在周的开始日期和结束日期
  * 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
  *       $first 一周以星期一还是星期天开始,0为星期天,1为星期一
  * 返回:数组array("开始日期", "结束日期");
  */

 
function aweek($gdate = "", $first = 0){
 
if(!$gdate) $gdate = date("Y-m-d");
 
$w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6
 
$dn = $w ? $w$first : 6;//要减去的天数
 
$st = date("Y-m-d", strtotime("$gdate -".$dn." days"));
 
$en = date("Y-m-d", strtotime("$st +6 days"));
 
return array($st, $en);//返回开始和结束日期
 
}
 
 
/*
  * 功能:检测页面是否合法连接过来
  * 如果为非法,就转向到登陆窗口
  */
>
 
function checkurl(){
 
//如果直接从浏览器连接到页面,就连接到登陆窗口
 
//echo "referer:".$_SERVER['HTTP_REFERER'];
 
if(!isset($_SERVER['HTTP_REFERER'])) {
  
header("location: index.php");
  
exit;
 
}
 
$urlar = parse_url($_SERVER['HTTP_REFERER']);
 
//如果页面的域名不是服务器域名,就连接到登陆窗口
 
if($_SERVER["HTTP_HOST"] != $urlar["host"]) {
  
header("location: index.php");
  
exit;
 
}
 
}
 
 
/*
  * 读取文件内容
  * 参数 $file 为文件名及完整路径
  * 返回文件内容
  */

 
function readfiles($file){
 
$tdata = "";
 
$fp = fopen($file, "r");
 
 
if(filesize($file) <= 0) return;
 
 
while($data = fread($fp, filesize($file))){
  
$tdata .= $data;
 
}
 
fclose($fp);
 
return $tdata;
 
}
}
?>

DedeCms V5.1 SP1无法调用副栏目数据BUG的解决方法

5.1升级SP1后出现自由标记Arclist不能列表副栏目的问题

分析如下DEDECMS的标签代码:

<!–{dede:arclist row=5 titlelen=100 orderby=’id’ typeid=’19′ type=’image.’ imgwidth=’106′ imgheight=’140′} –>

<!–{/dede:arclist} –>

其中typeid=” 变量的值19 如果是主栏目的话, 这里的5行数据 会正常的读库出来, 但是如果 这个id的值是附属栏目,(这里还是举例说明吧,以手机主题为例子,我们将手机主题分为 诺基亚手机主题  摩托手机主题 索爱手机主题 ……    但是又按主题的类型再分为 非主流手机主题 炫酷手机主题 ….  这里问题就出来了. 我们添加主题的时候,将可爱的rabbit兔兔 这个主题 放到索爱M608C系列 ID是4   但是我又要将他放到附属栏目"卡通可爱手机主题" ID 为19 中去.  这样一来. 如果我的ID19的栏目中 全部都只有这样的附属进来的数据,没有直接添加数据. 那么上面的DEDECMS标签就将无法返回数据.)

这里就清楚了 这个bug所在的问题了.,该Bug出现在SP1的include/inc/inc_fun_SpGetArcList.php文件中.

 

还得自己解决问题:将include/inc/inc_fun_SpGetArcList.php文件的103行的代码
    {
         $ridnum = count($reids);
         if($ridnum>1)
         {
             $sonids = ”;
           for($i=0;$i<$ridnum;$i++){
                 $sonids .= ($sonids==” ? TypeGetSunID($reids[$i],$dsql,’arc’,0,true) : ‘,’.TypeGetSunID($reids[$i],$dsql,’arc’,0,true));
           }
           $orwhere .= " And arc.typeid in ($sonids)  ";
         }else{
             $sonids = TypeGetSunID($typeid,$dsql,’arc’,0,true);
             $orwhere .= " And arc.typeid in ($sonids) ";
         }
         unset($reids);
    }

替换为下列代码
        {
         $ridnum = count($reids);
         if($ridnum>1)
         {
             $sonids = ”;
           for($i=0;$i<$ridnum;$i++){
                 $sonids .= ($sonids==” ? TypeGetSunID($reids[$i],$dsql,’arc’,0,true) : ‘,’.TypeGetSunID($reids[$i],$dsql,’arc’,0,true));
           }
           $orwhere .= " And ( arc.typeid in ($sonids) Or arc.typeid2 in ($sonids) ) ";
         }else{
             $sonids = TypeGetSunID($typeid,$dsql,’arc’,0,true);
             $orwhere .= " And ( arc.typeid in ($sonids) Or arc.typeid2 in ($sonids) ) ";
         }
         unset($reids);
     }

问题解决。

版权说明

 

 本文章ImFantasy 原创, 可随意转载, 但请注明出处, 并给连接! 谢谢 http://www.imfantasy.com.cn/post/dedecms-fulanmu-diaoyong.shtml

返回顶部