本文目录一览:
解释一段PHP代码意思!重金
?php
function DeCode($string,$operation,$key='')
{
$key=md5($key); //md5函数加密一下
$key_length=strlen($key); //字符串长度
$string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; //如果变量$operation等于字符D,对使用 MIME base64 编码的数据进行解码
$string_length=strlen($string); //字符串长度
$rndkey=$box=array(); //声明两个数组
$result=''; //声明字符
for($i=0;$i=255;$i++) //循环255
{
$rndkey[$i]=ord($key[$i%$key_length]); //ASCII码
$box[$i]=$i;
}
//以下效果都是一样的,这个算法没有仔细研究过
for($j=$i=0;$i256;$i++)
{
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}
for($a=$j=$i=0;$i$string_length;$i++)
{
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
}
if($operation=='D')
{
if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))
{
return substr($result,8);
}
else
{
return'';
}
}
else
{
return str_replace('=','',base64_encode($result));
}
}
?
这个php代码表示什么意思?
大括号在这里起到变量解析的作用。
举个例子,
$flower = "rose";
echo "give me ${flower}s." //输出give me roses.
echo "give me $flowers." //由于没有flowers这个变量,所以不输出。
不过搂主给的那个例子,在这里看不到变量解析的效果,和普通的变量没什么区别。
不给分的搂主态度比较恶劣,拉出去打四十大板……
请教一个PHP代码的意思
第一行:
date()功能:
返回将整数 timestamp(时间戳) 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。
那么date("m")表示获得当前的月份,date("d")当天在一月中是第几天,date("d")+1及明天的天数,date("y")获得年份。
mktime()功能:
根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 纪元(January 1
1970 00:00:00 GMT)到给定时间的秒数。参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。
如此,mktime(0,0,0,date("m"),date("d")+1,date("y"))就表示明天的时间戳,就是一串整数,貌似是从1970 年 1 月 1 日到‘明天’的秒数,具体记不清了,详细可以查阅php手册。
第二行:
.date("y/m/d",$tomorrow)
仍然是date()函数,传入的第一个参数表示时间结果输出的样式,"y/m/d"及“年/月/日”样式。第二个参数及从第一行计算获得的明天的时间戳。
echo "明天是 ".date("y/m/d",$tomorrow);
输出 “明天是 某年/某月/某日”
都是一些基础php时间处理的功能函数,建议下载一个php手册,里面像字典一样没个都将的很详细。
推荐php手册现在地址:
Php点赞效果的制作代码+解析
数据库设计
先准备两张表,pic表保存的是图片信息,包括图片对应的名称、路径以及图片“赞”总数,pic_ip则记录用户点击赞后的IP数据。
CREATE TABLE IF NOT EXISTS `pic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pic_name` varchar(60) NOT NULL,
`pic_url` varchar(60) NOT NULL,
`love` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `pic_ip` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pic_id` int(11) NOT NULL,
`ip` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
index.php
在index.php中,我们通过PHP读取pic表中的图片信息并展示出来,结合CSS,提升页面展示效果。
?php
include_once("connect.php");
$sql = mysql_query("select * from pic");
while($row=mysql_fetch_array($sql)){
$pic_id = $row['id'];
$pic_name = $row['pic_name'];
$pic_url = $row['pic_url'];
$love = $row['love'];
?
liimg src="images/?php echo $pic_url;?" alt="?php echo $pic_name;?"pa href="#"
title="赞"class="img_on" rel="?php echo $pic_id;?"?php echo $love;?/a/p/li
?php }?
CSS中,我们将定义鼠标滑向和离开红心按钮的动态效果,并定位按钮的位置。
.list{width:760px; margin:20px auto}
.list li{float:left; width:360px; height:280px; margin:10px; position:relative}
.list li p{position:absolute; top:0; left:0; width:360px; height:24px; line-height:24px;
background:#000; opacity:.8;filter:alpha(opacity=80);}
.list li p a{padding-left:30px; height:24px; background:url(images/heart.png) no-repeat
4px -1px;color:#fff; font-weight:bold; font-size:14px}
.list li p a:hover{background-position:4px -25px;text-decoration:none}
jQuery代码
当用户点击自己喜欢的图片上的红心按钮时,向后台love.php发送ajax请求,请求响应成功后,更新原有的数值
$(function(){
$("p a").click(function(){
var love = $(this);
var id = love.attr("rel"); //对应id
love.fadeOut(300); //渐隐效果
$.ajax({
type:"POST",
url:"love.php",
data:"id="+id,
cache:false, //不缓存此页面
success:function(data){
love.html(data);
love.fadeIn(300); //渐显效果
}
});
return false;
});
});
love.php
后台love.php接收前端的ajax请求,根据提交的图片id值,查找IP表中是否已有该用户ip的点击记录,如果有则告诉用户已“赞过了”,反之,则进行一下操作:
1、更新图片表中对应的图片love字段值,将数值加1。
2、将该用户IP信息写入到pic_ip表中,用以防止用户重复点击。
3、获取更新后的赞值,即赞该图片的用户总数,并将该总数输出给前端页面。
include_once("connect.php"); //连接数据库
$ip = get_client_ip(); //获取用户IP
$id = $_POST['id'];
if(!isset($id) || empty($id)) exit;
$ip_sql=mysql_query("select ip from pic_ip where pic_id='$id' and ip='$ip'");
$count=mysql_num_rows($ip_sql);
if($count==0){ //如果没有记录
$sql = "update pic set love=love+1 where id='$id'"; //更新数据
mysql_query( $sql);
$sql_in = "insert into pic_ip (pic_id,ip) values ('$id','$ip')"; //写入数据
mysql_query( $sql_in);
$result = mysql_query("select love from pic where id='$id'");
$row = mysql_fetch_array($result);
$love = $row['love']; //获取赞数值
echo $love;
}else{
echo "赞过了..";
}
我上传的附件中 数据库SQL 你可以直接建立test 数据库UTF8编码的,然后把SQL文件导入进去。修改一下connect.php中数据库的连接信息即可。
php里面有这样的代码 “” 麻烦解释下是什么意思,谢谢!
在PHP里,implode() 函数把数组元素组合为一个字符串。这句的意思是把$uptypes数组以逗号为分隔符分解成一个字符串关输出到页面。
比如:$uptypes=array(‘this’,‘is’,‘apple’);
implode(', ',$uptypes)则输出this,is,apple