文章索引 :
</script> |
||||||||||||||||||||||||||
1、PHP 5.0 + IIS 6.0 的安装配置
|
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
2、MySQL + PHP 5.0 的安装调试
|
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
3、GHOST2003启动盘-使用说明 ★ "GHOST2003英文原版"的使用方法: "GHOST2003英文原版"适用于高级用户,但常用功能所有用户都应熟练掌握. 因篇幅有限,只举一个最常见的例子,其余的大家可以举一反三: 例:如何用GHOST备份和恢复C盘? 1,备份"C盘": 当你的C盘新装(重装)系统后,都要用GHOST备份一下,以防不测: (1)启动GHOST:用本软盘启动电脑,出现主菜单后,选择"1.Ghost"菜单,回车,进入 GHOST界面. (2)选择基本动作:单击Local→Partition→To Image (这步一定不要选错) (3)选择源分区:这里因为是备份C盘,所以在弹出窗口中单击第一行,单击"OK"确定. (4)选择目标分区:这里可以选D盘,E盘...等(任意一个有足够空间的分区均可), 我们选D盘,即在弹出窗口中单击第二行. (5)输入文件名:在弹出的窗口中的上方选择一个文件夹(不选也可,即保存的根 目录里,自己定吧),下方输入备份文件的名称(带有GHO的后缀名),如"C.GHO",单击 "SAVE"(存储). (6)选择压缩比例:有三个可选项,No表示不压缩,速度最快;Fast表示压缩比例小, 速度较快(推荐);High表示压缩比例最高,速度最慢. (7)开始备份:在弹出的窗口中选择第一个按钮就OK了.下面的就是等待了.整个 备份过程一般需要十几分钟(时间长短与C盘数据多少,硬件速度等因素有关),进度条 到100%时,会再弹出一个窗口,单击按钮就OK了. 2,恢复"C盘": 当你的C盘出现严重软件问题时,用以前备份过的GHO文件进行恢复: (1)启动GHOST:用本软盘启动电脑,出现主菜单后,选择"1.Ghost"菜单,回车, 进入GHOST界面. (2)选择基本动作:单击Local→Partition→From Image (这步一定不要选错) (3)选择源分区:这里因为是备份到D盘,所以在弹出窗口中单击第二行,单击"OK"确定. (4)选择文件名:在弹出的窗口中的上方选择"C.GHO",单击"LOAD"(调出). (5)选择目标分区:当然是C盘了,即在弹出窗口中单击第一行. (6)开始恢复:在弹出的窗口中选择第一个按钮就OK了.下面的就是等待了.整个 恢复过程一般需要十几分钟(时间长短与GHO文件大小,硬件速度等因素有关),进度条到 100%时,会再弹出一个窗口,选择第二个按钮(重新启动电脑)就OK了. ★ "GHOST2003中文向导"的使用方法: "GHOST2003中文向导"适于初级用户,只要按提示一步一步操作即可,具体方法:略. 注意:本版"中文向导"暂不支持NTFS等特殊格式的分区. ★ GHOST参数详解: 本盘"中文向导"主要依据"MAFA3光盘11月版"中的DOS批处理编写,本站长作了必要的 修改和优化,其中的"GHOST参数"是批处理的灵魂,以下从网上摘录的文章有助于大家理解 和修正本盘的GHOST_CN.BAT: (一)常用参数: -rb 本次Ghost操作结束退出时自动重启。这样,在复制系统时就可以放心离开了。 -fx 本次Ghost操作结束退出时自动回到DOS提示符。 -sure 对所有要求确认的提示或警告一律回答“Yes”,和-CLONE选项一起使用来 避免提问。此参数有一定危险性,只建议高级用户使用。 -fro 如果源分区发现坏簇,则略过提示强制拷贝。此参数可用于试着挽救硬盘 坏道中的数据。 @filename 在filename中指定txt文件。txt文件中为Ghost的附加参数,这样做 可以不受DOS命令行150个字符的限制。 -f32将源FAT16分区拷贝后转换成FAT32(前提是目标分区不小于2G)。WinNT4和 Windows95、97用户慎用。 -bootcd 当直接向光盘中备份文件时,此选项可以使光盘变成可引导。此过程 需要放入启动盘。 -fatlimit 将NT的FAT16分区限制在2G。此参数在复制Windows NT分区,且不想 使用64k/簇的FAT16时非常有用。 -span 分卷参数。当空间不足时提示复制到另一个分区的另一个备份包。 -auto 分卷拷贝时不提示就自动赋予一个文件名继续执行。 -crcignore 忽略备份包中的CRC ERROR。除非需要抢救备份包中的数据,否则不 要使用此参数,以防数据错误。 -ia 全部映像。Ghost会对硬盘上所有的分区逐个进行备份。 -ial 全部映像,类似于-ia参数,对Linux分区逐个进行备份,对其它分区则用 正常方法。 -id 全部映像。类似于-ia参数,但包含分区的引导信息。 -quiet 操作过程中禁止状态更新和用户干预。 -script 自动按照脚本文件中的命令来运行程序,可以执行多个Ghost命令行, 命令行存放在指定的文件中。 -span 启用映像文件的分卷功能。 -split=x 将备份包划分成多个分卷,每个分卷的大小为x兆。这个功能非常 实用,用于大型备份包复制到移动式存储设备上,例如将一个1.9G的备份包复制到 3张刻录盘上。 -z 将磁盘或分区上的内容保存到映像文件时进行压缩。-z或-z1为低压缩率 (快速);-z2为高压缩率(中速);-z3至-z9压缩率依次增大(速度依次减慢)。 -clone 这是实现Ghost无人备份/恢复的核心参数。 使用语法为: -clone,MODE=(operation),SRC=(source),DST=(destination),[SZE(size), SZE(size)......] 此参数行较为复杂,且各参数之间不能含有空格。 其中operation意为操作类型,值可取:copy:磁盘到磁盘;load:文件到磁盘; dump:磁盘到文件;pcopy:分区到分区;pload:文件到分区;pdump:分区到文件。 Source意为操作源,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径。 Destination意为目标位置,值可取:驱动器号,从1开始;或者为文件名,需要写 绝对路径;@CDx,刻录机,x表示刻录机的驱动器号,从1开始。 下面举例说明: 命令行参数:ghostpe.exe-clone,mode=copy,src=1,dst=2 完成操作:将本地磁盘1复制到本地磁盘2。 命令行参数:ghostpe.exe-clone,mode=pcopy,src=1:2,dst=2:1 完成操作:将本地磁盘1上的第二分区复制到本地磁盘2的第一分区。 命令行参数:ghostpe.exe-clone,mode=load,src=g:/3prtdisk.gho,dst=1, sze1=450M,sze2=1599M,sze3=2047M 完成操作:从映像文件装载磁盘1,并将第一个分区的大小调整为450MB, 第二个调整为1599MB,第三个调整为2047MB。 命令行参数:ghostpe.exe-clone,mode=pdump,src2:1:4:6,dst=d:/prt246.gho 完成操作:创建仅具有选定分区的映像文件。从磁盘2上选择分区1、4、6。 了解了这些参数后,我们就可以轻松地实现Ghost的无人备份/复制/恢复了。 冲杯咖啡吧。 注意事项 1.在备份系统时,单个的备份文件最好不要超过2GB。 2.在备份系统前,最好将一些无用的文件(如win386.swp)删除以减少Ghost文件的 体积。通常无用的文件有:Windows的临时文件夹、IE临时文件夹、Windows的内存 交换文件。这些文件通常要占去100多兆硬盘空间。 3.在备份系统前,整理目标盘和源盘,以加快备份速度。 4.在备份系统前及恢复系统前,最好检查一下目标盘和源盘,纠正磁盘错误。 5.在恢复系统时,最好先检查一下要恢复的目标盘是否有重要的文件还未转移, 千万不要等硬盘信息被覆盖后才后悔莫及啊。 6.在选择压缩率时,建议不要选择最高压缩率,因为最高压缩率非常耗时,而 压缩率又没有明显的提高。 7.在新安装了软件和硬件后,最好重新制作映像文件,否则很可能在恢复后出现 一些莫名其妙的错误。 (二)不常用参数: -IR:和ID一样,但不将分区调整为扇区界限。 -IB:只复制磁盘的启动扇区。 -OR:覆盖空间并进行完整性检查。 -NOLILO:复制后不要试图去修正LILO启动调入器。 -FDSZ:清除目标磁盘上的标志性字节。 -FDSP:保留目标磁盘上的标志性字节。(优先级高于-FSSZ) -LPM:LPT主并行连接模式。 -LPS:LPT从并行连接模式。 -TCPM:TCP/IP主连接模式。 -TCPS:TCP/IP从连接模式。 -USBM:自动进入USB主模式。 -USBS:自动进入USB从模式。 -JL:记录多点传送会话诊断消息到文件。 -JS:设置最大的多点传送值。 -JA:设置多点传送会话的名称。 -CHKIMG:检查映象文件的完整性。 -PWD:指定密码。 -SKIP:指定需要跳过的FAT文件系统中的文件或目录。 -PMBR:当进行任何磁盘复制操作时,保留目标磁盘中的主引导记录。 -F64:当调入旧映象文件时允许64K的簇大小。 -FATLIMIT:防止FAT分区大小超过2兆。 -NTD:允许NTFS内部诊断检查。 -NTC-:禁止NTFS连续簇分配。 -NTCHKDSK:强制CHKDSK在下一个NTFS卷启动。 -NTIC:忽略NTFS卷上的CHKDSK位。 -NTIL:忽略非空的NTFS日志文件检查位。 -NTIID:忽略分区系统标识符的复制。 -TAPEBUFFERED:默认的磁带模式。 -TAPESAFE:当使用旧的或不可靠的磁带时有用。 -TAPESPEED:允许控置磁带速度。 -TAPEUNBUFFERED:强制非缓冲的磁带输入输出。 -TAPEEJECT:强制磁带操作完后弹出。 -TAPEBSIZE:磁带块大小。 -NOFILE:禁止文件询问。 -DL:指定存在的硬盘号。 -FIS:使用检测出的硬盘最大值。 -FNX:禁止扩展13号中断支持。 -FFX:使用扩展13号中断。 -FNI:禁止直接IDE硬盘存取支持。 -FFI:使用直接IDE硬盘存取。 -FNS:禁止直接ASPI/SCSI硬盘存取支持。 -FFS:使用直接ASPI/SCSI硬盘存取。 -NOSCSI:禁止使用ASPI存取SCSI设备。 -BFC:处理坏的FAT簇。 -VDM:写入前使用使用磁盘校验命令来检查磁盘上的每个扇区。 -CRC32:使用CRC32校验。 -FCR:当建立文件时创建校验文件。 -AFILE:使用指定的中止记录文件。 -DI:显示诊断。 -MEMCHECK:诊断内存。 -DD:记录磁盘信息到GHSTSTAT.TXT -DFILE:使用指定的信息日志文件。 -FINGER:显示详细的指纹信息。 -VER:显示程序版本号。 声明:由于以上参数所依据的版本可能是GHOST7.0或更早的版本,有些参数可能已经过时; 又由于本盘采用的是GHOST2003是个人版,所以有些参数(如部分与网络相关的参数)无法使用. 总之一句话,请大家多提意见和建议,以有利用本盘的不断改进。 DOS之家 葛明阳(gmy)制作 http://doshome.com gmy@0451.com QQ:53617565 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
4、PHPLIB 的安装
|
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
5、session概述 一、session概述 session是什么,刚开始我也不明白,非专业词典翻译为会议,会议期。作个不太恰当的比喻吧(虽然不恰当,但意义却是一样的),,session是你和网站之间的感情。 二、php3,4中session的实现 在php3中是没有session这种东东的,但我们又需要,怎么办呢?别急,有很多人替你做了这些,这其中最有名的要算phplib了。你可以去国外下 if (!isset($_PHPLIB) or !is_array($_PHPLIB)) { 然后将d:apachephplocal.inc文件改如下: class DB_Example extends DB_Sql { 最后一步执行解开的phplib目录中的stuff目录下的create_database.mysql文件,生成初始表。
|
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
6、给初学PHP的5个入手程序 加入日期:2003年05月31日 03:47:12 AM 作者:Kinter 论坛转载 php的基本语法格式与C类似,没学过C的朋友花几分钟看看别人的源代码怎么写的,就基本熟悉格式了。 —————————————————- —————————————————- #程序1: /* 功能:显示PHP极其APACHE的配置环境和各种参数变量*/ <?php echo phpinfo();/* php有丰富的函数库,大量便捷的函数极大的提高你的工作效率。phpinfo()就是其中一个函数*/ ?> —————————————————- #程序2: /* 功能:显示一个漂亮的表格 <HTML> return($ColorValue); print “<TABLE WIDTH=”100%”> “; —————————————————- <? ?> <html> —————————————————- #例子5: 动态创建并保存图形 <?//必须有GD库支持
|
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
7、用php创建简单的和多页的表单 用php做一个简单的表单 PHP最有用的特性之一是它能够自动将表单中的变量值赋予PHP变量。这使得表单处理变得非常快捷。 因此,如果你送出一个内含输入栏位值的表单如下: <INPUT TYPE=TEXT NAME=”name” VALUE=”Glen Morris”> 当你用PHP处理此页面,$name变量的值就会是 Glen Morris。 因此,你可以用如下的方式把值打印出来: echo “Hi $name!”; 或者像这样测试其值: if ($name == “Glen Morris”) { echo “Please check your email.”; } 这有一个用PHP处理基本表单的很好方法。例如,我们需要做一个简单的问卷调查,要求填写者必须填写他们的姓名,电子邮件地址,并回答一些我们感兴趣的问题。 首先,我们会将页面拆成两个函数。因此,我们只需要写一个 PHP页面并用程序逻辑去控制对用户的显示内容就可以了,而不是写两个单独的网页(一个针对表单部分,另外一个针对处理表单的CGI脚本)。 显示表单第一个函数用来显示表单: <?php functiondisplay_form() { global $PHP_SELF; ?> <FORM TARGET=”<?php echo $PHP_SELF; ?>” METHOD=GET> Name: <INPUT TYPE=TEXT NAME=”name”><BR> Favorite Cheese: <INPUT TYPE=RADIO NAME=”cheese” VALUE=”brie”>Very soft French Brie <INPUT TYPE=RADIO NAME=”cheese” VALUE=”cheddar”>Farmhouse English Cheddar <INPUT TYPE=RADIO NAME=”cheese” VALUE=”mozzarella”>Italian Buffalo Mozzarella Favorite Times to Eat Cheese: <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”m”>Morning <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”n”>Noon <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”d”>Dinner <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”l”>Late night <INPUT TYPE=HIDDEN NAME=”stage” VALUE=”results”> <INPUT TYPE=SUBMIT VALUE=”Thanks!”> </FORM> <?php } ?> 以上文字大部分都只是产生表单所需的HTML代码,然而,我们必须对一些复杂的地方加以说明的。 首先是变量$PHP_SELF。$PHP_SELF是一个很方便的参考变量——其值就是当前页面的 URL。因为要让该网页处理此表单,我们把这个表单的TARGET设为$PHP_SELF。通过使用$PHP_SELF变量而非该页面实际的实际路径,我们可以对此脚本任意重命名或移动位置,而不必担心每次重用此段代码时,都要重新详细定位页面。 顺带提一下,以下这一行 global $PHP_SELF; 表明我们要获取全局变量$PHP_SELF。不同于函数,变量在其声明范围具有局部生存期,即可以与在函数外声明的同名函数有不同的值。如果我们没有明确告之PHP我们需要的是全局变量$PHP_SELF,我们就会发现,$PHP_SELF为空。 再者,可以注意到我们甚至在函数内部出入PHP模式。这是完全合法的语法。PHP 能智能化地自动忽略其中所有的HTML代码,只寻找下一段PHP代码的起始位置。这甚至比起一直处于PHP模式中用echo输出HTML码还要快。 来看单选按钮及勾选框中的 NAME 属性,你会注意到times[]在变量名后面跟著一对括弧,而cheese后却没有。这是因为单选按钮只让你选择一个正确的答案,因此cheese的值只会有一个字符串。相反,勾选框可以让你选择多个答案。PHP要存放这些答案必须将其放到一个数组中。在times变量名后面加上[],就可以让PHP知道它是一个数组而非标量。 最后,我们还有一个隐藏变量stage。我们用$stage来判断是否要显示表单还是要计算处理结果。 表单处理接下来是处理表单的函数,process_form()。 <?php functionprocess_form() { global $name; global $cheese; global $times; if ($cheese == ‘brie’) { $cheese_message = ‘I love brie.’; } elseif ($cheese == ‘cheddar’) { $cheese_message = ‘Cheddar is awesome!’; } else { $cheese_message = ‘Fresh mozzarella is divine.’; } $favorite_times = count($times); if ($favorite_times <= 1) { $times_message = ‘You should eat cheese more often.’; } elseif ($favorite_times > 1 && $favorite_times < 4) { $times_message = ‘Those are good times to eat cheese.’; } else { $times_message = ‘You are eating too much cheese.’; }
echo “Hello $name.”; echo “$cheese_message $times_message”; } ?> 首先,如同我们处理$PHP_SELF一样,我们获取表单里面的全局变量。然后检查cheese选项中哪一个被选中以按选择创建回应。 下面,我们使用count()函数,以计算被选为喜好时段的时段数。在过去,必须通过检查$cheese每一个可能的值来实现,而现在我们只要利用大于、小于来比较$favorite_times的大小就可以了。如果你希望知道“$favorite_times > 1 && $favorite_times < 4” 在代码最后,我们输出用户名以及我们提供给他的信息。当然,你也可以实现各种各样有趣的变化,例如,将信息存在数据库中,或通过查询数据库中信息并以适当格式返回结果。 组合表单现在我们已得到此二函数,接着只需要再放入一小段代码,就可以把二者连接一起,并建立代码所需的逻辑关系。在display_form() 以及process_form() 下加入以下代码:
<?php if (empty($stage)) { display_form(); } else { process_form(); }
?>
首先,我们检查变量$stage是否为空。在 PHP中,一个变量如果未曾初始化(即未曾赋值)或其值为零(也就是被赋值为零,即空白字串或者是零值),则该变量被视为空值。当用户首次访问网页时,$stage变量值为空。因此我们希望显示表单;否则我们将处理表单内容。
以上即如何使用PHP处理表单的过程。 用php做一个多页的表单 如果可以在一个页面上建立多个表单,为何不能建立跨多页面的表单呢? 不幸的是,用 HTTP从一页面传送数据到另一页面并不轻松。因为在 HTTP协议中没有内建机制以定义系列页面的概念。不过,仅需通过一些灵巧的技巧,以及PHP 某些有用的函数,我们就可以不用花太多力气而突破此限制。在此章节中,关键思想在于把上一页面获取的输入存到下一页面表单的隐含变量中。当我们在屏幕不同页面切换时,代码也在页面间传递信息,每一表单都含有上一个表单的数据。这个方法似乎有点笨拙,不过就目前情况而言是最为简便的方法——且无需使用数据库或cookies。 意料之中的是我们将扩展对变量$state的使用以适应此特性。这正是为什么我们过去学习了关于此技巧的内容,而没有打算使用更为简单的方式处理单一页面中的多个表单。 为了方便起见,我们将重复使用先前的表单范例。但这次我们将将其拆分为两个页面,而非把有关乳酪的重要问题跟用户名称放在同一页面之上。 由此会得到三个函数而非两个。此外,对函数略微更名以反映其内容上的改变。display_form() 现已改名为display_name()。 <?php function display_name() { global $PHP_SELF; ?> <FORM TARGET=”<?php echo $PHP_SELF; ?>” METHOD=GET> Name: <INPUT TYPE=TEXT NAME=”name”><BR> <INPUT TYPE=HIDDEN NAME=”stage” VALUE=”cheese”> <INPUT TYPE=SUBMIT VALUE=”Thanks!”> </FORM> <?php } ?> 与先前所介绍的函数相同,但我们先解决下一问题,并把下一stage的名称改为 cheese以更明确地告之用户下一步要做什么。 接下来是display_cheese()。 <?php function display_cheese() { global $PHP_SELF; global $name; ?> <FORM TARGET=”<?php echo $PHP_SELF; ?>” METHOD=GET> Favorite Cheese: <INPUT TYPE=RADIO NAME=”cheese” VALUE=”brie”>Very soft French Brie <INPUT TYPE=RADIO NAME=”cheese” VALUE=”cheddar”>Farmhouse English Cheddar <INPUT TYPE=RADIO NAME=”cheese” VALUE=”mozzarella”>Italian Buffalo Mozzarella Favorite Times to Eat Cheese: <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”m”>Morning <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”n”>Noon <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”d”>Dinner <INPUT TYPE=CHECKBOX NAME=”times[]” VALUE=”l”>Late night <INPUT TYPE=HIDDEN NAME=”name” VALUE=”<?php echo htmlspecialchars($name); ?>”> <INPUT TYPE=HIDDEN NAME=”stage” VALUE=”results”> <INPUT TYPE=SUBMIT VALUE=”Thanks!”> </FORM> <?php } ?> 以上的代码看起来应该非常熟悉。除在输出隐藏的stage元素前先输出上一部分数据中的 $name变量名及值之外,我们没有做任何意料之外的修改。我们并未直接输出变量值,而是通过一个名为htmlspecialchars()的PHP函数。在HTM中,有以下四个字符除被作为标记(markup)使用外,在其他地方不应被使用的:“<”、“>”、“””、以及“&”。因此,为了确保不使浏览器造成混乱,我们通过htmlspecialchars()函数使用$name变量。由此,某个人的名字原为”Bret & Jeff”就会成为”Brett & Jeff” 了。 现在,当提交此新表单时,不会漏失任何信息。 以上技巧的作用是我们不必更改原process_form() 函数任何部分。事实上,我们还会保持函数名称不变。仅需对页面显示逻辑加上新的一行。 <?php if (empty($stage)) { display_name(); } elseif ($stage == ‘cheese’) { display_cheese(); } else { process_form(); } ?> 看到了吗?我们只需在先前的两个声明中加入elseif。这正是使用变量$stage的巧妙之处。如果我们要再添加几个页面,只需写一个新函数以显示所要的内容,并当其显示时加入一行代码对其进行控制即可。 本文作者:David Sklar是Student.Net Publishing的首席信息官。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
8、上海复旦流媒体技术应用方案 一、了解网上直播: 以前,对于一些重要活动,例如足球世界杯,春节联欢晚会,演唱会,国家重要会议,等,主要通过电视进行直播。现在,随着流媒体技术的成熟,我们多了一个传播的媒介——互联网 / 内联网(Internet / Intranet)。传统的电视直播,只能覆盖某个特定地理区域;而网上的直播,可以不受地理限制,甚而可以覆盖全球。 为什么要做网上直播呢?因为有些活动,是在8小时的工作时间进行,例如这次的足球世界杯比赛,这时候大家都在上班,不方便看电视;或者有的活动,覆盖到你那里的电视台没有做直播,例如中央电视台的春节联欢节目,国外的电视台不做直播的话,在海外的华人就很难看到。 二、了解网上直播系统的结构: 如何做网上直播呢?其实并不复杂。先来了解一下系统结构,网上直播系统是由节目源、编码机、流媒体服务器、播放终端,组成。 节目源,即你要直播的视频内容来源,它可以是电视机接收的节目(如世界杯比赛)、摄象机正在拍摄的现场活动(如春节联欢晚会),也可以是DVD机播放的DVD(如各种大片)。 编码机,即安装了流媒体采集卡和流媒体编码软件的计算机。流媒体采集卡建议选择Osprey;流媒体软件系统建议选择RealSystem,或者Windows Media 。 流媒体服务器,即安装了流媒体软件系统的服务器端的硬件服务器。 播放终端,即想要收看直播的且已经联网的计算机。当然,还要安装流媒体软件系统的播放器部分,例如RealSystem的RealPlayer或者Windows Media Player。 三、安装调试: 接下来进行安装调试。 先将编码机和节目源连接好。设置好正确的视频制式后,测试一下是否可以正常采集。然后设置一下采集的窗口大小和直播的码流大小。这两个参数一起影响最终的收看效果。如果是在内联网上直播,网络带宽应该不是问题,所以窗口大小可以考虑设置在320*240到640*480之间,当然窗口越大图象越清晰,相应的,对编码机和播放终端机的配置要求也越高。压缩的码流可以设置在200Kbps到800Kbps之间。如果是在互联网上直播,就要考虑带宽的影响了。需要考虑的有2点:编码机和服务器之间的上传带宽,服务器的出口带宽。上传带宽要大于压缩的码流;服务器的出口带宽要大于压缩的码流乘上最大的并发访问数量。 如果是在互联网上做直播,流媒体服务器很可能会托管在IDC机房,那么就要考虑出口带宽是否有保证,因为流媒体比普通网页需要更大的带宽。一个流媒体文件的访问所需要的网络带宽,大约是一个对网页访问所需要的网络带宽的几倍到几十倍。 流媒体软件的服务器端的安装很简单,基本不需要做什么设置。如果是用的RealSystem,最好将服务器的IP地址和RealServer绑定,以免出现问题。 先进行一下直播测试。运行流媒体编码软件,进行一些选择和填写必要的信息,其中主要的信息是流媒体服务器的IP地址、端口号、用户名、口令,等等。当编码软件开始上传后,在任意一台联网的计算机上打开流媒体播放器,输入直播地址,直播地址的格式如下: rtsp://192.168.0.1:554/encoder/test 然后按回车键。RealPlayer缓冲几秒后,如果开始播放转播的电视节目,说明整个系统正常。 直播地址说明: rtsp:流媒体传输的协议——“实时流协议”,不必改变; 192.168.0.1:流媒体服务器的IP地址,将这个地址替换成你的流媒体服务器的实际的IP地址; 554:端口号,不必改变; encoder:直播的路径,不必改变; test:直播时为直播节目设置的临时文件名,提换成你为直播取的临时文件名。 如果压缩的码流比较大,那需要先将RealPlayer的属性里的两个连接速率设置成最大,否则不能正常接收。 四、网上发布: 测试正常后,将直播的地址连接到网页上。 如果是在内部网里做直播,需要建立一个内部网站。首先,在你的流媒体服务器上舔加IIS,然后建立虚拟目录,制作一个网页,将直播地址连接上,将此网页保存为“index.htm”,保存在虚拟目录下。 如果直播是面向Internet的,那就需要建立WEB服务器,制作网站。在网页上建立好连接后,就可以通过互联网向全球直播了。 对于面向Internet的网上直播,如果观众太多(例如直播足球世界杯比赛),导致网络带宽和服务器负担不起,该如何解决呢? 显然,租用足够的带宽、购买足够的服务器是不明智的,因为直播结束后,这些资源中的大部分就会闲置下来,造成太大的浪费; “组播”,是一个在内网上非常有效地节约带宽和服务器资源的方法。但是,在互联网上实施“组播”几乎不可能,因为互联网不是属于某个组织,所以不可能将直播覆盖的地区的所有的网络设备的组播功能都打开; 现在,唯一可行的方式,是租用CDN(内容分发网络,“Contents Delivery Network”的缩写)服务。这个服务就象租用虚拟主机服务——因为是和大家共享服务器和出口带宽,所以成本很低。所谓CDN服务,举个例子说明:如果在北京做网上直播,当租用了在上海提供的CDN服务后,那么北京的流媒体服务器只要发一个视频流到上海的CDN设备,就可以覆盖所有上海的观众,上海的观众只要访问上海本地的CDN设备,就可以收看网上直播了,因为这些观众的访问请求不必都经过骨干网拥向服务器,从而节约了骨干网带宽和服务器资源,相应的降低了直播成本。 五、疑难咨询: 如果想了解流媒体采集卡的信息,可以参考如下网站:http://www.osprey.com.cn/ ;如果有问题要咨询,可以到“流媒体中国”网站的“硬件论坛”咨询:http://www.liumeiti.com/forum/board.asp?B=17 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
9、中宽用户管理系统(CBSMS) 用户管理系统SMS(Subscriber Management System),主要针对数字付费电视用户及其相关信息进行管理,主要包括用户信息、用户设备信息、节目预定信息、用户授权信息、财务信息等进行处理、维护管理。 4. 用户订单管理:用户订购产品的订单的增加、取消、确认、修改等。
6. 计费管理:计费主要是计算应收取用户的费用 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
10、win2000 公钥基础结构及应用 1 概述 Windows 2000中有两种验证协议, 即Kerberos和公钥基础结构(Public Key Infrastructure, PKI), 这两者的不同之处在于: Kerberos是对称密钥, 而PKI是非对称密钥。在Internet环境中, 需要使用非对称密钥加密。 即每个参与者都有一对密钥, 可以分别指定为公钥(PK)和私钥(SK), 一个密钥加密的消息只有另一个密钥才能解密, 而从一个密钥推断不出另一个密钥。 公钥可以用来加密和验证签名; 私钥可以用来解密和数字签名。 每个人都可以公开自己的公钥, 以供他人向自己传输信息时加密之用。 只有拥有私钥的本人才能解密, 保证了传输过程中的保密性。 关键是需要每个人保管好自己的私钥。同时, 为了保证信息的完整性, 还可以采用数字签名的方法。 接下来的问题是, 如何获得通讯对方的公钥并且相信此公钥是由某个身份确定的人拥有的, 这就要用到电子证书。 电子证书是由大家共同信任的第三方–认证中心(Certificate Authority, CA)颁发的, 证书包含某人的身份信息、 公钥和CA的数字签名。 任何一个信任CA的通讯一方, 都可以通过验证对方电子证书上的CA数字签名来建立起和对方的信任, 并且获得对方的公钥以备使用。 Windows 2000的PKI是基于X.509协议的,X.509标准用于在大型计算机网络提供目录服务,X.509提供了一种用于认证X.509服务的PKI结构,两者都属于ISO和ITU提出的X系列国际标准,目前,有许多公司发展了基于X.509的产品,例如Visa、MasterCard 、Netscape,而且基于该标准的Internet和Intranet产品越来越多。X.509是目前唯一的已经实施的PKI系统。X.509 V3是目前的最新版本,在原有版本的基础上扩充了许多功能,目前电子商务的安全电子交易(SET)协议也采用基于X.509 V3。 2 Windows 2000的公钥基础结构 就网上购物的过程来说, 目前常用的是SSL(安全通道协议)的方式, 即设置IIS就某些特定的文件或文件目录需要访问者提供客户端证书; 除非拥有电子证书及相应的私钥, 一个访问者的浏览器无法获得这些文件和文件目录。 SSL的方式体现在浏览器的访问栏上, 应该是Https而不是普通的Http。 通过网站验证后的访问者, 可以被映射为活动目录中的用户或者用户组, 实现合作伙伴之间外部网(Extranet)的应用。 “公用密钥基本体系”通常简称为PKI(Public Key Infrastructure), 是一个数字认证、 证书授权和其他注册授权系统。 使用公用密钥密码检验及检证电子商务中所涉及的每个机构的有效性。 公用密钥基本体系的标准仍处于发展阶段, 尽管它们作为电子商务的一个必要组成部分已得到广泛使用。 图1是Windows 2000 的公钥基础结构, 其核心是加密服务、 证书管理服务, 为应用程序的开发提供了加密API接口(CryptoAPI)。 Windows 2000 的公钥基础结构具有以下特点: 图1 Windows 2000 的公钥基础结构 3 Windows 2000 公钥基础结构的证书服务 证书服务的一个单独组件是证书颁发机构的Web注册页。 这些网页是在安装证书颁发机构时默认安装的, 它允许证书请求者使用Web浏览器提出证书请求。 此外, 证书颁发机构网页可以安装在未安装证书颁发机构的 Windows 2000 服务器上, 在这种情况下, 网页用于向不希望直接访问证书颁发机构的用户服务。 如果选择为组织创建定制网页访问 CA, 则 Windows 2000 提供的网页可作为示例。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
11、PHP4.2以后版本中使用表格数据 正如文章标题一样,将会有越来越多关于PHP4.2以后版本出版和register_globals的讨论。 如果你的PHP程序以前工作正常,但是升级到PHP4.2以后出错的话,请仔细阅读以下内容: 以前,在你的PHP中,可能有一个像下面表格: 当升级到PHP4.2版本的时候出问题了–在安装的时候,PHP默认设置了register_globals=off,这个register_globals是php.ini中设置是否允许直接使用变量上面例子中$variable的参数,直到PHP4.2以前的版本,register_globals都是默认为on,也就说可以直接输出变量。然而,在PHP4.2以后的版本中,为了防止潜在的不安全代码的溢出,PHP开发组已经将register_globals默认为off。 实际上,使用以上表格的时候,我们可以通过几种方式访问输入的值。 因为我们使用了POST方式来提交数据,我们可以使用_POST数组,例如: 或者,如果以上的表格通过GET方式提交,我们可以使用_GET数组: <?php <?php cookies和会话(sessions)相应的数组变量名称是_COOKIE和_SESSION,可以通过相同的方法来访问变量的值。还有_SERVER, _FILES, _ENV和GLOBALS数组,这些都是PHP的全局变量,可以用于PHP的任何地方,包括用在函数和类中。 以下代码也可以正常工作: <?php 你不需要在函数中使用语句’global $_POST;’,就可以直接使用这个全局变量了。 更多的内容,请参考PHP在线手册: |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
12、分离美工 杜绝重复
如果你正在设计一个交互式网站,你一定会关注两个主要的问题,就是美工和程序。这也是一个网站在建设中抛开其内容之后最关键的要素。通常有两种方式来协调美工和程序之间的关系:
1.先做好美工页面,然后由程序员直接在美工页面的HTML文件中嵌入ASP、JSP、PHP等程序代码。 2.美工和程序同时进行,但这时因为没有页面框架,程序只能做出一些关键代码,双方完成后再进行一次美工页面和程序代码的嵌入合成。 在实际的网站建设过程中,由于人员、进度等环境的限制,大家通常会混合地使用上面两种协调方式。然而这两种方法都有不足之处: 1. 效率不高。两者协调不好可能产生等待、重复代码调试步骤等现象; 2. 调试不畅。由于程序代码最终需要嵌入在HTML页面中,代码的嵌入、调试、纠错都比较繁琐; 3. 维护不便。一旦美工设计需要修改,如网站改版,那么所有程序和HTML代码混合页面都需要重写; 如果你正在使用PHP程序建设网站,那么恭喜你,PHP的模板技术会比较圆满地解决上述问题。 那么什么是PHP的模板技术?PHP模板即PHPlib的Template技术,是PHPLIB程序库中的一个主要模块之一,发展自Perl的Template。而PHPLIB则是在PHP上的一个扩展,提供了很多类库,能够方便地实现一些基本功能如用户认证,数据库封装等。我们可以在phplib.netuse.de上下载到其最新版本。要使用PHP模板,只需在PHPLIB的程序包中解开template.inc文件,并放到我们的PHP程序能够调用的目录里。 剥开神秘的面纱,模板技术的核心概念简单得令人心跳:要将你的美工页面指定为模板文件,只需将页面中活动的内容如数据库输出,用户交互等部分定义成形式为{variable}的变量放在模板文件中相应的位置,当用户浏览时,由PHP程序文件打开该模板文件,将模板文件中定义的变量进行替换,当然,替换成对应的数据库输出或者用户交互等动态生成内容,举例如下: 定义模板文件:Mytemplate.html Mytemplte.html的内容为: <html> 我们可以看到,事实上模板文件就是一个普通的HTML文件,它包含了你所想要的版面、美工等要素,而内部的活动内容则以变量的形式存在,并等待被替换。显然,模板文件直接被浏览是毫无意义的,因为它不包含任何PHP程序,所有的内容都是“死”的,现在我们来看看,怎样来调用模板,让它“活动”起来。 假设我们在test.php文件中使用了上述模板,当用户浏览test.php文件时,test.php文件处理过程如下: test.php <?php 就是这么简单,模板技术很轻松地把网站设计分离成了清晰的美工和程序两个方面,并把他们的成果简单方便地结合了起来。如美工设计需要修改,那么我们只要记住原模板中各个变量名,把他们插入到新模板中对应位置就可以了。真的很轻松!另一方面,在PHP程序中基本没有了PHP脚本和HTML语法混合的现象,很大地提高了PHP系统的执行效率,而且如果是数据库等一些费时的操作,现在可以很及时地关闭数据库,释放资源,这样也在一定程度上提高了PHP和相关系统的资源使用效率。 好了,关于PHP模板技术的基本概念就介绍到这里,下次我们再介绍更高层的模板应用! |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
13、模板技术在PHP中的应用
什么是PHP的模板技术?PHP模板发展自Perl的Template。剥开神秘的面纱,模板技术的核心概念简单得令人心跳:要将你的美工页面指定为模板文件,只需将页面中活动的内容如数据库输出,用户交互等部分定义成形式为的变量放在模板文件中相应的位置,当用户浏览时,由PHP程序文件打开该模板文件,将模板文件中定义的变量进行替换,当然,替换成对应的数据库输出或者用户交互等动态生成内容。
模板能够改善网站的结构,其特点有:
现在在PHP中应用最多的模板有两种,Phplibtemplate和Fasttemplate,这两种模板作者虽然不同,但是在语法结构和函数定义上却有着惊人的相似之处。只要你掌握了其中的一个,另一个相信你也会很快的熟练运用。本专题总括了使用模板的优点和优势,又分别介绍了Phplibtemplate和Fasttemplate的使用方法和技巧,最后又对这两种模板的效率进行了对比。希望通过这个专题,能帮助那些想了解模板技术的朋友用最快的速度去掌握它,并在以后的编程中去应用这项伟大的技术。 🙂 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
14、用PHP制作静态网站的模板框架 模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。 提纲: =================================== 分离功能和布局 避免页面元素重复 静态网站的模板框架 =================================== 分离功能和布局 首先我们来看看应用模板的两个主要目的:
第一个目的是谈论得最多的目的,它设想的情形是:一组程序员编写用于生成页面内容的PHP脚本,同时另一组设计人员设计HTML和图形以控制页面的最终外观。分离功能和布局的基本思想就是使得这两组人能够各自编写和使用独立的一组文件:程序员只需关心那些只包含PHP代码的文件,无需关心页面的外观;而页面设计人员可以用自己最熟悉的可视化编辑器设计页面布局,无需担心破坏任何嵌入到页面的PHP代码。 如果你曾经看过几个关于PHP模板的教程,那么你应该已经明白模板的工作机制。考虑一个简单的页面局部:页面的上方是页头,左边是导航条,其余部分是内容区域。这种网站可以拥有如下模板文件: <!– main.htm –> <!– header.htm –> <!– leftnav.htm –> 可以看出页面如何由这些模板构造而成:main模板控制着整个页面的布局;header模板和leftnav模板控制着页面的公共元素。花括号“{}”里面的标识符是内容占位符。使用模板最主要的好处在于界面设计者能够按照自己的意愿编辑这些文件,比如设置字体、修改颜色和图形,或者完全地改变页面的布局。界面设计者可以用任何普通HTML编辑器或者可视化工具编辑这些页面,因为这些文件都只包含HTML代码,没有任何PHP代码。 PHP代码全部保存到单独的文件中,这个文件也就是由页面URL实际调用的文件。Web服务器通过PHP引擎解析该文件,然后把结果返回给浏览器。一般地,PHP代码总是动态地生成页面内容,比如查询数据库或者执行某种计算等。下面是一个例子: <?php // example.php // 此处的PHP代码设置$content使其包含合适的页面内容 $tpl->assign(/’CONTENT/’, $content); ?> 这里我们使用的是流行的FastTemplate模板类,但其基本思路对于其他许多模板类来说都一样。首先你实例化一个类,告诉它到哪里去寻找模板文件以及哪一个模板文件与页面的哪部分对应;接下来是生成页面内容,把结果赋予内容的标识符;然后,依次解析各个模板文件,模板类将执行必要的替换操作;最后把解析结果输出到浏览器。 这个文件完全由PHP代码构成,不包含任何HTML代码,这是它最大的优点。现在,PHP程序员可以集中精力编写生成页面内容的代码,而不必为了如何生成HTML去正确地格式化最终页面而担心。 你可以使用这种方法和上面的文件构造出一个完整的网站。如果PHP代码是以URL中的查询字符串为基础生成页面内容,例如http://www.foo.com/example.php?article=099,你可以据此构造出一个完整的杂志网站。 很容易看出采用模板还有第二个好处。如上例所示,页面左边的导航条单独保存为一个文件,我们只需编辑这一个模板文件就可以改变网站所有页面左边的导航条。
避免页面元素重复 “这确实不错”,你也许会想,“我的网站主要就是由大量的静态页面构成。现在我可以从所有页面中删除它们的公共部分,要更新这些公共部分实在太麻烦了。以后我就可以用模板制作出很容易维护的统一页面布局。”但事情并非这么简单,“大量的静态页面”道出了问题的所在。 请考虑上面的例子。这个例子实际上只有一个example.php页面,它之所以能够生成整个网站的所有页面,是因为它利用了URL中的查询字符串从数据库之类的信息源动态地构造出页面。 我们之中的大多数人所运行的网站并不一定都有数据库支持。我们的网站大多数由静态页面构成,然后用PHP在这里、那里加上一些动态功能,比如搜索引擎、反馈表单等。那么,如何在这种网站上应用模板呢? 最简单的方法是为每一个页面复制一份PHP文件,然后在每一个页面中把PHP代码里代表内容的变量设置成合适的页面内容。例如,假设有三个页面,它们分别是主页(home)、关于(about)和产品(product),我们可以用三个文件分别生成它们。这三个文件的内容都类如: <?php // home.php $content = /”<p>欢迎访问</p> ?> 显然,这种方法有三个问题:我们必须为每一个页面复制这些复杂的、牵涉到模板的PHP代码,这与重复公共页面元素一样使得页面难以维护;现在文件又混合了HTML和PHP代码;为内容变量赋值将变得非常困难,因为我们必须处理好大量的特殊字符。 解决这个问题的关键就在于分离PHP代码和HTML内容,虽然我们不能从文件中删除所有的HTML内容,但可以移出绝大多数PHP代码。 静态网站的模板框架 首先,我们象前面一样为所有的页面公用元素以及页面整体布局编写模板文件;然后从所有的页面删除公共部分,只留下页面内容;接下来再在每个页面中加上三行PHP代码,如下所示: <?php <!– home.php –> <h1>你好</h1> <?php pageFinish(); ?> ?> 这种方法基本上解决了前面提到的各种问题。现在文件里只有三行PHP代码,而且没有任何一行代码直接涉及到模板,因此要改动这些代码的可能性极小。此外,由于HTML内容位于PHP标记之外,所以也不存在特殊字符的处理问题。我们可以很容易地将这三行PHP代码加入到所有静态HTML页面中。 require函数引入了一个PHP文件,这个文件包含了所有必需的与模板相关的PHP代码。其中pageStart函数设置模板对象以及页面标题,pageFinish函数解析模板然后生成结果发送给浏览器。 这是如何实现的呢?为什么在调用pageFinish函数之前文件中的HTML不会发送给浏览器?答案就在于PHP 4的一个新功能,这个功能允许把输出到浏览器的内容截获到缓冲区之中。让我们来看看prepend.php的具体代码: <?php require(/’class.FastTemplate.php/’); function pageStart($title = /’/’) { function pageFinish() { ?> pageStart函数首先创建并设置了一个模板实例,然后启用输出缓存。此后,所有来自页面本身的HTML内容都将进入缓存。pageFinish函数取出缓存中的内容,然后在模板对象中指定这些内容,最后解析模板并输出完成后的页面。 这就是整个模板框架全部的工作过程了。首先编写包含了网站各个页面公共元素的模板,然后从所有页面中删除全部公共的页面布局代码,代之以三行永远无需改动的PHP代码;再把FastTemplate类文件和prepend.php加入到包含路径,这样你就得到了一个页面布局可以集中控制的网站,它有着更好的可靠性和可维护性,而且网站级的大范围修改也变得相当容易。 本文包含了一个可运行的示例网站,它的代码注释要比前面的代码注释更详细一些。FastTemplate类可以在http://www.thewebmasters.net/找到,最新的版本号是1.1.0,那里还有一个用于保证该类在PHP 4中正确运行的小补丁。本文下载代码中的类已经经过该补丁的修正。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
15、网站设计65条原则 设计网站中有哪些关键技巧?有哪些陷阱?在这里,世界上一流的网站设计专家,让你共享他们的秘密,告诉你:使网站赋予情趣的诀窍、应该避免做什么、应使用什么工具软件以及他们喜爱和厌恶的网站。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
16、网站策划书参考 网站总策划 首先在做网站之前给要做的网站一定准确的定位,没有方向的船哪边的风都不会是顺风。所以给网站定位,明确建站目地是第一步要做的。给网站做定位时,与公司决策层人士共同讨论,以便于让上层领导能对网站的发展方向有一定的把握,同时最好调动公司其他部门一起参于讨论,及时从公司立场提出好的见意,结合到策划中去。一个公司的好坏与部门之间工作结合的是否紧密是有着很大关系的! 前期信息收集 在明确建站目的和网站定位以后,开始收集相关的意见,跟公司其他部门结合,跟公司的实际情况结合,这样可以发挥网站的最大作用。 具体分栏目策划 收集完其它各部门的相关信息以后,对其进行整理,整理以后找出重点,根据重点以及公司业务的侧重点,结合网站定位来敲定网站的分栏目需要有哪几项,可能开始时会因为栏目较多进而难以确定最终需要哪几项,这又是一个讨论的过程,需要大家在一起把自己的意见说出来,一起反复比较,给定下来的内容进行归类,形成网站栏目的树状列表用以清淅表达站点结构。 整合测试 接下来,当两边的工作都完成以后,就是整合。把程序和页面时行整合。整合完以后,需要内部测试,测试完成,没有问题以后就可以ok啦! |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
17、网站规划书浅析 一个网站的成功与否与建站前的网站规划有着极为重要的关系。在建立网站前应明确建设网站的目的,确定网站的功能,确定网站规模、投入费用,进行必要的市场分析等。只有详细的规划,才能避免在网站建设中出现的很多问题,使网站建设能顺利进行。 网站规划书包含的内容如下: 一、建设网站前的市场分析 1、相关行业的市场是怎样的,市场有什么样的特点,是否能够在互联网上开展公司业务。 2、市场主要竞争者分析,竞争对手上网情况及其网站规划、功能作用。 3、公司自身条件分析、公司概况、市场优势,可以利用网站提升哪些竞争力,建设网站的能力(费用、技术、人力等)。 二、建设网站目的及功能定位 1、为什么要建立网站,是为了宣传产品,进行电子商务,还是建立行业性网站?是企业的需要还是市场开拓的延伸? 2、整合公司资源,确定网站功能。根据公司的需要和计划,确定网站的功能:产品宣传型、网上营销型、客户服务型、电子商务型等。 3、根据网站功能,确定网站应达到的目的作用。 4、企业内部网(Intranet)的建设情况和网站的可扩展性。 三、网站技术解决方案 根据网站的功能确定网站技术解决方案。 1、采用自建服务器,还是租用虚拟主机。 2、选择操作系统,用unix,Linux还是Window2000/NT。分析投入成本、功能、开发、稳定性和安全性等。 3、采用系统性的解决方案(如IBM,HP)等公司提供的企业上网方案、电子商务解决方案?还是自己开发。 4、网站安全性措施,防黑、防病毒方案。 5、相关程序开发。如网页程序ASP、JSP、CGI、数据库程序等。 四、网站内容规划 1、根据网站的目的和功能规划网站内容,一般企业网站应包括:公司简介、产品介绍、服务内容、价格信息、联系方式、网上定单等基本内容。 2、电子商务类网站要提供会员注册、详细的商品服务信息、信息搜索查询、定单确认、付款、个人信息保密措施、相关帮助等。 3、如果网站栏目比较多,则考虑采用网站编程专人负责相关内容。 注意:网站内容是网站吸引浏览者最重要的因素,无内容或不实用的信息不会吸引匆匆浏览的访客。可事先对人们希望阅读的信息进行调查,并在网站发布后调查人们对网站内容的满意度,以及时调整网站内容。 五、网页设计 1、网页设计美术设计要求,网页美术设计一般要与企业整体形象一致,要符合CI规范。要注意网页色彩、图片的应用及版面规划,保持网页的整体一致性。 2、在新技术的采用上要考虑主要目标访问群体的分布地域、年龄阶层、网络速度、阅读习惯等。 3、制定网页改版计划,如半年到一年时间进行较大规模改版等。 六、网站维护 1、服务器及相关软硬件的维护,对可能出现的问题进行评估,制定响应时间。 2、数据库维护,有效地利用数据是网站维护的重要内容,因此数据库的维护要受到重视。 3、内容的更新、调整等。 4、制定相关网站维护的规定,将网站维护制度化、规范化。 七、网站测试 网站发布前要进行细致周密的测试,以保证正常浏览和使用。主要测试内容: 1、服务器稳定性、安全性。 2、程序及数据库测试。 3、网页兼容性测试,如浏览器、显示器。 4、根据需要的其他测试。 八、网站发布与推广 1、网站测试后进行发布的公关,广告活动。 2、搜索引掣登记等。 九、网站建设日程表 各项规划任务的开始完成时间,负责人等。 十、费用明细 各项事宜所需费用清单。 以上为网站规划书中应该体现的主要内容,根据不同的需求和建站目的,内容也会在增加或减少。在建设网站之初一定要进行细致的规划,才能达到预期建站目的。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
18、帮你免于失业的十大软件技术 能跟上关键技术的发展,是你在就业市场和未来保持优势的最佳手段。你对我们列出的十门技术精通吗?哪怕是大略精通? — 罗素·琼斯,执行编辑 2002年12月11日 我不知道你的具体工作是什么。如果你是某冷门领域的专家而变得不可或缺,或者你们的公司十分稳固,以你现有的技术就足以安度你的职业生涯,那我不知道你是否有失业的危险。不管怎样,请你先不要急着寄出那些告诉我你们的公司对用VB3十分满意或你们除C以外永不用其它语言的信件,并保留起那些讲述.NET将如何把Java扫地出门、XML将如何取代关系型数据库、或你怎样能用汇编语言或C写任何软件而任何其它开发工具都不重要的信件。 现在,想象一下如果你像很多受裁员和公司倒闭影响的同行一样失去了工作,那将会怎样。如果你突然需要搬往它处该怎么办?如果你的公司突然做了技术转向又怎么办? 在目前的就业市场,经理们是根据当前和未来的开发需要招聘雇员。作为开发人员,你所掌握的知识是你找工作和保住工作的关键。你要了解技术的发展方向,跟上技术的变化,这一点十分重要,即使你永远不用再找开发方面的工作。 这里是我选出的当前最重要的十大开发技术,最重要的排在前面。看完本文后,请务必加入talk.editors.devx讨论组,提出你选出的十大技术。 1. XML 2. Web服务 XML工作组主席John Bosak曾说XML“给Java一些事做”。实际上,Web服务让所有语言都有了一些事做。Web服务让在大型机上运行的COBOL应用软件能调用在手持设备上运行的Java应用程序、能让Java applet与.NET服务器交谈、能让微机软件与Web服务器无缝连接,并提供了一个相对容易的方法,让企业不光能向外界提供数据,还能提供功能,而且是一种与语言、平台和位置都独立的方法。 3. 面向对象的编程 4. Java、C++、C#和VB.NET 在过去几年,各语言的能力越来越接近。现在,你可以用VB.NET写Windows服务、Web应用程序或命令行程序。即使你只使用一种语言,你也应该学一些其它语言,以便能看懂那些样例,并将其翻译到你所用的语言。这4种语言是基本核心,还有其它一些满足不同需要、颇具用途的语言,如FORTRAN、COBOL、APL、ADA、Perl和Lisp。 5. JavaScript 与JavaScript相对照的是VBScript。尽管Microsoft的软件对VBScript有良好的支持,但VBScript在未来的开发工作中很可能是一个糟糕的选择。就是Microsoft也倾向于用JavaScript(或Microsoft自己的变种:JScript)写客户端程序。在选择脚本语言时,请选择JavaScript。 6. 正则表达式(Regular Expressions) 7. 设计模式 8. Flash MX 9. Linux/Windows 没人知道你们公司会在什么时候决定从Linux转向Windows(或从Windows转向Linux),或者你想跳到一家用另一种平台的公司,或者你想出了开发一个杀手软件的好主意,所以你要争取拥有在不同操作系统上的编程经验。 10. SQL 培养好奇心 你可能永远也没有必要成为这些技术的专家,而且我的选择可能根本不适合你的特殊情况,但通过培养好奇心,你将会发现你应该了解的东西。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
19、使用PHP实现动态网页 今天,Web站点费尽心思想要为用户提供他们从未体验过的东西。除了友好的界面,细致的服务,实用的信息以外,为用户定制的动态的网页内容也能够提高Web站点的用处并加强访问的针对性,这使得用户更有可能在以后再次访问你的网站。在这篇文章里,我们将从对动态信息的一个概述开始。然后我们将解释如何使用PHP来在Web页面里创建动态的内容并察看一个演示的例子。 动态信息理论据Merriam-Webster Online地解释,动态一词的意思是网页的内容由“通常是连续的和实时生成的活动或者改变的信息组成。”因此当我们谈论动态数据的时候,我们也就是在谈论作为Web页面发送给用户的信息是由不同的源数据组合而成的。这与静态网页的概念是相对的,静态网页的内容并不依赖用户输入的数据而改变而且通常是直接解析给用户。Web页面上的动态信息有三种主要的类型:
你如果希望对动态内容产生的过程进行细微的控制,就象动态数据的那种类型一样,那么数据处理的过程就会复杂一些。而如果你想生成大范围的信息,就象动态Web页面的生成那样,那么程序的逻辑就会变得复杂。动态内容的生成是这两种方式的折衷,它能够让我们使用两个很有用的PHP函数,include()和require()。 要记住,你在后端加入的逻辑越多,那么你的Web站点的性能将会损失得越严重。幸运的是,PHP能够很流畅的进行预处理过程,所以当我在处理动态内容和数据的时候都尽可能多的使用PHP的功能。 数据源和PHP功能所有的动态内容都有一个共同点:它们从一个原始页面以外的数据源而来。图A列出了一些常见的数据源以及用来处理它们的相应的PHP函数。 Figure A
常见的数据源和处理它们的PHP函数 在这篇文章“教程:PHP起步中,”我们观看了一个演示的脚本,这个脚本要求用户输入他们最喜欢的数字。根据用户输入的结果,我们在Web页面上显示一条消息。这就是一个由用户驱动的动态Web内容的例子。从Web表单返回的结果将决定显示的内容。一个更复杂的例子是“点击流程”应用程序,这个程序能够根据一个用户在Web站点上访问过的页面来决定向他或者她发送什么广告。 一旦数据已经输入,不管它是由用户或者其它的方式输入的,将会被保存在一个数据库中并在以后重新使用。如果它被用来决定显示的内容,那么这些内容将可以被认为是“由数据库驱动的动态内容。”我们将在下一篇文章中更仔细的看看这种类型的动态信息。 目前,让我们先察看一个由文件驱动的动态内容的简单的PHP脚本的例子。我们将使用基于一个配置文件的逻辑来决定在Web页面上应该显示什么样的页面风格和字体。我们选择的页面风格将会在用户请求Web页面的时候显示出来。(这里我想就包括文件的例子给你提个醒:你真的应该在这个例子中为完成要求的功能而使用风格页。) 例子程序:Display.phpDisplay脚本使用一个独立的配置文件来包含变量值和几个含有HTML的变量部分的包括文件。虽然这看起来不是特别动态,但是你能够轻易的要求用户使用Web表单来创建一个配置文件并使用一定的逻辑来判断应该加载哪一个配置文件,等等。(我们在“理解PHP的函数和类”这篇文章中所作的讨论将帮助你完成这个工作。) 由于本文的目的所限,我们将跳过这方面的处理过程并尽量使它简化。表A展示了我们的主页面,以及你通过浏览器调用的页面,Display.php。(PHP代码将用粗体进行显示。) 表A 这段简单的代码必须做三件事情:
你应该注意到在我们的例子中,PHP require()函数和include()函数是完全可以互换的。这两个函数之间主要的区别在于目标文件处理的方式不同。一个require()语句将会由它所调用的文件替换。这意味着在一个循环当中,远程的文件只会被调用一次。而另一方面,在每次遇到include()函数的时候,它都会被重新求值。这意味着在一个循环的过程中,文件将在每一次循环过程中都被访问一次,而且在包括文件中设置的变量每次都会更新。 在这个例子中,我试图讲清楚什么时候使用什么函数合适。对于文件Displayconf.php,很有可能它里面的变量值已经改变。毕竟,这是一个配置文件。因此,我选择了include()函数。而另一方面,$required文件在交互的过程中很有可能不会改变。如果用户请求的是不同的文件体,那么我们有可能会创建一个新的文件再把它包括进来,所以我使用require()函数。 高级用户可能希望看看PHP的手册来了解更多的关于函数require_once() 和 include_once() 的信息以便能够对文件处理和配置文件变量的管理进行更好的控制。 表B 显示了我们的配置文件,Displayconf.php。(为了简单化的目的,我们将把所有的文件放在和Web服务器相同的目录下。)我们在这里要做的就是将$display变量设置成一个可选的值。 表B
最后我们需要一些内容文件–对应配置文件中的每一个选项。因为这些内容都是静态的HTML,所以我们不需要在文件里加上PHP脚标。当你在PHP里使用include()或者require()函数的时候,被调用的文件在处理过程开始的时候被跳过然后在处理结束的时候被加进来。 “happy”文件内容(happy.php) “Sad” 文件内容 (sad.php) “Generic” 文件内容 (generic.php) 当你单击页面Display.php的时候,这个页面的外观和感受将会根据你在配置文件中输入的值而改变。 总结在本文中,我们讨论了动态信息的基础知识并使用一个脚本来创建由文件驱动的动态内容。特别的是,我们使用include() 和 require() PHP函数来提取和发送我们的数据。 下面是一些最后的话。虽然我相信你一定熟悉WAI Web编程指南,但是你也许还应该看看W3C对于动态内容所说的支配以及用户对它的访问能力。你可能还要看看PHP手册中的这一章“使用远程文件”来学习如何使用FTP来提取配置数据。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
20、初学入门 PHP 和 MySQL 我想要使用PHP和MySQL,但是如何安装和运行呢?什么是最基本的事情我应该知道的,以便让一个简单的PHP – MySQL应用程序工作? 这是一个基本的教程。没有怪异的代码,只是一些基础。 多说一句,现在有大量的教程是基于UNIX机器的,这个教程将集中在基于Windows平台上。然而,除了安装部分,有或多或少的针对于Windows的说明外,其它部分对所有的平台都是一样的。 在这个教程中,我们将一步一步地建立一个小的网站,使用了PHP和MySQL的下面特性: 1. 查看数据库; 我们将同时学习MySQL和PHP,一起去感觉它们。 第一节 – 收集和建立必要的项目 好,开始工作。为了开始PHP-MySQL我们需要一些准备: 1. 运行web服务器; 第一步,得到和安装Web服务器 让我们假设一下在你的机器上已经有一个运行着的web服务器。在Windows下有几个好用的web服务器应用程序。要注意一件事,为了运行php/mysql你所选的web服务器应当可以支持扩展。 一个在Windows上最容易安装的服务器是OmniHTTPd(http://www.omnicron.ab.ca/httpd/,它是一个非常好的自由web服务器。 一旦你从站点上得到了安装文件,双击它并且安装web服务器。如果你在安装时全部选择了使用缺省值,那么你将会把它安装在c:/httpd下。一旦安装成功,安装程序将启动web服务器,带有一个欢迎窗口,在windows的系统托盘中可以看到一个新的图标。 好了,第一步做完了。 第二步,下载和安装PHP发行版 得到PHP Win32发行版很容易:只要去http://www.php.net/download-php.php3,并且选择一个最好的位置就可以了。 在OmniHTTPd上安装PHP非常简单。 最先Unzip安装文件到你的硬盘上,比如展开在c:/php。 拷贝文件’php3.ini-dist’到你的’%WINDOWS’目录下去,并改名’php3.ini'(在Win95/98为c:/windows,在WinNT/Win2k为c:/winnt)。 按下面编辑php3.ini文件: 改变’extension_dir’设置为你的PHP安装目录(c:/php),或存放’php3_*.dll’的目录。 选择想在PHP启动时装入的模块。你应该将’extension=php3_*.dll’行的注释去掉来装入这些模块(一定要确认去掉了extension=php3_mysql.dll的注释)。一些模块要求有额外的库安装在你的系统上才能正常工作。 PHP问答集(http://www.php.net/FAQ.php3)有更多关于如何得到支持库的信息。你可以通过使用:dl(“php_*.dll”)动态地装入一个模块。 PHP扩展库以’php3_’为前缀。这个可以防止在PHP扩展与它们的支持库之间发生混淆。 现在跟着简单的步骤配置OmniHTTPd: 在系统托盘中右击蓝色的OmniHTTPd图标,选项属性(Properties)项; 点击Web Server Global Settings项; 点中’External’tab标签。现在,在”Virtual”域中输入”.php3″,在”actual”域中输入”c:/php/php.exe”,然后单击”Add”。 选择Mime tab标签并且在”Vritual”中输入”wwwserver/stdcgi”,在”Actual”中输入”.php3″,并单击”Add”。 单击 OK。 在同一个窗体中选择Default Virtual Settings; 现在单击Server tab标签; 在”Default Index”域中输入”Index.php3″(用逗号分隔)。这将告诉web服务器也可以识别index.php3文件。 单击 OK。 好,足够了。让我们测试一下PHP是否在工作: 创建一个名为index.php3的文本文件,写入下面的文本: <? 启动你的浏览器,并指到localhost。你应该在屏幕上得到”I made it!”。 下面,得到和安装MySQL: 去http://www.mysql.com/download_win.html,下载MySQL-Win32发行版,将zip文件解压到一个临时目录并且运行安装程序(setup.exe)。 如果你选择了缺省的典型安装,所有的MySQL文件将会安装到c:/mysql目录下。 现在,跟着以下步骤,每一步都要执行正确。 进行一些测试: 首先,你要先运行mysqld-shareware.exe守护程序,它位于c:/mysql/bin下。你可以看到一个dos窗口,并在几秒钟后关闭。如果没有显示错误信息,MySQLd就已经运行了。 如果想检查一下MySQL,只要运行c:/mysql/bin/mysql。你将会看到有”mysql>”提示符的终端窗口。很好,我们可以同MySQL服务器进行对话了。 第二部分 — 创建和操纵一个MySQL数据库: 首先我们需要创建要使用的数据库和表。数据库起名为”example”,表名为”tbl”,有以下字段:识别号,名,姓和信息。要通过mysql终端完成建库和定义表的工作,只要双击或运行c:/mysql/bin/mysql.exe。 如果要看在MySQL中已经定义了哪些表,可以使用(注意mysql>是终端提示符): Mysql> show databases; <回车> 这个命令可能显示如下信息: +———-+ 为了定义一个新的数据库(example),键入: Mysql> create database example; <回车> 你将会看到一个回答,如: Query OK, 1 row affected (0.17 sec) 很发,我们现在有了一个新数据库了。现在我们可以在库中建立一个新表,但首先我们需要先选中新的数据库: Mysql> use example; <回车> 回答应该是: Database changed 现在我们可以建表了,有如下字段: 索引号 – 整数 在MySQL提示符下键入下面的命令来创建表: MySQL> create table tbl (idx integer(3), UserName varchar(30), LastName varchar(50), FreeText varchar(100));<回车> 回答应该是: Query OK, 0 rows affected (0.01 sec) 好,让我们看一下从MySQL提示符下看表是什么样子的,键入命令: MySQL> show columns from tbl; <回车> 我们将得到下面的结果: +———-+————–+——+—–+———+——-+ 在这里,我们可以看到刚创建的表”tbl”的内容。 现在让我们看一下表中有什么内容。键入下面的命令: MySQL> select * from tbl;<回车> 这个命令是用来显示表”tbl”中的所有数据的。输出可能是: Empty set (0.07 sec) 之所以得到这个结果,是因为我们还没有在表中插入任何数据。让我们往表中插入一些数据,键入: MySQL> insert into tbl values (1,’Rafi’,’Ton’,’Just a test’);<回车> 如上所见,我们插入到表中的值是按照前面我们定义表的顺序,因为使用的是缺省的顺序。我们可以设 MySQL> insert into tbl (idx,UserName,LastName,FreeText) values (1,’Rafi’,’Ton’,’Just a test’);<回车> 好,现在我们可以再看一下表中的内容: MySQL> select * from tbl;<回车> 这次的结果是: +——+———-+———-+————-+ 现在我们可以看到表的结构和每一个单元格的内容。 现在我们想删除数据。为了实现我们应该键入: MySQL> delete from tbl where idx=1 limit 1;<回车> Query OK, 1 row affected (0.00 sec) 好,给出一些解释。我们正在告诉MySQL从”tbl”表中删除记录,删除那些idx字段值为1的记录,并且 不幸的是,我们又一次得到了一个空表,所以让我们再输进去: MySQL> insert into tbl values (1,’Rafi’,’Ton’,’Just a test’);<回车> 另一件可以做的事是,修改指定字段的内容,使用”update”命令: MySQL>update tbl set UserName=’Berber’ where UserName=’Rafi’;<回车> 这个命令将搜索所有UserName为”Rafi”的记录,并将它改为”Berber”。注意,set部分和where部分不一定要一样。我们可以索搜一个字段但是改变另一个字段。而且,我们可以执行两个或更多条件的搜索。 MySQL>update tbl set UserName=’Rafi’ where UserName=’Berber’ and LastName=’Ton’;<回车> 这个查询搜索了两个字段,改变了UserName的值。 第三部分 – 组合PHP与MySQL 在这个部分里,我们将建立一个建单的基于PHP的web站点,用来控制前面所建的MySQL的表。 我们将建立下面的站点结构(假设你已经知道一些基本的HTML的知识): 1. index.php3 用于前端查看表 首先,我们想查看一下数据库: 看一下下面的脚本。 ——————————————————————————– <html> <? if ($result) { while ($r = mysql_fetch_array($result)) echo “<tr> mysql_free_result($result); </body> 我们先用正常的html标签创建thml文档。当我们想从html中出来转入PHP中时,我们用<?来打开PHP部分,这个告诉web服务器将后面的文本看成是PHP语法而不是一般的html。使用?>来结束PHP部分。 mysql_connect() 命令告诉PHP建立一个与MySQL服务器的连接。如果连接建立成功,脚本将继续,如果不成功,则打印出die命令的信息“Problem connecting to Database”(如果要看关于mysql_connect的更多的信息和其它的PHP函数,可以去http://www.php.net下的文档中查找)。 现在,如果MySQL是按照我们上面所讨论的那样安装的,就足够了。但是如果你使用的是预装的MySQL(象ISP),你应该使用下面的命令: mysql_connect (localhost, username, password); 我们可以将$query设成我们想在MySQL中执行的查询,然后使用mysql_db_query命令来执行它: $result = mysql_db_query(“example”, $query); 这时,”example”表示数据库的名字并且$query是要进行的查询。 我们使用MySQL命令select(象上面所描述的)来从表中取得所有的数据: $query = “select * from tbl”; 简单地解释一下$result的作用,如果执行成功,函数将返回一个查询结果的一个MySQL结果标识符,如果出错则返回false。返回的不是结果而是一个标识符,可以在后面将它转换成我们所需的信息。 现在,我们想检查一下在数据库中是否存在有记录,并且如果有则将结果按照html的表格结构打印出来。 为了检查是否存在数据,我们使用if命令和下面的语法: if (argument) { 这时”do something”当argument=true时你所要执行的命令,”do something different”为当argument = false时所要执行的命令。 注意我们使用echo命令来输出一些html标签来建立html的表格结构。只有从PHP命令输出的文本才会被 我们使用的另一个命令是while指令,使用格式如下: while (argument)) { while循环在argument=true时会不停地重复,执行在{}中的指令集。 这里我们组合了while循环和PHP函数$r=mysql_fetch_array($result)。这个函数根据相应的结果标识 我们也可以使用mysql_fetch_row函数,它会将结果放在一个有序的数组中,我们可以使用$r[0],$r[1],$r[2]和$r[3]来得到相应的值。 要了解关于这些函数的更深入的信息请访问http://www.php.net。 现在,我们有了所有的信息,我们可以把它在html表格中打印出来: echo “<tr> 现在我们可以释放MySQL连接,并且释放一些资源,通过使用mysql_free_result($result)函数。 PHP另一个有用的特性是在脚本中包括文本文件的功能。让我们假设你有一些可重用的代码(例如到其 这里我们创建一个名为Links.x的文本文件,它将存放我们想用在每一个页面中的全部链接菜单。 <p></p> include的语法是: Include (‘included_text_file’); 现在我们可以用?>来关闭PHP部分,并且用</body></html>来结束html页面。 使用表单增加数据 让我们看一下下面的代码: ——————————————————————————– <h1>Add an entry</h1> <form method=”post” action=”add2tbl.php3″> <tr><td>Index:</td><td><input type=text name=”idx” size=3 maxlength=3></td></tr> <tr><td>UserName:</td><td><input type=text name=”UserName” size=40 <tr><td>LastName:</td><td><input type=text name=”LastName” size=40 <tr><td>FreeText:</td><td><input type=text name=”FreeText” s=40 maxlength=100></td></tr> <tr><td></td><td><input type=submit value=add></td></tr> </form> <?php include (‘links.x’);?> </body> 我们再一次使用了include命令<? include (‘links.x’);?>(象在前面所解释的)来增加链接。 让我们看一下add2tbl.php3脚本: ——————————————————————————– <? echo “Data inserted. new table:<br><p></p>”; if ($result) while ($r = mysql_fetch_array($result)) echo “<tr> } // while循环结束 echo “<p></p>”; include (‘links.x’); ?> </body> 这一部分包含两个主要部分。第一部分从前一个表单中得到数据,并将它们插入到数据库中。第二部分 第一部分: 首先我们象通常一样使用mysql_connect()来同数据库连接。 然后我们使用下面查询: $query = “insert into tbl values (‘$idx’,’$’,’$LastName’,’$FreeText’)”; 这个查询使用从前面表单传递过来的$idx,$UserName,$LastName和$FreeTExt变量,并将它们插入到tbl表中。 注意,我在脚本中所作的注释。使用一个注释可以用”//”,服务器将忽略此行的后面部分。 简单,不是吗? 从数据库中编辑一条记录: 让我们假设一下,我们想修改数据库中存在的记录。在前面,我们看到有一个叫set的SQL命令用来设置数据库中存在字段的值。我们将使用这个命令来修改数据库中的整条记录。 考虑下面的脚本: <html> <body bgcolor=#ffffff> <? mysql_connect() or die (“Problem connecting to DataBase”); if ($result) while ($r = mysql_fetch_array($result)) echo “<tr> } mysql_free_result($result); ?> </body> <a href=/”editing.php3?idx=$idx&user=$user&last=$last&text=$text/”>$idx</a> 这一行建立了一个到editing.php3的一个链接,并且给新的脚本传递了一些变量。同表单方式很象,只 我们想将数据库中的记录全部转换到过,这样我们就可以得到表中的确切的数据,以便我们修改它容易 ——————————————————————————– <html> <body bgcolor=#ffffff> <table width=90% align=center> <tr><td>idx:</td><td><?php echo “$idx”;?></td></tr> <tr><td>UserName:</td><td><input type=text name=UserName size=40 maxlength=100 <tr><td>LastName:</td><td><input type=text name=LastName size=40 maxlength=100 <tr><td>Free Text:</td><td><input type=text name=FreeText size=40 maxlength=100 <tr><td></td><td><input type=submit value=”Edit it!”></td></tr></table> <input type=hidden name=idx value=”<?php echo “$idx”;?>”> </form> <?php include (‘links.x’);?> 现在,如果我们不改变记录的信息,它将传回当前值,即缺省值。如果我们改变了字段的值,字段的值 ——————————————————————————– <?php mysql_connect() or die (“Problem connecting to DataBase”); $query = “update tbl set $result = mysql_db_query(“example”, $query); if ($result) while ($r = mysql_fetch_array($result)) echo “<tr> } mysql_free_result($result); include (‘links.x’); ?>——————————————————————————– $query = “update tbl set idx=’$idx’,UserName=’$UserName’,LastName=’$LastName’,FreeText=’$FreeText’ where idx=’$idx'”; 注意,它与我们在前面MySQL部分解释的语法相同。另一件事,注意这个脚本改变的是idx=$idx的记录, 如果表中有多条idx等于$idx的记录,所以这些记录都将被改变。如果我们想更严格一些,我们可以象下面改动一下where子句: $query = “update tbl set idx=’$idx’,UserName=’$UserName’, LastName=’$LastName’,FreeText=’$FreeText’ where idx=’$idx’ and UserName=’$UserName’ and LastName=’$LastName’ and FreeText=’$FreeText'”; 这个语法将检查所有的字段,而不仅仅是检查idx。 从数据库中删除一条记录: 好,删除很容易。我们仍然需要两个脚本:一个用来选择要删除的记录(基本上同上面选择要编辑的记录一样),一个用来真正地进行删除和打印新的表格。 ——————————————————————————– <html> <body bgcolor=#ffffff> <? mysql_connect() or die (“Problem connecting to DataBase”); if ($result) while ($r = mysql_fetch_array($result)) echo “<tr> } mysql_free_result($result); ?> </body> ——————————————————————————– <?php mysql_connect() or die (“Problem connecting to DataBase”); $result = mysql_db_query(“example”, $query); if ($result) while ($r = mysql_fetch_array($result)) echo “<tr> } mysql_free_result($result); include (‘links.x’); ?>——————————————————————————– $query = “delete from tbl where idx=’$idx’ and UserName=’$UserName’ and LastName=’$LastName’ and FreeText=’$FreeText'”; 这个查询将会删除所有与前面的脚本传递来的信息相配匹的记录。容易吧。 好了,这就是全部内容了。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
21、河南网站建设技术规划方案
一、前 言
为了优化资源配置,集中优势,形成合力,做大做强河南重点新闻网站,根据中央关于建设重点新闻网站的指示精神,经省委、省政府领导同意,由省委宣传部牵头,联合河南日报报业集团、省广播电影电视局、省新闻出版局,共同建设一个实力雄厚、功能齐全、技术先进的省级重点新闻网站——中国河南网。
“中国河南网”作为代表河南的重点新闻网站,是继河南日报、河南人民广播电台、河南电视台之后的第四家省属新闻媒体。其规划建设坚持党管新闻舆论的原则,确保网站作为党和政府“喉舌”的性质;通过必要的行政和市场手段,整合所有省级新闻媒体的力量,以扩大信息量,增强影响力,为全面建设小康社会,实现中原崛起创造更为有利的网上舆论环境。
“中国河南网”将整合省直主要新闻单位的新闻资源和网络资源,形成资金、品牌和新闻资源优势;整合各省辖市外宣资源和媒体新闻资源,为各省辖市外宣和报纸、电台、电视台上网搭建平台,并组织各省辖市新闻、外宣信息通过“中国河南网”上网;积极组织政府及各部门的公开信息在“中国河南网”上网,以增加信息量,提高权威性,打造网上河南。
“中国河南网”的规划建设按照“统一规划,科学论证,分期实施,滚动发展”的原则,努力建成一个简便实用,相对领先,安全可靠,经济合理,易用易管,又可持续发展的网络传播平台,并发展为河南第一、国内一流的区域性综合新闻门户网站,使之成为具有较大社会影响、较强竞争实力的新兴媒体,并使之成为信息传播的新载体,思想政治工作的新阵地,对外宣传的新渠道,最终打造成一个大型网络传媒集团和产业集团。
二、网站的功能设计
(一)网站内容管理和信息发布
网站的内容,包括文字、图片、视频、音频、各种文档等,通过发布系统进行统一的管理、制作、审核、发布。
对发布系统的要求,强调内容的有效管理和及时发布,侧重于信息流程的采编一体化。具体要求为:
1. 采用基于模板的静态信息发布,发布系统采用B/S结构,使用数据库管理所有的内容,所有需要发布的页面均使用模板生成,可方便、灵活地定制、管理模板,模板制作可视化。
2. 实现跨互联网的多站点、多模板的动态信息静态发布和动态JSP程序的发布,网站速度快,能适应大访问量;可以同时实现非结构化和结构化信息的动态发布。
3. 系统能够适应采编流程,人员分工明确。
4. 有明确的权限及权限组的概念,可方便定制人员或组权限,权限限制严格,使不同工作性质的人员只能在被授权的范围内发布信息。
5. 自动排版,支持内容自动分页,内容表现形式要多样化,可方便、灵活地定制模版。支持多种网页形式。支持多语种,支持发布预览。
6. 具备强大的发布管理功能,包括文章管理,专题管理,连载管理,编校审流程管理等。新闻发布要求简便快捷,并有对已发新闻快捷方便实现修改、删除、重定向等功能。实现新闻评论。
7. 具备稿件审批功能,实现现实中严格的审批制度。支持多级新闻发布处理,下属机构可以有独立的新闻发布权,定期或不定期提交新闻内容,经过网站管理员确认后发布。
8. 新闻跨栏目发布;支持文档关联;具备主题新闻、专题新闻、相关新闻、连载支持;可在页面上指定重大新闻的位置并可固定相关新闻。
9. 可处理各种信息的来源、管理和发布,包括文字、图片、音频、视频以及其他数据。
10. 可视化编辑,操作简单,使用方便;网站改版容易,便于信息的深加工利用。可远程发布及家庭办公,稳定且易维护。运营成本低。
11. 具备全文搜索功能,可以从日期、栏目属性、涉及人物、来源、事件属性等多种角度搜索。其中全文检索功能可以根据一个或多个关键字的“与”、“非”和“或”的关系查询,显示信息时将信息中的关键字标红。
12. 用户的信息管理及监控管理,具备用户身份验证及对用户在论坛、聊天室、留言板、新闻评论区等所发表的信息进行统一监控管理的功能。
13. 广告管理功能,实现对站内广告的投放位置、投放时间、投放频率的自动管理,提供对广告浏览频率和点击的统计功能。
14. 投票、评分系统,可自动的在网站上生成所需要的调查问卷,页面自动生成,可通过IP地址限制过多重复的问卷填写,保证数据合理、精确并能自动进行数据统计、分析,自动生成饼状、柱状图等。
15. 编辑工作量、栏目文章量及WEB访问量的统计。提供对具体工作人员、具体栏目、栏目内容及单位时间段内的信息处理量的统计数据,并可方便统计单位时间内各级栏目/页面的访问人数、访问者的来路分析(由哪个网站转来)等等。
16. 确保人员访问安全管理。确保工作人员只能接触到系统的工作界面,无法深入系统底层获取FTP密码,同时所有被授权的用户情况都可以列出详细资料,确保没有匿名用户使用系统,信息发布审批流程确保不会有未审批的信息被发布。
17. 确保系统运行安全。系统自动备份,安全可靠,数据恢复简单。发布系统应提供日志记录和备份功能,任何对系统的修改都会被记录,一旦系统意外出错,维护人员可以依靠操作日志迅速找到问题所在,并在系统崩溃时能迅速使用备份恢复,保证系统的正常运转。
18. 能够和论坛、聊天室等其他系统进行关联。
19. 实现多级别会员管理。会员根据级别(高级、中级、初级)享有不同权限,网站管理员能在后台对会员进行升、降级、删除等操作。不同级别的会员,访问阅读不同级别的新闻内容。
20. 多级别新闻内容和发布权限管理。新闻信息的内容具有分级功能,根据内容的发布范围(如会员制、公开制或收费级别等),由网站超级用户决定发布级别、修改、删除等管理操作;发布权限管理可实现内部预发布和最终发布管理。
21. 个性化的新闻邮件订阅功能:实现可管理方式(如收费制)的每日动态新闻定向推送发寄服务。实现读者的个性化新闻定制服务。
22. 支持日常发布计划与及时发布,即对不同的栏目指定发布的开始时间,以及对指定栏目立即进行发布。能进行发布进程监控,支持多种发布方式,支持增量发布、重新发布等。
23. 文章预排序:指定某一栏目下的文章在不同的时间的排列顺序。
24. 栏目管理:栏目管理功能用于维护整个网站目录树。对栏目可以有移动、合并和复制操作。支持多级子栏目。
25. 作者管理:作者不是网站的内部员工,属于网站的撰稿人,由网站管理员将作者的基本信息入库。作者可以在远程凭借用户名和密码进入发表系统,直接录入他们的文章,然后网站编辑可以直接编辑、审核这些文章。发布系统中的其他部分对作者来说不可见也是不可进入的。实现稿费管理,操作者能一次性审核一批文章的稿费。
(二)站点资料检索
对结构化和非结构化信息(如Web页面、新闻、专利、法律、项目文档、合同、技术文档、科技文献、图书目录等)建立全文检索,实现方便快速的查找、排序、管理等功能。具体要求:
1. 查询速度快,可靠、稳定。
2. 搜索结果样式由模板控制,可自订检索结果页面。支持按标题、作者、日期、全文等搜索有关内容。包括:标题搜索、关键词搜索、作者名称搜索、时间段搜索、全文搜索、文章分类搜索、在结果集中再搜索等。同时支持模糊检索、分类检索、日期检索、 包含检索、专题检索、 历史检索等多种检索方式。
3. 支持检索结果多种排序方式,按相关条件顺序或逆序等。
4. 实现智能化高查准率、查全率:支持字索引、词索引、关键词索引、字词混合索引,实现以自然语言处理技术为核心内容的智能中文分词技术,以及基于知识词典的扩展检索功能,支持同音查询,容错查询,同义字查询等。
5. 查询手段丰富,支持各种逻辑运算(如AND、OR、NOT等)、关系运算、字段查询、多种复杂条件查询,支持模糊查询,支持日期型数据的范围查询,支持西文检索和中西文混合检索、词频运算和按时间或相关性(重要性)排序,等等。
6. 支持对多种文件格式内容搜索,包括word、Excel、 PowerPoint等 Office文件格式,以及 TEXT、HTML、PDF、RTF、电子邮件等常用文件格式。也可对 SQL Server、Oracle、Access、Informix、Sybase等数据库进行字段资料全文检索的功能。
7. 多平台、多语言支持,支持简体中文、繁体中文、外国文字和Unicode等,并能够在不同的编码之间转换。
9. 可监控指定目录和数据库表是否更新,
支持自动增量更新索引。
10. 支持本地文件上传,用户可以将本地的单个文件上传并加载到远程检索服务器的系统索引当中。
(三)分类搜索
面向用户提供网站信息的在线查询。功能要求:
1. 具备上述站点资料检索的所有特点,如:查询速度快,高查准率、查全率,查询手段丰富,管理能力强,高可靠性、稳定性,占用硬盘资源、内存资源小,多平台、多语言支持,高可扩展性、开放性,等等。
2. 可进行目录式搜索,每个目录内又可设搜索区,可在目录中再搜索一次。
3. 支持高交互性、个性化,允许用户定制自己的个性化搜索需求、允许用户参与网站评价,可遵循严格的质量评价体系(基于内容和基于链接的智能化分析)向用户给出网站、网页相关度星级级别。
(四)自动信息收集
实现对外部网站及其他来源的信息进行采集整理。具体功能如下:
1. 可下载指定的公开免费信息(可以是html等静态网页或asp、php、jsp及Java Script等动态网页)以及收费加密的(用户具备合法取得信息的权限)信息(可以是html等静态网页或asp、php、jsp及Java Script等动态网页),加密下载支持多种认证方式,如域认证、页面认证等等。
2. 用户可以自定义每个信息源的标示、起始地址、抓取信息地址格式、抓取信息类型、抓取区域、抓取深度、关键字、优先级、启停时间、模板等参数,并具备完善的信息源管理功能,可方便地实现网站信息源的增、删、改、查等操作。
3. 对信息源信息搜索的过程可以动态监控,可以直接浏览下载的文档。要保证对全球网页进行大容量页面数据获取和更新的同时,可以对被获取的页面内容进行相关内容的筛选,剔除不在需求范围内的数据冗余,以保障获取数据尽可能与所需要的数据一致。
4. 支持多种类型信息的获取,不仅可以采集普通的静态和动态网页信息,而且可以采集zip、mp3、avi、rar、mov、pdf、jpg、gif等各种不同类型的信息。
5. 支持对任意字段的复杂组合检索;支持二次检索(即渐进检索);支持中英文混合检索; 支持智能化模糊检索;检索结果与站点抓取同步一致,实现对信息源的实时监控。
6. 可定制模板,指定只下载模板指定的部分,如标题、时间、正文、URL等等,自动过滤无用的广告、栏目、版权等信息,同一信息源下还可设置多个不同的下载模板。也可以不设模板,自动分析下载,下载内容包括标题、正文、来源、时间等。也可以下载指定的文件格式,下载的信息可以通过关键词过滤,关键字支持与、或、非的逻辑组合,同时,系统还应提供完善的关键字管理。
7. 可进行信息重复下载控制,对指定页面的位置、时间、内容等条件可智能化信息分析,防止信息的重复下载。
8. 可以通过代理服务器进行下载,可以设置下载时间,自动下载,可以任意定制结果样式,下载的信息可以生成多种标准的文件格式。
9. 对下载信息进行有效管理,系统下载的信息可以根据用户的设置进行分类,也可以由系统自动分类,要求自动分类的准确率高。可对下载信息进行编排,提取关键词、摘要等。下载的信息要方便查询,可直接导出到其他存储设备上,可以导出为是文件格式,也可以为数据库表格式。采集来的数据可按指定格式分字段存入数据库相应位置,实现与其他应用程序的接口。可实现自动采集,自动生成网站栏目和频道,无需人员值守。
10. 下载速度快。
(五)信息订阅
网站信息可通过新闻邮件、短信等方式订阅,按照需求随时向订阅者发送新闻、杂志、公告等信息。基本功能为:
1. 用户可创建多个邮件订阅组;可方便地构建自己的邮件订阅,支持信息分类的邮件列表。
2. 订阅者能方便的订阅和取消订阅。按时间段和地域统计订阅者人数,并给出统计图表。
3. 内容支持Text或HTML格式,同时可以发送附件。
4. 管理员可以网上进行发送邮件、更改密码、成员导入、删除等操作。
5. 允许有多个管理员,成员管理时知道已确认者与未确认者。
6. 管理员可以对成员进行分类管理、发送,能够自动取消。
7. 管理员可以根据需要随时方便地建立新的邮件组,邮件组可与网站上栏目、专题等形成一一对应的关系。自动完成邮件组内邮件来源的设置,可以进行邮件组模板的设置。
8. 可对邮件进行编辑,支持所见即所得的邮件编辑及邮件模板编辑,自动生成邮件,可以随时预览生成的邮件。邮件信息来源可由系统自动生成或由编辑者自己选择。
9. 允许社区成员直接订阅,实现对订阅用户的认证及收费管理。
(六)网上调查与在线信息反馈
通过开展网上问卷调查,迅速了解社会不同层次、不同行业的人员需求,客观地收集需求信息,从而更好地改善服务,同时也吸引更多的长期用户群。系统要求:
1. 运行稳定、操作简单、调查的问题不受限制,支持同时开展多个调查。
2. 界面友善,操作方便。可方便设置调查表版面及调查结果样式,调查结果能以多种方式显示,如表、饼图、条状图等。支持调查关联、组合调查等多种调查风格。
3. 支持单选、多选、自填等多种投票机制;支持调查界面嵌入、弹开等多种模式。
4. 可设定每个调查问题的属性,包括:是否自填答案、是否需要多行填写、此问题是否允许,问题跳转等。能满足最复杂的调研需要。
5. 采用所见即所得方式建立和修改调查表,调查结果自动生成,自动统计总的投票数,自动计算各调查项百分比等。
6. 可防止重复投选,保证调查结果准确度。
7. 支持调查项目创建,编辑,删除,用户验证等操作。
8. 整个调查活动的组织、管理、发布都可实现远程操作。
9. 答卷可自动收集、汇总到服务器端数据库。
10. 支持问卷调查管理,实现网站问卷调查内容的更新与维护,提供在后台输入、查询、修改、删除调查问卷(问卷类别、问卷内容、问卷答案、问卷状态等),通过修改问卷状态来确定该问卷是否在网站显示;支持问卷搜索管理,用户根据任意条件可以查找问卷并回答问卷。
11. 支持结果Email定时发送到指定邮箱,以及分类、统计、查询等。
12. 可提供意见发表,允许用户发表对问卷内容的见解。
(七)文章评论
对文章或新闻等发表评论,评论原文对所有用户开放,用户可以发表个人意见或查看别人的发言。具体功能要求:
1. 实时提交,用户可以实时发表个人意见或查看别人的发言。
2. 评论表现方式多样,既可在文章下面显示文章评论列表,亦可在讨论区进行讨论,支持合并多个相关新闻文章的评论内容。
3. 可以进行用户评论信息的动态管理和分类管理。网站管理人员可以即时看到所有的评论,并对所有评论进行内容管理,删除不良言论,回复用户的疑问等。可实现评论发表前的审核控制。
4. 开放结构,可实现与其他有关系统无缝对接。
5. 自动反馈,对所有反馈意见可以自动生成回复信函,自动记录用户的邮件地址,为提供后续客户服务创造条件。
6. 支持分页,对反馈意见进行分页管理,方便浏览。
7. 评论信息可归类整理,可以对反馈意见按主题词进行检索,整个系统流程要有序、合理,要便于访问。
8. 可实现评论用户与虚拟社区会员统一管理。
(八)音视频点播和网上直播
网上音视频点播和直播,突破了传统电视按事先安排的程序播放节目、观众被动观看节目的局限,最大限度地让观众实时观看到高质量的节目。
1. 点播功能如下:
1) 播放画面流畅,可实现平滑、无停顿和无抖动地欣赏视频节目,可综合传输文字、图片、声音和视频信息。
2) 查询方法简便快捷,数据更新快捷;具有快速的响应速度;多媒体信息展示界面简洁明了、切合实际需要。
3) 管理简便、操作方便,通过“节目管理”可对系统中的节目信息进行维护和管理。提供视频节目单管理,可响应用户的点播请求以及用户在点播过程中的交互。
4) 支持多种协议;自动搜索视频服务器和视频节目表单,采用多级索引结构,用户能够迅速查找喜爱的节目;并支持加入在线广告。
5) 可实时进行音视频流的解压,对从远端接收的音视频流不需任何预读便可完全动态解压。
2. 直播功能包括:
1) 可将摄像头拍摄的实况信息,电视台播放的节目,录像机、VCD机和DVD机的视频和音频输出,计算机屏幕,VCD、DVD节目等各种不同的实况音视频源进行实况直播。
2) 音视频全实时同步:全实时同步视音频采集、压缩、存储、网络传输、播放,不丢帧,可放大至全屏。
3) 支持文件直播,字幕及图片的显示与管理,支持多频道选择,支持远程直播,并支持跨广域网直播。
4) 可以定时录制、定时直播、定时停止,真正做到无人值守管理。
5) 支持客户端无限的级联,支持客户端多频道选择。
3. 其他功能:
1) 提供用户分组及权限设置功能,对客户等级进行有效管理,提供完整的计费、身份认证功能等。
2) 实现社区用户直接点播、观看、计费管理。
3) 可对系统使用情况进行全面的监控,并具备完整的数据库修复、备份、日志处理等功能。
4) 具有完整的点播频道管理、广播频道管理和客户管理,具备良好的管理界面;服务端可以完全不需要人员值守,可自动进行记费、统计等工作。可随意添加、删除或修改目录、视频节目;实现多级目录索引,可轻松管理视频节目,可打开、保存、修改不同的节目表单;实现实时状态显示,能够随时反映出各个节目的播放状态,点播人数等。
5) 具备开放式的自由讨论空间。
(九)资料软件类下载:
提供大量热门的资料及软件的下载,主要特点是:方便检索,快速下载。具体要求为:
1. 具备良好的管理功能,实现资料的多目录分类管理,上传、修改、删除资料方便快捷,具备友好的管理界面。实现管理员分级权限管理。
2. 实现资料软件的多站点下载,支持多用户多线程同时下载,速度可优化到最快。
3. 可用多种方式进行资料软件的查找检索,如目录查找,关键字搜索,目录中再搜索以及结果中再搜索等。
4. 提供用户分组及权限设置功能,对客户等级进行有效管理,提供完整的计费、身份认证功能等。实现用户下载计费管理。
5. 具备开放式的自由讨论空间。
(十)广告管理与发布
实现广告的投放管理,对站内广告的投放位置、投放时间、投放频率等实现自动管理,并提供对广告浏览频率和点击按年、月、日、时进行统计的功能。具体功能包括:
1. 实现对管理人员、广告客户的权限管理,包括用户的创建、修改、删除,授予权限、变更权限、分类等功能。并实现对广告投放的直接计费管理。
2. 实现对广告的方便管理功能,包括广告定位、投放比例、投放位置、发布基数、开始及截止日期等管理功能,并实现广告项目的新增、修改、删除等功能以及实现广告的分组管理等。
3. 可自动生成广告代码功能,并可根据浏览器的类型显示相应代码。
4. 可多种方式生成广告报表,并可以多种方式统计显示广告的投放计划、时间安排、形式等信息。
5. 可准确快速进行数据统计分析,可将广告实际投放的时间、形式等信息以报表和图例等方式显示出来,可根据访问者的来路,将其按地域进行汇总;可将广告的访问情况如显示数目、点击数、点击率等相关信息按照年、月、日、时、分进行汇总;可以按用户、时间段、广告项目等等条件,生成各种统计报表及图示。
6. 可对广告进行方便查询,如按日期查询一个时间段内的广告案例投放及点击等情况;按广告投放形式查询满足此投放形式的广告案例;可以选择区域查询该地域内网友所访问的广告案例的相关情况等等;并可将以上几种查询条件组合起来进行查询。
(十一)工作量统计
统计单一工作人员或具体团队的工作量大小,来衡量具体工作人员的工作量和工作成效。统计分析功能可分为几个部分:编辑工作量统计、栏目文章量统计、网站访问情况统计等。编辑工作量统计可用来了解编辑的工作情况;栏目文章量统计自动统计发布系统栏目里的文章被操作的记录;网站访问情况统计用来统计栏目或文章的受欢迎程度等。在该功能中,要实现统计人员的权限管理,并实现对工作人员及具体团队的完善管理功能。统计结果可以按时间累计或增量统计,统计结果简单明确,并能以多种形式表现出来。
(十二)WEB访问统计及网站流量分析监控
分析统计WEB访问统计提供网站被访问的整体数据,包括:流量统计、访问量统计、用户统计、页面统计、地区统计、最近访客资料等。可具体分析:
1. 站点最受欢迎栏目,文章等。
2. 实时分析文章、栏目、站点的访问量,可以按小时、天、月、年进行对比分析。
3. 可获得某段时间内、某个栏目或某个区域等条件内的文章访问量、访客来路、URL访问数及区域IP等排行榜。
4. 可对站点日每小时、周每日、月每日、年每日、年每月进出流量以及访问量、访问成功数等统计报告。
5. 可实现用户的浏览器、操作系统等信息统计。
6. 可实现单位时间内站点栏目、页面访问次数统计及相关访问信息分析,如访问人数、访问者的来路(由哪个网站转来)等等。
7. 可进行访客的地区统计以及各个地区的访问量统计。
8. 可分析访问者每次访问的访问日期、时间、IP、操作系统、浏览器、来自何方、访问的URL、停留时间等相关信息。
9. 可查询分析任意时间范围内、某地区的总流量、平均流量、最大流量。
10. 可分析任意时间范围内、某地区的总访问量、平均访问量、最大访问量。
11. 要求分析数据做到公平、真实、可靠,查看分析报表方便、快捷,分析报表表现形式直观、多样。
12. 同时监测各个服务端口;监测某些应用界面;监测系统的带宽使用情况等。
(十三)网站用户认证,收费和管理
系统采用一次登陆全站访问体系对网站用户加以管理,对不同业务系统的用户登录进行统一认证,包括用户密码、身份及权限的认证,并且根据系统的配置,在认证成功后跳转到相应的系统中去。对所有增值服务计费并统一结算。具体包括:
1. 用户管理和认证管理
1) 用户的所有认证过程中的数据均经过加密,确保用户信息不被监听、截获和盗用。
2) 所有的用户只能登录一次,防止多用户使用一个用户和用户名的盗用。依据管理的方式不同,对用户进行分类管理。可实现用户名挂失及解挂处理。可对用户账号进行锁定或禁止。
3) 实现以用户组方式管理的功能。一个用户组可以拥有多个用户,一个用户也可以隶属于多个用户组,并可方便实现对用户组的权限授予和解除功能,用户自动具有用户组的权限,且可对单个用户授权。
4) 用户自己注册,注册成功后可修改、注销自己的信息,并有密码找回功能。管理员可以修改、注销用户的状态和注册信息。用户注册后默认为一般用户组,管理员可以改变用户隶属的用户组或单独更改该用户的权限。
5) 用户的身份信息、资源信息、角色信息和各种访问策略信息等等可以通过目录服务实现存储、管理和访问等服务功能。为管理员提供高性能查询的服务能力。
6) 实现用户的分级委托管理,可为管理员分配不同的权限以管理不同组或不同区域的用户。为管理员提供统一的用户身份和资源管理界面。
7) 对用户提交的注册信息进行分析,将用户的特点归纳出来,实现个性化的服务的提供。
8) 对不同业务系统的用户登录进行统一认证。包括用户密码、身份及权限的认证,并且根据系统的配置,在认证成功后跳转到相应的系统中去。
2. 收费系统功能包括:
1) 提供多种网上支付功能,用户可在网站建立账户,并向自己的账户上注款。
2) 支持多种方式的计费处理,并根据不同的计费方式,分别计算出费用金额,最后按服务项目分别汇总到用户的结算账目中,并计算用户账目余额。用户相关费用的结算、查询等处理简单、明了。
3) 管理员及用户可通过收费功能了解付款到账等相关信息。
4) 每一笔款项数量、时间、操作者、附注等相关信息都有详实可靠的记录,可供查找、核实。
5) 在到款后可及时向用户发送到款通知,用户可以方便查看所有已经付费的服务项目及付费金额等相关信息。
6) 支持特权及免费用户,可设立高级用户组及用户权限,使高级用户在不同系统功能中可享受优惠或免费特权服务。
7) 确保用户网上相关信息的安全。
(十四)虚拟社区:
1.
BBS论坛系统
论坛是网上社区交流的主要形式,它使人与人的交流不受时间和地点的限制。具体功能包括:
1) 管理员可以方便管理论坛中的帖子,可设定帖子内容最大允许的字节数等相关信息。可按发言人、主题、内容、时间等信息任意对帖子排序、查询,可以设置精华帖首页显示,置顶某帖等;可方便快捷地在线增删讨论标题,能以图表形式管理讨论组用户。管理员可方便开启、关闭论坛。提供方便的后台管理程序对整个论坛进行管理。
2) 用户管理安全可靠,用户必须先注册才能参与讨论组;用户可申请版主,由管理员授权,版主管理维护论坛文章,版主可以作版主公告。用户发贴时服务器自动记录用户信息,用户管理由认证、计费、管理系统统一管理。对用户可实现消息管理,提供方便的在线通知、好友管理;设有个人收藏夹,个人收集可以放到网上。用户可以自建主题留言版。用户可以进行个人专辑管理,可设定将各论坛的特定帖子加入到发帖者的个人专辑,发帖者可以对自己的个人专辑进行管理,其他访问者也可以访问任何一个人的个人专辑。实现积分功能。
3) 可以建立信息共享组,组内的任意一成员向该组的标题发邮件,组内所有成员可同时收到该邮件。允许非组内用户用不同方式订阅该讨论组邮件或取消订阅。
4) 帖子列表显示,可以树形列表显示帖子层次列表,显示内容包括发表日期,点击数,字节数,回复帖子数等,并以各类图标形式区分不同贴子(新帖、热帖、置顶、重要等)。可定制显示或不显示栏目导航条,帖子列表支持分页显示,具有分页查看工具条。
5) 显示论坛当前的状态,如注册总人数、当前贴子总数、贴子点击总数、当前在线人数;用户表现积分排行。
6) 支持丰富的帖子格式,如文本、图片等,提供个人签名功能,并提供大量的表情、头象等图片、图标供用户发帖时选择。
7) 提供帖子的检索、查询功能,能够按作者、主题等进行查询,同时还可以查询论坛贴子的全文内容、以及贴子附件的内容等。
8) 能定期自动生成电子期刊,并能够以Email的形式自动发送到会员的电子邮箱中。
9) 具备完善的安全过滤机制,可完全过滤禁发内容,并可通过安全监控对论坛帖子实行管理,允许定制先审后发。
2.
聊天室系统
聊天室是提供给网民一个交友与娱乐的场所,在聊天室里网民可选择自已的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。同时它已成为各网站提供的一个服务标准,是吸引网民,提高人气的一个重要方式。功能要求:
1) 速度快、稳定性高、占用系统资源少、用户界面友好、功能强大。可同时支持万人以上在线聊天,响应时间短。
2) 支持TCP/IP及HTTP等各种协议,用户可以透过防火墙进行聊天,可实现多用户多频道,灵活的系统扩充结构和管理功能,并具有友好的用户界面。提供丰富有趣的表情、动作符号,聊天字体可随意设置。 根据需要能以多种方式保存聊天记录。
3) 用户管理由认证、收费、管理系统统一管理,用户可以选择是否公布自己的个人信息。用户可以将指定用户的谈话内容完全过滤,以有效地防止个别用户的恶意骚扰;用户可以查找指定聊友是否在线,在哪个聊天室等。用户可以随时结束聊天,退出聊天系统。
4) 提供严格的管理员层次体制,管理员通过相关权限的操作,可以维护聊天室的秩序和聊天室的系统安全,方便实现对聊天室的监控及管理。设置过滤功能,过滤禁发言论。
5) 具备强大的后台管理功能,主要包括:锁IP、锁用户等;管理人员的管理操作,如踢人、删帖等,都记录在案,用户可以进行申诉,做到聊务公开。
6) 权限受理灵活、合理,站长可以通过高级管理员维护系统的正常运转。
7) 具备丰富的聊天功能,包括:私聊窗,悄悄话,嘉宾聊天室,表情动作,用户权限分极,改名,在线人员列表,当前人员列表等。 聊天者可以发送文件、图片给聊天对象。提供语音聊天功能。
3.
其他
1)
贺卡:实现网上贺卡的制作、上传、下载、发送以及定时发送等功能。
2)
同学录:网上同学交互的场所,支持多彩留言,照片上传下载,学校、班级及班级成员的管理等功能。
3)
虚拟城市:网上虚拟的现实社会,虚拟现实生活中的各种场景。
4)
交友中心:交友系统是虚拟社区的重要功能之一。社区成员可以填写自己的相关信息,并上载照片,以备其他社区成员查询。系统为每个社区成员维护一个好友列表。好友之间可以更加方便地沟通和交流。
5)
相册:支持用户管理,相片上传、注释、下载、删除,方便的系统监控管理功能。
6)
留言板:支持个人留言板管理,方便的系统监控管理功能。
(十五)基于web的大容量邮件服务
为客户提供方便的及时的信息是网络服务的重要功能。E-Mail是Internet应用的非常重要的部分。大容量的邮件服务系统功能包括:
1. 具有丰富的邮件收发、远程管理、多邮件域等专业邮件系统功能,具备可靠、安全、高速的特点。具备智能垃圾邮件处理功能,对邮件进行病毒过滤。
2. 具有灵活的扩展性和低廉的系统构建投入。具有庞大用户容量可承载性,支持SMTP/POP3/IMAP等邮件通信协议,并可拓展系列增值服务,可以使用Outlook、Foxmail等邮件客户端进行邮件收发。并且支持WebMail,管理员可以在Web形式下对邮件系统进行管理,用户可以在Web形式下管理自己的邮箱,处理自己的邮件。
3. 支持超文本邮件的读写,可实现与OUTLOOK同步的地址薄及邮件搜索,方便的管理机制、丰富的报表,以及个性化功能如:自动回复,自动转发,垃圾信拒收,自定义签名,个性化信纸等。
4. 具备方便的管理功能,支持邮件列表功能,管理员可以创建、修改、删除邮件列表,还可以查询某个用户被列在哪些邮件列表中,邮件列表可以进行访问限制,限定邮件列表中用户的权限。提供多级用户权限管理。可一次性创建批量帐号。
5. 提供“邮件群发”功能;支持只读邮箱,信箱内信件只能特定人删除修改;支持公告栏;支持错误邮件地址自动转发,收信人不存在的邮件会自动转发给一个已经存在的邮箱;支持邮件自动拷贝,管理层可以查看每封发出的和接收的邮件;支持在WEB界面上的语音邮件和视频邮件。
6. 具有卓越的安全防护体系。
(十六)短信业务
短信业务可以向中国移动、中国联通、小灵通和固定电话的用户提供发送短信息、铃声、图片、定制新闻、点播、游戏等服务,为企业用户提供集团短信服务。同时通过该平台可以方便的为第三方内容和应用提供接口。可支持庞大用户容量,处理突发性强,数量庞大的集群信息发送,并可实现针对不同行业、不同应用定制个性化短信系统。
功能包括:
1. 支持各种数据(英文、中文、铃声、图片、游戏等)的发送和MO,支持网关的各种计费方式(免费、包月、按条),并可根据网关提供的计费方式进行计费的修改。方便和不同的移动运营商连接。可以分别通过各自SIM卡,连接不同的网络。
2. 具备调度系统对定时发送的信息进行调度。
3. 具备网关监控系统,能够自动监控网关是否能够正常工作,如果网关有故障,将其自动恢复。
4. 方便完善的管理系统,可进行以下管理:
1) 铃声下载管理、手机屏保管理、手机点歌管理、短信笑话管理、短信祝福管理、用户手机号码管理、收费管理、结算管理等。
2) 内容合作伙伴管理:内容合作伙伴资格的审核;内容频道的审核、查看、归类。
3) 频道管理:编辑的添加、删除和授权管理频道;频道内容的更新、修改、删除;发送、订阅、收益日志的查看。
4) 编辑更新:内容频道的更新、修改、删除。
5) MT(网站下发)频道管理:频道的选择、修改、暂停;价格的设定;发送频率的设定等功能。
6) 用户管理:注册用户的查看、退订、暂停、积分、各类记录、黑名单的管理、帐单查询等功能。
日志系统:注册、订阅、发送、点播日志。
7) 用户反馈:用户反馈的处理、用户反馈的接收、用户反馈的查看。
8) MO(点播)频道管理:频道的选择、修改、暂停;价格的设定;发送频率的设定等功能。
5. 为用户提供方便的服务,包括:
1) 用户可方便地注册、登陆;忘记密码可使用密码找回功能,注册用户可进行帐务查询、个人通讯录管理等。
2) 可实现与用户认证、收费、管理系统相结合,社区用户可直接登陆使用,对其直接计费,实现多种收费方式。
3) 用户可以方便地订阅、退订、暂停;可查看订阅频道等。
4) 用户可以自写短信、定时发送;并且用户可以自写闪烁短信、免提短信等。并可实现语音短信的录制、播放、删除、重录、发送等功能。
5) 提供及时发送、定时发送、发单个用户、群发、加密服务等功能;发送方用户可查询留言发送状态、查询短信接收状态、转发、重发(转发送模块)等,根据发送方用户的具体喜好及发送需求提供背景音乐、歌曲、日常用语、笑话、节日贺词、其他预购信息(叫醒服务等)及商务需求(商务定时提醒、活动通知、客户联络、水电气催缴、政府公告等公益活动)。
6) 提供支持各种机型的铃声、图片下载。提供手机点歌、手机屏保、短信笑话、短信祝福、新闻定制、日程提示等功能。
7) 可实现集团用户的特殊服务,集团用户可通过WEB界面或客户端发送短信、定时发送、管理通讯录等。且集团用户可通过第三方接口在现有系统中嵌入短信的功能。
6. 提供第三方系统接收和发送短信的接口。提供各种应用模块:如短信一对一系统、竟猜系统、调查系统、短信问答等。
(十七)股票行情
提供实时股票行情信息。要求: 速度快,实时提供行情信息;提供按股票代码或拼音查询个股行情的功能;提供跟踪多个自选股的实时行情的功能;提供针对所有股票的各类技术分析;提供股票的分时走势和常用的K线图;提供在曲线窗口内用鼠标拖动缩放曲线的功能;并有灵活的系统扩充结构。 能与第三方对接实现网络股票交易功能。
(十八)电子商务应用
产品宣传、客户管理、供应链和内部运作等全部在线进行,从而实现全面的、集成的、一体化的电子商务。其功能包括:
1. 产品管理和发布:
1) 自由定义产品属性,产品种类和数量不限制;
2) 产品实现分类管理,支持任意级产品分类;
3) 支持图文可视化编辑,支持多媒体形式展示产品;
4) 内置产品价格体系,支持多种促销手段;
5) 支持非产品信息管理和发布;
6) 内置网店管理,支持电子商厦类应用。
2. 订单处理
1) 购物推车支持,在线定购;
2) 支持订单分解、组合、修改、确认;
3) 批量发货、退货处理;
4) 在线支付处理;结算处理;
5) 订单跟踪处理;
6) 多种销售报表支持。
3. 物流配送
1) 仓储系统:支持出库、入库操作;
2) 加工系统:加工、发货处理;
3) 运输系统:收货、发货、运输跟踪;
4) 物流中心:结算处理,统计分析和报表。
4. 自动化流程
1) 自由定义和配置业务处理流程,支持业务流程重组;
2) 内置流程引擎,支持动态配置和监控。
5. 客户服务
1) 客户可以浏览商品信息、查看商品详细信息、显示商品信息的查看量、该商品的人气值、相关产品推荐、商品点评、消费向导、消费排行榜、新品快递、名优精品、每日推荐;
2) 可将选中商品加入购物车、加入意向购买箱、加入备忘录、将商品推荐给好友;
3) 为用户提供产品提醒服务、缺货登记服务、供求信息、退货台、打印功能;
4) 实现会员积分制、建立会员服务中心、备忘录、信息系统、日历、历次购买物品清单、定时提醒服务、定单追踪、快速购物通道等。
5) 提供个性化服务,如用户可以定制自己的电子商务页面。
6) 实现在线的交流功能,增加与客户沟通渠道,客户可以通过网络完成各种产品咨询、反馈与投诉、技术支持、下载服务等功能。
6. 具备方便完善的后台管理功能,采用严格的身份验证和多级权限管理,各部门的权限分别有的相应帐号,登录后只能使用自己权限范围内的功能模块,对于其他的越权操作将无法进行。管理功能还应包括:
1) 信息录入及信息发布、页面制作;
2) 商品查询、定单管理、在线支付、退货管理;
3) 管理人员的信息交换、管理人员的协调工作;
4) 库存管理、代理商支持系统、供求信息发布、缺货信息登记;
5) 安全认证、个性化服务管理、日志分析等。
(十九)电子政务
政府对公众和企业信息服务和政务服务的入口,通过电子政务,一方面,政府可以为公众和企业提供及时、丰富的政务信息,提供公众和企业所需要的政务服务;另一方面,公众和企业可以随时随地查阅政府的各种政策信息,享受政府的各种服务,包括各种申报等。
1. 收、发文的管理
1) 完成文件、公文的上传下达,包括收文登记、发文登记、创建、拟稿、登记、核稿、会签、签发、分发、归档等等。
2) 实现收发文创建、浏览、统计、查询及处理等各种功能。
3) 收、发文管理方便、灵活。根据各单位实际情况定义出不同的公文流程。可方便地配置各流转步骤的使用权限,对公文流转步骤进行增减,确保公文流转的实用性、安全性。
4) 根据不同用户组织的体系结构,规划相应的公文流转类型及流转步骤。对不同规模的企、事业单位,按照层次结构定义及配置相关发文类型,还可对各部门进行级别控制,如各处室的收发文等。
5) 可以按实际情况灵活配置公文的文头、标题线、文号模式、简称等文件信息,能够对不同类型不同级别的文件进行自动编号。归档文件自动生成档案条目,实现文档一体化。
6) 流程跟踪。对每一文件流转都自动作详细的记录,写在跟踪日志中。
7) 全文检索和多条件的模糊查询。
8) 文件的提醒、待办与催办。可通过电子邮件方式实现。
9) 实现邮件的跟踪、签名、加密以及回执等功能,提供验证、存取控制、字段级加密和电子签名等安全措施。
2. 会议管理
1) 包括会议室管理、会议室预定、会议流程、会议通知、领导日程安排和会议纪要、会议统计和查询等功能。
2) 可根据具体情况确定会议室管理员、会议通知发送人等不同角色的人员。
3) 提供会议室的使用申请、审批功能。通过提交预定申请,让领导和管理员及时了解会议室的实际情况。
4) 对会议室占用时间等进行监控,来合理地安排、分配、管理会议室。
5) 拥有相应权限的人员,可以发送会议通知,可以电子邮件、短信等方式提醒有关人员,并作为日程安排项目自动添加到接受人的个人日历中。有关人员可方便及时对通知作出答复,通知人可方便、快速地浏览通知答复情况,方便实现会议的取消与变更。
6) 实现会议纪要的录入、发送、按权限查询功能。可对会议进行多种方式的查询、统计、浏览。
3. 文书档案管理
1) 提供管理形式多样、格式各异的文件管理功能。
2) 可灵活、多样、动态地配置信息类别,把围绕一个或多个主题的所有相关信息(文本、图形、声音、影像、Web页面、OFFICE文档、多媒体课件等)集成在一起,使用户通过简单清晰的界面快速、方便地查询某一主题的信息。
3) 在公文管理、档案、会议、出差申请、采购申请等系统的流程结束时,可自动将处理结果和内容进行归档,实现文档一体化。
4) 提供严格的管理权限控制,保证数据的安全性、保密性。
4. 电子公告和电子论坛
模拟单位的公告栏与布告栏的功能,进行公告的发布。根据各部门的实际情况设置发布审批流程,公告内容包括不同级别的紧急程度标识,同时,用户可直接引入、转发已成文的公告。工作人员可通过电子论坛进行讨论。
5. 实现政府信息的存储、整理、发布、查询,以及网上办公等功能。
(二十)远程教学
远程教学即利用网络作为载体,实现分布式教学。它不受时间、空间和地域的限制,从而实现了自主学习。远程教学主要包括以下功能:
1. 教育资源制作、管理、发布,提供教育资源编辑、制作工具;支持素材库、课件库、题库、案例库、课程库等。
2. 教学管理
1) 学习系统
a. 答疑/讨论,在线交流。
b. 音视频资源下载/学习。
c. 课件学习,课件内容按章节分层组织。
d. 可针对不同的学习组、不同的教学内容进行组播;支持交互式教学,各教学点可根据需要灵活选择教学模式。
e. 作业:作业按章节组织,题目类型多样化;支持在线、离线答题。
f. 自测:学生自己生成测试题目;使用教师生成的测试题目;可预约考试。
g. 成绩查询,学习统计。
2) 教学评价系统
3) 授课系统
a. 学务管理:提供远程报名、选课、选购教材、答疑等网络自动管理功能。
b. 教师指导:为授课教师进行教学咨询和个性化教育提供的查询功能。包括学生情况、课件内容、学生作业、教学计划、教学任务查询等。
c. 章节管理:设置每个课程的章节结构。
d. 资源管理:兼容多种资源类型。
e. 作业管理:提供作业的新增、编辑、发布、批改和统计。
f. 题库管理:提供多种题型的处理。
4) 系统管理
a. 招生管理:招生计划管理、考生信息管理、划线录取。
b. 学籍管理,教学计划,课程管理。
c. 选课管理:选课预约设置、选课缴费确认、查询。
d. 考试管理:考试预约、缓考申请、成绩录入、调整学分。
e. 毕业管理:毕业审核、毕业证书管理。
f. 用户管理:用户组管理、用户组权限设置、用户管理。
g. 教务管理:学籍、教师、专业、教材、作业、考试、教育证书管理等。
h. 财务管理:记录、查询、统计和提示学费支付情况。
5) 社区系统
u 校友录,教师录,好友列表,修改密码,网站导航,评价教师,评价学生,学员录。
(廿一)网络会议
实时交互式语音通讯平台,提供语音、文本等的实时通讯服务。实现基于互联网的异地音视频会议及语音交流和文字交流。可实现:
1. 在任何地点方便地展开跨地区会议。
2. 可通过建立不同的会议室来开展分组讨论。
3. 实时管理会议室和与会人员。
4. 录制会议过程,作为会议备忘或参考以及提供给不能参加实时会议的人员共享。
(廿二)网络游戏
提供在线网络游戏服务。网络游戏有很多种,像Web平台的江湖社区游戏(著名的有第九城市:
www.the9.com、可乐吧: www.kele8.net 等);客户端网络游戏(传奇、石器时代、红月、帝国在线、反恐精英等等),它们都具有投资少、见效快、服务单纯等特点。
(廿三)大样反解及生成版面图、PDF版
可发布报纸电子版,功能包括:
1. 反解大样(*.S2、*.S72、*.PS2、*.PS)文件及其附图。自动生成指定格式文件,可对图片进行压缩。并且还可生成版面图和PDF。可一次反解一个或一批大样文件。
2. 能显示大样的版式,用户可直接在版面上进行合并、连接、分离、删除等工作。如对每一篇文章进行标引时,标引项的内容可以直接键入,也可从文章中摘取,还可以从事先作好的标准表中选择。
3. 支持手动、自动等多种反解方式。程序能自动抽取所有文章的标题,日期版次等版面特征也能自动提取,可自动识别作者。对版面分布情况进行智能分析,连接被分成多块(例如标题和内容)的文章。反解后的文章可直接放到指定位置。
4. 支持多种库结构,每个库可有独立的标引字段和输出路径。
(廿四)ChinaCache CDN网络加速
通过放置在各地的高速缓存服务器和智能控制系统,实现智能流量负载均衡,把网站的内容发布到离用户最近的地方,使用户能够就近访问位于各个地方网站上的内容,从而充分发挥用户接入的带宽,用户感觉就像是在上局域网一样。
通过ChinaCache CDN 系统的智能动态负载均衡技术,可以将用户的请求就近定向到系统的一个节点服务器上。高性能的节点服务器则进一步保证了Internet用户的访问能得到更及时可靠的响应。同时, CDN服务提供商,通过软件刷新功能,将自动保障各个节点服务器与ICP网站的原服务器的数据同步,使得用户能够随时访问ChinaCache CDN 的各节点服务器并得到与原服务器完全相同的内容。
(廿五)其他服务:域名服务,服务器空间租用,主机托管服务等。
三、网站建设原则
(一)
先进性 采用当今流行、且是未来发展方向的技术。
(二)
可靠性 全面采用最新的稳定的技术及构架,保证系统设计的安全可靠。能够解决各种导致网络系统失效的意外情况,保证网站各项业务在7×24小时内不间断运行。
(三)
实用性 充分考虑当前的不同业务层次,各环节管理中数据处理的安全性和便利性,把满足基本业务需求作为第一要素进行考虑。
(四)
安全性 提供从系统级安全到应用层安全的各级防护措施,最大限度地防止非法入侵和操作,保证数据安全。确保信息是有效的、安全的,信息在传输过程中不会被篡改、丢失、乱序,信息不会被随意生成、修改和删除;进行交易的人具有可靠的标识;一旦遇安全问题,数据能迅速恢复。
(五)
伸缩性 系统架构灵活,全部采用模块化设计,可以轻松进行各个模块之间的组合,系统可以方便的多次扩充。
(六)
扩展性 从网络协议到操作系统,从系统软件到应用软件,均遵循通用的国际或行业标准,可以很轻松地和其他系统对接,并可方便地进行二次开发与改造。
(七)
易用性 基于B/S 体系结构。充分考虑操作者的特点,采用人性化设计,方便易用。
(八)
管理性 一个容易管理的系统不但可大大降低系统管理员的负担,而且能够在系统发生任何问题的时候都能够很容易地进行诊断,并采取有效措施,确保系统处在良好运行的状态。
(九)
集成性 能与多种专业Web应用相集成。
(十)
标准化 遵循目前国内、国际和行业标准,主要包括:
《GB/T 9361-1988 计算机场地安全要求》;
《GB17859-1999 计算机信息系统安全及维护等级划分准则》;
《RFC1829 专用加密机制》;
《GB/T 1527-1994 信息处理、数据加密、物理层互操作要求》;
等等。
四、网站架构
(一)系统架构分析
采用先进的三层体系结构,在Browser/Server三层体系结构下,表示层(Presentatioon)、功能层(Business Logic)、数据层(Data Service)被分成三个相对独立的单元。
(二)软件架构说明:
1. 内容管理及发布系统信息来源于信息采集系统、大样反解系统及生成版面图、PDF版、股票信息系统及供下载的资料软件等。
2. 电子政务、电子商务、短信系统、远程教学、音视频点播直播的相关信息发布通过发布系统发布到WEB服务器上,并通过用户认证、计费系统进行管理,同时和邮件系统、虚拟社区系统等相关联。
3. 邮件系统、网络会议、网络游戏等均通过用户认证、计费系统进行管理,并和虚拟社区系统等相关联。
4. 网络会议、远程教学、视频点播直播系统关系紧密,网络会议可通过远程教学实现,视频点播直播是实现网上视频教学的工具。
5. 信息订阅、文章评论、网站调查均与发布系统相关,通过通过用户认证、计费系统进行管理,并和虚拟社区系统等相关联。信息订阅可能过电子邮件系统、短信系统等实现。
6. 搜索引擎、工作量统计、网站流量分析直接通过应用服务器实现,并可直接对数据库服务器中数据进行查询统计。
7. 广告发布系统渗透于各个模块。
8. 所有应用都通过各自的应用服务器来实现,应用服务器与数据库服务器相连。
(三)
硬件总体架构图:
(四)硬件系统设计要求
1. 高性能全交换,光纤接入,采用千兆以太网技术,满足大负荷网络运行需求;
2. 采用服务器集群系统,负载均衡,节点可扩展;
3. 支持二/三/四层交换,按需划分网络,保证全网无阻塞,基于浏览器和一些网络管理工具的图形化配置,便于日常管理和维护;
4. 多媒体应用,包括视频点播、视频会议、远程教育需求;
5. 强大安全和稳定特性,抭灾难能力,采用专用软硬件防火墙产品,提高网络安全与性能,支持大数据量访问;
6. 高性价比产品,支持系统平滑升级;
7. 良好的冗余备份机制,一旦出现故障,可以快速恢复。
(五)网络安全性分析
如果网站的安全得不到保障,入侵者就很容易利用系统的漏洞、配置的不当,进行破坏活动。如数据被有意篡改、页面被丑化或者修改,如贴上谣言、黄色图片或反动言论;修改客户的资料或个人资料;入侵者还有可能通过嗅察器(SNIFFER)、木马等入侵方法获取用户的帐号、密码等敏感信息等,可能造成极其恶劣的影响和严重后果。
(六)网络安全设计要求:
1. 服务器管理区和办公区配备高性能的硬件防火墙,制定不同的过滤和安全策略,保护服务器群和办公用机的安全。
2. 配备入侵监测系统,对来自网络内部和外部的入侵企图,进行报警、响应、防范。并对网络的运行进行监控、记录、重放。
3. 在各电脑主机上安装分布式防病毒软件,针对文件、E-mail、网络等新型病毒有效查杀,对各主机集中进行病毒库更新、管理和控制。
4. 在邮件服务器前端加装邮件防毒网关,保证邮件服务器中邮件库的数据安全,并可以拦截垃圾邮件。
5. 安全服务人员要不断对服务器主机进行安全加固的服务工作,给主机操作系统打补丁、去除多余服务等,加固操作系统的安全,确保主机的服务器安全。定期用安全扫描软件对所有的服务器和防火墙进行扫描,检查漏洞等等。
6. 良好的数据备份机制,一旦出现安全问题,可以迅速恢复。
五、需购置的硬件设备及软件系统
六、实施步骤:
1、布线:装修时,根据硬件架构进行内部网络布线。
2、软硬件安装调试:根据网站建设方案购进相应的硬件设备及软件系统,进行软硬件的安装调试,并进行测试。
3、内容建设:根据内容规划方案设计栏目、页面、模板等,并进行基本信息内容的填充。
4、试运行:按各项规章及工作流程进行试运行,及时发现软硬件等各方面的问题,并进行改进。
5、网站正式开通。
|
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
22、网站首页的设计 设计首页的第一步是设计版面布局。 就象传统的报刊杂志编辑一样,我们将网页看作一张报纸,一本杂志来进行排版布局。 版面指的是浏览器看到的完整的一个页面(可以包含框架和层)。因为每个人的显示器 布局,就是以最适合浏览的方式将图片和文字排放在页面的不同位置。 我们在设计思考系列文章第四篇讲过站点整体的创意,版面布局也是一个创意的问题, 一.草案 新建页面就象一张白纸,没有任何表格,框架和约定俗成的东西,你可以尽可能的发挥 二.粗略布局 在草案的基础上,将你确定需要放置的功能模块安排到页面上。(注:功能模块我们在 三.定案 将粗略布局精细化,具体化。(靠你的智慧和经验,旁敲侧击多方联想,才能作出具 在布局过程中,我们可以遵循的原则有: 1、正常平衡—亦称”匀称”。多指左右、上下对照形式,主要强调秩序,能达到安定 以上的设计原则,虽然枯燥,但是我们如果能领会并活用到页面布局里,效果就大不 看看我们经常用到的版面布局形式: 1.”T”结构布局。所谓”T”结构。就是指页面顶部为横条网站标志+广告条,下方左面为主菜单, 2.”口”型布局。这是一个象形的说法,就是页面一般上下各有一个广告条,左面是主菜单, 3.”三”型布局。这种布局多用于国外站点,国内用的不多。特点是页面上横向两条色块,将 4.对称对比布局。顾名思义,采取左右或者上下对称的布局,一半深色,一半浅色,一般用于 5.POP布局。POP引自广告术语,就是指页面布局象一张宣传海报,以一张精美图片作为页面 以上总结了目前网络上常见的布局,其实还有许许多多别具一格的布局,关键在于你的创意和 1.加强视觉效果 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
23、《成功项目管理训练营》深圳 课程背景: 为加强企业内部项目管理的计划、控制和有效执行,同时在执行层增强项目计划和控制能力,在操作层增强项目管理工具和技术的操作能力。本课程是在与多名中,美,日企业人士和管理咨询专家讨论的基础上,针对企业向项目式管理体制转化和项目管理能力提高设计的深度、全面的课程。在实用性上包含作者在多年项目管理工作中累积的实际案例和归纳了部分跨国集团公司在项目管理方面成功的方法,在创造性上提出了项目控制的时间分布模型及应用,具有很强的务实性和可操作性。 课程特点: 课程对象: 课程时间:2 天 授课大纲: 1.项目管理简介 2.目管理基础知识 3.项目管理基础知识 4.项目管理知识领域 5.项目组织技术 6.项目日程计划技术 7.项目资源配置技术 8.项目控制技术 9.关键链与时间箱理论简介 10 .案例分析 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
24、Java安全通信、数字证书及数字证书应用实践 Abnerchai(柴政) 2004年6月 在本文中,我用详细的语言和大量的图片及完整的程序源码向你展示了在 JAVA中如何实现通过消息摘要、消息验证码达到安全通信、以及用Java的工具生成数字证书,和用程序给数字证书签名、以及用签名后的数学证书签名applet突破applet的访问权限的过程,给出了全部例子的详细代码。 通过本文中你可以学到以下知识: • 程序间如何安全通信 • 什么是 及 如何生成消息摘要 • 什么是 及 如何生成消息验证码 • 如何使用 Java工具生成和维护数字证书库 • 如何用程序给数字证书验证签名 • 如何利用数字证书给 applet签名突破applet的访问权限 关键字:消息摘要、消息验证码、指纹、加密、安全、 Java、数字签名、applet、数字证书 一、基础知识计算机安全通信过程中,常使用消息摘要和消息验证码来保证传输的数据未曾被第三方修改。 消息摘要是对原始数据按照一定算法进行计算得到的结果,它主要检测原始数据是否被修改过。消息摘要与加密不同,加密是对原始数据进行变换,可以从变换后的数据中获得原始数据,而消息摘要是从原始数据中获得一部分信息,它比原始数据少得多,因此消息摘要可以看作是原始数据的指纹。 例:下面一段程序计算一段字符串的消息摘要 package com.messagedigest; import java.security.*; public class DigestPass { public static void main(String[] args) throws Exception{ String str=”Hello,I sent to you 80 yuan.”; MessageDigest md = MessageDigest.getInstance(“MD5”);//常用的有MD5,SHA算法等 md.update(str.getBytes(“UTF-8”));//传入原始字串 byte[] re = md.digest();//计算消息摘要放入byte数组中 //下面把消息摘要转换为字符串 String result = “”; for(int i=0;i<re.length;i++){ result += Integer.toHexString((0x000000ff&re[i])|0xffffff00).substring(6); } System.out.println(result); } } 当我们有时需要对一个文件加密时,以上方式不再适用。 又例:下面一段程序计算从输入(出)流中计算消息摘要。 package com.messagedigest; import java.io.*; import java.security.*; public class DigestInput { public static void main(String[] args) throws Exception{ String fileName = “test.txt”; MessageDigest md = MessageDigest.getInstance(“MD5”); FileInputStream fin = new FileInputStream(fileName); DigestInputStream din = new DigestInputStream(fin,md);//构造输入流 //DigestOutputStream dout = new DigestOutputStream(fout,md); //使用输入(出)流可以自己控制何时开始和关闭计算摘要 //也可以不控制,将全过程计算 //初始时是从开始即开始计算,如我们可以开始时关闭,然后从某一部分开始,如下: //din.on(false); int b; while((b=din.read())!=-1){ //做一些对文件的处理 //if(b==’$’) din.on(true); //当遇到文件中的符号$时才开始计算 } byte[] re = md.digest();//获得消息摘要 //下面把消息摘要转换为字符串 String result = “”; for(int i=0;i<re.length;i++){ result += Integer.toHexString((0x000000ff&re[i])|0xffffff00).substring(6); } System.out.println(result); } } 当 A和B通信时,A将数据传给B时,同时也将数据的消息摘要传给B,B收到后可以用该消息摘要验证A传的消息是否正确。这时会产生问题,即若传递过程中别人修改了数据时,同时也修改了消息摘要。B就无法确认数据是否正确。消息验证码可以解决这一问题。 使用消息验证码的前提是 A和B双方有一个共同的密钥,这样A可以将数据计算出来的消息摘要加密后发给B,以防止消息摘要被改。由于使用了共同的密钥,所以称为“验证码”。 例、下面的程序即可利用共同的密钥来计算消息摘要的验证码 package com.mac; import java.io.*; import java.security.*; import javax.crypto.*; import javax.crypto.spec.*; public class MyMac { public static void main(String[] args) throws Exception{ //这是一个消息摘要串 String str=”TestString”; //共同的密钥编码,这个可以通过其它算法计算出来 byte[] kb={11,105,-119,50,4,-105,16,38,-14,-111,21,-95,70,-15,76,-74, 67,-88,59,-71,55,-125,104,42}; //获取共同的密钥 SecretKeySpec k = new SecretKeySpec(kb,”HMACSHA1″); //获取Mac对象 Mac m = Mac.getInstance(“HmacMD5”); m.init(k); m.update(str.getBytes(“UTF-8”)); byte[] re = m.doFinal();//生成消息码 //下面把消息码转换为字符串 String result = “”; for(int i=0;i<re.length;i++){ result += Integer.toHexString((0x000000ff&re[i])|0xffffff00).substring(6); } System.out.println(result); } } 使用以上两种技术可以保证数据没有经过改变,但接收者还无法确定数据是否确实是某个人发来的。尽管消息码可以确定数据是某个有同样密钥的人发来的,但这要求双方具有共享的密钥,若有一组用户共享,我们就无法确定数据的来源了。 数字签名可以解决这一问题。数字签名利用非对称加密技术,发送者使用私钥加密数据产生的消息摘要(签名),接收者使用发送者的公钥解密消息摘要以验证签名是否是某个人的。由于私钥只有加密者才有,因此如果接收者用某个公钥解密了某个消息摘要,就可以确定这段消息摘要必然是对应的私钥持有者发来的。 使用数字签名的前提是接收数据者能够确信验证签名时(用发送者的私钥加密消息摘要)所用的公钥确实是某个人的 (因为有可能有人假告公钥)。数字证书可以解决这个问题。 数字证书含有两部分数据:一部分是对应主体(单位或个人)的信息,另一部分是这个主体所对应的公钥。即数字证书保存了主体和它的公钥的一一对应关系。同样,数字证书也有可能被假造,如何判定数字证书的内容的真实性呢?所以,有效的数字证书必须经过权威 CA的签名,即权威CA验证数字证书的内容的真实性,然后再在数字证书上使用自己的私钥签名(相当于在证书加章确认)。 这样,当用户收到这样的数字证书后,会用相应的权威 CA的公钥验证该证书的签名(因为权威的CA的公钥在操作系统中己经安装)。根据非对称加密的原理,如果该证书不是权威CA签名的,将不能通过验证,即该证书是不可靠的。 若通过验证,即可证明此证书含的信息(发信人的公钥和信息)是无误的。于是可以信任该证书,便可以通过该证书内含的公钥来确认数据确实是发送者发来的。 于是,双方通信时, A把数据的消息摘要用自己的私钥加密(即签名),然后把自己的数字证书和数据及签名后的消息摘要一起发送给B,B处查看A的数字证书,如果A的数字证书是经过权威CA验证可靠的,便信任A,便可使用A的数字证书中附带的A的公钥解密消息摘要(这一过程同时确认了发送数据的人又可以解密消息摘要),然后通过解密后的消息摘要验证数据是否正确无误没被修改。 利用这一原理,我们可以突破 java的applet小程序在浏览器中的权限,由于默认的applet权限控制不允许它访问操作系统级的一切。于是我们可以用我们数字证书来给applet签名,然后客户端收到该applet时,系统会自动查看给该applet签名的数字证书并提供给终端用户判定是否信认该数字证书,如果用户信认,则该applet便有了访问系统的权限。 二、 Java中的数字证书的生成及维护方法一、前言Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。 每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码。 在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。这些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,它们的意思是: CN(Common Name名字与姓氏) OU(Organization Unit组织单位名称) O(Organization组织名称) L(Locality城市或区域名称) ST(State州或省份名称) C(Country国家名称) 可以采用交互式让工具提示输入以上信息,也可以采用参数 -dname “CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx”来自动创建。 二、示例如下所示一句采用交互式创建一个证书,指定证书库为 abnerCALib,创建别名为abnerCA的一条证书,它指定用RSA算法生成, 且指定密钥长度为 1024,证书有效期为3650天: C:/j2sdk1.4.1_01/mykeystore>keytool -genkey -alias abnerCA -keyalg RSA -keysize 1024 -keystore abnerCALib -validity 3650 如下图所示: 上图中最后一步,我们输入的是 CN,代表中国的缩写,也可以直接输入“中国”两个字。 三、证书的操作方法• 证书的显示 如: keytool –list –keystore abnerCALib 将显示 abnerCALib证书库的的所有证书列表:如下图示: 又如: keytool -list -alias abnerCA -keystore abnerCALib 将显示 abnerCALib证书库中别名为abnerCA的证书的信息。如下图所示: 又如: keytool -list -v -alias abnerCA -keystore abnerCALib 将显示证书的详细信息( -v参数)如下图所示: • 将证书导出到证书文件 如: keytool -export -alias abnerCA -file abnerCA.cer -keystore abnerCALib 将把证书库 abnerCALib中的别名为abnerCA的证书导出到abnerCA.cer证书文件中, 它包含证书主体的信息及证书的公钥,不包括私钥,可以公开,如下图所示 : 上面导出的证书文件是以二进制编码文件,无法用文本编辑器正确显示,因此不利用公布证书,可以加上 -rfc参数以一种可打印的编者编码输出。 如: keytool -export -alias abnerCA -file abnerCA.cer -keystore abnerCALib -storepass 100200 –rfc 这个命令在命令行中指定了证书库的访问密码,同时指定以可查看编码的方式输出。 3、通过证书文件查看证书的信息 通过命令 :keytool –printcert –file abnerCA.cer可以查看证书文件的信息。 也可以在 windows中双击产生的证书文件直接查看。 • 证书条目的删除 keytool的命令行参数-delete可以删除密钥库中的条目,如: keytool -delete -alias abnerCA -keystore abnerCALib 这条命令将 abnerCALib库中的abnerCA这一条证书删除了。 • 证书条目口令的修改 如: keytool –keypasswd –alias abnerCA –keystore abnerCALib 可以以交互的方式修改 abnerCALib证书库中的条目为abnerCA的证书。 Keytool –keypasswd –alias abnerCA –keypass 123456 –new 200100 –storepass 1002 00 –keystore abnerCALib 这一行命令以非交互式的方式修改库中别名为 abnerCA的证书的密码为新密码123456,行中的200100是指该条证书的原密码, 1002 00是指证书库的密码。 三、数字证书的签发(签名)我们在上面创建好了数字证书,但这些数字证书还没有经过权威 CA的证实(即签名)。一般情况下,我们需要将这些证书发送给权威的CA,并申请其签名以确认数字证书让客户信任。 下面我们将模仿自己是一个权威的数字证书认证机构 CA,这个机构将采用自己的私钥来签发其它的证书。这个签发过程是这样的:我们自己是CA,我们自己有一个自签的数字证书存入数字证书库中。在数字证书库中的这个我们的CA数字证书,它含有私钥,公钥和我们这个CA的主体信息。下面这一个指令可以创建一个CA的自签的数字证书: keytool –genkey –dname “CN=美森系统软件有限公司,OU=美森系统软件有限公司,O=美森系统软件有限公司,L=成都市,ST=四川省,C=中国” –alias MissionCA –keyalg RSA –keysize 1024 –keystore abnerCALib –keypass 200100 –storepass 100200 –validity 3650 上面,我们在 abnerCALib这个数字证书库中创建了一个别名为:missionCA、有效期为3650天、算法为RSA且密钥长度为1024的数字证书,这条证书的私钥密码为:200100,证书库的访问密码为:100200。这条别名为missionCA的证书代表我们自己的权威CA即:美森系统软件有限公司这个权威CA。以后我们将用这个证书来签名其它的数字证书。 现在我要给自己申请一个数字证书,我可以这么做:先在数字证书库中创建一条证书: keytool –genkey –dname “CN=柴政,OU=美森系统软件有限公司,O=美森系统软件有限公司,L=成都市,ST=四川省,C=中国” –alias abnerCA –keyalg RSA –keysize 1024 –keystore abnerCALib –keypass 200100 –storepass 100200 –validity 3650 这样创建了一个别名为 abnerCA的数字证书,我们可以将它导出为cer文件(见前)。 接着,我们可以用上一步生成的 CA的自签证书来签名我这个数字证书了。 CA签名数字证书的过程需用以下程序来进行,这个程序是自解释的: package com.security; import java.io.*; import java.security.*; import java.security.cert.*; import java.util.*; import java.math.*; import sun.security.x509.*; /** * <p>Description: 该程序根据签发者(CA)的证书信息(即CA的私钥)来对被签发者 * 的证书进行签名,过程即是使用CA的证书和被签证书来重构形成一个新的证书</p> * @author abnerchai * @version 1.0 */ public class SignCert { public static void main(String[] args) throws Exception{ char[] storepass = “100200”.toCharArray();//存放CA证书和被签证书的证书库的访问密码 char[] cakeypass = “200100”.toCharArray();//CA数字证书条目的访问密码 String alias = “missionCA”;//CA证书在证书库中的别名,这个CA的证书用来签名其它的证书 String name = “abnerCALib”;//存放CA证书和被签证书的证书库的名字 String newLib = “SignedLib”;//新证书库的名字,如果需要将签名后的证书放入新库,这是新库的名字 char[] newLibPass = “100200”.toCharArray();//设置新库的访问密码 String cerFileName = “abnerCA.cer”;//被签证书的证书文件名 String aliasName = “abnerCA”;//被签证书在证书库中的alias别名 char[] namePass = “200100”.toCharArray();//被签证书的条目在证书库的私钥密码 int n =3; //被签证书的有效期,以年为单位,以当前时间开始计算 int sn = 200406001;//序列号可自己定义,这里定义的意义为2004年6月签发,是本年度CA签发的第多少个以001计算,要求唯一 String afteraliasName = “abnerCA_Signed”; //签名后新产生的被签过名的证书在库中的别名 char[] afterNewPass = “200100”.toCharArray(); //签名后新产生的被签过名的证书在库的条目的私钥的密码 //装载证书库 FileInputStream in = new FileInputStream(name); KeyStore ks = KeyStore.getInstance(“JKS”);//JKS为证书库的类型 ks.load(in,storepass); //从证书库中读出签发者(CA)的证书 java.security.cert.Certificate cl = ks.getCertificate(alias);//读出一个CA证书,这里的l是字母l不是数据字1 PrivateKey privateKey = (PrivateKey)ks.getKey(alias,cakeypass);//根据别名和证书密码读出CA证书的私钥 in.close(); //从证书库中读出的签发者(CA)的证书中提取签发者的信息 byte[] encodl = cl.getEncoded();//提取证书的编码,这里是字母l不是数据字1 X509CertImpl cimpl = new X509CertImpl(encodl);//这里是字母l不是数据字1,根据证书的编码创建X509CertImpl类型的对象 //根据上面的对象获得X509CertInfo类型的对象,该对象封装了证书的全部内容。 X509CertInfo cinfo_first = (X509CertInfo)cimpl.get(X509CertImpl.NAME+”.”+X509CertImpl.INFO); //然后获得X500Name类型的签发者信息 X500Name issuer = (X500Name) cinfo_first.get(X509CertInfo.SUBJECT+”.”+CertificateIssuerName.DN_NAME); //获取待签发的证书,即获取被签发者的证书 //可从密钥库中获取,也可从导出的证书文件中获取,这里给出两种方式 /// //方式一、采用从导出的cer文件中获取 start /// /* CertificateFactory cf = CertificateFactory.getInstance(“X.509”);//X.509是使用最多的一种数字证书标准 FileInputStream in2 = new FileInputStream(cerFileName);//被签证书文件 java.security.cert.Certificate c2 = cf.generateCertificate(in2);//生成需要被签的证书 in2.close(); byte[] encod2 = c2.getEncoded(); X509CertImpl cimp2 = new X509CertImpl(encod2); //获得被签证书的详细内容,然后根据这个证书生成新证书 X509CertInfo cinfo_second = (X509CertInfo)cimp2.get(X509CertImpl.NAME+”.”+X509CertImpl.INFO); */ /// //end 方式一 /// /// //方式二、从证书库中读出被签的证书 start /// java.security.cert.Certificate c3 = ks.getCertificate(aliasName);//从证书库中读出被签证书,然后生成新的证书 byte[] encod3 = c3.getEncoded(); X509CertImpl cimp3 = new X509CertImpl(encod3); X509CertInfo cinfo_second = (X509CertInfo)cimp3.get(X509CertImpl.NAME+”.”+X509CertImpl.INFO); /// //end方式二 /// //设置新证书的有效期,使之为当前向后n年有效,新证书的 //截止日期不能超过CA证书的有效日期 Date beginDate = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(beginDate); cal.add(cal.YEAR,n); Date endDate = cal.getTime(); CertificateValidity cv = new CertificateValidity(beginDate,endDate); cinfo_second.set(X509CertInfo.VALIDITY,cv); //设置新证书的序列号 CertificateSerialNumber csn = new CertificateSerialNumber(sn); cinfo_second.set(X509CertInfo.SERIAL_NUMBER,csn); //设置新证书的签发者 cinfo_second.set(X509CertInfo.ISSUER+”.”+CertificateIssuerName.DN_NAME, issuer); //新的签发者是CA的证书中读出来的 //设置新证书的算法,指定CA签名该证书所使用的算法为md5WithRSA AlgorithmId algorithm = new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid); cinfo_second.set(CertificateAlgorithmId.NAME+”.”+ CertificateAlgorithmId.ALGORITHM,algorithm); //创建新的签名后的证书 X509CertImpl newcert = new X509CertImpl(cinfo_second); //签名,使用CA证书的私钥进行签名,签名使用的算法为MD5WithRSA newcert.sign(privateKey,”MD5WithRSA”);//这样便得到了经过CA签名后的证书 //把新证书存入证书库 //把新生成的证书存入一个新的证书库,也可以存入原证书库, //存入新证书库,则新证书库中不仅包含原证书库中的所有条目, //而且新增加了一个这次产生的条目。注意,这时,新产生的签名后的证书只 //包括公钥和主体信息及签名信息,不包括私钥信息。这里给出两种方式。 /// //方式一:存入新密钥库 /// /* ks.setCertificateEntry(afteraliasName,newcert); FileOutputStream out = new FileOutputStream(newLib); //存入新库signedLib,并设置新库的库访问密码 ks.store(out,newLibPass); out.close(); */ /// //end 方式一 /// //也可以采用另外一种方式,存入原证书库中 //存入原库中,即在原证书库中增加一条证书,这个证书是原证书经过签名后的证书 //这个新证书含有私钥和私钥密码 /// //方式二,存入原密钥库 /// //先在原库中读出被签证书的私钥 PrivateKey prk = (PrivateKey)ks.getKey(aliasName,namePass); java.security.cert.Certificate[] cchain = {newcert}; //存入原来的库,第二个参数为原证书的私钥,第三个参数为新证书的私钥密码,第三个参数为新证书 ks.setKeyEntry(afteraliasName,prk,afterNewPass,cchain); //用新密钥替代原来的没有签名的证书的密码 FileOutputStream out2 = new FileOutputStream(name); ks.store(out2,storepass);//存入原来的库中,第二个参数为该库的访问密码 /// //end 方式二 /// } } 运行以上程序,即可运用 MissionCA证书来签发abnerCA证书,运行后在abnerCALib中增加一条别名为abnerCA_Signed的数字证书,我们将它导出为cer文件(导出方法见前)。 至此,我们己经用 CA的证书以我们的数字证书签名了。在windows中,双击导出的abnerCA_Signend.cer文件,出现如下图所示: 上图中证书信息一栏显示“不能验证该证书”,原因是因为,我们的这个数字证书的签发者 missionCA证书没有安装到系统中。我们可以将证书库中别名为missionCA的自签数字证书导出为cer文件,然后安装到系统中。再次查双击看此证书,如下图所示: 到此,我们己经获得了一个由我们自己的 CA签名颁发的个人数字证书。并且将我们自己的CA证书安装到系统中成为系统信任的根证书。于是,以后只要是由我们的这个CA证书签名颁发的数字证书都会受到系统的信任。 四、利用数字证书给 applet签名现在假设我们公司给 xx公司做一个项目,这个项目中需要用到applet,且这些applet需要特权以实现一些特殊的功能(如读出客户端用户系统中C:/winNT/system.ini文件中的内容并显示)。那么我们可以颁发一个数字证书,并给这个数字证书签名,然后用签名后的这个数字证书来签名我们的applet,使客户信任。具体过程如下: 一、生成一个用于此项目签名 applet 的数字证书,别名定为: mission_water生成一个用于此项目签名的数字证书如下: keytool –genkey –dname “CN=美森软件-水公司项目,OU=美森系统软件有限公司,O=美森系统软件有限公司,L=成都市,ST=四川省,C=中国” –alias Mission_Water –keyalg RSA –keysize 1024 –keystore abnerCALib –keypass 200100 –storepass 100200 –validity 3650 二、用我们的 CA(missinCA) 来签发这个数字证书然后,运行我们在前面第三节中给定的程序,注意:运行此程序前,请修改以下参数: String cerFileName = “Mission_Water.cer”; String aliasName = “Mission_Water”; String afteraliasName = “Mission_Water_Signed”; 然后运行,程序会在 abnerCALib证书库中产生一个别名为:Mission_Water_Signed的数字证书,这个证书是经过我们的CA(MissionCA)签发的。 下面,我们用以下指令导出这个证书: keytool -export -alias Mission_Water_Signed -file Mission_Water_Signed.cer -keystore abnerCALib -rfc 会生成一个 Mission_Water_Signed.cer 文件。 三、用签发后的数字证书来签名我们的 applet我们现在来做一个简单的 applet,它的代码如下: package com.applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.io.*; public class ShowFileApplet extends JApplet { private boolean isStandalone = false; private String content = “文件的内容是:”; //自定义的提示信息 private String fileName = “C://WINNT//system.ini”;//读出这个文件的内容 private TextArea ta = new TextArea(10,80);//自定义的输出框 public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } public ShowFileApplet() { } public void init() { try { jbInit(); myInit();//自己定义的方法 } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.setSize(new Dimension(400,300)); } /** * 自定义的初始化方法,读入系统中的一个文件的内容并保存起来,然后,增加一个 * 可视化的输出框 */ private void myInit(){ String s; BufferedReader in; try { in = new BufferedReader(new FileReader(fileName)); while ( (s = in.readLine()) != null) { content +=s + “/n”; } }catch (IOException ex) { ex.printStackTrace(); } System.out.println(content); ta.setText(content); getContentPane().add(ta); } /* *重载的方法,输出内容 **/ public void paint(Graphics g){ ta.setText(content); } public String getAppletInfo() { return “Applet Information”; } public String[][] getParameterInfo() { return null; } //static initializer for setting look & feel static { try { } catch(Exception e) { } } } 好了,这个 applet写好了,下面我们来把这个applet编译打包成jar文件。 编译此 applet文件,会在当前目录(当前目录为classes目录)下生成一个com/applet的目录结构,在applet目录下有一个ShowFileApplet.class,进入当前目录,执行: jar cvf myapplet.jar com/applet/*.* 于是在当前目录下产生一个 myapplet.jar文件。 然后再在当前目录(当前目录为 classes目录)下新建一个applet目录,专门存放applet的jar文件,把前面生成的数字证书库abnerCALib这个文件也copy到applet目录下面来,同时把刚才生成的myapplet.jar文件也移到applet目录下面来。然后进入该目录执行: jarsigner -keystore abnerCALib myapplet.jar Mission_Water_Signed Enter Passphrase for keystore: 100200 Enter key password for Mission_Water_Signed: 200100 即用 Mission_Water_Signed这个我们的CA签发的数字证书给这个applet签名了。 四、运行我们的 applet我们来写一个 html文件来运行这个签名后的applet,内容如下: <!– ShowFileApplet.html –> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=GB2312″> <title>HTMLTestPage</title> </head><body> applet将会显示,如果你的浏览器支持Java<br> <applet archive = “./applet/myapplet.jar” code = “com.applet.ShowFileApplet.class” name = “TestApplet” width = “400” height = “300” hspace = “0” vspace = “0” align = “middle” > </applet> </body> </html> 这个 HTML文件可以运行applet,但如果浏览器不支持Java,即没有安装JRE,它不会提示用户去下载安装。我们可以用Java自带的htmlconverter工具转换一下这个HTML文件,转换后的文件可以在支持JAVA2的浏览器中(不管该浏览器是否设置了使用java2运行applet,它都会在Java2环境中运行applet,如果浏览器不支持Java2,则会自动下载所需的文件。 在 DOS方式下运行htmlconverter,弹出如下图所示画框,按图中所示选择刚才的那个HTML文件,如下图所示: 点“转换”,将会在当前目录下生成一个 HTML文件,并把原来的HTML文件备份了。 生成后的 HTML文件内容如下所示: <!– ShowFileApplet.html –> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=GB2312″> <title>HTMLTestPage</title> </head> <body> applet将会显示,如果你的浏览器支持Java<br> <OBJECT classid = “clsid:CAFEEFAC-0014-0001-0001-ABCDEFFEDCBA” codebase = “http://java.sun.com/products/plugin/autodl/jinstall-1_4_1_01-windows-i586.cab#Version=1,4,1,1” WIDTH = “400” HEIGHT = “300” NAME = “TestApplet” ALIGN = “middle” VSPACE = “0” HSPACE = “0” > <PARAM NAME = CODE VALUE = “com.applet.ShowFileApplet.class” > <PARAM NAME = ARCHIVE VALUE = “./applet/myapplet.jar” > <PARAM NAME = NAME VALUE = “TestApplet” > <PARAM NAME = “type” VALUE = “application/x-java-applet;jpi-version=1.4.1_01”> <PARAM NAME = “scriptable” VALUE = “false”> <COMMENT> <EMBED type = “application/x-java-applet;jpi-version=1.4.1_01” CODE = “com.applet.ShowFileApplet.class” ARCHIVE = “./applet/myapplet.jar” NAME = “TestApplet” WIDTH = “400” HEIGHT = “300” ALIGN = “middle” VSPACE = “0” HSPACE = “0” scriptable = false pluginspage = “http://java.sun.com/products/plugin/index.html#download”> <NOEMBED> </NOEMBED> </EMBED> </COMMENT> </OBJECT> </body> </html> 双击打开运行这个文件或把这个文件及 applet目录发布到WEB Server中去,可以访问运行这个applet。运行时,弹出如下图所示对话框: 如果此时你点“是”,则在这次会话过程中,此 applet具有访问本地文件系统的权限,但下次运行时还要提示此信息。如果你点“总是有效”则以后每次访问此类含有由Mission_Water_Signed数字证书签发的applet页面,都不会再弹出此选择框。因为:你选择了总是有效,这样,Java会在Java Plug-in中记录这个信任的数字证书,除非你把Java Plug-in中记录的这个信任证书删除。在win2k中,可以在“控制面版”->Java Plug-in中看到。如下图所示: 点选择“总是有效”后,该程序运行的结果如下图所示: 五、作者简介:abnerchai( 柴政 ), 24岁,西南交通大学计算机与通信工程学院~计算机应用技术硕士研究生、高级程序员。熟悉VC++/JAVA编程,主要研究方向为:网络安全,j2EE/中间件技术,工作流技术(wfmc)。个人联系方式为:josserchai@yahoo.com ;目前在成都美森系统软件有限公司兼职从事基于IBM WAS/WSAD平台的J2EE/EJB/JCE/JMS/JDBC/Servlets/JSP/JavaScript/开发。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
25、为测试 Java 应用程序生成证书链 使用 OpenSSL 工具箱 Paul H. Abbott
如果正在开发用于公钥基础设施 (PKI) 实现安全性的 Java 软件,那么通常需要创建 数字证书链 (也称为 证书路径) 以进行测试。这是比较简单的任务,但是关于它的文档说明非常少。本文描述了如何用开源 OpenSSL 工具箱 (请参阅 参考资料)创建任意长度的证书链。还介绍了一些常见的证书属性并分析了一个读取证书到 Java keystore 中的示例应用程序。 数字证书:快速回顾 数字证书的主要用途是验证签名数据的来源,如电子邮件和 JAR 文件。用证书验证签名的数据使接收者知道数据的来源以及它在传输过程中是否改变过。 在高层,一个数字证书包含一个 惟一名 (DN) 和一个 公钥。DN 标识一个具有与证书的公钥匹配的 私钥 的实体——如一个人。通过用私钥对证书签名并将签名放到证书中而将两者结合到一起。 一个由匹配证书公钥的私钥签名的证书称为 自签名 证书。根证书颁发机构 (Root certification authority,CA) 证书就属于这一类。用户证书通常是由不同的私钥签名的,如 CA 的私钥。这构成了两证书链。验证用户证书为真涉及验证其证书中的签名,这需要 CA 的公钥。但在在可以使用 CA 的公钥之前,需要对封装的 CA 证书进行验证。因为 CA 证书是自签名的,所以用 CA 公钥验证证书。 用户证书需要用根 CA 的私钥签名。它可以用一个中介的私钥签名,这个私钥的证书是用 CA 的私钥签名的。这是一个三证书链的例子:用户证书、中介证书和 CA 证书。但是在链中可以有多个中介,因此证书链可以有任意的长度。 值得一提的另一点是证书可以包含额外信息,称为 extension。Extension 可以指定证书的用途以及其他内容。根据于证书的用途,某些 extension 有可能非常重要。 用 OpenSSL 创建证书 获得 OpenSSL 安装后,保证 CA.sh 和 OpenSSL 可执行文件在路径中。然后就可以开始创建根证书了。 创建根证书
这会产生一个像清单 1 的对话框,它包括我在提示符下输入的示例信息:
完成对话框后,OpenSSL 创建以下目录结构:
下面是在主目录中文件的简单说明:
您定义目录名 (在这个例子中是 demoCA) 和根证书的有效周期,在 CA.sh 中它默认为 365 天。如果想要改变这些值,必须编辑这个文件。
生成用户证书 生成一个新请求 输出文件名为 newreq.pem,包含私钥和签名请求,可以将它想像为未签名的证书。清单 2 显示了一个新请求对话框的例子。
对请求签名
注意对话框中请求的 PEM 密码是用来加密根 CA 的私钥——而不是用户的私钥——的密码。 在签名后检查 demoCA 目录,可以看到 index.txt 和 serial 文件已经更新。生成的公钥也放到了 demoCA/newcert/ 目录中,文件名反映了其序列号——如 01.pem。 这时,有了一个用户证书、一个用户私钥和根证书。如果就需要这些,那么就可到此为止了。如果想要知道如何控制证书内容或者创建一个三(或者更多)证书链,则请继续往下读。 在 CA.sh 背后 CA -newca
这个操作创建在 openssl.cnf 中的 CA_default 一节中定义的目录,尽管 CA.sh 不直接引用配置文件。如果想要使用不同的结构,需要修改 openssl.cnf 并手工创建所需要的目录。也可以修改 CA.sh 以创建目录。. 下面对 OpenSSL 的调用生成一个根证书:
CA -newreq
第一行确定生成的密钥对的长度,第二行确定生成的私钥的默认目标文件。后面两行指向同一文件的其他节。
这一节的每一部分包含最多四个值,如例子中的第二到第五行所示:
还有其他几个选项。它们包括定义自己的对象标识符 (OID) 类型和让惟一名值在配置文件中定义而不是由用户提供,这对于批处理操作会很有用。 new-request 操作的 OpenSSL 调用为:
注意 可以在 OpenSSL 文档 (请参阅 参考资料) 的 CA -sign
值得注意的是 OpenSSL 命令是
可以看到,这种配置默认情况下要求很低。值得注意的是文档声明没有在这里列出的 DN 字段将会无声无息地从签名的请求中删除。 签名第三个证书 首先重命名现有的用户请求文件为 userRequest1.pem。然后创建一个新的用户证书,将称它为 userCert1。现有的用户证书没有标记为 CA 证书,并且不能用于对其他证书签名。(只有在试图验证一个包含这种证书的证书链时才会看到这一点。) 需要添加以下一节,它使证书可以根据配置文件对证书签名:
使用以下命令来签名证书:
下一步,为第三个证书生成一个新的证书请求。可以使用 有了请求文件后,需要对它签名。如前所述,用来对请求签名的私钥默认是在配置文件中而不是
注意 假定一切顺利,在当前目录中应当有 userCert1.pem 和 userCert2.pem 文件,在 demoCA/private 目录中有根 CA 证书。这三个文件构成了证书链。如果使用 Windows,那么应当可以通过在文件浏览器中更改文件名使它们具有 .cer 扩展名,并双击它们来安装证书。 其他选项
将证书装载到 Java keystore
在清单 4 中,keystore 的密码是 结束语 本文展示了如何为使用基于 PKI 的安全性的测试 Java 应用程序创建证书链。为了不分散这个主题,我没有触及您可能会感兴趣的相关领域,如在其他应用程序 (如电子邮件) 中使用生成的证书链,如何在另一种语言中使用生成的证书链,以及证书吊销列表。如果您有意了解这些内容以及网络安全性和数字证书的复杂主题的其他领域,请参阅 参考资料 一节中提供的一些极好的信息资源。
|
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
26、关于配置证书服务器,和自己颁发企业证书 最近BOSS说希望通过电子证书来控制权限,所以自己研究了一下数字证书。发现用它 因为微软已经做好了 9、登录 我现在的是用客户端证书映射用户,来控制权限。也就是客户端机器通过证书服务申请一个证书,导入到自己机器中,然后导出PKCS #7类型证书后缀名为.P7B。然后把导出的证书导入到服务器上。之后就可以对使用 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
27、数字证书的基本概念 证书说白了就是跟身份证一样的东西,只不过是在网上使用,发证机关不是公安局而是证书中心而已。下面为了容易理解,我大概列出几点,可能不是很准确:((项目 身份证 证书姓名(单位等) 记录个人信息 与身份证相同签名(证明合法性) 公安局的防伪章 证书中心签名公 钥 无 让别人加密发给你的信息, 只有你能用相应的私钥解开。总之,证书的主要作用就跟身份证在生活中的作用一样,是你在网上的合法的身份证明,当然是不可伪造的(签名的作用)。另外,证书还通过公钥给别人(任何人)跟你进行安全对话的途径。一般来说,证书只用于非对称密钥算法中,但也有特殊的情况。证书首先要想证书发放中心(CA) 申请,获得合法的证书,然后就可以使用了。如果在IE里,直接导入到 IE里面就可以了,很简单。一般来说,安全的证书应该是有如下产生过程:自己生产私钥(保存在自己的机器里)和公钥对,根据证书中心的要求填写个人信息并将之与公钥一起发送给证书中心,证书中心检查申请人的信息,如果符合要求,则用证书中心的根证书签发合法证书,并将证书发给申请人,同时在数据库中备份,更新证书中心数据库信息。 以上是我的一点浅薄理解,如果有不对的,欢迎大家指正。 Q:证书除了x.509格式之外还有其他的格式吗? 证书文件的后缀我看到有.crt,.pem,.der。这三种是编码格式的不同吗? 用openssl ca -in req.pem -out xxxx,签署一个证书申请时,是通过xxxx来指定使用哪一种编码格式吗? A:那些后缀是无所谓的了.这些后缀的意义跟系统关系更大,文件编码是在文件里面说明的。 处理X509格式的,还有PKCS#12格式的,还有PKCS#7格式的,其它还有么?谁知道补充吧… ca 命令签发出来的都是X509证书,不过,编码格式可能是DER,也可能是PEM,但是两者其实区别很小,指定的参数看本版ca命令的介绍吧。 Q:大家好: 我想知道,客户端和服务器在进行SSL/TLS交互的时候,客户端需要自己有些什么证书或是什么东东。 服务器有些什么证书或是有什么东东?请大家能说的详细些吗? 谢谢! A:首先需要说明的是,SSL/TLS可以不使用证书建立安全信道的,方法是用DH进行密钥交换. 如果使用证书方式,一般来说,客户端的证书也是可选的. 如果使用证书,客户端跟服务器端要求的东西应该是一样或差不多的,包括: 1.客户自己的证书; 2.客户自己证书相应的私钥; 3.签发客户证书的CA的根证书以及证书链上的根证书(如果必要) 4.吊销证书列表CRL(嘿嘿,很多产品没有,安全性大大的得不到保证). Q:我现在唯一想知道的是,我如果我想和SERVER进行通讯,但是我们必须在通讯之前 通过SSL/TLS认证。前提我不能用2层以上的连接,但是我已经 建立MAC层的连接 但是SERVER把他的证书和相关信息发给我,其中都是二进制码(其中有cerficate request,cerficate和server hello down)我想用OPENSSL中提供的函数处理这些,但是不知道函数的用法及其参数的意义。也就是说我只能用OPENSSL提供 函数处理证书,而不能用他所提供的连接,而且这个证书已经导入操作系统,是否我还能用OPENSSL的代码? A:看你的需要了,如果是顶级的根证书,就是说你的CA域是自己建立的,那么你只要给自己签发一个证书就可以了,即自签名根证书,用Req和X509命令都可以实现。如果你需要一个跟其它CA域相联系的证书域(比如CFCA了,changsha很清楚了,呵呵),那么就要向别的CA申请了。 Q:请问班主,用x509怎么样创建一个自签名根证书阿? A:openssl x509 -req -in careq.pem -signkey key.pem -out cacert.pem 其中,key.pem的私钥跟careq.pem里的公钥是相应的。事实上就是使用公钥相应的私钥给公钥所在的CSR签发证书。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
28、证书是怎样的验证过程 Q:我想知道验证证书是一个什么样的过程?在验证证书的时候需要一些什么样的参数(例如是否需要私钥的支持) 还有SSL协议说的那几个过程我们是否能用单独的OPENSSL函数来完成,如果可以我们将使用什么样的函数?能 具体指出吗? A:证书验证的过程其实是一个单独的过程,不需要跟服务器交换信息,只要你得到对方的证书了,那么,你就可以进行验证过程,主要包括签名验证,证书有效期验证,已经证书是否已经吊销(在CRL中),有时候,还要验证证书是否跟服务器声明拥有者一样。整个过程是不需要私钥参与的,但需要签发该证书的CA的证书以及相关的证书链上的根证书。这些都是可以参考X509_verify_cert函数调用的缺省callback函数,要更改认证过程,可以通过更改回调函数实现的。自己好好看看源代码了,X509.c里面我记得是有的。 此外,你还可以使用下面的代码看看验证出了什么问题: verify_error=SSL_get_verify_result(con); if (verify_error != X509_V_OK) { BIO_printf(bio_err,”verify error:%s/n”,X509_verify_cert_error_string(verify_error)); } |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
29、win2000pro下 openssl安装(入门级) 此文得到了DragonKing、prgstation、adylee、soaring、srysky等人的大力支持,在此表示感谢! DragonKing 已经写过一篇此类文章。此文仅是更为详细而已,仅仅是希望以后论坛不会再有此类问题出现! 准备工作: 1 安装vc6.0 路径为默认都为默认路径。 2 下载 ActivePerl-5.8.0.806-MSWin32-x86 并安装 3下载 openssl0.96i 解压到根目录下 。如c: (我开始下载的是最新的.97a,但最后编译时候n_pkey.c老是出问题的) 开始安装:完全可以参照斑竹的文章或openssl目录下的install forw in32 1) > perl Configure VC-WIN32 : 如不成功会有明显提示 2) > ms/do_ms : 推荐使用这种方式,我第一次成功编译就是在这种方式下 :另外两种方式 如果使用也必须保证本机有编译器才能使用。 : > ms/do_masm (默认vc 自带的编译器;也也以自己下载安装) : ms/do_nasm (需要自己下载) : 3)转到C:/Program Files/Microsoft Visual Studio/VC98/bin目录(默认安装时)下 执行 vcvars32.bat 以配置环境变量。 4)跳到openssl目录下 执行> nmake -f ms/ntdll.mak :如果编译成功,最后的输出都在out32dll目录下 : 包括可执行文件 、两个dll和两个lib文件。 : 备注: 我自己是n次失败之后才最后成功的,下面是我几个主要犯错的地方。 1)使用ms/do_masm (ms/do_nasm) 方式时,要保证环境变量path 包含的几种路径下有其可执行文件。 否则就会出现 如下错误: Building OpenSSL ml /Cp /coff /c /Cx /Focrypto/md5/asm/m5_win32.obj ./crypto/md5/asm/m5_w in32.asm ‘ml’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 NMAKE : fatal error U1077: ‘ml’ : return code ‘0x1’ Stop. 最简单的办法是将可执行文件拷贝到path指定的目录。 不过用ms/do_ms就可以绕开这样的问题。我开始老是试着用ms/do_masm ,太折磨人。 2)同一个解压包,如果最后编译没有成功的话,最好是再完全解压重来。 尤其是你用不同的ms/do_(masm,nasm,ms)方式时. 3)编译不成功时,一定要注意看看其最后的错误。 我在编译过程中出现过: ./crypto/asn1/n_pkey.c(106) : error C2370: ‘NETSCAPE_PKEY_it’ : redefinition; di fferent storage class ./crypto/asn1/n_pkey.c(103) : see declaration of ‘NETSCAPE_PKEY_it’ NMAKE : fatal error U1077: ‘cl’ : return code ‘0x2’ Stop. 和 Creating library out32dll/libeay32.lib and object out32dll/libeay32.exp md5_dgst.obj : error LNK2001: unresolved external symbol _md5_block_asm_host er sha1dgst.obj : error LNK2001: unresolved external symbol _sha1_block_asm_dat der sha1dgst.obj : error LNK2001: unresolved external symbol _sha1_block_asm_hos der rmd_dgst.obj : error LNK2001: unresolved external symbol _ripemd160_block_as st_order out32dll/libeay32.dll : fatal error LNK1120: 4 unresolved externals NMAKE : fatal error U1077: ‘link’ : return code ‘0x460’ Stop. 甚至是 out of memory cann’t 。。。。。。。。等等 用97a出现第一种错误,我自己看过它的源代码,没有找到重新定义的情况(可能是在其它的c文件里),我 又下过97b 还是同样的问题,后来在其他的包里复制同名文件(大小相同的)都不行。最后我只好重新下载旧版本的包,最后编译才算通过。 对于链接错误等其它的问题,我自己还没有解决经验。以往大家补充,再有新手上路就不用太费神了! |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
30、在IIS端配置数字证书 前段时间写了点东西,可是一直不能找到客户端证书,现在又没有时间了,先贴出来,大家一起想想办法,就算为网站做贡献 :) 1. 生成自签名根证书 openssl req -x509 -newkey rsa:1024 -keyout cakey.pem -out cacert.pem -days 3650 -config e:/openssl/apps/openssl.cnf 输入下列信息: PEM pass phrase:也就是密码,输入后牢记。 然后需要输入下列信息: Country Name: CN //两个字母的国家代号 State or Province Name: guang dong //省份名称 Locality Name: guang zhou //城市名称 Organization Name: sunrising //公司名称 Organizational Unit Name: home //部门名称 Common Name: besunny //你的姓名(要是生成服务器端的证书一定要输入域名或者ip地址) Email Address: be-sunny@163.com Email地址 把cakey.pem 拷贝到out32dll/demoCA/private, 把cacert.pem拷贝到out32dll/demoCA 注: 我用的是openssl提供的openssl.cnf,openssl.exe所在目录为out32dll 2.用IIS WEB SERVER产生一个证书申请certreq.txt 打开IIS WEB SERVER——〉站点属性——〉目录安全性——〉服务器证书——〉创建一个新证书——〉现在准备请求,但稍候发送——〉 命名和安全设置:名称:server,位长:1024 组织信息:组织:sunrising,组织部门:home 站点的公用名称:网站名称(或者服务器端的ip) 地理信息:国家:CN,省市:guang dong,市:guang zhou(注意一定要与先前的根证书相同,否则签名的时候会出错误) 生成certreq.txt。 把certreq.txt拷贝到out32dll所在目录 3. 用自己的CA对证书申请签名。 openssl ca -in certreq.txt -out server.pem –config e:/openssl-0.9.6h/apps/openssl.cnf 把pem格式证书转化为x509格式 openssl x509 -in server.pem -out server.cer 4.导入服务器证书 打开IIS WEB SERVER——〉站点属性——〉目录安全性——〉服务器证书——〉处理挂起并安装证书——〉选择生成的server.cer 5.生成客户端证书 openssl req -newkey rsa:1024 -keyout clikey.pem -out clireq.pem -days 365 –config e:/openssl-0.9.6h/apps/openssl.cnf 输入下列信息: PEM pass phrase:也就是密码,输入后牢记。 然后需要输入下列信息: Country Name: CN //两个字母的国家代号 State or Province Name: guang dong //省份名称 Locality Name: guang zhou //城市名称 Organization Name: sunrising //公司名称 Organizational Unit Name: home //部门名称 Common Name: client //你的姓名(要是生成服务器端的证书一定要输入域名或者ip地址) Email Address: be-sunny@openssl.cn Email//地址 a chanllenge password:123456//证书保护密码 an optional company name:sunrising// 签名: openssl ca -in clireq.pem -out client.crt –config e:/openssl-0.9.6h/apps/openssl.cnf 生成pkcs12格式的证书 openssl pkcs12 -export -clcerts -in client.crt -inkey clikey.pem -out client.p12 安装信任的根证书 把cacert.pem改名为cacert。cer,在client端的IE中使用”工具 ‘ Internet 选项 ‘ 内容 ‘ 证书 ‘ 导入”把 我们生成的CA根证书导入,使其成为用户信任的CA。 安装个人证书 把client.p12导入到client端的IE中作为个人证书 全过程结束。 ———————————- 作者:prgstation 发表时间:2003-5-22 22:59:29 问题是你的证书链装好了吗?包括客户端和服务器端,我见你的操作步骤中好像没有服务器端安装证书链的步骤,要注意,由于IIS是作为服务运行的,所以服务器端安装证书链的时候要装到LocalMachine用户中。 ———————————- 作者:redyujulia 发表时间:2003-6-3 14:55:48 我也是同样的过程,出现了同样的问题–客户端验证时找不到导入的客户端证书! 这到底怎么回事呢?请高手指点指点 ———————————- 作者:DragonKing 发表时间:2003-6-3 18:39:43 besunny辛苦了~~~,提一点小建议(不过可能你已经做过,我没有测试环境):在IE选项->内容->证书->在选中证书后的高级选项->证书目的->选中“客户端认证”选项没有? ———————————- 作者:DragonKing 发表时间:2003-6-4 10:17:15 证书链是一系列证书的有序组合,不一定是PKCS7格式的,一般自己组成,详细的可以参考“资料下载”中一个例子。 ———————————- 作者:besunny 发表时间:2003-6-4 11:30:14 修改文章 老大,我试过,不行的。我觉得可能是还是客户端的问题,可以去下载一个客户端证书,然后试试。 ———————————- 我想超越这平凡的生活,注定现在暂时漂泊,无法停止我内心的狂热,对未来的执著,执着。。。。。。 作者:great_wjw 发表时间:2003-6-4 15:17:43 这个问题我已经解决了,哈哈 先说明解决方法: 这还是服务器端的问题 服务器端的根证书必须mmc中导入 运行mmc程序,添加证书管理单元,在信任的根证书中导入你现在用的根证书 这样客户端证书在客户端访问的时候,就可以出现了 主要原因是以前导入的时候,是用户方式导入 现在在mmc中是以计算机用户方式导入,呵呵 有问题和我联系 qq28890805 ———————————- PKI SSL |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
31、流媒体如何防止盗链 防止盗链是所有流媒体网站的大问题,小弟试着总结一下: 1.对于很多的免费流媒体服务网站,是依赖广告生存的,盗链简直和偷窃差不多,但是,我们可以在视频里加入广告,这样别人盗链相当于给你做宣传:) REAL 和 WinMedia 都有不错的广告方案 2.使用没有菜单的弹出式IE窗口,禁止鼠标右键,避免别人察看HTML源代码 4.使用自定义的ActiveX控件封装Media/REAL播放控件,对传入的URL加密,这样通过察看HTML代码是看不到URL了。 上面说的都是防止客户看到流媒体的URL,现在我们换一个思路,让盗链者得到了也没有多少用: 5.使用认证:观看节目需要用户名和密码,定期的更换用户名和密码,在论坛上发布 6.使用播放器绑定,现在的Real和WinMedia9播放器都有全球唯一的GUID,通过服务端的二次编程,纪录合法用户的信息(通过二次开发,使这个这个纪录过程只有在你的网站的协助下才能完成),只有已经记录的播放器才可以观看节目,这种方式比较适合于计费 7.定期变化文件名或者文件路径,或者是服务端口,这个给媒体文件管理带来麻烦(假如手工做这个就更加麻烦了),不过还是有人用的,不适合大型站点 8.使用动态URL: URL是不断变化的,每次点播的URL都不同,客户只能从网页上得到URL,使用一次或者一个时间段,比如广东世纪前线: 9.使用cookie,这个可以做到防止盗连和下载,可以因为cookie的局限性,流媒体服务器只能和web在一台机器上(没有测试过,理论上是如此的) 最后: 9.DRM 但是道高一尺,魔高一丈,大家一定还有关于破解和防止破解更好的方法,欢迎大家继续讨论这个话题 这里给个链接,大家可以看看下载的各种手段:) |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
32、DRM数字加密技术 数字版权保护(DRM,Digital Rights Manager) 认证计费技术 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
33、网站规划书写作 一个网站的成功与否与建站前的网站规划有着极为重要的关系。在建立网站前应明确建设网站的目的,确定网站的功能,确定网站规模、投入费用,进行必要的市场分析等。只有详细的规划,才能避免在网站建设中出现的很多问题,使网站建设能顺利进行。 网站规划是指在网站建设前对市场进行分析、确定网站的目的和功能,并根据需要对网站建设中的技术、内容、费用、测试、维护等做出规划。网站规划对网站建设起到计划和指导的作用,对网站的内容和维护起到定位作用。 网站规划书出应该尽可能涵盖网站规划中的各个方面,网站规划书的写作要科学、认真、实事求是。 网站规划书包含的内容如下: 一、建设网站前的市场分析 1、相关行业的市场是怎样的,市场有什么样的特点,是否能够在互联网上开展公司业务。 二、建设网站目的及功能定位 1、为什么要建立网站,是为了宣传产品,进行电子商务,还是建立行业性网站?是企业的需要还是市场开拓的延伸? 三、网站技术解决方案 根据网站的功能确定网站技术解决方案。 四、网站内容规划 1、根据网站的目的和功能规划网站内容,一般企业网站应包括:公司简介、产品介绍、服务内容、价格信息、联系方式、网上定单等基本内容。 五、网页设计 1、网页设计美术设计要求,网页美术设计一般要与企业整体形象一致,要符合CI规范。要注意网页色彩、图片的应用及版面规划,保持网页的整体一致性。 六、网站维护 1、服务器及相关软硬件的维护,对可能出现的问题进行评估,制定响应时间。 七、网站测试 网站发布前要进行细致周密的测试,以保证正常浏览和使用。主要测试内容: 八、网站发布与推广 1、网站测试后进行发布的公关,广告活动。 九、网站建设日程表 各项规划任务的开始完成时间,负责人等。 十、费用明细 各项事宜所需费用清单。 以上为网站规划书中应该体现的主要内容,根据不同的需求和建站目的,内容也会在增加或减少。在建设网站之初一定要进行细致的规划,才能达到预期建站目的。 |
||||||||||||||||||||||||||
↑ 返回 Top ↑ | ||||||||||||||||||||||||||
34、”打开,另存为,属性,打印”等14个JS代码 ■打开■ |
||||||||||||||||||||||||||
↑ 返回 Top ↑ |
参考文献
<script language=javascript src=script/scroll.js></script>
版权声明:本文为ningxd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。