<!DOCTYPE HTML PUBLIC '-W3CDTD HTML 4.01 TransitionalEN' 'http:www.w3.orgTR.....>有什么用

宝宝妈妈2023-04-12  39

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

这个是声明一下:当前网页使用的是HTML语言,版本号HTML4.01过渡版

===========================================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">

这个是声明一下:当前网页使用的是HTML语言,版本号HTML4.01过渡版,使用的DTD(Document Type Definition文档类型定义)位于如下网址:

http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd

===========================================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">

<HTML xmlns="http://www.w3.org/1999/xhtml">

这个是声明一下:当前网页使用的是HTML语言,版本号HTML4.01过渡版,使用的DTD(Document Type Definition文档类型定义)位于如下网址:

http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd

呵呵

问题稍微有点严重了。

很明显你的网站被挂了马了。

推荐以下方式解决

1,QQ 393819177

2, 查看文件的修改日期,去服务器看相应的日志。

3,删除不是网页程序的后门。

4,检查网站的漏洞。

在网站的根目录下建个search.htm,内容如下

<html>

<head>

<title>搜索表单</title>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

</head>

<body bgcolor="#FFFFFF" text="#000000">

<form name="form1" method="post" action="search.php">

<table width="100%" cellspacing="0" cellpadding="0">

<tr>

<td width="36%">

<div align="center">

<input type="text" name="keyword">

</div>

</td>

<td width="64%">

<input type="submit" name="Submit" value="搜索">

</td>

</tr>

</table>

</form>

</body>

</html>

二,搜索程序

再在根目录下建个search.php 的文件,用来处理search.htm表单传过来的数据.内容如下

<?php

//获取搜索关键字

?$keyword=trim(?$_POST[“keyword”])

//检查是否为空

if(?$keyword==””){

echo”您要搜索的关键字不能为空”

exit//结束程序

}

?>

这样如果访问者输入的关键字为空时,可以做出提示。下面是遍历所有文件。

我们可以用递归的方法遍历所有的文件,可以用函数opendir,readdir,也可以用PHP Directory的类。我们现在用前者.

<?php

//遍历所有文件的函数

function listFiles(?$dir){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

//如果是目录就继续搜索

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file")

}

else{

//在这里进行处理

}

}

}

}

?>

在红字的地方我们可以对搜索到的文件进行读取,处理.下面就是读取文件内容,并检查内容中是否含有关键字?$keyword,如果含有就把文件地址赋给一个数组。

<?php

//?$dir是搜索的目录,?$keyword是搜索的关键字 ,?$array是存放的数组

function listFiles(?$dir,?$keyword,&?$array){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file",?$keyword,?$array)

}

else{

//读取文件内容

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

//不搜索自身

if(?$file!=”search.php”){

//是否匹配

if(eregi("?$keyword",?$data)){

?$array[]="?$dir/?$file"

}

}

}

}

}

}

//定义数组?$array

?$array=array()

//执行函数

listFiles(".","php",?$array)

//打印搜索结果

foreach(?$array as ?$value){

echo "?$value"."<br>"

}

?>

现在把这个结果和开头的一段程序结合起来,输入一个关键字,然后就会发现你的网站中的相关结果都被搜索出来了。我们现在在把它完善一下。

1,列出内容的标题

if(eregi("?$keyword",?$data)){

?$array[]="?$dir/?$file"

}

改成

if(eregi("?$keyword",?$data)){

if(eregi("<title>(.+)</title>",?$data,?$m)){

?$title=?$m["1"]

}

else{

?$title="没有标题"

}

?$array[]="?$dir/?$file ?$title"

}

原理就是,如果在文件内容中找到<title>xxx</title>,那么就把xxx取出来作为标题,如果找不到那么就把标题命名未”没有标题”.

2,只搜索网页的内容的主题部分。

做网页时一定会有很多html代码在里面,而这些都不是我们想要搜索的,所以要去除它们。我现在用正则表达式和strip_tags的配合,并不能把所有的都去掉。

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

//不搜索自身

if(?$file!=”search.php”){

//是否匹配

if(eregi("?$keyword",?$data)){

改为

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

if(eregi("<body([^>]+)>(.+)</body>",?$data,?$b)){

?$body=strip_tags(?$b["2"])

}

else{

?$body=strip_tags(?$data)

}

if(?$file!="search.php"){

if(eregi("?$keyword",?$body)){

3,标题上加链接

foreach(?$array as ?$value){

echo "?$value"."<br>"

}

改成

foreach(?$array as ?$value){

//拆开

list(?$filedir,?$title)=split(“[ ]”,?$value,”2”)

//输出

echo "<a href=?$filedir>?$value</a>"."<br>"

}

4防止超时

如果文件比较多,那么防止PHP执行时间超时是必要的。可以在文件头加上

set_time_limit(“600”)

以秒为单位,所以上面是设10分钟为限。

所以完整的程序就是

<?php

set_time_limit("600")

//获取搜索关键字

?$keyword=trim(?$_POST["keyword"])

//检查是否为空

if(?$keyword==""){

echo"您要搜索的关键字不能为空"

exit//结束程序

}

function listFiles(?$dir,?$keyword,&?$array){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file",?$keyword,?$array)

}

else{

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

if(eregi("<body([^>]+)>(.+)</body>",?$data,?$b)){

?$body=strip_tags(?$b["2"])

}

else{

?$body=strip_tags(?$data)

}

if(?$file!="search.php"){

if(eregi("?$keyword",?$body)){

if(eregi("<title>(.+)</title>",?$data,?$m)){

?$title=?$m["1"]

}

else{

?$title="没有标题"

}

?$array[]="?$dir/?$file ?$title"

}

}

}

}

}

}

?$array=array()

listFiles(".","?$keyword",?$array)

foreach(?$array as ?$value){

//拆开

list(?$filedir,?$title)=split("[ ]",?$value,"2")

//输出

echo "<a href=?$filedir target=_blank>?$title </a>"."<br>"

}

?>

到此为止,你已经做好了自己的一个搜索引擎,你也可以通过修改内容处理部分来改进它,可以实现搜索标题,或者搜索内容的功能。也可以考虑分页。这些都留给你自己吧。

这里说明一下用preg_match代替eregi,会快很多。这里只是为了通俗易懂,所以使用了常用的eregi.


转载请注明原文地址:https://54852.com/read/531651.html