木子屋 Dnawo's BLOG

2008-06 归档

共 57 篇

PHP变量的引用赋值和可变变量

PHP 3 中,变量总是传值赋值。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。而在PHP 4 中提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然: 可变变量可以获取了一个普通变量的值作为这个可变变量的变量名,就是说,一个变量的变量名可以动态的设置和使用: 注意,在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。

PHP的全局变量

我们先来看一个例子: 这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $domain,而且在这个范围内,它并没有被赋值。你可能注意到 PHP 的全局变量和 VBScript、JavaScript、C# 有一些不同,在 VBScript、JavaScript、C# 中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能漫不经心的改变一个全局变量。PHP 中全局变量在函数中使用时必须申明为全局。 以下两种方式可以在函数中使用全局变量: 当然,我们也可以在函数中声明一个全局变量在全局作用域内使用:

在PHP中使用全局变量

摘要 本文演示了如何恰当的在PHP中使用全局数据。主要谈及到使用“global”关键字,函数参数,单件和注册器模式四种实现全局数据的方式。 简介 即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的。一些常见的全局数据有:程序设定类、数据库连接类、用户资料等等。有很多方法能够使这些数据成为全局数据,其中最常用的就是使用“global”关键字申明,稍后在文章中我们会具体的讲解到。 使用“global”关键字来申明全局数据的唯一缺点就是它事实上是一种非常差的编程方式,而且经常在其后导致程序中出现更大的问题,因为全局数据把你代码中原本单独的代码段都联系在一起了,这样的后果就是如果你改变其中的某一部分代码,可能就会导致其他部分出错。所以如果你的代码中有很多全局的变量,那么你的整个程序必然是难以维护的。…

PHP使用Session

我们先来看看在ASP使用Session: 下边用PHP来实现上边的过程: 比较两个例子可以看出,PHP在使用Session上和ASP基本是差不多的。但在写这个例子的时候我有些搞不清session_unset和session_destroy的区别了,把上边例子中session_unset替换成session_destroy后,下边仍可输出Session的值,都彻底终结了怎么会还有值?后来在网上查到了它们的区别: session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id。 session_destroy()…

Phpcms2007 SP6丢失下载地址参数Bug解决方法

在Phpcms2007 SP6下载频道中添加的下载地址如果形如: 电信下载|http://www.mzwu.com/interface/creategames.aspx?uid=11476&resid=160&fileid=1087 在点击下载的时候你会发现下载地址却成了: http://www.mzwu.com/interface/creategames.aspx?uid=11476 可见,下载地址&之后的参数丢失了,下边我们来找找原因。 打开module/down/download.inc.php,找到"parse_str($auth);",在其后面增加代码: 浏览页面,输出内容如下: downid=1&fileurl=http://www.mzwu.com/interface/creategames.aspx?uid=11476&resid=160&fileid=1087&starttime=1213948944&ip=127.0.0.1&mirror=…

Excel 已经检测到"test.csv"是SYLK文件,但是不能将其加载

当使用Excel打开一个csv文件时出错,提示: Excel 已经检测到"test.csv"是SYLK文件,但是不能将其加载.该文件或者有错误,或者不是SYLK文件格式. 错误原因是csv文件以大写"I"和"D"开头,Excel将它当作为SYLK文件来打开,结果出错。 解决方法是将大写的ID改为小写id,或是在ID前面加个单引号(')可解决。 Microsoft相关说明:http://support.microsoft.com/kb/323626

Flash版本检测

function flashChecker() { var hasFlash=0; //是否安装了flash var flashVersion=0; //flash版本 var isIE=/*@cc_on!@*/0; //是否IE浏览器 if(isIE) { var swf = null; try{ swf= new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); }catch(e){} if(swf) { hasFlash=1; VSwf=swf.GetVariable("$version");…

IE中的条件注释

一、条件注释简介 1.IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法。 2.条件注释只能用于IE5以上。 3.如果你安装了多个IE,条件注释将会以最高版本的IE为标准。 4.条件注释的基本结构和HTML的注释()是一样的。因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们。 5.IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。 二、条件注释属性 ·gt : greater than,选择条件版本以上版本,不包含条件版本 ·lt : less than,选择条件版本以下版本,不包含条件版本…

JavaScript在线压缩/格式化工具

<html><head><title>JavaScript在线压缩/格式化</title> <meta http-equiv=Content-Type content="text/html; charset=gb2312"> <style type="text/css"> html{overflow:hidden;} textarea{width:100%;height:250px;} </style> </head> <body> <script language=JavaScript> <!…

ActionScript的接口和类示例

借用以前用C#写的一个接口和类示例,今天用ActionScript来实现: 1.IUSB.as: 2.UDisk.as 3.帧脚本: 执行结果: UDisk U盘准备就绪... Wed Jun 18 22:42:50 GMT+0800 2008 green 往U盘写入文件 从U盘读出文件