制作PHP安装程序的原理和步骤
1.制作PHP安装程序的原理和步骤
检查目录或者文件的权限 修改或者添加配置文件  检查配置文件正确性  导入数据库  锁定或者删除安装文件
其实php安装程序的安装原理无非就是将数据库结构的内容导入到相应的数据库,从这个过程中重新配置链接数据库的参数和文件。然后删除或者修改安装文件。
2.制作安装程序用到的php函数
is_writable("data/config.php");
is_writeable()检查文件是否科协,用来判断文件的权限返回布尔值
fopen() fwrite() rename()

3.注意事项
1.对文件权限进行检测和相关文件夹,如缓存生成文件配置文件
2.安装文件尽可能独立,可删除可改名
3.数据库导入时,需检查
a.检查是否有简历数据库的权限
b.是否同名数据库存在
c.考虑到数据库导入的大小,是否分段处理
4.检查配置环境,各种模板的支持情况。

$file="data/config.php";
if(is_writable($file)){
 echo "没权限";
}else{
 echo "可写";
}
if(isset($_POST['install'])){
 $config_str="<?php"
 $config_str.='$mysql_host'='".$_POST[db_host]."';
$ff=fopen($file);
fwrite($ff,$config_str);
include_once("data/config.php");//载入配置文件
if(!$link=mysql_connect($mysql_host,$mysql_user,$mysql_password)){
echo(数据库链接失败);
}else{
 echo "数据库链接成功";
mysql_query(create databases "'.$mysql_database.'");
mysql_select_db(mysql_name);
$sql_query[]="<create table "'.mysql_tags.'.admin_login"
 id int (10)
>";
foreach($sql_query as $val){
 mysql_query($val);
}
echo "<script>location :href="index.php"</script>";
rename("install.php","install.lock");
}
}


php小偷程序原理及实例
ereg(正则表达式,内容,返回的数组)eregi()
file_get_contents读取整个文件函数
天气预报小偷程序
$url="http://www.baidu.com";//目标地
$fp=@fopen($url,"r") or die('超时');
$fcontent=file_get_contents($url);
ereg("<title>{.*}</title>",$fcontent,$fp);
<form method="post">
<input name="a" type="text" id="a" />
<input type="submit" name="Submit" value="查" />
</form>
<?php
$city = $_REQUEST["a"];
if ($city=="")
{
$city="菏泽";
}
$url = 'http://www.baidu.com/s?wd='.$city.'天气';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
eregi("今天((.*)今日气象指数", $lines_string, $body);
$body[0]=strip_tags($body[0]);
$body[0] = str_replace(" 今日气象指数","",$body[0]);
$body[0] = str_replace(" ","",$body[0]);
echo $city.$body[0];
?>

---------------------------

第二个


一、PHP小偷原理的实现:

1、file_get_contents()、fopen()、fwrite()的应用
咱们用华夏***牛刀小试吧,把主页的全部信息获取过来。

建立一个PHP文件:
<?php
$url='http://www.77169.com';
//file_get_contents()函数获取网页的html文档
$file=file_get_contents($url);
//建立一个新文件ImitationIndex.htm
$newfile=fopen('ImitationIndex.htm','w');
//把内容读取进去
fwrite($newfile,$file);
//关闭打开的文件
fclose($newfile);
?>

ImitationIndex.htm获取主页全部的HTML(保存好,以备下次使用)。

2、eregi()函数的应用

通过eregi()获取里的内容:
<?php
$url='http://www.77169.com';
//file_get_contents()函数获取网页的html文档
$file=file_get_contents($url);
//通过eregi()匹配获取想要的信息
eregi('<title>(.*)</title>',$file,$rg);
//建立一个新文件
$newfile=fopen('title.htm','w');
//把内容读取进去
fwrite($newfile,$rg[1]);
?>

打开title.htm可以看到已经获取了<title></title>之间的内容

从上面的两个例子,已经知道PHP小偷的实现原理,从中也知道它的不足之处,但通过AJAX可以完善它,使它可以用于实践项目中。








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

其实,采集程序最简单的思路就是:获取页面代码——分析代码——获取需要的部分——写入数据库

对于采集程序来说,使用PHP来写的话,其实不算太好的,因为PHP并不支持多线程,对于采集来说,若没有多线程,将会是非常痛苦的一件事

不过可以使用frame等来设置同时几个页面一起采集,这样就能增加速度了,在这里我不讨论怎么多线程,我只说怎么用PHP来进行简单的采集

先确定采集目标:http://cn.jokes.yahoo.com/jok/index.html

这是雅虎的笑话栏目,我就以这个来进行讲解吧

首先分析一下网页,可以知道连接形式为:<img src="http://cn.yimg.com/i/cn/px_ar.gif" width=5 height=12 border=0 hspace=5><a href="http://cn.jokes.yahoo.com/07-07-/55/27lot.html" class=list target=_blank><big>头发与智慧</big></a>

使用正则表达式将它表示出来为:/hspace=5><a href="http://cn.jokes.yahoo.com/(.*).html" class=list target=_blank>/isU

书写PHP代码:

代码
// 采集首页地址
$url = "<a href=\"http://cn.jokes.yahoo.com/jok/index.html\">http://cn.jokes.yahoo.com/jok/index.html</a>";
// 获取页面代码
$r = file_get_contents($url);
// 设置匹配正则
$preg = '/hspace=5><a href="http://cn.jokes.yahoo.com/(.*).html" class=list target=_blank>/isU';
// 进行正则搜索
preg_match_all($preg, $r, $title);


通过上面的代码,$title[1][num]就是连接的地址了,接着分析内容页,得到内容匹配正则为:/<div id="newscontent">(.*)</div>/isU

继续写代码:

代码
// 计算标题数量
$count = count($title[1]);
// 通过标题数量进行内容采集
for($i=0;$i<$count;$i++) {
   // 设置内容页地址
   $jurl = "<a href=\"http://cn.jokes.yahoo.com/\">http://cn.jokes.yahoo.com/</a>" . $title[1][$i] . ".html";
   // 获取内容页代码
   $c = file_get_contents($jurl);
   // 设置内容页匹配正则
   $p = '/<div id="newscontent">(.*)</div>/isU';
   // 进行正则匹配搜索
   preg_match($p, $c, $content);
   // 输出标题
   echo $title[1][$i] . "
";
   // 输出内容
   echo $content[$i];
}



这样,一个简单的采集工具就写出来了,其他的功能只需要再进一步的完善就可以了

完整代码:

代码
<?php
// 采集首页地址
$url = "<a href=\"http://cn.jokes.yahoo.com/jok/index.html\">http://cn.jokes.yahoo.com/jok/index.html</a>";
// 获取页面代码
$r = file_get_contents($url);
// 设置匹配正则
$preg = '/hspace=5><a href="http://cn.jokes.yahoo.com/(.*).html" class=list target=_blank>/isU';
// 进行正则搜索
preg_match_all($preg, $r, $title);
// 计算标题数量
$count = count($title[1]);
// 通过标题数量进行内容采集
for($i=0;$i<$count;$i++) {
   // 设置内容页地址
   $jurl = "<a href=\"http://cn.jokes.yahoo.com/\">http://cn.jokes.yahoo.com/</a>" . $title[1][$i] . ".html";
   // 获取内容页代码
   $c = file_get_contents($jurl);
   // 设置内容页匹配正则
   $p = '/<div id="newscontent">(.*)</div>/isU';
   // 进行正则匹配搜索
   preg_match($p, $c, $content);
   // 输出标题
   echo $title[1][$i] . "
";
   // 输出内容
   echo $content[$i];
}
?>