本文目錄一覽:
解釋一段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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/190743.html