Php部分常见问题总结第2/2页

 更新时间:2006年12月09日 00:00:00   作者:  

20:我点击后退按钮,为什么之前填写的东西不见
这是因为你使用了session.
解决办法:
<?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:如何取得用户的真实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:如何从数据库读取三天内的所有记录
首先表格里要有一个DATETIME字段记录时间,
格式为'2003-7-15 16:50:00'
SELECT *  FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3;
24:如何远程链接Mysql数据库
在增加用户的mysql表里有一个host字段,修改为"%",或者指定允许连接的ip地址,这样,你就可以远程调用了。
$link=mysql_connect("192.168.1.80:3306","root","");
25:正则到底怎么用
点击这里
正则表达式中的特殊字符
26:用Apache后,主页出现乱码 
方法一: 
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   "偶已经奋斗了 $Days 天^_^";
?>
27:为什么单引号,双引号在接受页面变成(\\'\")
解决方法:
方法一:在php.ini中设置:magic_quotes_gpc = Off
方法二: $str=stripcslashes($str)
28:怎么让程序一直运行下去,而不是超过30秒就停止
set_time_limit(60)//最长运行时间一分钟
set_time_limit(0)//运行到程序自己结束,或手动停止
29:计算当前在线人数
例子一:用文本实现
<?php 
//首先你要有读写文件的权限
//本程序可以直接运行,第一次报错,以后就可以
  $online_log = "count.dat"; //保存人数的文件,
  $timeout = 30;//30秒内没动作者,认为掉线 
  $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"); //取出其他浏览者的信息,并去掉超时者,保存进$temp
   } 
  } 
   array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."n"); //更新浏览者的时间
  $users_online = count($temp); //计算在线人数
  $entries = implode("",$temp); 
  //写入文件
  $fp = fopen($online_log,"w"); 
   flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作
   fputs($fp,$entries); 
   flock($fp,LOCK_UN); 
   fclose($fp); 
   echo "当前有".$users_online."人在线"; 
?>
例子二:
用数据库实现在线用户
30:什么是模板,怎么用
这里有几篇关于模板的文章
我用的是phplib模板
下面是其中几个函数的使用
$T->Set_File("随便定义","模板文件.tpl"); 
$T->Set_Block("在set_file中定义的","<!-- 来自模板 -->","随便定义"); 
$T->arse("在Set_Block中定义的","<!-- 来自模板 -->",true); 
$T->arse("随便输出结果","在Set_File中定义的"); 
设置循环格式为:
<!--(多于一个空格) BEGIN $handle(多于一个空格)-->
如何将模板生成静态网页
<?php
//这里使用phplib模板
    ............
    ............
    $tpl->parse("output","html");
    $output = $tpl->get("output");// $output 为整个网页内容
    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");//重定向到生成的网页
}
?>
phplib下载地址               smarty下载地址
31:怎么用php解释字符
比如:输入2+2*(1+2),自动输出8
可以用eval函数
<form method=post action="">
<input type="text" name="str"><input type="submit">
</form>
<?php
$str=$_POST['str'];
eval("$o=$str;");
Echo   "$o";
?>
另外,用此函数必须特别小心!!
如果有人输入format: d:会是什么结果?

相关文章

最新评论