2007年3月12日 09:50
什么是DHCP服务器呢?为什么我们要配置DHCP服务器呢?
所谓的DHCP就是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议,它是TCP/IP协议簇中的一种,主要作用给网络中其他电脑动态分配IP地址之用。
纯粹地谈DHCP协议也许大家会觉得很陌生,但是说到“自动获取IP地址”,各位有装机经验的朋友可能就比较熟悉了。在windows 2000下,我们打开“本地连接 属性”对话框之后,双击“internet 协议 (TCP/IP)”,打开“internet 协议 (TCP/IP) 属性”对话框中,就有一项“自动获得 IP 地址”(当然我们也可以直接指定固定IP给电脑)。然而为什么我们可以使电脑来自动获取IP呢?试想一下,如果每台电脑可以自动获取任意IP的话,那岂不是IP地址严重冲突,网络世界大乱。然而现实生活中使用自动获取IP的网络并没有象我们想象中的一片混乱,为什么呢?原因就是在我们的网络中存在这一个 DHCP服务器,这个DHCP服务器管理着网络中的IP地址资源,使得各IP地址合理地分配给网络中的每一台有需要的主机。
为什么我们有时候需要DHCP服务器来使IP自动分配呢?举个例子来说明一下:假如在某单位中有400台电脑,但是在任何一个时刻,要上网的电脑不会超过255台。如果使用固定IP的话,那么我们就需要为这个单位申请400个IP才够用;但是如果我们使用动态IP分配的话,我们只要申请255个 IP就已经足够了,节省了145个IP资源的费用。DHCP服务就是特别试用于这种IP资源使用密度不高的情况。
然而,常规的方法来讲,需要专门配置一台服务器来做DHCP服务器,这样无疑又增加了网络耗费。据笔者的经验,有时在一些网络低层设备中(如路由器、交换机等)里面整合了DHCP服务,一般的小型网络里,我们完全可以利用网络中的这些网络设备是上的DHCP服务来配置我们自己的DHCP服务器,而不需要另外专门配置一台服务器来做DHCP服务。下面我就以cisco交换机(其他款交换机没试过)为例子,说说具体做法:
所谓的DHCP就是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议,它是TCP/IP协议簇中的一种,主要作用给网络中其他电脑动态分配IP地址之用。
纯粹地谈DHCP协议也许大家会觉得很陌生,但是说到“自动获取IP地址”,各位有装机经验的朋友可能就比较熟悉了。在windows 2000下,我们打开“本地连接 属性”对话框之后,双击“internet 协议 (TCP/IP)”,打开“internet 协议 (TCP/IP) 属性”对话框中,就有一项“自动获得 IP 地址”(当然我们也可以直接指定固定IP给电脑)。然而为什么我们可以使电脑来自动获取IP呢?试想一下,如果每台电脑可以自动获取任意IP的话,那岂不是IP地址严重冲突,网络世界大乱。然而现实生活中使用自动获取IP的网络并没有象我们想象中的一片混乱,为什么呢?原因就是在我们的网络中存在这一个 DHCP服务器,这个DHCP服务器管理着网络中的IP地址资源,使得各IP地址合理地分配给网络中的每一台有需要的主机。
为什么我们有时候需要DHCP服务器来使IP自动分配呢?举个例子来说明一下:假如在某单位中有400台电脑,但是在任何一个时刻,要上网的电脑不会超过255台。如果使用固定IP的话,那么我们就需要为这个单位申请400个IP才够用;但是如果我们使用动态IP分配的话,我们只要申请255个 IP就已经足够了,节省了145个IP资源的费用。DHCP服务就是特别试用于这种IP资源使用密度不高的情况。
然而,常规的方法来讲,需要专门配置一台服务器来做DHCP服务器,这样无疑又增加了网络耗费。据笔者的经验,有时在一些网络低层设备中(如路由器、交换机等)里面整合了DHCP服务,一般的小型网络里,我们完全可以利用网络中的这些网络设备是上的DHCP服务来配置我们自己的DHCP服务器,而不需要另外专门配置一台服务器来做DHCP服务。下面我就以cisco交换机(其他款交换机没试过)为例子,说说具体做法:
2007年3月1日 08:49
转载自落伍im286.com:http://www.im286.com/viewt...
首先在主场景中加入三个textfield和一个按钮。
然后就是给这三个textfield付上名称。
第一个是 name,用来输入用户名
第二个是 password,用来输入密码
第三个是output,用来显示判断结果。
最后就是给按钮的点击加上动作。
Load Variables ("check.php", 1, vars=POST)
这里需要解释一下。
这个action的内容很多,第一是把主场景的几个变量值传给check.php.第二还要从check.php中再返回output的值来。
这样吧,我们一边看我的php程序一边来讲解吧。
首先在主场景中加入三个textfield和一个按钮。
然后就是给这三个textfield付上名称。
第一个是 name,用来输入用户名
第二个是 password,用来输入密码
第三个是output,用来显示判断结果。
最后就是给按钮的点击加上动作。
Load Variables ("check.php", 1, vars=POST)
这里需要解释一下。
这个action的内容很多,第一是把主场景的几个变量值传给check.php.第二还要从check.php中再返回output的值来。
这样吧,我们一边看我的php程序一边来讲解吧。
<?
.....
....
///用sql 语句,找出$name的密码赋给 password
if($passwd==$password)
//就是判断第二个文本框的内容,密码是否第一个文本文本框name找到的密码
echo "output=welcome ".$name." this is a program by php and flash";
//如果等于的话,就将output文本框的值等于欢迎信息
else
echo "output=sorry , ".$name." your password is not correct";
//如果不等于,就显示出错信息。
?>
.....
....
///用sql 语句,找出$name的密码赋给 password
if($passwd==$password)
//就是判断第二个文本框的内容,密码是否第一个文本文本框name找到的密码
echo "output=welcome ".$name." this is a program by php and flash";
//如果等于的话,就将output文本框的值等于欢迎信息
else
echo "output=sorry , ".$name." your password is not correct";
//如果不等于,就显示出错信息。
?>
2007年2月13日 10:39
function phpescape($str)
{
$sublen=strlen($str);
$retrunString="";
for ($i=0;$i<$sublen;$i++)
{
if(ord($str[$i])>=127)
{
$tmpString=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));
//$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下可能要打开此项
$retrunString.="%u".$tmpString;
$i++;
} else {
$retrunString.="%".dechex(ord($str[$i]));
}
}
return $retrunString;
}
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/%u.{4}|&#x.{4};|&#\d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "&#x")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2) == "&#") {
$ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
{
$sublen=strlen($str);
$retrunString="";
for ($i=0;$i<$sublen;$i++)
{
if(ord($str[$i])>=127)
{
$tmpString=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));
//$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下可能要打开此项
$retrunString.="%u".$tmpString;
$i++;
} else {
$retrunString.="%".dechex(ord($str[$i]));
}
}
return $retrunString;
}
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/%u.{4}|&#x.{4};|&#\d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "&#x")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2) == "&#") {
$ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
2007年2月13日 10:37
function strip_magic_quotes($arr)
{
foreach ($arr as $k => $v)
{
if (is_array($v))
{ $arr[$k] = strip_magic_quotes($v); }
else
{ $arr[$k] = stripslashes($v); }
}
return $arr;
}
if (get_magic_quotes_gpc())
{
if (!empty($_GET)) { $_GET = strip_magic_quotes($_GET); }
if (!empty($_POST)) { $_POST = strip_magic_quotes($_POST); }
if (!empty($_COOKIE)) { $_COOKIE = strip_magic_quotes($_COOKIE); }
}
{
foreach ($arr as $k => $v)
{
if (is_array($v))
{ $arr[$k] = strip_magic_quotes($v); }
else
{ $arr[$k] = stripslashes($v); }
}
return $arr;
}
if (get_magic_quotes_gpc())
{
if (!empty($_GET)) { $_GET = strip_magic_quotes($_GET); }
if (!empty($_POST)) { $_POST = strip_magic_quotes($_POST); }
if (!empty($_COOKIE)) { $_COOKIE = strip_magic_quotes($_COOKIE); }
}
2007年2月13日 10:24
看完辉老大的ajax下拉框联动的例子后,自己弄了一个,hoho~










