Php部分常見問題總結(jié)
更新時間:2006年12月09日 00:00:00 作者:
20:我點(diǎn)擊后退按鈕,為什么之前填寫的東西不見
這是因?yàn)槟闶褂昧藄ession.
解決辦法:
<?php
session_cache_limiter('private, must-revalidate');
session_start();
...........
..........
?>
21:怎么在圖片里顯示IP地址
<?
Header("Content-type: image/png");
$img = ImageCreate(180,50);
$ip = $_SERVER['REMOTE_ADDR'];
ImageColorTransparent($img,$bgcolor);
$bgColor = ImageColorAllocate($img, 0x2c,0x6D,0xAF); // 背景顏色
$shadow = ImageColorAllocate($img, 250,0,0); // 陰影顏色
$textColor = ImageColorAllocate($img, oxff,oxff,oxff); // 字體顏色
ImageTTFText($img,10,0,78,30,$shadow,"d:/windows/fonts/Tahoma.ttf",$ip); //顯示背景
ImageTTFText($img,10,0,25,28,$textColor,"d:/windows/fonts/Tahoma.ttf","your ip is".$ip); // 顯示IP
ImagePng($img);
imagecreatefrompng($img);
ImageDestroy($img);
?>
22:如何取得用戶的真實(shí)IP
<?
function iptype1 () {
if (getenv("HTTP_CLIENT_IP")) {
return getenv("HTTP_CLIENT_IP");
}
else {
return "none";
}
}
function iptype2 () {
if (getenv("HTTP_X_FORWARDED_FOR")) {
return getenv("HTTP_X_FORWARDED_FOR");
}
else {
return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
return getenv("REMOTE_ADDR");
}
else {
return "none";
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {
return $ip2;
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
return $ip3;
}
else {
return "none";
}
}
Echo ip();
?>
23:如何從數(shù)據(jù)庫讀取三天內(nèi)的所有記錄
首先表格里要有一個DATETIME字段記錄時間,
格式為'2003-7-15 16:50:00'
SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3;
24:如何遠(yuǎn)程鏈接Mysql數(shù)據(jù)庫
在增加用戶的mysql表里有一個host字段,修改為"%",或者指定允許連接的ip地址,這樣,你就可以遠(yuǎn)程調(diào)用了。
$link=mysql_connect("192.168.1.80:3306","root","");
25:正則到底怎么用
點(diǎn)擊這里
正則表達(dá)式中的特殊字符
26:用Apache后,主頁出現(xiàn)亂碼
方法一:
AddDefaultCharset ISO-8859-1 改為 AddDefaultCharset off
方法二:
AddDefaultCharset GB2312
========================================================
tip:
大家貼代碼時GB2312會被解釋成??????
改成這樣就不會
[color=#000000]GB[/color]2312
10:如何比較兩個日期相差幾天,(更簡單的算法)
<?PHP
$Date_1="2003-7-15";//也可以是:$Date_1="2003-7-15 23:29:14";
$Date_2="1982-10-1";
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$Days=round(($d1-$d2)/3600/24);
Echo "偶已經(jīng)奮斗了 $Days 天^_^";
?>
27:為什么單引號,雙引號在接受頁面變成(\\'\")
解決方法:
方法一:在php.ini中設(shè)置:magic_quotes_gpc = Off
方法二: $str=stripcslashes($str)
28:怎么讓程序一直運(yùn)行下去,而不是超過30秒就停止
set_time_limit(60)//最長運(yùn)行時間一分鐘
set_time_limit(0)//運(yùn)行到程序自己結(jié)束,或手動停止
29:計算當(dāng)前在線人數(shù)
例子一:用文本實(shí)現(xiàn)
<?php
//首先你要有讀寫文件的權(quán)限
//本程序可以直接運(yùn)行,第一次報錯,以后就可以
$online_log = "count.dat"; //保存人數(shù)的文件,
$timeout = 30;//30秒內(nèi)沒動作者,認(rèn)為掉線
$entries = file($online_log);
$temp = array();
for ($i=0;$i<count($entries);$i++) {
$entry = explode(",",trim($entries[$i]));
if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time())) {
array_push($temp,$entry[0].",".$entry[1]."n"); //取出其他瀏覽者的信息,并去掉超時者,保存進(jìn)$temp
}
}
array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."n"); //更新瀏覽者的時間
$users_online = count($temp); //計算在線人數(shù)
$entries = implode("",$temp);
//寫入文件
$fp = fopen($online_log,"w");
flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些網(wǎng)絡(luò)文件系統(tǒng)中正常工作
fputs($fp,$entries);
flock($fp,LOCK_UN);
fclose($fp);
echo "當(dāng)前有".$users_online."人在線";
?>
例子二:
用數(shù)據(jù)庫實(shí)現(xiàn)在線用戶
30:什么是模板,怎么用
這里有幾篇關(guān)于模板的文章
我用的是phplib模板
下面是其中幾個函數(shù)的使用
$T->Set_File("隨便定義","模板文件.tpl");
$T->Set_Block("在set_file中定義的","<!-- 來自模板 -->","隨便定義");
$T->arse("在Set_Block中定義的","<!-- 來自模板 -->",true);
$T->arse("隨便輸出結(jié)果","在Set_File中定義的");
設(shè)置循環(huán)格式為:
<!--(多于一個空格) BEGIN $handle(多于一個空格)-->
如何將模板生成靜態(tài)網(wǎng)頁
<?php
//這里使用phplib模板
............
............
$tpl->parse("output","html");
$output = $tpl->get("output");// $output 為整個網(wǎng)頁內(nèi)容
function wfile($file,$content,$mode='w') {
$oldmask = umask(0);
$fp = fopen($file, $mode);
if (!$fp) return false;
fwrite($fp,$content);
fclose($fp);
umask($oldmask);
return true;
}
// 寫到文件里
Wfile($FILE,$output);
header("location:$FILE");//重定向到生成的網(wǎng)頁
}
?>
phplib下載地址 smarty下載地址
31:怎么用php解釋字符
比如:輸入2+2*(1+2),自動輸出8
可以用eval函數(shù)
<form method=post action="">
<input type="text" name="str"><input type="submit">
</form>
<?php
$str=$_POST['str'];
eval("$o=$str;");
Echo "$o";
?>
另外,用此函數(shù)必須特別小心!!
如果有人輸入format: d:會是什么結(jié)果?
相關(guān)文章
PHP面向?qū)ο蟪绦蛟O(shè)計高級特性詳解(接口,繼承,抽象類,析構(gòu),克隆等)
這篇文章主要介紹了PHP面向?qū)ο蟪绦蛟O(shè)計高級特性,結(jié)合實(shí)例形式分析了php面向?qū)ο蟪绦蛟O(shè)計中所涉及的靜態(tài)屬性、常量屬性、接口、繼承、抽象類、析構(gòu)、克隆等概念與使用技巧,需要的朋友可以參考下2016-12-12PHP使用zlib擴(kuò)展實(shí)現(xiàn)GZIP壓縮輸出的方法詳解
這篇文章主要介紹了PHP使用zlib擴(kuò)展實(shí)現(xiàn)GZIP壓縮輸出的方法,結(jié)合實(shí)例形式詳細(xì)分析了php gzip配置及壓縮輸出的相關(guān)操作技巧,需要的朋友可以參考下2018-04-04php實(shí)現(xiàn)比較兩個字符串日期大小的方法
這篇文章主要介紹了php實(shí)現(xiàn)比較兩個字符串日期大小的方法,涉及php日期操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05Laravel 5.4重新登錄實(shí)現(xiàn)跳轉(zhuǎn)到登錄前頁面的原理和方法
在日常開發(fā)中,我們經(jīng)常遇到一個需求,就是用戶登陸后存在過期時間,超時用戶需重新登錄,下面這篇文章主要給大家介紹了關(guān)于Laravel 5.4重新登錄實(shí)現(xiàn)跳轉(zhuǎn)到登錄前頁面的原理和方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07