1. 最近刚刚完成手中的项目,比较闲。来这儿转转,把积累的一些技巧分享给大家!
    1、关于PHP重定向
  2. 方法一:header("Location: index.php");
  3. 方法二:echo "<script>window.location =\"$PHP_SELF\";</script>";
  4. 方法三:echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php\">";
  5.  
  6. 2、获取访问者浏览器
  7.  
  8. function browse_infor() {
  9. $browser="";$browserver="";
  10. $Browsers =array("Lynx","MOSAIC","AOL","Opera","JAVA","MacWeb","WebExplorer","OmniWeb");
  11. $Agent = $GLOBALS["HTTP_USER_AGENT"];
  12. for ($i=0; $i<=7; $i++) {
  13. if (strpos($Agent,$Browsers[$i])) {
  14. $browser = $Browsers[$i];
  15. $browserver ="";
  16. }
  17. }
  18. if (ereg("Mozilla",$Agent) && !ereg("MSIE",$Agent)) {
  19. $temp =explode("(", $Agent); $Part=$temp[0];
  20. $temp =explode("/", $Part); $browserver=$temp[1];
  21. $temp =explode(" ",$browserver); $browserver=$temp[0];
  22. $browserver =preg_replace("/([\d\.]+)/",");
  23. $browserver = " $browserver";
  24. $browser = "Netscape Navigator";
  25. }
  26. if (ereg("Mozilla",$Agent) && ereg("Opera",$Agent)) {
  27. $temp =explode("(", $Agent); $Part=$temp[1];
  28. $temp =explode(")", $Part); $browserver=$temp[1];
  29. $temp =explode(" ",$browserver);$browserver=$temp[2];
  30. $browserver =preg_replace("/([\d\.]+)/",");
  31. $browserver = " $browserver";
  32. $browser = "Opera";
  33. }
  34. if (ereg("Mozilla",$Agent) && ereg("MSIE",$Agent)) {
  35. $temp = explode("(", $Agent); $Part=$temp[1];
  36. $temp = explode(";",$Part); $Part=$temp[1];
  37. $temp = explode(" ",$Part);$browserver=$temp[2];
  38. $browserver =preg_replace("/([\d\.]+)/",");
  39. $browserver = " $browserver";
  40. $browser = "Internet Explorer";
  41. }
  42. if ($browser!="") {
  43. $browseinfo = "$browser$browserver";
  44. }else {
  45. $browseinfo = "Unknown";
  46. }
  47. return $browseinfo;
  48. }
  49. //调用方法$browser=browseinfo() ;直接返回结果
  50.  
  51. 3、获取访问者操作系统
  52.  
  53. function osinfo() {
  54. $os="";
  55. $Agent = $GLOBALS["HTTP_USER_AGENT"];
  56. if (eregi('win',$Agent) && strpos($Agent, '95')) {
  57. $os="Windows 95";
  58. }
  59. elseif (eregi('win 9x',$Agent) && strpos($Agent, '4.90')) {
  60. $os="Windows ME";
  61. }
  62. elseif (eregi('win',$Agent) && ereg('98',$Agent)) {
  63. $os="Windows 98";
  64. }
  65. elseif (eregi('win',$Agent) && eregi('nt 5\.0',$Agent)) {
  66. $os="Windows 2000";
  67. }
  68. elseif (eregi('win',$Agent) && eregi('nt',$Agent)) {
  69. $os="Windows NT";
  70. }
  71. elseif (eregi('win',$Agent) && eregi('nt 5\.1',$Agent)) {
  72. $os="Windows XP";
  73. }
  74. elseif (eregi('win',$Agent) && ereg('32',$Agent)) {
  75. $os="Windows 32";
  76. }
  77. elseif (eregi('linux',$Agent)) {
  78. $os="Linux";
  79. }
  80. elseif (eregi('unix',$Agent)) {
  81. $os="Unix";
  82. }
  83. elseif (eregi('sun',$Agent) && eregi('os',$Agent)) {
  84. $os="SunOS";
  85. }
  86. elseif (eregi('ibm',$Agent) && eregi('os',$Agent)) {
  87. $os="IBM OS/2";
  88. }
  89. elseif (eregi('Mac',$Agent) && eregi('PC',$Agent)) {
  90. $os="Macintosh";
  91. }
  92. elseif (eregi('PowerPC',$Agent)) {
  93. $os="PowerPC";
  94. }
  95. elseif (eregi('AIX',$Agent)) {
  96. $os="AIX";
  97. }
  98. elseif (eregi('HPUX',$Agent)) {
  99. $os="HPUX";
  100. }
  101. elseif (eregi('NetBSD',$Agent)) {
  102. $os="NetBSD";
  103. }
  104. elseif (eregi('BSD',$Agent)) {
  105. $os="BSD";
  106. }
  107. elseif (ereg('OSF1',$Agent)) {
  108. $os="OSF1";
  109. }
  110. elseif (ereg('IRIX',$Agent)) {
  111. $os="IRIX";
  112. }
  113. elseif (eregi('FreeBSD',$Agent)) {
  114. $os="FreeBSD";
  115. }
  116. if ($os=='') $os = "Unknown";
  117. return $os;
  118. }
  119. //调用方法$os=os_infor() ;
  120.  
  121. 4、文件格式类
  122.  
  123. $mime_types = array(
  124. 'gif' => 'image/gif',
  125. 'jpg' => 'image/jpeg',
  126. 'jpeg' => 'image/jpeg',
  127. 'jpe' => 'image/jpeg',
  128. 'bmp' => 'image/bmp',
  129. 'png' => 'image/png',
  130. 'tif' => 'image/tiff',
  131. 'tiff' => 'image/tiff',
  132. 'pict' => 'image/x-pict',
  133. 'pic' => 'image/x-pict',
  134. 'pct' => 'image/x-pict',
  135. 'tif' => 'image/tiff',
  136. 'tiff' => 'image/tiff',
  137. 'psd' => 'image/x-photoshop',
  138.  
  139. 'swf' => 'application/x-shockwave-flash',
  140. 'js' => 'application/x-javascript',
  141. 'pdf' => 'application/pdf',
  142. 'ps' => 'application/postscript',
  143. 'eps' => 'application/postscript',
  144. 'ai' => 'application/postscript',
  145. 'wmf' => 'application/x-msmetafile',
  146.  
  147. 'css' => 'text/css',
  148. 'htm' => 'text/html',
  149. 'html' => 'text/html',
  150. 'txt' => 'text/plain',
  151. 'xml' => 'text/xml',
  152. 'wml' => 'text/wml',
  153. 'wbmp' => 'image/vnd.wap.wbmp',
  154.  
  155. 'mid' => 'audio/midi',
  156. 'wav' => 'audio/wav',
  157. 'mp3' => 'audio/mpeg',
  158. 'mp2' => 'audio/mpeg',
  159.  
  160. 'avi' => 'video/x-msvideo',
  161. 'mpeg' => 'video/mpeg',
  162. 'mpg' => 'video/mpeg',
  163. 'qt' => 'video/quicktime',
  164. 'mov' => 'video/quicktime',
  165.  
  166. 'lha' => 'application/x-lha',
  167. 'lzh' => 'application/x-lha',
  168. 'z' => 'application/x-compress',
  169. 'gtar' => 'application/x-gtar',
  170. 'gz' => 'application/x-gzip',
  171. 'gzip' => 'application/x-gzip',
  172. 'tgz' => 'application/x-gzip',
  173. 'tar' => 'application/x-tar',
  174. 'bz2' => 'application/bzip2',
  175. 'zip' => 'application/zip',
  176. 'arj' => 'application/x-arj',
  177. 'rar' => 'application/x-rar-compressed',
  178.  
  179. 'hqx' => 'application/mac-binhex40',
  180. 'sit' => 'application/x-stuffit',
  181. 'bin' => 'application/x-macbinary',
  182.  
  183. 'uu' => 'text/x-uuencode',
  184. 'uue' => 'text/x-uuencode',
  185.  
  186. 'latex'=> 'application/x-latex',
  187. 'ltx' => 'application/x-latex',
  188. 'tcl' => 'application/x-tcl',
  189.  
  190. 'pgp' => 'application/pgp',
  191. 'asc' => 'application/pgp',
  192. 'exe' => 'application/x-msdownload',
  193. 'doc' => 'application/msword',
  194. 'rtf' => 'application/rtf',
  195. 'xls' => 'application/vnd.ms-excel',
  196. 'ppt' => 'application/vnd.ms-powerpoint',
  197. 'mdb' => 'application/x-msaccess',
  198. 'wri' => 'application/x-mswrite',
  199. );
  200.  
  201. 5、php生成excel文档
  202.  
  203. <?
  204. header("Content-type:application/vnd.ms-excel");
  205. header("Content-Disposition:filename=test.xls");
  206. echo "test1\t";
  207. echo "test2\t\n";
  208. echo "test1\t";
  209. echo "test2\t\n";
  210. echo "test1\t";
  211. echo "test2\t\n";
  212. echo "test1\t";
  213. echo "test2\t\n";
  214. echo "test1\t";
  215. echo "test2\t\n";
  216. echo "test1\t";
  217. echo "test2\t\n";
  218. ?>
  219. //改动相应文件头就可以输出.doc .xls等文件格式了
  220.  
  221. 6、时间比较问题
  222. 举一个简单例子说明:比如一个论坛对当天发表的贴子用new图片标记一下。
  223. 方法一:
  224. //$db->rows[$i][date]中为数据库中datetime字段值.
  225. $today=time();
  226. $theDay=date("Y-m-d H:i:s",$today-24*3600);
  227. $newTag=$db->rows[$i][date]>=$theDay?"<img src='../image/newinfor.gif'>":"";
  228. 方法二:
  229. $newTag=$db->rows[$i][date]>=date("Y-m-d 00:00:00")?"<img src='../image/newinfor.gif'>":"";
  230.  
  231. 7.数据库封装例子
  232.  
  233. <?php
  234. //------------------------------------------------------------------------------------------
  235. // ※Database() 构造函数,数据库初始参数
  236. // ※Select() 查询
  237. // ※GetRows() 返回查询的记录总数
  238. // ※Insert() 插入记录
  239. // ※Update() 更新
  240. // ※Delete() 删除
  241. // ※Halt() 中断并显示错误信息*/
  242. //------------------------------------------------------------------------------------------
  243. define("DATABASETYPE","1"); //定义数据库类型:1为MySql;2为SQL Server;3为Oracle;4为Odbc
  244. define("SERVER","localhost"); //Host name or IP address of the database server
  245. define("DATABASE","dbName"); //要连接的数据库名
  246. define("USER","tableName"); //用于连接数据库的用户名
  247. define("PASSWORD","paswd"); //用于连接数据库的密码
  248.  
  249. class Database{
  250. var $dbLink; //连接句柄
  251. var $result; //查询句柄
  252. var $insId; //Insert()成功返回AUTO_INCREMENT列的值
  253. var $rows; //返回数据数组
  254. var $numRows; //返回数据数目
  255. var $dbHost, $dbUser, $userPassword, $database;
  256. var $dbType=DATABASETYPE;
  257. var $msgFlag = "yes" ; //yes:show the Mysql message ; no: die by show "Halted."
  258. function Database($dbHost=SERVER,$dbUser=USER,$userPassword=PASSWORD,$database=DATABASE){
  259. switch($this->dbType){
  260. case 1:
  261. $this->dbLink=@mysql_pconnect($dbHost,$dbUser,$userPassword);// or die("Can't Connect to Remote Host!");
  262. @mysql_select_db($database,$this->dbLink);// or die ("Can't Connect to Remote Host!");
  263. break;
  264. case 2:
  265. break;
  266. }
  267. return true;
  268. }
  269.  
  270. /*SQL:Select() 返回为false无结果*/
  271. function Select($table,$columns,$condition=1){
  272. $sql="select $columns from $table where $condition ";
  273. //echo $sql."<br>";
  274. $this->result=@mysql_query($sql,$this->dbLink);
  275. unset($this->rows);
  276. if($this->result){
  277. $i=0;
  278. if(!($this->rows=array("$i"=>@mysql_fetch_array($this->result))))
  279. return false;
  280. if(($this->numRows=@mysql_num_rows($this->result))==0)
  281. return false;
  282. while()){
  283. array_push($this->rows,$tempRows);
  284. }
  285. }else{
  286. $this->Halt($sql);
  287. return false;
  288. }
  289. return true;
  290. }
  291.  
  292. /*SQL:GetRows() 返回查询的记录总数*/
  293. function GetRows($table,$condition=1){
  294. $sql="select count(1) as count from $table where $condition";
  295. //echo $sql."<br>";
  296. $this->result=@mysql_query($sql,$this->dbLink);
  297. if($this->result){
  298. );
  299. $this->numRows=$temp[count];
  300. }else{
  301. $this->Halt($sql);
  302. return false;
  303. }
  304. return $this->numRows;
  305. }
  306.  
  307. /*SQL:Insert()*/
  308.  
  309. function Insert($table,$columns,$values){
  310. $sql="insert into $table ($columns) values ($values)";
  311. //echo $sql;
  312. $this->result=@mysql_query($sql,$this->dbLink);
  313. if ($this->result)
  314. $this->insId=@mysql_insert_id($this->dbLink);
  315. else{
  316. $this->Halt($sql);
  317. return false;
  318. }
  319. return true;
  320. }
  321.  
  322. /*SQL:Update()*/
  323.  
  324. function Update($table,$setings,$condition){
  325. $sql="update $table set $setings where $condition";
  326. //echo $sql;
  327. $this->result=@mysql_query($sql,$this->dbLink);
  328. if ($this->result)
  329. $this->numRows=@mysql_affected_rows($this->result);
  330. else{
  331. $this->Halt($sql);
  332. return false;
  333. }
  334. return true;
  335. }
  336.  
  337. /*SQL:Delete*/
  338.  
  339. function Delete($table,$condition){
  340. $sql="delete from $table where $condition";
  341. $this->result=@mysql_query($sql,$this->dbLink);
  342. if ($this->result)
  343. $this->numRows=@mysql_affected_rows($this->result);
  344. else{
  345. $this->Halt($sql);
  346. return false;
  347. }
  348.  
  349. return true;
  350. }
  351.  
  352. /*Halt():error message */
  353.  
  354. function Halt($msg){
  355. if($this->msgFlag=="yes"){
  356. printf("<b>Database Query Error:</b> %s<br>\n", $msg);
  357. printf("<b>MySql Error:</b> %s<br>\n",mysql_error());
  358. }else
  359. echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=../include/error.htm'>";//自定一个出错提示文件
  360. return false;
  361. }
  362. }
  363. switch($db->dbType){
  364. case 1:
  365. @mysql_close();
  366. break;
  367. case 2:
  368.  
  369. break;
  370. }
  371. $db = new Database();
  372. ?>

PHP经验集锦的更多相关文章

  1. win7+win10系统使用日常经验集锦

    请保留此份 Cmd Markdown 的欢迎稿兼使用说明, 当然你也可以使用彩色字体. 或者使用小体字. 或者使用大体字. 如需撰写新稿件,点击顶部工具栏右侧的 新文稿 或者使用快捷键 Ctrl+Al ...

  2. Linux内核“问题门” - 学习问题、经验集锦

    陈宪章说:“学贵有疑,小疑则小进,大疑则大进.疑者,觉悟之机也,一番觉悟一番长进.” 培根说:“多问的人将多得.” 还在学校的时候导师在激情讲演之后对着会议室里形态各异但均静默不语的我们痛心疾首的说: ...

  3. 【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事

    一.简介 马三在公司大部分时间做的都是游戏业务逻辑和编辑器工具等相关工作,因此对Unity AssetBundle这块的知识点并不是很熟悉,自己也是有打算想了解并熟悉一下AssetBundle,掌握一 ...

  4. Linux内核(9) - 精华版 之 方法论

    到目前为之,博客上分享的精华篇都可以归为方法论的范畴,在很多时候,都是方法论要比细节紧要得多.而这些精华篇又可细分为三个专题:Linux大史记:内核学习的方法论:驱动开发的方法论. Linux大史记 ...

  5. ( [原创] 4s摄像头出现的问题及解决办法集锦。

    [原创] 4s摄像头出现的问题及解决办法集锦. [复制链接]     HPagani 34主题 126帖子 13人气 级别: 青苹果 帖子 126 经验 160 精华 人气 13 粉丝1 发消息   ...

  6. Web前端优化最佳实践及工具集锦

    Web前端优化最佳实践及工具集锦 发表于2013-09-23 19:47| 21315次阅读| 来源Googe & Yahoo| 118 条评论| 作者王果 编译 Web优化Google雅虎P ...

  7. 足球运动训练心得及经验分析-c语言学习调查

    在准备预备作业02之前,我参考娄老师的提示,阅读了<[做中学(Learning By Doing)]之乒乓球刻意训练一年总结>一文. 在文章描述的字里行间,给予我的印象是系统.负责,娄老师 ...

  8. 最有用的Linux命令行使用技巧集锦

    最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...

  9. Mac OS X操作系统常见快捷键集锦

    Mac OS X操作系统常见快捷键集锦 启动时的快捷键 启动时按住 X 键 : 强制从 Mac OS X 启动(适用于那些在同一宗卷上安装了 Mac OS X 和 Mac OS 9 双系统的 Mac ...

随机推荐

  1. mysql数据库主外键级联删除脚本RESTRICT --> CASCADE

    在项目中,我们一般在数据库设计的时候做主外键关联设计,要么就不做.但是这样不符合规范,呵呵. 建立主外键关系的时候,默认是不能级联删除的.而出现往往在删除主表的数据时报错, 需要先删除从表然后再删除主 ...

  2. 简单易懂的现代魔法——Play Framework攻略4

    接前文:简单易懂的现代魔法——Play Framework攻略3 1.The Object 时隔2个多月,Play Framework系列又更新了,本次的主题是:利用Play Framework实现R ...

  3. 【c/c++】内存分配大小

    测试平台:linux 32位系统 用sizeof()运算符计算分配空间大小.单位:字节 1. 数组名与变量名的区别 int main() { char q[] = "hello"; ...

  4. JDBC学习总结(五)

    取得数据库连接是件耗时间及资源的动作,尽量利用已打开的连接,也就是重复利用取得的Connection实例,是改善数据库连接性能的一个方式,而采用连接池是基本做法.由于取得Connection的方式根据 ...

  5. Btrace入门到熟练小工完全指南

    BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的. BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息.而不需要不断地修改代码, ...

  6. flex布局全解析

    前言 很长一段时间, 我知道有flex这个布局方式, 但是始终没有去学它. 3点原因: 感觉还比较新, 担心兼容性不好. 普通的布局方式能满足我的绝大多数需求. 好像蛮复杂的. 最近由于开发需要, 学 ...

  7. jQuery选择器最佳实践--来自jQ官网

    1.基于ID选择器进行查询,并且使用find方法. //快速 $("#container div.footer"); //超快 $("#container"). ...

  8. Android HandlerThread 使用

    HandlerThread 继承了 Thread,添加了 looper,queue 的支持.可以为 Handler 提供线程服务,并可对 执行的任务进行简单的管理. Handler 默认工作在主线程, ...

  9. 车牌识别LPR(八)-- 字符识别

    ​第八篇:字符识别 车牌定位.车牌倾斜校正.车牌字符分割都是为车牌字符识别做的前提工作,这些前提工作直接关系到车牌识别系统的性能.车牌字符识别是车牌识别系统的核心部分,车牌字符识别的准确率是衡量车牌识 ...

  10. web rest api tools

    https://chrome.google.com/webstore/search/postman-REST%20Client