使用php的同学都会知道上传文件我们默认情况在php只会支持2MB文件上传大小了,如果超过了就无法上传了,下面我来给大家介绍如何设置PHP上传文件大小限制吧。
一,如果php没有限制我们可以在上传时就限制上传大小,如
代码如下 |
复制代码 |
$maxattachsize=5097152;//最大上传大小,默认是2m
$temppath=$upfile['tmp_name'];
$filesize=filesize($temppath);
if($filesize > $maxattachsize)$err='文件大小超过'.$maxattachsize.'字节'; |
这样就限制了文件只能上传2MB大小的文件了
二,修改php.ini中的post_max_size和upload_max_filesize
1、memory_limit内存设置限制
2、max_execution_time程序执行时间限制
3、post_max_size最大POST数据限制
4、upload_max_filesize最大上传文件大小限制
例
代码如下 |
复制代码 |
max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)
; Maximum size of POST data that PHP will accept.
post_max_size = 105M
; Maximum allowed size for uploaded files.
upload_max_filesize = 100M
|
小提示,如果你是上传大文件我们最好在页面加上执行时间set_time_limit
代码如下 |
复制代码 |
set_time_limit(0);
|
这样就不会超时了
本文章给家收集了大量的关于html标签的去除方法,很多朋友可能会想到使用strip_tags函数,但这个函数会把所有的html标签全部删除了,下面我来给大家介绍去掉指定的html标签及内容方法,有需要了解的朋友可参考。
string strip_tags ( string str [, string allowable_tags] )
弊端 :
这个函数只能保留想要的html标签,就是参数string allowable_tags。
在yizero的评论中我知道了这个函数的参数allowable_tags的其他的用法。
代码如下 |
复制代码 |
strip_tags($source, ”); 去掉所以的html标签。
strip_tags($source, ‘<div><img><em>’); 保留字符串中的div、img、em标签。
|
如果想去掉的html的指定标签。那么这个函数就不能满足需求了。于是乎我用到了这个函数。
代码如下 |
复制代码 |
<?php
/**
* 删除指定的HTML标签及其中内容,暂时只支持单标签清理
*
* @param string $string -- 要处理的字符串
* @param string $tagname -- 要删除的标签名称
* @param boolean $clear -- 是否删除标签内容
* @return string -- 返回处理完的字符串
*/
function replace_html_tag($string, $tagname, $clear = false){
$re = $clear ? '' : '1';
$sc = '/<' . $tagname . '(?:s[^>]*)?>([sS]*?)?</' . $tagname . '>/i';
return preg_replace($sc, $re, $string);
} |
以下是测试代码
代码如下 |
复制代码 |
// 百度首页内容
$string = file_get_contents('http://www.111cn.net/');
// 去掉 style 及包含内容
$string = replace_html_tag($string, 'style', true);
$string = replace_html_tag($string, 'script', true);
// 去掉 a 标签,并保存其中内容
$string = replace_html_tag($string, 'a');
// 去掉 span 标签,并保存其中内容
$string = replace_html_tag($string, 'span');
echo $string;
?>
|
如果我们要删除指定两者之间的数据
代码如下 |
复制代码 |
<?php
/**
* PHP去掉特定的html标签
* @param array $string
* @param bool $str
* @return string
*/
function _strip_tags($tagsArr,$str) {
foreach ($tagsArr as $tag) {
$p[]="/(<(?:/".$tag."|".$tag.")[^>]*>)/i";
}
$return_str = preg_replace($p,"",$str);
return $return_str;
}
$str = "<b>您好</b><input type='text' name='' /><a href='http://www.baidu.com'>百度一下,你就知道</a>";
echo _strip_tags(array("b", "input", "a"),$str); #去掉 B 标签和 INPUT 标签
?>
|
有很多朋友都不知道怎么把数组中元素给删除,下面我来总结各种数组删除元素方法给各位,有需要了解的朋友可进入参考。
删除数组指定元素
代码如下 |
复制代码 |
<?php
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,1,2));
?>
输出
Array ( [0] => Cat [1] => Horse )
|
几个函数用下来觉得array_search()比较实用
array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false
代码如下 |
复制代码 |
$array = array('1', '2', '3', '4', '5');
$del_value = 3;
unset($array[array_search($del_value , $array)]);//利用unset删除这个元素
print_r($array);
输出
array('1', '2', '4', '5');
|
从数组头删除值
array_shift()函数删除并返回数组中找到的元素。其结果是,如果使用的是数值健,则所有相应的值都会下移,而使用关联键的数组不受影响。其形式为:
mixed array_shift(array array)
下面的例子删除了$fruits数组中的第一个元素apple:
代码如下 |
复制代码 |
$fruits = array("apple","banana","orange","pear");
$fruit = array_shift($fruits);
// $fruits = array("banana","orange","pear")
// $fruit = "apple";
|
从数组尾删除元素
array_pop()函数删除并返回数组的最后一个元素。其形式为:
mixed array_pop(aray target_array);
下面的例子从$states数组删除了最后的一个州:
代码如下 |
复制代码 |
$fruits = array("apple","banana","orange","pear");
$fruit = array_pop($fruits);
//$fruits = array("apple","banana","orange");
//$fruit = "pear";
|
删除数组中间的元素
代码如下 |
复制代码 |
function deleteElementFromArr($arr, $index){
if($index < count($arr)-1){
unset($arr[$index]);
reset($arr);
}
return $arr;
}
|
我封装成了一个函数,方便大家使用:
代码如下 |
复制代码 |
<?php
function array_remove(&$arr, $offset)
{
array_splice($arr, $offset, 1);
}
$arr = array('apple','banana','cat','dog');
array_remove($arr, 2);
print_r($arr);
?>
|
删除数组重复元素
代码如下 |
复制代码 |
<?php
function assoc_unique($arr, $key) {
$tmp_arr = array();
foreach($arr as $k => $v) {
if(in_array($v[$key], $tmp_arr)) {
unset($arr[$k]);
} else {
$tmp_arr[] = $v[$key];
}
}
sort($arr);
return $arr;
}
$aa = array(
array('id' => 123, 'name' => '张三'),
array('id' => 123, 'name' => '李四'),
array('id' => 124, 'name' => '王五'),
array('id' => 125, 'name' => '赵六'),
array('id' => 126, 'name' => '赵六')
);
$key = 'name';
assoc_unique(&$aa, $key);
print_r($aa);
?>
|
本文章结合Codigniter框架与jquery 的ajax实现PHP POST提交到两个地址实现代码,有需要了解的朋友可进入参考。
Codigniter框架使用jquery+ajax/" target="_blank">jquery ajax代码如下:
代码如下 |
复制代码 |
<form action="<?php echo @htmlspecialchars($url['login_url']) ?>" method="post" enctype="application/x-www-form-urlencoded" name="form1" id="form1">
<p><label>工资号:</label>
<input name="Login.Token1" class="text" type="text" id="token1" />
</p>
<p><label>密 码:</label>
<input name="Login.Token2" class="text" type="password" id="token2" />
</p>
<p>
<input name="登录" type="submit" id="user_login" value="登录" />
<input type="reset" value="重置" />
</p>
<b style="color:red"><?php echo $this->session->flashdata('error'); ?></b>
</form>
<script>
$(function(){
$("#user_login").click(function(){
var username = $("#token1").val();
var salary_no = $("#token2").val();
$.ajax({
type: "POST",
data: "username="+username+"&salary_no="+salary_no,
url: "<?php echo site_url('home/ajax_check_username')?>",
dataType: "text",
cache: false,
error: function(){alert('error');},
success: function(data){
if(data == 'yes'){
location.href="<?php echo site_url('home/index')?>";
}else{
form1.submit();
}
}
});
return false;
});
});
</script>
|
ajax提交到home控制器代码:
代码如下 |
复制代码 |
#提交到本地
function ajax_check_username(){
//redirect('home/index');
$username = $this->input->post("username");
$salary_no = $this->input->post("salary_no");
if($this->user_mdl->check_ajax_user($username,$salary_no)){
$this->session->set_userdata('salary_no', $salary_no);
$this->session->set_userdata('username', $username);
echo "yes";
}else{
echo "no";
}
}
|
本文章来给大家介绍PHP ajax 统计当前在线用户数程序代码,有需要的朋友可参考。
我们要统计在一段时间内访问站点的人数,有多种解决方案,你可以使用cookie,session结合文本或者数据库来记录用户访问数。本文将使用PHP,结合Mysql以及jQuery,展示一个统计在线人数以及访客地区分布的示例。
通常,当访客访问网站时,页面记录用户的cookie信息,当cookie过期即认为用户不在线。本文中我们使用PHP记录访客IP,并在客户端记录cookie及过期时间,同时通过新浪IP地址接口,获取访客的地理位置(本例只记录省份),一并写入mysql表中,即可统计一段时间内的访客总数,也可以查看访客的地区分布。
HTML
我们在页面上放置一个显示当前在线人数的div#total以及一个用于展示访客地区分布的列表#onlinelist,默认我们在列表中放置一张与加载动画图片,后面我们用jQuery控制当鼠标滑向时展示详细列表。
代码如下 |
复制代码 |
<div class="demo">
<div id="total">当前在线:<span id="onlinenum"></span></div>
<ul id="onlinelist">
<li><img src="loader.gif"></li>
</ul>
</div>
|
CSS
我们用CSS来渲染显示效果,为了就是不让我们的示例很难看,下面的代码中,我们使用了CSS3,时代在进步啊,所以建议使用现代浏览器预览效果。
.
代码如下 |
复制代码 |
demo{width:150px; margin:20px auto; font-size:14px}
#total{padding:6px 10px; background:#090 url(arr.png) no-repeat right top; color:#fff;
cursor:pointer; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;
-moz-box-shadow:0 0 3px #ccc; -webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;}
#onlinelist{background:#f7f7f7; border:1px solid #d3d3d3; display:none; -moz-border-radius:5px;
-webkit-border-radius:5px; border-radius:5px; -moz-box-shadow:0 0 3px #ccc;
-webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;}
#onlinelist li{height:20px; line-height:20px;padding:4px 6px;border-bottom:1px dotted #d9d9d9}
#onlinelist li span{float:right}
#onlinelist li:hover{background:#fff} |
Mysql
我们要准备一张数据表online,用来记录访客IP、地区及访问时间。整个示例统计过程都依赖这张表,其结构如下:
代码如下 |
复制代码 |
CREATE TABLE IF NOT EXISTS `online` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(30) NOT NULL,
`province` varchar(64) NOT NULL,
`addtime` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
PHP
online.php用来记录访客信息,包括IP地址和地区。首先检测数据表中是否有访客IP记录,如果有,则只更新访问时间,否则,获取用户省份区域,并将用户IP即省份区域插入到表中。在此,可以判断是否存在访客的cookie记录,如果不存在则向新浪IP地址库请求获取访客的区域信息,并设置cookie值和过期时间。最后,我们删除表中已经过期的记录,统计总记录数并输出,详细请看代码注释。
代码如下 |
复制代码 |
include_once('connect.php'); //连接数据库
$ip = get_client_ip(); //获取客户端IP
$time = time();
//查询表中是否有ip为当前访客IP的记录
$query = mysql_query("select id from online where ip='$ip'");
if(!mysql_num_rows($query)){//如果不存在访客IP
if($_COOKIE['geoData']){//如果存在cookie,则获取用户的区域
$province = $_COOKIE['geoData']; //区域(省份)
}else{
$api = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip";
$json = file_get_contents($api);//调用新浪IP地址库
$arr = json_decode($json,true);//解析json
$province = $arr['province'];//获取省份
setcookie('geoData',$province,$time+600); //设置cookie,设置过期时间为10分钟
}
//将访客信息插入到数据表中
mysql_query("insert into online (ip,province,addtime) values ('$ip','$province','$time')");
}else{//如果存在,则更新该用户访问时间
mysql_query("update online set addtime='$time' where ip='$ip'");
}
//删除已过期的记录
$outtime = $time-600;
mysql_query("delete from online where addtime<$outtime");
//统计总记录数,即在线用户数
list($totalOnline) = mysql_fetch_array(mysql_query("select count(*) from online"));
echo $totalOnline;//输出在线总数
mysql_close();
|
关于新浪IP地址库的调用,您也可以参阅helloweba.com文章根据IP定位用户所在城市信息的介绍。
函数get_client_ip()用来获取用户真实IP。
代码如下 |
复制代码 |
function get_client_ip() {
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);
}
|
geo.php用来统计各省份(区域)访客人数分布。通过查询数据库,并按省份分组排序即可,注意我们将最终的数据集以JSON的形式输出,便于前端ajax交互。
代码如下 |
复制代码 |
include_once('connect.php');//连接数据库
//查询区域统计
$sql = "select province,count(*) as total from online group by province order by total desc";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result)){
$list[] = array(
'province' => $row['province'],
'total' => $row['total']
);
}
echo json_encode($list);//以json格式输出
|
jQuery
前端页面需要做的是,页面加载时展示访客总数,即使用ajax请求online.php即可。然后当鼠标滑向统计箭头时,通过ajax请求geo.php获取各区域省份的在线人数,并以下拉的方式展现效果。
代码如下 |
复制代码 |
$(function(){
$("#onlinenum").load("online.php");
$(".demo").hover(function(){
$("#onlinelist").slideDown("fast");
var str = '';
$.getJSON("geo.php",function(json){
$.each(json,function(index,array){
str = str + "<li><span>"+array['total']+"</span>"+array['province']+"</li>";
});
$("#onlinelist").html(str);
});
},function(){
$("#onlinelist").slideUp("fast");
});
});
|
完整实例
代码如下 |
复制代码 |
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>PHP+MySQL+jQuery统计当前在线用户数</title>
<link rel="stylesheet" type="text/css" href="../css/main.css" />
<style type="text/css">
.demo{width:150px; margin:20px auto; font-size:14px; position:relative}
#total{padding:6px 10px; background:#090 url(arr.png) no-repeat right top; color:#fff; cursor:pointer; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; -moz-box-shadow:0 0 3px #ccc; -webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;}
#onlinelist{background:#f7f7f7; border:1px solid #d3d3d3; display:none; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; -moz-box-shadow:0 0 3px #ccc; -webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc; position:absolute; top:30px; width:150px}
#onlinelist li{height:20px; line-height:20px; padding:4px 6px; border-bottom:1px dotted #d9d9d9}
#onlinelist li span{float:right}
#onlinelist li:hover{background:#fff}
</style>
<script type="text/javascript"" width=100% src="../js/jquery.js"></script>
<script type="text/javascript">
$(function(){
$("#onlinenum").load("online.php");
$(".demo").hover(function(){
$("#onlinelist").slideDown("fast");
var str = '';
$.getJSON("geo.php",function(json){
$.each(json,function(index,array){
str = str + "<li><span>"+array['total']+"</span>"+array['province']+"</li>";
});
$("#onlinelist").html(str);
});
},function(){
$("#onlinelist").slideUp("fast");
});
});
</script>
</head>
<body>
<div id="main">
<h2 class="top_title"><a href="blog-206.html" title="点击看教程">PHP+MySQL+jQuery统计当前在线用户数</a></h2>
<div class="demo">
<div id="total">当前在线:<span id="onlinenum"></span></div>
<ul id="onlinelist">
<li><img" width=100% src="loader.gif"></li>
</ul>
</div>
<br/><br/><br/><br/><br/>
</div>
</body>
</html>
|
标签:[!--infotagslink--]