一Qping
它是用来(g)查网l是否通畅或者网l连接速度的命令。作Z个生zd|络上的理员或者黑客来_(d)ping命o(h)是第一个必L握的DOS命o(h)Q它 所利用的原理是q样的:(x)|络上的机器都有唯一定的IP地址Q我们给目标IP地址发送一个数据包Q对方就要返回一个同样大的数据包,Ҏ(gu)q回的数据包? 们可以确定目标主机的存在Q可以初步判断目标主机的操作pȝ{。下面就来看看它的一些常用的操作。先看看帮助吧,在DOSH口中键入:(x)ping /? 回RQ。所C的帮助画面。在此,我们只掌握一些基本的很有用的参数可以了(jin)Q下同)(j)?
-t 表示不间断向目标IP发送数据包Q直到我们强q其停止。试惻I如果你?00M的宽带接入,而目标IP?6K的小猫,那么要不?jin)多久,目标IP因为承受不?jin)这么多的数据而掉U,呵呵Q一ơ攻dq么单的实现?jin)?
-l 定义发送数据包的大,默认?2字节Q我们利用它可以最大定义到65500字节。结合上面介l的-t参数一起用,?x)有更好的效果哦?
-n 定义向目标IP发送数据包的次敎ͼ默认?ơ。如果网l速度比较慢,3ơ对我们来说也浪费了(jin)不少旉Q因为现在我们的目的仅仅是判断目标IP是否存在Q那么就定义Zơ吧?
说明一下,如果-t 参数?-n参数一起用,ping命o(h)׃攑֜后面的参Cؓ(f)标准Q比?ping IP -t -n 3"Q虽然用了(jin)-t参数Q但q不是一直ping下去Q而是只ping 3ơ。另外,ping命o(h)不一定非得ping IPQ也可以直接pingL域名Q这样就可以得到L的IP?
下面我们举个例子来说明一下具体用法?
q里time=2表示从发出数据包到接受到q回数据包所用的旉?U,从这里可以判断网l连接速度的大。从TTL的返回值可以初步判断被pingL的操作系l,之所以说"初步判断"是因个值是可以修改的。这里TTL=32表示操作pȝ可能?win98?nbsp;
Q小知识Q如果TTL=128Q则表示目标L可能是Win2000Q如果TTL=250Q则目标L可能是UnixQ?nbsp;
至于利用ping命o(h)可以快速查扑ֱ域网故障Q可以快速搜索最快的QQ服务器,可以对别行pingd……q些靠大家自己发挥?jin)?
二,nbtstat
该命令用TCP/IP上的NetBIOS昄协议l计和当前TCP/IPq接Q用这个命令你可以得到q程L的NETBIOS信息Q比如用户名、所属的工作l、网卡的MAC地址{。在此我们就有必要了(jin)解几个基本的参数?
-a 使用q个参数Q只要你知道?jin)远E主机的机器名称Q就可以得到它的NETBIOS信息Q下同)(j)?
-A q个参数也可以得到远E主机的NETBIOS信息Q但需要你知道它的IP?nbsp;
-n 列出本地机器的NETBIOS信息?
当得C(jin)Ҏ(gu)的IP或者机器名的时候,可以用nbtstat命o(h)来进一步得到对方的信息?jin),q又增加?jin)我们入늚保险pL?
三,netstat
q是一个用来查看网l状态的命o(h)Q操作简便功能强大?
-a 查看本地机器的所有开攄口,可以有效发现和预防木马,可以知道机器所开的服务等信息Q如??
q里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务{。用法:(x)netstat -a IP?nbsp;
-r 列出当前的\׃息,告诉我们本地机器的网兟뀁子|掩码等信息。用法:(x)netstat -r IP?nbsp;
四,tracert
跟踪路由信息Q用此命o(h)可以查出数据从本地机器传输到目标L所l过的所有途径Q这Ҏ(gu)们了(jin)解网l布局和结构很有帮助。如??
q里说明数据从本地机器传输到192.168.0.1的机器上Q中间没有经qQ何中转,说明q两台机器是在同一D局域网内。用法:(x)tracert IP?
五,net
q个命o(h)是网l命令中最重要的一个,必须透彻掌握它的每一个子命o(h)的用法,因ؓ(f)它的功能实在是太强大?jin),q简直就?微Y为我们提供的最好的入R工具。首先让我们来看一看它都有那些子命令,键入net /?回R如图6?nbsp;
在这里,我们重点掌握几个入R常用的子命o(h)?
net view
使用此命令查看远E主机的所以共享资源。命令格式ؓ(f)net view \IP。
net use
把远E主机的某个׃n资源影射为本地盘W,囑Ş界面方便使用Q呵c(din)命令格式ؓ(f)net use x: \IP\sharename。上面一个表C把192.168.0.5IP的共享名为magic的目录媄(jing)ؓ(f)本地的Z盘。下面表C和192.168.0.7 建立IPC$q接Qnet use \IP\IPC$ "password" /user:"name"Q,
建立?jin)IPC$q接后,呵呵Q就可以上传文g?jin)?x)copy nc.exe \192.168.0.7\admin$Q表C把本地目录下的nc.exe传到q程LQ结合后面要介绍到的其他DOS命o(h)可以实现入侵了(jin)?
net start
使用它来启动q程L上的服务。当你和q程L建立q接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?׃用这个命令来启动吧。用法:(x)net start servernameQ如?Q成功启动了(jin)telnet服务?
net stop
入R后发现远E主机的某个服务手脚Q怎么办?利用q个命o(h)停掉ok?jin),用法和net start同?
net user
查看和帐h关的情况Q包括新建帐戗删除帐戗查看特定帐戗激zd戗帐L(fng)用等。这Ҏ(gu)们入侉|很有利的Q最重要的,它ؓ(f)我们克隆帐户提供?jin)前提。键入不带参数的net userQ可以查看所有用P包括已经用的。下面分别讲解?nbsp;
1Qnet user abcd 1234 /addQ新Z个用户名为abcdQ密码ؓ(f)1234的帐P默认为userl成员?nbsp;
2Qnet user abcd /delQ将用户名ؓ(f)abcd的用户删除?nbsp;
3Qnet user abcd /active:noQ将用户名ؓ(f)abcd的用L(fng)用?nbsp;
4Qnet user abcd /active:yesQ激zȝ户名为abcd的用戗?nbsp;
5Qnet user abcdQ查看用户名为abcd的用L(fng)情况
net localgroup
查看所有和用户l有关的信息和进行相x(chng)作。键入不带参数的net localgroup卛_出当前所有的用户l。在入Rq程中,我们一般利用它来把某个帐户提升为administratorl帐Pq样我们利用q个帐户 可以控制整个远E主Z(jin)。用法:(x)net localgroup groupname username /add?
现在我们把刚才新建的用户abcd加到administratorl里M(jin)Q这时候abcd用户已经是超U管理员?sh)(jin),呵呵Q你可以再用net user abcd来查看他的状态,和图10q行比较?yu)可以看出来。但q样太明显了(jin)Q网一看用h况就能漏出破l,所以这U方法只能对付菜鸟网,但我们还得知 道。现在的手段都是利用其他工具和手D克隆一个让|管看不出来的超U管理员Q这是后话。有兴趣的朋友可以参照《黑客防Uѝ第30期上的《由入p析隆? 戗一文?
net time
q个命o(h)可以查看q程L当前的时间。如果你的目标只是进入到q程L里面Q那么也许就用不到这个命令了(jin)。但单的入R成功?jin),N只是看看 吗?我们需要进一步渗透。这pq程L当前的时间都需要知道,因ؓ(f)利用旉和其他手D(后面?x)讲刎ͼ?j)可以实现某个命o(h)和程序的定时启动Qؓ(f)我们q一步入 侉|好基。用法:(x)net time \IP?
六,at
q个命o(h)的作用是安排在特定日期或旉执行某个特定的命令和E序Q知道net time的重要了(jin)吧?Q。当我们知道?jin)远E主机的当前旉Q就可以利用此命令让其在以后的某个时_(d)比如2分钟后)(j)执行某个E序和命令。用法:(x)at time command \computer?
表示??5分时Q让名称为a-01的计机开启telnet服务Q这里net start telnet即ؓ(f)开启telnet服务的命令)(j)?
七,ftp
大家对这个命令应该比较熟(zhn)了(jin)吧?|络上开攄ftp的主机很多,其中很大一部分是匿名的Q也是说Q何h都可以登陆上厅R现在如果你扫到?jin)一 台开?ftp服务的主机(一般都是开?1端口的机器)(j)Q如果你q(sh)?x)用ftp的命令怎么办?下面q出基本的ftp命o(h)使用Ҏ(gu)?nbsp;
首先在命令行键入ftp回RQ出现ftp的提C符Q这时候可以键?help"来查看帮助(MDOS命o(h)都可以用此Ҏ(gu)查看其帮??
大家可能看到?jin),q么多命令该怎么用?其实也用不到那么多,掌握几个基本的就够了(jin)?
首先是登陆过E,q就要用到open?jin),直接在ftp的提C符下输?open LIP ftp端口"回R卛_Q一般端口默认都?1Q可以不写。接着是输入合法的用户名和密码进行登陆了(jin)Q这里以匿名ftpZ介绍?
用户名和密码都是ftpQ密码是不显C的。当提示**** logged inӞp明登陆成功。这里因为是匿名登陆Q所以用hCZؓ(f)Anonymous?
接下来就要介l具体命令的使用Ҏ(gu)?jin)?
dir 跟DOS命o(h)一P用于查看服务器的文gQ直接敲上dir回RQ就可以看到此ftp服务器上的文件?nbsp;
cd q入某个文g夏V?nbsp;
get 下蝲文g到本地机器?nbsp;
put 上传文g到远E服务器。这p看远Eftp服务器是否给?jin)你可写的权限?jin)Q如果可以,呵呵Q该怎么 利用׃多说?jin),大家p由发挥去吧?nbsp;
delete 删除q程ftp服务器上的文件。这也必M证你有可写的权限?nbsp;
bye 退出当前连接?nbsp;
quit 同上?nbsp;
八,telnet
功能强大的远E登陆命令,几乎所有的入R者都喜欢用它Q屡试不爽。ؓ(f)什么?它操作简单,如同使用自己的机器一P只要你熟(zhn)DOS命o(h)Q在成功 ? administratorw䆾q接?jin)远E机器后Q就可以用它来干你想q的一切了(jin)。下面介l一下用方法,首先键入telnet回RQ再键入help查看 其帮助信息?
然后在提C符下键入open IP回RQ这时就出现?jin)登陆窗口,让你输入合法的用户名和密码,q里输入M密码都是不显C的?
当输入用户名和密码都正确后就成功建立?jin)telnetq接Q这时候你在q程L上具有了(jin)和此用户一L(fng)权限Q利用DOS命o(h)可以实C惛_的事情了(jin)。这里我使用的超U管理员权限登陆的。
到这里ؓ(f)止,|络DOS命o(h)的介l就告一D落?jin),q里介绍的目的只是给菜鸟|管一个印象,让其知道熟?zhn)和掌握网lDOS命o(h)的重要性。其实和|? l有关的DOS命o(h)q远不止q些Q这里只是抛砖引玉,希望能对q大菜鸟|管有所帮助。学好DOS对当好网有很大的帮助,特别的熟l掌握了(jin)一些网l的 DOS命o(h)?nbsp;
另外大家应该清楚QQ何h要想q入pȝQ必d有一个合法的用户名和密码Q输入法漏洞差不多绝q了(jin)吧)(j)Q哪怕你拿到帐户的只有一个很的权限Q你也可以利用它来达到最后的目的。所以坚x(chng)灭空口o(h)Q给自己的帐户加上一个强壮的密码Q是最好的防M弱口令入늚Ҏ(gu)?nbsp;
最后,p的说一句,培养良好的安全意识才是最重要的?nbsp;
=========================================
开?#8594;q行→命o(h)集锦
winver---------(g)查Windows版本
wmimgmt.msc----打开windows理体系l构(WMI)
wupdmgr--------windows更新E序
wscript--------windows脚本宿主讄
write----------写字?nbsp;
winmsd---------pȝ信息
wiaacmgr-------扫描仪和照相机向?nbsp;
winchat--------XP自带局域网聊天
mem.exe--------昄内存?sh)用情?nbsp;
Msconfig.exe---pȝ配置实用E序
mplayer2-------易widnows media player
mspaint--------d?nbsp;
mstsc----------q程桌面q接
mplayer2-------媒体播放?nbsp;
magnify--------攑֤镜实用程?nbsp;
mmc------------打开控制?nbsp;
mobsync--------同步命o(h)
dxdiag---------(g)查DirectX信息
drwtsn32------ pȝȝ
devmgmt.msc--- 讑֤理?nbsp;
dfrg.msc-------盘片整理E序
diskmgmt.msc---盘理实用E序
dcomcnfg-------打开pȝlg服务
ddeshare-------打开DDE׃n讄
dvdplay--------DVD播放?nbsp;
net stop messenger-----停止信服务
net start messenger----开始信使服?nbsp;
notepad--------打开C?nbsp;
nslookup-------|络理的工具向?nbsp;
ntbackup-------pȝ备䆾和还?nbsp;
narrator-------屏幕"讲述?
ntmsmgr.msc----Ud存储理?nbsp;
ntmsoprq.msc---Ud存储理员操作请?nbsp;
netstat -an----(TC)命o(h)(g)查接?nbsp;
syncapp--------创徏一个公文包
sysedit--------pȝ配置~辑?nbsp;
sigverif-------文g{验证E序
sndrec32-------录音?nbsp;
shrpubw--------创徏׃n文g?nbsp;
secpol.msc-----本地安全{略
syskey---------pȝ加密Q一旦加密就不能解开Q保护windows xppȝ的双重密?nbsp;
services.msc---本地服务讄
Sndvol32-------音量控制E序
sfc.exe--------pȝ文g(g)查器
sfc /scannow---windows文g保护
tsshutdn-------60U倒计时关机命?nbsp;
tourstart------xp介(安装完成后出现的漫游xpE序Q?nbsp;
taskmgr--------d理?nbsp;
eventvwr-------事g查看?nbsp;
eudcedit-------造字E序
explorer-------打开资源理?nbsp;
packager-------对象包装E序
perfmon.msc----计算机性能监测E序
progman--------E序理?nbsp;
regedit.exe----注册?nbsp;
rsop.msc-------l策略结果集
regedt32-------注册表编辑器
rononce -p ----15U关?nbsp;
regsvr32 /u *.dll----停止dll文gq行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命o(h)提示W?nbsp;
chkdsk.exe-----Chkdsk盘?gu)(g)?nbsp;
certmgr.msc----证书理实用E序
calc-----------启动计算?nbsp;
charmap--------启动字符映射?nbsp;
cliconfg-------SQL SERVER 客户端网l实用程?nbsp;
Clipbrd--------剪脓(chung)板查看器
conf-----------启动netmeeting
compmgmt.msc---计算机管?nbsp;
cleanmgr-------垃圾整理
ciadv.msc------索引服务E序
osk------------打开屏幕键盘
odbcad32-------ODBC数据源管理器
oobe/msoobe /a----(g)查XP是否Ȁz?nbsp;
lusrmgr.msc----本机用户和组
logoff---------注销命o(h)
iexpress-------木马捆绑工具Q系l自?nbsp;
Nslookup-------IP地址侦测?nbsp;
fsmgmt.msc-----׃n文g夹管理器
utilman--------辅助工具理?nbsp;
gpedit.msc-----l策?/p>
转自 http://blog.csdn.net/ccsbb/archive/2010/01/27/5261954.aspx
mysql> UPDATE EACONTACTGROUPS A
SET GROUPNAME=(SELECT CONCAT(B.GROUPNAME,'-',A.GROUPNAME) FROM EACONTACTGROUPS B WHERE B.CORPID=A.CORPID AND B.USERID=A.USERID AND B.GROUPID=A.PARENTGROUPID)
WHERE A.PARENTGROUPID IS NOT NULL;
ERROR 1093 (HY000): You can't specify target table 'A' for update in FROM clause
上面是目前MYSQL5.0仍然有的限制Q文中_(d)(x)
In general, you cannot modify a table and select from the same table in a subquery. For example, this limitation applies to statements of the following forms:
DELETE FROM t WHERE ... (SELECT ... FROM t ...);UPDATE t ... WHERE col = (SELECT ... FROM t ...);{INSERT|REPLACE} INTO t (SELECT ... FROM t ...);
Exception: The preceding prohibition does not apply if you are using a subquery for the modified table in the
FROM
clause. Example:
UPDATE t ... WHERE col = (SELECT (SELECT ... FROM t...) AS _t ...);
Here the prohibition does not apply because a subquery in the
FROM
clause is materialized as a temporary table, so the relevant rows in
t
have already been selected by the time the update to
t
takes place. 依据文Q改成下面的样子p?jin)?x)
mysql> UPDATE EACONTACTGROUPS A
SET GROUPNAME=(SELECT CONCAT(B.GROUPNAME,'-',A.GROUPNAME) FROM ( SELECT GROUPNAME,CORPID,USERID,GROUPID,PARENTGROUPID FROM EACONTACTGROUPS) B
WHERE B.CORPID=A.CORPID AND B.USERID=A.USERID AND B.GROUPID=A.PARENTGROUPID)
WHERE A.PARENTGROUPID IS NOT NULL;
Query OK, 16 rows affected (0.01 sec)
Rows matched: 16 Changed: 16 Warnings: 0
?今天写一个删除语句时扑ֈ的一点资?解决?jin)一个简单的删除语句.呵呵,以后注意?
原句:delete from menu_item where parent_id =(select menu_item_id from menu_item where menu_data like '%manageVendors%');
修改?delete from menu_item where parent_id =(select temp.menu_item_id from (select m.menu_item_id,m.menu_data from menu_item m) temp where temp.menu_data like '%manageVendors%');
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
setcookie() 定义一个和其余?HTTP 标头一起发送的 cookie。和其它标头一Pcookie 必须在脚本的M其它输出之前发送(q是协议限制Q。这需要将本函数的调用攑ֈM输出之前Q包?<html> ? <head> 标签以及(qing)MI格。如果在调用 setcookie() 之前有Q何输出,本函数将p|q返?FALSE。如? setcookie() 函数成功q行Q将q回 TRUE。这q不说明用户是否接受?cookie?/p>
? ?PHP 4 P可以用输出缓存来在调用本函数前输出内容,代h(hun)是把所有向览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中? ob_start() ?ob_end_flush() 来实现这L(fng)功能Q或者通过修改 php.ini 中的 output_buffering 配置选项来实玎ͼ也可以通过修改服务器配|文件来实现?/p>
除了(jin) name 外,其它所有参数都是可选的。可以用I字W串Q?"Q替换某参数以蟩q该参数。因为参?expire 是整型,不能用空字符串掉q,可以用零Q?Q来代替 。下面的说明?setcookie() 的每一个参数都q行?jin)解释。可以对?Netscape cookie 规范以了(jin)?setcookie() 的每一个参数的l节以及(qing)通过阅读 RFC 2965 ?jin)?HTTP cookie 的工作方式?/p>
1. setcookie() 参数详解
参数 说明 举例
name Cookie 的名?/em>Q?nbsp; 使用 $_COOKIE['cookiename'] 调用名ؓ(f) cookiename ?cookie?br />
value Cookie 的?/em>Q此g存在客户端,不要用来保存敏感数据?nbsp; 假定 name ?'cookiename'Q可以通过 $_COOKIE['cookiename'] 取得其倹{?br />
expire Cookie q期的时?/em>Q这是个 Unix 旉戻I即从 Unix U元开始的U数。换而言之,通常?
time() 函数再加上秒数来讑֮ cookie 的失效期。或者用 mktime()来实现?nbsp; time()+60*60*24*30 设?
cookie 30 天后失效。如果未讑֮Qcookie 会(x)在会(x)话结束后Q一般是览器关闭)(j)失效?br />
path Cookie 在服务器端的有效路径Q?nbsp; 如果该参数设?'/' 的话Qcookie 在整个 domain 内有效,如果设ؓ(f) '/foo/'Qcookie 只?domain 下的 /foo/ 目录?qing)其子目录内有效Q例?/foo/bar/。默认gؓ(f)讑֮ cookie 的当前目录?br />
domain ?cookie 有效的域?/em>Q?nbsp; 要 cookie 能在?example.com 域名下的所有子域都有效的话Q该参数应该设ؓ(f) '.example.com'。虽?. q不必须的,但加上它?x)兼?gu)多的览器。如果该参数设ؓ(f) www.example.com 的话Q就只在 www 子域内有效。细节见 Cookie 规范中的 tail matching?br />
secure 指明Q?cookie 是否仅通过安全?HTTPS q接传送。当设成 TRUE Ӟcookie 仅在安全的连接中被设|。默认gؓ(f) FALSE?nbsp; 0 ?1
?cookie 被设|后Q便可以在其它页面通过 $_COOKIE ?$HTTP_COOKIE_VARS 数组取得其倹{需要注意的是,autoglobals ?$_COOKIE 形式适用?PHP 4.1.0 或更高版本。? $HTTP_COOKIE_VARS 则从 PHP 3 起就可以使用。Cookie 的g?x)被保存?$_REQUEST 数组中?/p>
? 如果 PHP 的选项 register_globals 被设?on 的话Qcookie 的g然会(x)被斌到变量内。在下面的例子中Q?TestCookie ?x)被注册Q但是仍然推荐?$_COOKIE 数组?/p>
常见~陷Q?/strong>
* Cookies 不会(x)在设|它的本는效,要测试一?cookie
是否被成功的讑֮Q可以在其到期之前通过另外一个页面来讉K其倹{过期时间是通过参数 expire 来设|的。可以简单地使用
print_r($_COOKIE); 来调试现有的 cookies?br />
* Cookie 必须用和讑֮时的同样的参数才能删除。如果其g个空字符Ԍ或者是 FALSEQƈ且其它的参数都和前一ơ调?setcookie 时相同,那么所指定名称?cookie 会(x)在远E客L(fng)被删除?br />
* ׃?cookie 的D?FALSE ?x)客户端尝试删除这?cookieQ所以要?cookie 上保?
TRUE ?FALSE 时不应该直接使用 boolean |而应该用 0 来表C?FALSEQ用 1 来表C?TRUE
* 可以?cookie 的名U设|成一个数l,但是数组 cookie
中的每个元素的值将?x)被单独保存在用L(fng)pȝ中。考虑使用 explode() 函数用多个名U和D定一?cookie。不推荐?
serialize() 用于此目的,因ؓ(f)它可能会(x)D一个安全漏z?/p>
?PHP 3 中,在同一?PHP 脚本中多ơ?setcookie() 来设|? cookieQ将?x)按照倒序的方式来分别执行Q如果想要在插入另外一?cookie 之前删除一?cookieQ要把插入放到删除之前。自 PHP 4 P多次调用 setcookie() 则是按照序来执行的?/p>
下面一些例子说明了(jin)如何发?cookieQ?/p>
例子 1. setcookie() 发送例?br /> $value = 'something from somewhere';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value,time()+3600); /* expire in 1 hour */
setcookie("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
注意 cookie 中值的部分在发送的时候会(x)被自动用 urlencode ~码q在接收到的时候被自动解码q把Dl与自己同名? cookie 变量。如果不惌样ƈ且在使用 PHP 5 的话Q可以用 setrawcookie() 来代ѝ下面这个简单的例子可以得到刚才所讑֮?cookie 的|(x)
<?php
// 输出单独?cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];
// 另一个调试的Ҏ(gu)是输出所有的 cookie
print_r($_COOKIE);
?>
要删?cookie 需要确保它的失效期是在q去Q才能触发浏览器的删除机制。下面的例子说明?jin)如何删除刚才设|的 cookieQ?/p>
例子 2. setcookie() 删除例子
// 过期时间设Z时?br />
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
也可以通过?cookie 名称中用数l符h讑֮数组 cookieQ可以设定多?cookie 作ؓ(f)数组单元Q在脚本提取 cookie 时所有的值都攑֜一个数l中Q?/p>
例子 3. setcookie() 中用数l的例子
<?php
// 讑֮ cookie
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");
// h面后,昄出来
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
echo "$name : $value <br />\n";
}
}
?>
上例输出:(x)
three : cookiethree
two : cookietwo
one : cookieone
? 下面的一?RFC 也具参考h(hun)|(x)RFC 2109 ?RFC 2695?/p>
注意 expire 参数的接受的?Unix 旉戻I而不是日期格?Wdy, DD-Mon-YYYY HH:MM:SS GMTQ这是因?PHP 在内部进行了(jin)转换?/p>
expire 是与客户端的旉相比较,和服务器旉可能不同?/p>
? ?Microsoft Internet Explorer 4 Service Pack 1 不能正确处理讑֮?path ?cookie?/p>
Netscape Communicator 4.05 ?Microsoft Internet Explorer 3.x 不能正确处理没有讑֮ path ?time ?cookie?/p>
参见 header()Qsetrawcookie()
Ҏ(gu)主要有三U?
转换函数、强制类型{换、利用js变量q型{换?
1. 转换函数
js提供?jin)parseInt()和parseFloat()两个转换函数。前者把D{换成整数Q后者把D{换成点数。只有对Stringcd调用q些Ҏ(gu)Q这两个函数才能正确q行Q对其他cdq回的都是NaN(Not a Number)?
在判断字W串是否是数字值前QparseInt()和parseFloat()都会(x)仔细分析该字W串。parseInt()Ҏ(gu)首先查看位置0处的字符Q? 判断它是否是个有效数字;如果不是Q该Ҏ(gu)返回NaNQ不再(h)l执行其他操作。但如果该字W是有效数字Q该Ҏ(gu)查看位|?处的字符Q进行同L(fng)试? q一q程持l到发现非有效数字的字符为止Q此时parseInt()把该字W之前的字符串{换成数字?
例如Q如果要把字W串 "1234blue "转换成整敎ͼ那么parseInt()返?234Q因为当它检到字符bӞ׃(x)停止(g)过E。字W串中包含的数字字面量会(x)被正{换ؓ(f)数字Q因? 字符?"0xA "?x)被正确转换为数?0。不q,字符?"22.5 "被转换?2Q因为对于整数来_(d)数Ҏ(gu)无效字符。一些示例如下:(x)
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
parseInt()Ҏ(gu)q有基模式,可以把二q制、八q制、十六进制或其他Mq制的字W串转换成整数。基是由parseInt()Ҏ(gu)的第二个参数指定的,所以要解析十六q制的|需如下调用parseInt()Ҏ(gu)Q?br />
parseInt("AF", 16); //returns 175
当然Q对二进制、八q制Q甚臛_q制Q默认模式)(j)Q都可以q样调用parseInt()Ҏ(gu)Q?br />
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
如果十进制数包含前导0Q那么最好采用基?0Q这h不会(x)意外地得到八q制的倹{例如:(x)
parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
在这D代码中Q两行代码都把字W串 "010 "解析成了(jin)一个数字。第一行代码把q个字符串看作八q制的|解析它的方式与第二行代码Q声明基Cؓ(f)8Q相同。最后一行代码声明基Cؓ(f)10Q所以iNum3最后等?0?
parseFloat()Ҏ(gu)与parseInt()Ҏ(gu)的处理方式相|从位|?开始查看每个字W,直到扑ֈW一个非有效的字Wؓ(f)止,然后把该字符之前
的字W串转换成数字。不q,对于q个Ҏ(gu)来说Q第一个出现的数Ҏ(gu)有效字符。如果有两个数点,W二个小数点被看作无效的,parseFloat()
Ҏ(gu)?x)把q个数点之前的字符串{换成数字。这意味着字符?"22.34.5 "被解析?2.34?br />
使用parseFloat()Ҏ(gu)的另一不同之处在于Q字W串必须以十q制形式表示点敎ͼ而不能用八进制Ş式或十六q制形式。该
Ҏ(gu)?x)忽略前?Q所以八q制?908被解析?08。对于十六进制数0xAQ该Ҏ(gu)返回NaNQ因为在点CQx不是有效字符。此外,parseFloat()也没有基模式?
下面是用parseFloat()Ҏ(gu)的示例:(x)
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
2. 强制cd转换
q可使用强制cd转换Qtype castingQ处理{换值的cd。用强制类型{换可以访问特定的|即它是另一U类型的?br />
ECMAScript中可用的3U强制类型{换如下:(x)
Boolean(value)——把l定的D{换成Boolean型;
Number(value)——把l定的D{换成数字Q可以是整数或QҎ(gu)Q;
String(value)——把l定的D{换成字符丌Ӏ?br />
用这三个函数之一转换|创Z个新|存放由原始值直接{换成的倹{这?x)造成意想不到的后果?br />
当要转换的值是臛_有一个字W的字符丌Ӏ非0数字或对象(下一节将讨论q一点)(j)ӞBoolean()函数返回true。如果该值是I字W串、数??ff0000或nullQ它?yu)返回false?
可以用下面的代码D|试Boolean型的强制cd转换?
Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object
Number()的强制类型{换与parseInt()和parseFloat()Ҏ(gu)的处理方式相|只是它{换的是整个|而不是部分倹{还记得 吗,parseInt()和parseFloat()Ҏ(gu)只{换第一个无效字W之前的字符Ԍ因此 "4.5.6 "被转换?"4.5 "。用Number()q行强制cd转换Q?"4.5.6 "返回NaNQ因为整个字W串g能{换成数字。如果字W串D被完整地转换QNumber()判断是调用parseInt()Ҏ(gu)q是调用 parseFloat()Ҏ(gu)。下表说明了(jin)对不同的D用Number()Ҏ(gu)?x)发生的情况Q?
用 ?nbsp; l ?br />
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100
最后一U强制类型{换方法String()是最单的Q因为它可把MD{换成字符丌Ӏ要执行q种强制cd转换Q只需要调用作为参C递进来的值的 toString()Ҏ(gu)Q即?转换?nbsp; "1 "Q把true转换?"true "Q把false转换?"false "Q依此类推。强制{换成字符串和调用toString()Ҏ(gu)的唯一不同之处在于Q对null或undefined值强制类型{换可以生成字W串而不? 发错误:(x)
var s1 = String(null); //"null"
var oNull = null;
var s2 = oNull.toString(); //won’t work, causes an error
3. 利用js变量q型{?/strong>
举个例子,一看,׃(x)明白?jin)?br />
<script>
var str= '012.345 ';
var x = str-0;
x = x*1;
</script>
上例利用?jin)js的弱cd的特点,只进行了(jin)术q算Q实C(jin)字符串到数字的类型{换,不过q个Ҏ(gu)q是不推荐的?