疯子的紫梦's 学习窝

PHP无限分类的例子

其他常见的无限分类方法:

1,简单的通过递归查询加目录path字段的无限分类
缺点:查询数据库次数太多,不方便其他操作,比如删除节点。添加节点,移动节点
2,左右值无限分类,预排序二叉树
缺点:操作繁琐,数据库冗余,且添加删除修改都要进行左右值更新

本分类方法的优势:

1,数据库结构简单,只有 cid parentid name 三个字段,无任何冗余字段
2,不使用递归查询,所有操作只需一条sql语句
3,所有数据在读取一次数据库后,在数组内进行分析处理,节省数据库服务器资源

创建数据库以及表:

CREATE DATABASE `sortclass`DEFAULT CHARSET utf8;
CREATE TABLE IF NOT EXISTS `class` (
`cid` mediumint(8) unsigned NOT NULL auto_increment,
`pid` mediumint(8) unsigned NOT NULL,
`cname` varchar(50) NOT NULL,
PRIMARY KEY (`cid`),
KEY `pid` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

处理文件示例:

<?php
header("Content-type: text/html; charset=utf-8");
//连接数据库
$link = mysql_connect('localhost','root','eric') or die(mysql_error());
mysql_select_db('sortclass',$link);
//无限分类类库
class SortClass{

var $data = array();
var $child = array(-1=>array());
var $layer = array(-1=>-1);
var $parent = array();
var $link;
var $table;
function SortClass($link, $table){
$this->setNode(0, -1, '顶极节点');
$this->link = $link;
$this->table = $table;
$node = array();
$results = mysql_query('select * from '.$this->table.'',$this->link);
while($node = mysql_fetch_assoc($results)){
$this->setNode($node['cid'],$node['pid'],$node['cname']);
}
}
function setNode ($id, $parent, $value){
$parent = $parent?$parent:0;
$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
$this->layer[$id] = !isset($this->layer[$parent])? 0 : $this->layer[$parent] + 1;
}
function getList (&$tree, $root= 0){
foreach ($this->child[$root] as $key=>$id){
$tree[] = $id;
if ($this->child[$id]) $this->getList($tree, $id);
}
}
function getValue ($id){return $this->data[$id];}
function getLayer ($id, $space = false){
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
}
function getParent ($id){return $this->parent[$id];}
function getParents ($id){
while ($this->parent[$id] != -1){
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}
ksort($parent);
reset($parent);
return $parent;
}
function getChild ($id){return $this->child[$id];}
function getChilds ($id = 0){
$child = array($id);
$this->getList($child, $id);
return $child;
}
function addNode($name,$pid){
mysql_query("insert into $this->table (`pid`,`cname`) values ('$pid','$name')",$this->link);
}
function modNode($cid, $newName){
mysql_query("update $this->table set `cname`='$newName' where `cid` = $cid",$this->link);
}
function delNode($cid){
$allChilds = $this->getChilds($cid);
$sql ='';
if(empty($allChilds)){
$sql = "delete from $this->table where `cid` = $cid";
}else{
$sql = 'delete from '.$this->table.' where `cid` in ('.implode(',',$allChilds).','.$cid.')';
}
mysql_query($sql,$this->link);
}
function moveNode($cid, $topid){
mysql_query("update $this->table set `pid`=$topid where `cid` = $cid", $this->link);
}
}
//函数
function back(){
echo '<script language="javascript">window.location.href="test.php?"+new Date().getTime();</script>';
exit;
}
//声成select
function makeSelect($array,$formName){
global $tree;
$select = '<select name="'.$formName.'">';
foreach ($array as $id){
$select.='<option value="'.$id.'">'.$tree->getLayer($id, '|-').$tree->getValue($id)."</option>";
}
return $select.'</select>';
}
$tree = new SortClass($link,'`class`');
$op = !empty($_POST['op']) ? $_POST['op'] : $_GET['op'];
if(!empty($op)){

if($op=='add'){
$tree->addNode($_POST['cname'],$_POST['pid']);
back();
}

if($op=='mod'){
$tree->modNode($_POST['cid'],$_POST['cname']);
back();
}

if($op=='del'){
$tree->delNode($_GET['cid']);
back();
}

if($op=='move'){
$tree->moveNode($_POST['who'],$_POST['to']);
back();
}
}
$category = $tree->getChilds();
?>
<style type="text/css">
body{font-size:12px;}
ul{list-style:none;}
a{cursor:pointer;}
</style>
<script language="javascript">
function $(e){return document.getElementById(e);}
function mod(cid){
$('cid').value=cid;
$('op').value='mod';
$('name').style.border='1px solid red';
}
</script>
<form action="test.php" method="post">
名称:<input type="text" id="name" name="cname" /> 添加到:<?=makeSelect($category,'pid')?><br />
<input type="hidden" id="op" name="op" value="add" />
<input type="hidden" id="cid" name="cid" />
<input type="submit" value="Submit" />
</form>
<h3>移动分类</h3>
<form action="test.php" method="post">
<?=makeSelect($category,'who')?>移动到:<?=makeSelect($category,'to')?>
<input type="hidden" id="op" name="op" value="move" />
<input type="submit" value="Submit" />
</form>
<ul>
<?php
foreach ($category as $id){
echo '<li>'.$tree->getLayer($id, '|- ').$tree->getValue($id).' <a href="test.php?op=del&cid='.$id.'">Del</a> <a onclick="mod('.$id.')">Edit</a> </li>';
}
?>
</ul>

php常用正则表达式

正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}?
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串





匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内): [^\x00-\xff]

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)





用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1


s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/)([^\.]+).*/ig,"")
alert(s)

利用正则表达式限制网页表单里的文本框输入内容:

        用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"

用正则表达式限制只能输入全角字符:onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"

用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'')

用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'')

PHP防SQL注入

没有太多的过滤,主要是针对php和mysql的组合。
一般性的防注入,只要使用php的 addslashes 函数就可以了。

以下是一段copy来的代码:

 

PHP代码
 

 

 

   1.  $_POST = sql_injection($_POST);  
   2. $_GET = sql_injection($_GET);  
   3.   
   4. function sql_injection($content)  
   5. {  
   6. if (!get_magic_quotes_gpc()) {  
   7. if (is_array($content)) {  
   8. foreach ($content as $key=>$value) {  
   9. $content[$key] = addslashes($value);  
  10. }  
  11. } else {  
  12. addslashes($content);  
  13. }  
  14. }  
  15. return $content;  
  16. }   

 

# /*   
# 函数名称:inject_check()   
# 函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全   
# 参  数:$sql_str: 提交的变量   
# 返 回 值:返回检测结果,ture or false   
# */     
# function inject_check($sql_str) {      
#   return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);    // 进行过滤      
# }       
# /*   
# 函数名称:verify_id()   
# 函数作用:校验提交的ID类值是否合法   
# 参  数:$id: 提交的ID值   
# 返 回 值:返回处理后的ID   
# */     
# function verify_id($id=null) {      
#   if (!$id) { exit('没有提交参数!'); }    // 是否为空判断      
#   elseif (inject_check($id)) { exit('提交的参数非法!'); }    // 注射判断      
#   elseif (!is_numeric($id)) { exit('提交的参数非法!'); }    // 数字判断      
#   $id = intval($id);    // 整型化      
#      
#   return  $id;      
# }       
# /*   
# 函数名称:str_check()   
# 函数作用:对提交的字符串进行过滤   
# 参  数:$var: 要处理的字符串   
# 返 回 值:返回过滤后的字符串   
# */     
# function str_check( $str ) {      
#   if (!get_magic_quotes_gpc()) {    // 判断magic_quotes_gpc是否打开      
#     $str = addslashes($str);    // 进行过滤      
#   }      
#   $str = str_replace("_", "\_", $str);    // 把 '_'过滤掉      
#   $str = str_replace("%", "\%", $str);    // 把 '%'过滤掉      
#      
#   return $str;       
# }       
# /*   
# 函数名称:post_check()   
# 函数作用:对提交的编辑内容进行处理   
# 参  数:$post: 要提交的内容   
# 返 回 值:$post: 返回过滤后的内容   
# */     
# function post_check($post) {      
#   if (!get_magic_quotes_gpc()) {    // 判断magic_quotes_gpc是否为打开      
#     $post = addslashes($post);    // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤      
#   }      
#   $post = str_replace("_", "\_", $post);    // 把 '_'过滤掉      
#   $post = str_replace("%", "\%", $post);    // 把 '%'过滤掉      
#   $post = nl2br($post);    // 回车转换      
#   $post = htmlspecialchars($post);    // html标记转换      
#      
#   return $post;      
# }   

 

javascript中window和document

