Php部分常见问题总结

Php部分常见问题总结 Q`J( IdF 
https://www.phpx.com/thread-38769-1-1.html 6=1YE3K$ 
yrF$V%�) 
@_M ui 4 
若有出错地方或者你有更好的想法,欢迎跟贴. E[>}qN{L! 
W#TD9~/F 
25' 0.r 
在提问题前请先仔细查阅PHP手册,MYSQL手册 以及PHPINFO里面的设置 "}^rW;!e 
另外希望你读一下PHP编程标准 +!a-K b 
&|zD|6vJi 
PHP手册下载地址 w[#tae DG 
`X<]O 
1:为什么我得不到变量 jc5AsS:/ 
QT!l'?T 
我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? Lzy/}k 
4;tfOBo-ru 
在PHP4.2以后的版本中register_global默认为off @%zir_Iu 
若想取得从另一页面提交的变量: !jU^u& 
U8!=$!U� 
方法一:在PHP.ini中找到register_global,并把它设置为on. a':Z.ludd 
方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()). [caCw(7T 
方法三:一个一个读取变量$a=$_GET["a"];$b=$_POST["b"]等,这种方法虽然麻烦,但比较安全. i1JH f P" 
M]{t ; 
2:调试你的程序 SuY^Tjx` 
("M1`R:J 
在运行时必须知道某个变量为何值。我是这样做的,建立一文件debug.php,其内容如下: ..v6S <D 
T}]*)b 
CODE: S;EFT2zH 
[Copy to clipboard] [d93Rlb 
<?PHP (;v,lC_o 
Ob_Start(); A7#K 
Session_Start(); ?^<85+" 
Echo "<pre>"; o*sI$w4JC 
_9Y*V=NO 
Echo "本页得到的_GET变量有:"; 4A694R 
Print_R($_GET); =<,hJdB, 
'y[2W880 
Echo "本页得到的_POST变量有:"; )+$a0: 
Print_R($_POST); f+FOaR6Pm 
<<LDw#Tp< 
Echo "本页得到的_COOKIE变量有:"; Oo_R3JH 
Print_R($_COOKIE); 3#n/F!<,H 
~Mn9/(Y 
Echo "本页得到的_SESSION变量有:"; IL^#0m+> 
Print_R($_SESSION); {ukORX( 
Echo "</pre>"; K#+YH_35 
?> ( pA5"q# 
然后在php.ini中设置:include_path = "c:/php",并将debug.php放在此文件夹, /B>�d"Z>v* 
以后就可以在每个网页里包含此文件,查看得到的变量名和值. P&@~u,l{ 
dZAk(Y.}~ 
3:如何使用session )5/7qeW 
tH-+z�I& 
凡是与session有关的,之前必须调用函数session_start(); 5oUsH9M 
2W!d+q_1) 
为session付值很简单,如: GC!Ij7^ 
$7%i,x 
CODE: N-M�0w]%o 
[Copy to clipboard] 1cEbp4. 
<?php 0_>!m* QG 
Session_start(); BI5+b-ubi 
$Name = "这是一个Session例子"; pOl5S5 
Session_Register("Name");//注意,不要写成:Session_Register("$Name"); 7T<g@A?V 
Echo $_SESSION["Name"]; P+9UsJK~/[ 
//之后$_SESSION["Name"]为"这是一个Session例子" K$Qv7= 
?> =Vgo�Z.= 
在php4.2之后,可以为session直接付值: tk L& Xg 
$q>H xd'z 
CODE: m~C]F<Fj< 
[Copy to clipboard] t�j+~>yz|H 
<?PHP +}Mdn/ 
Session_Start(); }Vk/yFRE* 
$_SESSION["name"]="value"; . <] -CZ 
?> KX 4:B5L 
取消session可以这样: 8*BYMWZu 
LinINkgcc 
CODE: exz9+ /� 
[Copy to clipboard] OJ4n'rp 
<?php oir{:IZk 
session_start(); C)%NceYZ 
session_unset(); "�f)O _B 
session_destroy(); @} vk[_ZO 
?> 9cJ'<B 
取消某个session变量在php4.2以上还有BUG. trRdF F^T 
qYfX$=/ < 
sw%Mi7 
d7zOKC8 
注意: qJ^19Uaw[ 
yCxU,k^Yy 
1:在调用Session_Start()之前不能有任何输出.例如下面是错误的. H+y*4cfP: 
========================================== kAc/77 
1行 ~Wr( P_Ag> 
2行 <?PHP DH=tJ"m} 
3行 Session_Start();//之前在第一行已经有输出 M h6M{) 
4行 ..... O#px(L 
5行 ?> xzT@V<~nU 
========================================== (V)eJ&(} 
Ad9N8NVqW 
YS+Jg^fx 
提示1: 'tv(dn9~a. 
{Mz" ~U 
凡是出现"........headers already sent..........",就是Session_Start()之前向浏览器输出信息. vW:{?O 
去掉输出就正常,(COOKIE也会出现这种错误,错误原因一样) q3Ilgi3#' 
^fGnmcJ_ 
提示2: [u e{ym%G" 
!/:ml)< 
如果你的Session_Start()放在循环语句里,并且很难确定之前哪里向浏览器输出信息,可以用下面这种方法: %V?@r_R 
1行 <?PHP Ob_Start(); ?> DQWlgE 
........这里是你的程序...... w*np4Q+ 
o/dyDw 
E>>pv'+E 
}B)}>7E 
2:这是什么错误 Y"4U=?l" 
;u'@w!Gc 
Warning: session_start(): open(/tmp//sess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:.... '#t"t,a 
因为你没有指定session文件的存放路径. QH9@POzN 
/LU.tt/b 
解决方法: !)1J]{CZW# 
(1)在c盘建立文件夹tmp tj8'l$pS[ 
(2)打开php.ini,找到session.save_path,修改为session.save_path= "c:/tmp" =9(s:f] 
_m>m6f 
=OK>XOz 
dq+* e{Q 
4:为什么我向另一网页传送变量时,只得到前半部分,以空格开头的则全部丢失 SpG)d=8bQ 
bj1+wF_oH# 
CODE: vb -7]~-=` 
[Copy to clipboard] W1XEWc-4 
<?php a";|8~0 
$Var="hello php";//修改为$Var="   hello php";试试得到什么结果 oQdA;M 
$post= "receive.php?Name=".$Var; /8Z-l-zUg 
header("location:$post"); <^T*F3.rL 
?> p' u*J 5t 
receive.php的内容: L ^0}I`"m 
WOB~u#" 
CODE: S^D 
[Copy to clipboard] KcfBo/d.Cu 
<?PHP ~b2 ~HR 
Echo "<pre>"; Q,V ~MyM 
Echo   $_GET["Name"]; 23:'7W$ 
Echo "</pre>"; 9LL9}]$ 
?> almcf9`N6l 
正确的方法是: NwPNS{#> 
QMF+>/)| 
CODE: ./x cJY~b 
[Copy to clipboard] *lo4&jm+ 
<?php x) y{=> 
$Var="hello php"; 9L#�__ 
$post= "receive.php?Name=".urlencode($Var); vK(R,zu � 
header("location:$post"); Fe)3zGZh 
?> &AR3H^)< 
在接收页面你不需要使用Urldecode(),变量会自动编码. >;|1rbfxkk 
!ylT &/Y 
H7Kj4fTl8 
5:如何截取指定长度汉字而不会出现以"?>"结尾,超出部分以"..."代替 (d[~3zcR 
= . �3 
9_:m 
一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点. ^L"YB<_< 
@4";+$! 
CODE: &jyL* % 
[Copy to clipboard] fzW{QH8Fa( 
<?php ^|6V^w 
<?PHP Lgx/#>&DZ$ 
$str="这个字符好长呀,^_^"; ~2gT {'7 
$Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符... *e Opn: 
Echo   "$Short_Str"; PfgIF Ub$N 
Function csubstr($str,$start,$len) *?R~'�j,p 
{ mW71Jwf@^/ 
$strlen=strlen($str); P5B>1o 
$clen=0; v>!)r&q 
for($i=0;$i<$strlen;$i++,$clen++) uNb:xd#y 
{ ZS<=.StJ" 
if ($clen>=$start+$len) soX3eu7i 
break; -4 fu}f[* 
if(ord(substr($str,$i,1))>0xa0) L6!(Ojp E 
{ M"MrY0v*y 
if ($clen>=$start) M skpsFG 
$tmpstr.=substr($str,$i,2); /rsO5sv 
$i++; @!>"7#J4oF 
} 2|wI?tAY 
else u'N M&Ph 
{ EcZBLe!bV 
if ($clen>=$start) DoGWCS 
$tmpstr.=substr($str,$i,1); FB)oGkOS{ 
} D`s9bc } 
} eS+0[T+$b 
j.i P5G> 
return $tmpstr; {==7g`Jc 
} 3suV^PT 
Function showShort($str,$len) J~&ewZg 
{ QY<0~)h 
$tempstr = csubstr($str,0,$len); bv>1PdGZLQ 
if ($str<>$tempstr) eN+%$ty^~y 
$tempstr .= "..."; //要以什么结尾,修改这里就可以. {@rK#'#J! 
8WQ*5*/ 
return $tempstr; ty;2@Ud(v 
} #>]� wI8 
?> =S;o. 
5C+#Am(Q% 
6:规范你的SQL语句 ;- #YYW 
KkCG=h=T4= 
fR17`wF{Q 
在表格,字段前面加上"`",这样就不会因为误用关键字而出现错误, J:_T:d 
当然我并不推荐你使用关键字. eT#9NE 
;F#Vs5R/ 
例如 ZV P7 D 
$Sql="INSERT INTO `xltxlm` (`author`, `title`, `id`, `content`, `date`) VALUES ('xltxlm', 'use`', 1, 'criterion your sql string ', '2003-07-11 00:00:00')" )>3 1mNd 
+/gMG-}P 
"`"怎么输入? 在TAB键上面. K /nS^F$a 
?@aO}fNi 
5E@Y1G_39 
7:如何使Html/PHP格式的字符串不被解释,而是照原样显示 Cg~.l`')ri 
`nB:Z|@ 
= gOr�X|@7 
CODE: 8%LJ(M9 
[Copy to clipboard] b:FBB(R 
<?PHP e[n:/ 3 & 
$str="<h1>PHP</h1>"; Oc_Ud = 
Echo "被解释过的: ".$str."<br>经过处理的:"; X1AjO) g 
Echo   htmlentities(nl2br($str)); wWc*1?zc1 
?> Vm]`!o:% 
�Nn r- 
8:怎么在函数里取得函数外的变量值 E*]T#U*@n 
i!$ ]{}e 
,)<I_[Ex 
CODE: < LrW% 
[Copy to clipboard] -y 3,`R_ 
<?PHP 0)$!GNle 
$a="PHP"; Tz9;�hr 
foo(); 0W=,{f6> ' 
Function foo() Og+N> 
{ l"-31k,8 
global $a;//删除这里看看是什么结果 q;wBQ6rt 
Echo "$a"; 5_lpCw_ z2 
} 6u�!A$kM 
?> Yft(sc_vO 
_*(Eza 
9:我怎么知道系统默认支持什么函数 6=48<.+% 
itn|iC/> 
7SaF6<c?? 
CODE: (u17>B 
[Copy to clipboard] ?% tFdf9 
<?php Pf6BXn~{ 
$arr = get_defined_functions(); .yvGH 
Function php() { "f0z I/| 
} &RGA`{{ }E 
echo   "<pre>"; <&}^0r-N 
Echo   "这里显示系统所支持的所有函数,和自定以函数phpn"; @@'KppW 
print_r($arr); 1VkxvK<c 
echo   "</pre>"; wBbd90# 
?> >N]69)8bks 
u_%iF<,l> 
10:如何比较两个日期相差几天 -sPwCd,qE 
G:.GA+iO 
+F�#x#E 
CODE: {Aw KY 
[Copy to clipboard] D!7$9F 
<?PHP aTf %B�3 
$Date_1="2003-7-15";//也可以是:$Date_1="2003-6-25 23:29:14"; ~`WGC]#+F 
$Date_2="1982-10-1"; >d* >E$H)L 
$Date_List_1=explode("-",$Date_1); tqwVXWIud 
$Date_List_2=explode("-",$Date_2); $/Br.,]NR+ 
$d1=mktime(0,0,0,$Date_List_1[1],$Date_List_1[2],$Date_List_1[0]); LvG~ 
$d2=mktime(0,0,0,$Date_List_2[1],$Date_List_2[2],$Date_List_2[0]); ~jN1wY]Y 
$Days=round(($d1-$d2)/3600/24); q/]?KFIoo 
Echo   "偶已经奋斗了 $Days 天^_^"; #$ uQ!s-. 
?> &t*J,8 : 
nW'P 
11:为什么我升级PHP后,原来的程序出现满屏的 Notice: Undefined variable: tz,c~F* & 
Y9Ucg/Q 
w'nB~mE q 
这是警告的意思,由于变量未定义引起的. Kj W8r]~g 
打开php.ini,找到最下面的error_reporting,修改为error_reporting = E_ALL & ~E_NOTICE $ve9Q4Q,6 
uzoq JZ 
对于Parse error错误 fLIv9 c 
error_reporting(0)无法关闭. gpku)ZLQ U 
如果你想关闭任何错误提示,打开php.ini,找到display_errors,设置为display_errors = Off.以后任何错误都不会提示. ),OF0 
7r?�2$8_ 
那什么是error_reporting? Wt*<a'Y 
g@v0[(~ 
Tv5`6'pw 
a?1@5||g) 
12:我想在每个文件最前,最后面都加上一文件.但一个一个添加很麻烦 dA g( 
2EUKJY{O 
1:打开php.ini文件 wOJ 9/ 
设置 include_path= "c:" nf{U`*s 
+E_.mINM: 
2:写两个文件 to �MD?= 
auto_prepend_file.php 和 auto_append_file.php 保存在c盘,他们将自动依附在每个php文件的头部和尾部. L7BhejX > 
YZR,l#9<:h 
3:在php.ini中找到: l.Wq] /v8 
Automatically add files before or after any PHP document. 2lU|jBbq, 
auto_prepend_file = auto_prepend_file.php;依附在头部 :{D+^ 
auto_append_file = auto_append_file.php;依附在尾部 pO uK_C 
@(6E04-MX* 
以后你每个php文件就相当于 Wa_S*.PV 
Ug&*{[w 
CODE: 1R%3A9anx 
[Copy to clipboard] Ving]<& 
<?php _r g0^[m 
Include "auto_prepend_file.php" ; >L gX4xQ{ 
l(coBj2 
.......//这里是你的程序 :*whj=( 
`~xRy>f 
I7PHo8gP 
Include "auto_append_file.php"; r+~j6 YXNy 
?> o|;i) u:hG 
l17: L $7 
13:如何利用PHP上传文件 V.y>I CBL 
xA&Xay 
68ip^v 1 
CODE: 7!5^EY=y 
[Copy to clipboard] O(/{?FO 
<html><head> =l"7c#[5 
<title>上载文件表单</title></head> e2"Ph5{ 
<body> ~,Tt,%S'% 
<form enctype="multipart/form-data" action="" method="post"> II_MK)Rj 
请选择文件: <br> ~'ES~ 
<input name="upload_file" type="file"><br> D[Ot<]B% 
<input type="submit" value="上传文件"> qI$m :{< 
</form> CTt>f~ s 
</body> f$/|Qt0NeX 
</html> /t,PUKm+ 
T= b<@ *f1 
<? j9,0Sy71~ 
$upload_file=$_FILES['upload_file']['tmp_name']; Z7[gClz?T 
$upload_file_name=$_FILES['upload_file']['name']; x?EV@Km 
BZITYs:/< 
if($upload_file){ 2| %]lp 
$file_size_max = 1000*1000;// 1M限制文件上传最大容量(bytes) k"NP6umj 
$store_dir = "d:/";// 上传文件的储存位置 _sokz *.e 
$accept_overwrite = 1;//是否允许覆盖相同文件 T {.%T JQ 
// 检查文件大小 4Zs]sn^b 
if ($upload_file_size > $file_size_max) { }R0G$' 
echo "对不起,你的文件容量大于规定"; naZ[Pm 
exit; f-jWk!&2 
} MU/,}3 
yS~!}O 
// 检查读写文件 _OxOz/?f 
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) { &<)x+ 
Echo   "存在相同文件名的文件"; 2j[$|Ga 
exit; *{wDRSt 
} YFAc&)J 1 
~++3P,- 
//复制文件到指定目录 U`tLqm4m 
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) { |92]2l/ 
echo "复制文件失败"; w5VE> au 
exit; Nk|`.@ 
} ko=_~ vB 
B7j i0 
} A4.V(]T) 
K<E B$ 
Echo   "<p>你上传了文件:"; ON$qPKr 
echo $_FILES['upload_file']['name']; p/R{tGN 
echo "<br>"; v)/^O! 
//客户端机器文件的原名称。 >h{F(u&f 
K!&YZY1{ 
Echo   "文件的 MIME 类型为:"; 0gA2Kx 
echo $_FILES['upload_file']['type']; w8K()Mr- 
//文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。 k XuVA ox 
echo "<br>"; Z/p?Rr@P5 
V3<t{ 
Echo   "上传文件大小:"; ^'O2uG;{ 
echo $_FILES['upload_file']['size']; ~.RcS|:pk 
//已上传文件的大小,单位为字节。 Hqir=%=e} 
echo "<br>"; x6k5e0JrU 
-@d'jE 
Echo   "文件上传后被临时储存为:"; 2(L[|>l 
echo $_FILES['upload_file']['tmp_name']; KlEce 
//文件被上传后在服务端储存的临时文件名。 /2DaAXso5 
echo "<br>"; #5pL8L/St 
}h%Xndx 
Cjh},q`D 
$Erroe=$_FILES['upload_file']['error']; ^ko/r|c@} 
switch($Erroe){ 9n`O#kcc 
    case 0: I~ Atc8 
        Echo   "上传成功"; break; _i�4/G9 
    case 1: d-4P�jjHQL 
        Echo   "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break; a/rR.e*�l 
    case 2: 9~nJ6 ,j5 
        Echo   "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";   break; PIJ[a6n 
    case 3: rW]Ub6@ 
        Echo   "文件只有部分被上传";break; M~l}yVb 
    case 4: f9#to5Y5w 
        Echo   "没有文件被上传";break; V':< w 
} "xr4WC 
?> !X{zgV 
W2! Bu< 
14:如何配置GD库 bH(aM` | 
eCO]DF,[5: 
y)=+t727xg 
下面是我的配置过程 [7X]!JTf2 
1:用dos命令(也可以手动操作,拷贝dlls文件夹里所有dll文件到system32目录下) copy   c://php//dlls//*.dll   c://windows//system32// OIf,GLN 
2:打开php.ini d<4Q 
设置extension_dir = "c:/php/extensions/"; LnK[sPN~@ 
3: T;9/]hK~$ 
extension=php_gd2.dll;把extension前面的逗号去掉,如果没有php_gd2.dll,php_gd.dll也一样,保证确实存在这一文件c:/php/extensions/php_gd2.dll ${<)1T 
4:运行下面程序进行测试 2dZ5<tBu� 
&R-/6bw 
CODE: NPp>w R 
[Copy to clipboard] EdZ"G (&h 
<?php pM5o X uy 
Ob_end_flush(); KKHCBC a 
//注意,在此之前不能向浏览器输出任何信息,要注意是否设置了 auto_prepend_file. X4%k[r 
header ("Content-type: image/png"); N3q)BLI 
$im = @imagecreate (200, 100) vxB[x>5b. 
  or die ("无法创建图像"); ?h27XoYf 
$background_color = imagecolorallocate ($im, 0,0, 0); /MW/*s[ 
$text_color = imagecolorallocate ($im, 230, 140, 150); q&]g>D< 
imagestring ($im, 3, 30, 50, "A Simple Text String", $text_color); R^o[a@8 
imagepng ($im); bmhF <Q 
?> pF2^k !s?T 
点击这里查看结果 S1?>@CEo 
x5fkb 
D j="k/E 
"q[m OAH` 
15:什么是UBB代码 X-c w3 
1M7_Al0' 
I&ir88 
UBB代码是HTML的一个变种,是Ultimate Bulletin Board (国外一个BBS程序,国内也有不少地方使用这个程序)采用的一种特殊的TAG. `ld P, 
即使禁止使用 HTML,你也可以用 UBBCode? 来实现.也许你更希望使用 UBBCode? 而不是 HTML, 即使论坛允许使用 HTML, 因为使用起来代码较少也更安全. _Q�s*F7H 
UF qdPT# 
Q3boy的UBB里面付有例子,可以直接运行测试 L'qff/qA 
(t4.-b 
+_H}*Ptk 
16:我想修改MySQL的用户,密码 bvKOluQ Z 
-D_*(&g 
首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的, ?@m!a!b 
所以一般用户无法更改密码,除非请求管理员. Hf29LcG 2i 
p8v50EKvO 
方法一 ${kR|; B 
使用phpmyadmin,这是最简单的了,修改mysql库的user表, A%uy&!XX 
不过别忘了使用PASSWORD函数。 kFb(|dN& 
+-0TDD[ 
方法二 En{|~sM9 
使用mysqladmin,这是前面声明的一个特例。 x?RFX#Y 
mysqladmin -u root -p password mypasswd %:?6Q2_ 
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。 }Zrq{-+} 
把命令里的root改为你的用户名,你就可以改你自己的密码了。 qO30s4B4 
当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin, vouZ6 q W 
那么这种方法就是无效的。 +<Yt'dGc2 
而且mysqladmin无法把密码清空。 xXFo4/?8 
"MPOf 
下面的方法都在mysql提示符下使用,且必须有mysql的root权限: irr D<Y 
方法三 D>A6 /mOd 
mysql> INSERT INTO mysql.user (Host,User,Password) Yi*%m8lFn 
VALUES('%','jeffrey',PASSWORD('biscuit')); $%D>M)z 
mysql> FLUSH PRIVILEGES mjIvp(% 
确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。 ANr6Z,.( 
在《mysql中文参考手册》里有这个例子,所以我也就写出来了。 0em4,y: 
注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。 ^%JLLXl 
L@T:Y8//p 
方法四 bs"MAB 
和方法三一样,只是使用了REPLACE语句 8[ n37J2M 
mysql> REPLACE INTO mysql.user (Host,User,Password) MoMh!Rd 
VALUES('%','jeffrey',PASSWORD('biscuit')); 9pq>#~Tc 
mysql> FLUSH PRIVILEGES t>NRGQtJ 
Ip}ahs 
方法五 |I1g:{�) 
使用SET PASSWORD语句, scgDt~Hs 
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit'); =Aj4O$2 
你也必须使用PASSWORD()函数, ez}JI~oF 
但是不需要使用FLUSH PRIVILEGES。 7?.L{U}ekt 
35_ t/+]:' 
方法六 uo&Z.ev 
使用GRANT ... IDENTIFIED BY语句 a-DiTbw7 
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit'; `^[-<n* 
这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。 x v/gT/$ 
8@j_+L )h 
注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。 ^/*WT}: 
yu]Gxdi<? 
? o G 
17:我想知道他是通过哪个网站连接到本页 w e2)G=Z 
/_G*e;;j$s 
|ZEiv;6& 
CODE: Tmd"lk7=$ 
[Copy to clipboard] Soi]^f{ #| 
<?php #QU]sFgl 
//必须通过超级连接进入才有输出 IdblA.% 
Echo $_SERVER['HTTP_REFERER']; +�,9pkeS'. 
?> C cOu ,+ 
42~%}wb 
18:数据放入数据库和取出来显示在页面需要注意什么 2E4op$g�, 
];p U" 
入库时 mPVY}pe� 
$str=addslashes($str); t%Ya-A4 
$sql="insert into `tab` (`content`) values('$str')"; |}%Z{} 
出库时 g=k8)d 
$str=stripslashes($str); }{& %_GS 
显示时 q X|[y 
$str=htmlspecialchars(nl2br($str)) ; [^A&DyoHz[ 
C>lB+#oU 
0JEf6B> 
2i1BW01 
3=bn$CP[&4 
@v K7Te} 
19:如何读取当前地址栏信息 uzQp~rF 
65*Wa; 
t.ynJhA`< 
CODE: G3Ij6tx}d 
[Copy to clipboard] S)�(V"h 
<?php #IE-@-6 
$s="http://{$_SERVER['HTTP_HOST']}:{$_SERVER["SERVER_PORT"]}{$_SERVER['SCRIPT_NAME']}"; OiQa$yJ9O 
$se=''; 9Zl%cWF 6 
foreach ($_GET as $key => $value) {   <L!#0`;fSS 
$se.=$key."=".$value."&";   uWa!K N0 
}   ||uJ# 
$se=Preg_Replace("/(.*)&$/","$1",$se); ql3$p8s! 
$se?$se="?".$se:""; p`"G||GP 
echo   $s."?$se"; E@"@Z8i 
?> G]0m 
JZv&uGaE 
20:我点击后退按钮,为什么之前填写的东西不见 'Sa}YA[h 
4Rv pKP E 
这是因为你使用了session. 7[6f�W>,B 
解决办法: 4?k(.,d! 
Bi>$e/# 
CODE: {@v!C?EGUw 
[Copy to clipboard] mwMG&3)]{ 
<?php +Vb7|31 
session_cache_limiter('private, must-revalidate'); ~<M#zj& 
session_start(); ] M@dOqs} 
........... n)�XLfhU 
.......... |$s/asN8+: 
?> kqLf ?W<im 
y:9 F[,Vf 
21:怎么在图片里显示IP地址 $_{kY/l]+ 
|AZ9Mcv]A 
.= n%r> 
CODE: ,}}^>Mr 
[Copy to clipboard] !z$HqYR y 
<? 9b?PK Jp 
Header("Content-type: image/png"); wH,ZQn 
$img = ImageCreate(180,50); ( yo3.ky 
$ip = $_SERVER['REMOTE_ADDR']; gm+^B(k?% 
ImageColorTransparent($img,$bgcolor); At=Kv 
$bgColor = ImageColorAllocate($img, 0x2c,0x6D,0xAF); // 背景颜色 } Q@t~: 
$shadow = ImageColorAllocate($img, 250,0,0);   // 阴影颜色 $E0Sbb~5gy 
$textColor = ImageColorAllocate($img, oxff,oxff,oxff);     // 字体颜色 +{ g&G% 
ImageTTFText($img,10,0,78,30,$shadow,"d:/windows/fonts/Tahoma.ttf",$ip); //显示背景 1PSj@K&E; 
ImageTTFText($img,10,0,25,28,$textColor,"d:/windows/fonts/Tahoma.ttf","your ip is".$ip); // 显示IP 1z$L>[9E 
ImagePng($img); F &o`Op`*q 
imagecreatefrompng($img); ]Tx#Qe:DD 
ImageDestroy($img); ,&to.1 
?> (qIhdvN 
yURZ*F5`W 
22:如何取得用户的真实IP RU5jui? 
K4LA])Eu 
;ISJgIiT9 
CODE: kANHbg 
[Copy to clipboard] *@}l0:=w 
<? JL,+-: 
function iptype1 () { xWWXrCv[P 
if (getenv("HTTP_CLIENT_IP")) { %fuIp +$* 
  return getenv("HTTP_CLIENT_IP"); [Nz=nuEc 
} eGX L MS 
else { cypz9uxF 
  return "none"; P -yjj[Fp 
} "~ _D u 
} i=j=J&GV 
function iptype2 () { #Jt AI2FG 
if (getenv("HTTP_X_FORWARDED_FOR")) { lZ prD= 
  return getenv("HTTP_X_FORWARDED_FOR"); c"]# F:zB 
} $cxtNb=P 
else { !}ex!>v 
  return "none"; ZMA#r^p 
} ^pu"h=8(] 
} qBdn6xJKp 
function iptype3 () { z)= zXZT 
if (getenv("REMOTE_ADDR")) { <?cm;8/$ 
  return getenv("REMOTE_ADDR"); /=I:P 
} ;9FNl0 8 
else { *<Y.-tnM 
  return "none"; qAB']Dq0s 
} b+xR;%<EbO 
} 5'9s*;!( 
function ip() { ]Mg0-tS 
$ip1 = iptype1(); 7xNH[Upw5$ 
$ip2 = iptype2(); T%D=fYq! 
$ip3 = iptype3(); =W;l j 
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") { |uH<24(w< 
  return $ip1; ]PCxm* 
} ;BJ yN5= 
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") { 2vkOwS |{_ 
  return $ip2; ^N!LQ]'A2 
} hcU!X 6E 
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") { [b/KdRO_ 
  return $ip3; T}�gwh3J2 
}   W)3#k}`o4r 
else { XljT}X7x0 
return "none"; o,N/+A( 
} -DLO9L{Y 
} c. NR c 
F$Fr!U59Ae 
Echo ip(); /tAU*5!6 
?> EBaK2h 
7WEn�$)AFF 
23:如何从数据库读取三天内的所有记录 Y.- Q_T 
1plK<JOq 
首先表格里要有一个DATETIME字段记录时间, m]rF/lF 
格式为'2003-7-15 16:50:00' "cYnZ>J 
Q|/sB"|p 
SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3; jy4$X 
x<jCv~GJZ 
/&1V@$gU 
24:如何远程链接Mysql数据库 Zt{elmQS5 
1OJM_f,![ 
CvO$&bd!k4 
在增加用户的mysql表里有一个host字段,修改为"%",或者指定允许连接的ip地址,这样,你就可以远程调用了。 ,j84BzZy 
I_Ze$K(.WX 
$link=mysql_connect("192.168.1.80:3306","root",""); %W<H n 
,K&5'x[JC 
C_'`Q2:w 
25:正则到底怎么用 =/rB M 
+/@%L.g�_ 
点击这里 kd R= vI 
正则表达式中的特殊字符 %M 5`_� M 
*{^ .69t 
JA)q -$By 
26:用Apache后,主页出现乱码 /7REg"XQ8 
Up,lzSs]W 
G*QrjX7 
方法一: zpaR71 
AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset off 9 }@NmC 
q>;NkL 
方法二: 4F.${_n. 
AddDefaultCharset GB2312 K?>B~.sl3 
======================================================== W IG0 ! 
tip: *b`V?@Ws[ 
大家贴代码时GB2312会被解释成?????? ,Xm://r 
YMFZK%~m+ 
改成这样就不会 >A4- kpYC 
GB2312 https://www.phpx.com/thread-38769-1-1.html 

版权声明:本文为redwood_lin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。