[window对象] 

  它是一个顶层对象,而不是另一个对象的属性,即浏览器的窗口。 

  属性 

  defaultStatus 缺省的状态条消息 

  document 当前显示的文档(该属性本身也是一个对象) 

  frame 窗口里的一个框架((FRAME>)(该属性本身也是一个对象) 

  frames array 列举窗口的框架对象的数组,按照这些对象在文档中出现的顺序列出(该属性本身也是一个 

对象) 

  history 窗口的历史列表(该属性本身也是一个对象) 

  length 窗口内的框架数 

  location 窗口所显示文档的完整(绝对)URL(该属性本身也是一个对象)不要把它与如document.location 

混淆,后者是当前显示文档的URL。用户可以改变window.location(用另一个文档取代当前文档),但却不能改变 

document.location (因为这是当前显示文档的位置) 

  name 窗口打开时,赋予该窗口的名字 

  opener 代表使用window.open打开当前窗口的脚本所在的窗口(这是Netscape Navigator 3.0beta 3所引 

入的一个新属性) 

  parent 包含当前框架的窗口的同义词。frame和window对象的一个属性 

  self 当前窗口或框架的同义词 

  status 状态条中的消息 

  top 包含当前框架的最顶层浏览器窗口的同义词 

  window 当前窗口或框架的同义词,与self相同 

  方法 

  alert() 打开一个Alert消息框 

  clearTimeout() 用来终止setTimeout方法的工作 

  close() 关闭窗口 

  confirm() 打开一个Confirm消息框,用户可以选择OK或Cancel,如果用户单击OK,该方法返回true,单击

Cancel返回false 

  blur() 把焦点从指定窗口移开(这是Netscape Navigator 3.0 beta 3引入的新方法) 

  focus() 把指定的窗口带到前台(另一个新方法) 

  open() 打开一个新窗口 

  prompt() 打开一个Prompt对话框,用户可向该框键入文本,并把键入的文本返回到脚本 

  setTimeout() 等待一段指定的毫秒数时间,然后运行指令事件处理程序事件处理程序 

  Onload() 页面载入时触发 

  Onunload() 页面关闭时触发 

[document对象] 

  该对象是window和frames对象的一个属性,是显示于窗口或框架内的一个文档。 

  属性 

  alinkColor 活动链接的颜色(ALINK) 

  anchor 一个HTMI锚点,使用<A NAME=>标记创建(该属性本身也是一个对象) 

  anchors array 列出文档锚点对象的数组(<A NAME=>)(该属性本身也是一个对象) 

  bgColor 文档的背景颜色(BGCOLOR) 

  cookie 存储于cookie.txt文件内的一段信息,它是该文档对象的一个属性 

  fgColor 文档的文本颜色(<BODY>标记里的TEXT特性) 

  form 文档中的一个窗体(<FORM>)(该属性本身也是一个对象) 

  forms anay 按照其出现在文档中的顺序列出窗体对象的一个数组(该属性本身也是一个对象) 

  lastModified 文档最后的修改日期 

  linkColor 文档的链接的颜色,即<BODY>标记中的LINK特性(链接到用户没有观察到的文档) 

  link 文档中的一个<A HREF=>标记(该属性本身也是一个对象) 

  links array 文档中link对象的一个数组,按照它们出现在文档中的顺序排列(该属性本身也是一个对象) 

  location 当前显示文档的URL。用户不能改变document.location(因为这是当前显示文档的位置)。但是, 

可以改变 window.location (用其它文档取代当前文档)window.location本身也是一个对象,而 

document.location不是对象 

  referrer 包含链接的文档的URL,用户单击该链接可到达当前文档 

  title 文档的标题((TITLE>) 

  vlinkColor 指向用户已观察过的文档的链接文本颜色,即<BODY>标记的VLINK特性 

  方法 

  clear 清除指定文档的内容 

  close 关闭文档流 

  open 打开文档流 

  write 把文本写入文档 

  writeln 把文本写入文档,并以换行符结尾 

区别:1、window指窗体。document指页面。document是window的一个子对象。

       2、用户不能改变 document.location(因为这是当前显示文档的位置)。但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而document.location不是对象

HTML技巧100例

1. 链接控制

返回前页:使用OnClick="history.go(-1)",如



返回主页:使用OnClick='top.location.href="../chinamail.html"',如



2. 链接提示

在链接语句中增加

OnMouseOver="window.status='这里是 ...'; return true" OnMouseOut="window.status=''; return true"

如: 去哪儿? (在点击链接前注意看状态行显示的变化)

3. 背景音乐

显示操作面板:在相应地方加<embed src="aladdin.mid" width="140" height="35" autostart=true controls="middleconsole">

不显示操作面板:在页中任意地方加<embed src="aladdin.mid" hidden=true autostart=true loop=true>

或<embed src="tt.ram" autostart="true" loop="2" width="80" height="30">

对于不支持embed 标签的浏览器,可以改用标签。

4. 设置主页的缺省字符语言为简体中文(适用于Netscape)

在HTML文件的Head部分中加入<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=cn-gb">

5. 链接的不同方式

在帧里显示:在链接处加target="main"语句,其中main为帧名

整页显示:在链接处加target="_top"语句

开新窗口:在链接处加target="resource window"语句,如<A HREF="index.htm" TARGET="resource window"></A>

6. 强制主页每次都不进行缓存,而从服务器上重读

在Head部分加
<MEAT HTTP-EQUIV="Pragma" CONTENT="no-cache">

这样一来,浏览器将不考虑cacke中的内容而强制重新读入您的页面,等于用户使用Reload。

如果在您有计数器的页中使用,不管从什么地方返回这页
计数器都能加一。不过可能造成用户的反感。

如果在BBS程序中使用,可以实现不用Reload就可更新页的功能。

7. 自动刷新

定时刷新:<META HTTP-EQUIV="Refresh" content="10; URL=http://自己的URL">

幻灯片效果:语句类似上面,但在页面1中URL指向页面2,而页面2指向页面3 ...
页面n指回页面1,即可实现循环显示页面的效果

8.提前载入图片

如果您的站点中后面的页有大图形需要显示,您不妨在第一页中提前载入。把语句:
<img src="image.jpg" width=0 height=0> ,其中width,height要设置为0, 放在第一页HTML中的任何地方。

如果您的访问者在第一页停留的时间足够长,当他进入第二页时,图象会立即显示出来

9. 自动连接

在预定时间后自动连入另一个指定的页面。
方法:
在<title>...</title>中加入以下一行:
<meta http-equiv="refresh" content="10"; url="otherpage.htm">
其中10代表10秒后自动连接。


10. 自动换行:

在主页中自动换行以适应不同的浏览器或分辨率。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

11. 用单像素的GIF文件控控制文本位置

要想准确的控制HTML中的文本位置,可以做一个1*1的透明图(如Blank.gif)。然后在HTML中加入代码:
<img src="Blank.gif" hspace=100>
改变数字100,即可控制

12. 容器标记

<BLOCKQUOTE></BLOCKQUOTE>标记可以把网页上所有的对象都包括起来,但不能对它加入变量。

13.设定图形大小

为使您的Web页在图形下载完之前,能够立即显示文字内容。
在您的主页中的图形元素中加入文件大小变量:
<img src="image.jpg" width=xxxx height=yyy>
xxx,yyy是您的图形的真实像素

14. 移动文字

这在主页上是常用的,其制作方法很简单。
<marquee>要移动的文字</marquee>
1.移动 的方向:<direction=!> !=left, right
2.移动的方式:<bihavior=!> !=scroll ,side,alternate
3.循环次数:<loop=!> !=次数。若未指定则循环不止。
4 循环速度:<scrollamount=!> !=数

15.如何去掉主页超链接的下划线?

把下列语句放在<head>...</head>之间
<style>
A {text-decoration: none}
}
</style>
<script language="javascript">
var contents = true;
</script>

更简单的是
<style>
<!--
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
-->
</style>

16. 浮动背景(背景图像不滚动 )

当你拉住下拉条时,背景不动。(会使浏览速度减慢。:-( )加入:
<body backgroud="#ffff" bgproperties="fixed">

或用CSS样式表定义:
<style type="text/css">
<!--
body { background-image: url(image/bg.gif); background-attachment: fixed}
-->
</style>

17. 让背景图像不平铺
CSS样式表定义:
<style type="text/css">
<!--
body { background-image: url(image/bg.gif); background-repeat: no-repeat}
-->
</style>

18. 测试浏览器类别并自动装入不同的网页

目前微软和网景的浏览器并不能完全兼容所有网页,有的在某种浏览器里非常漂亮,而用其它浏览器查看时却一团糟。如果你需要测试浏览器,可以加入以下JavaScript代码并保存单独一个网页:

<script language="JavaScript">
function TestBrowser(){
ie = ((navigator.appName ==
"Microsoft Internet Explorer") & &
(parseInt(navigator.appVersion) >= 3 ))
ns = ((navigator.appName == "Netscape") & &
(parseInt(navigator.appVersion) >= 3 ))
if (ns) {
setTimeout(''location.href="nn4.htm"'',10);
} else {
setTimeout(''location.href="ie4.htm"'',10);
}
}
</script>

19. 定义本网页的关键字

在网页中加入关键字,可以供某些搜索站台机器人的使用,它们会利用该关键字为你的网站做索引,这样,当别人用关键字搜索网站时,如果你的网页包含该关键字,那么就可以被列出了,定义本网页关键字,可以加入以下代码:
<meta name="keywords" content="html,dreamweaver,flash,css">
content 所包含的就是关键字,你可以自行设置。
这里有个技巧,你可以重复某一个单词,这样可以提高自己网站的排行位置,如:
<meta name="keywords" content="dreamweaver,dreamweaver,dreamweaver">

20. 在网页中加入E-mail链接并显示预定的主题

<a href=mailto:cnshell@163.com?subject=hello>

21. 隐藏在状态栏里出现的链接信息

当指向一个链接时,该链接的信息会出现在浏览器状态栏里,如果需要隐藏信息,可以如下设置:
<a href="http://www.yy0736.com" onMouseOver="window.status='none';return true">test</a>
如果想要指向一个链接时,浏览器状态栏里出现特定的信息,把none 改成你需要的文字即可。

22. 在网页中将表单提交给自已的电子邮箱

表单提交需要CGI程序的支持,但你也可以利用E-mail 提交,当你设计好表单后,把action 内容加入邮件地址即可,如下:
<form method="post" action="mailto:cnshell@163.com" enctype="text/plain">

23. 隐藏免费计数器的的图标

许多网友使用免费计数器,它能帮助你分析网站的流量,如果你想隐藏该服务图标,可以把服务代码中的width=88 height=31都改为1即可。

24. 在网页中加入最后修改日期

在body 中加入以下代码即可:
<script Language="JavaScript">
document.write
("最后修改日期" + document.lastModified);
</Script>

25. 打开一个新的浏览器窗口并设置窗口的属性

如果你需要在载入站点的同时,再打开另一个新窗口,加入以下代码即可:

<script language="JavaScript">
<!--
var gt = unescape('%3e');
var popup = null;
var over = "Launch Pop-up Navigator";
popup = window.open('', 'popupnav', 'width=160,height=160,resizable=1,
    status=yes,menubar=no,scrollbars=yes');
if (popup != null) {
    if (popup.opener == null) {
          popup.opener = self;
    }
    popup.location.href = 'pop.htm';}
//-->
</script>

期中pop.htm可以设置为你的htm文件,对于设置新窗口的属性,对照以下设置:

popup = window.open('', 'popupnav', 'width=200,height=170,resizable=1,scrollbars=auto');

width:宽,height:高,resizable:是否允许访客缩放新窗口,scrollbars:如果文本超过一屏,是否生成滚动条,status:是否显示状态栏,menubar:是否显示菜单,location:是否显示地址栏.

以上所有属性使用格式为:属性=yes或者no.而width和height两个属性为:width=#pixels,height=#pixels.

26.怎样判断服务器使用的操作系统?

在 浏览器地址栏里,输入要察看的服务器地址,一定要包含目录和文档名字,然后回车,出现请求页面,试着把文档名改为大写格式,如果返回该页面不存在,那么可 能该服务器使用的操作系统为unix或macintosh,如果页面内容返回,那么可能该服务器为windwos操作系统,因为windows对大小写不 敏感.

27. 怎样提高站点在搜索引擎中被搜索到的机会?

当你把自己站点登记到搜索引擎中后,并不表示你的站点就会被经常搜索到,如何提高这个几率呢,很简单,你的主页一般会有一个标题,一般设置在<title></title>中间,这时,你可以在设置完标题后,跟着把关键字也设置在这里,比如:
<title> 宇风多媒体-china,love,dhtml,yufeng21,yahoo</title>.因为搜索引擎会首先察看站点的标题,并把标 题作为你站点的关键字,当你把关键字也设置在了标题中后,搜索引擎也会加入这些关键字,这比其它所有的方法都好,唯一缺点,你站点标题变长了.

28. 如何测试网站的下载速度?

准备一个能读秒的表,比如跑步表,这样精度高些,当然也可以使用普通的表.

首先我们测试纯文本的下载时间,打开浏览器,关闭下载图片功能,然后连接上网,在地址栏输入站点地址,回车后,计时开始,当全部文本内容下载完后,停止计时.

如果你要测试整个站点下载速度,打开图片下载功能,如果你站点含有JavaScript,也要在浏览器选择为支持,同上,打入地址,回车,计时开始,当所有内容下载完后,停止计时.

经过以上两种测试,你就会对自己站点的连接下载速度,作到心中有数了.

29. 如何让站点自动跳转到另一页?

加入以下代码到HTML文件中即可:
<meta http-equiv="refresh" content="5;url=http://www.PHP100.com/index.htm">
content中的"5"为停留的秒数,http://www.PHP100.com/index.htm 是将要跳转的页面。

30.怎样让广告随机出现?

当你想展示许多广告,但页面空间不够时,你可以让广告随机出现,你只需要加入一段代码.网上有这样的代码,搜索……