|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
<?php // -------------------------------------------------- // 分析返回用户操作系统名称 // -------------------------------------------------- function getSystem(){ $sys = $_SERVER['HTTP_USER_AGENT']; if(stripos($sys, "NT 6.1")) $os = "Windows 7"; elseif(stripos($sys, "NT 6.0")) $os = "Windows Vista"; elseif(stripos($sys, "NT 5.1")) $os = "Windows XP"; elseif(stripos($sys, "NT 5.2")) $os = "Windows Server 2003"; elseif(stripos($sys, "NT 5")) $os = "Windows 2000"; elseif(stripos($sys, "NT 4.9")) $os = "Windows ME"; elseif(stripos($sys, "NT 4")) $os = "Windows NT 4.0"; elseif(stripos($sys, "98")) $os = "Windows 98"; elseif(stripos($sys, "95")) $os = "Windows 95"; elseif(stripos($sys, "Mac")) $os = "Mac"; elseif(stripos($sys, "Linux")) $os = "Linux"; elseif(stripos($sys, "Unix")) $os = "Unix"; elseif(stripos($sys, "FreeBSD")) $os = "FreeBSD"; elseif(stripos($sys, "SunOS")) $os = "SunOS"; elseif(stripos($sys, "BeOS")) $os = "BeOS"; elseif(stripos($sys, "OS/2")) $os = "OS/2"; elseif(stripos($sys, "PC")) $os = "Macintosh"; elseif(stripos($sys, "AIX")) $os = "AIX"; else $os = "未知操作系统"; return $os; } // -------------------------------------------------- // 分析返回用户网页浏览器名称 // -------------------------------------------------- function getBrowser(){ $browser = $_SERVER['HTTP_USER_AGENT']; if(strpos(strtolower($browser),"netcaptor")) $exp = "NetCaptor"; elseif(strpos(strtolower($browser),"firefox")){ preg_match("/Firefox\/([^;)]+)+/i", $sys, $b); $exp = "Mozilla Firefox ".$b[1]; }elseif(strpos(strtolower($browser),"maxthon")){ preg_match("/MAXTHON\s+([^;)]+)+/i", $sys, $b); preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie); $exp = $b[0]." (IE".$ie[1].")"; }elseif(strpos(strtolower($browser),"msie")){ preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie); $exp = "Internet Explorer ".$ie[1]; }elseif(strpos(strtolower($browser),"netscape")) $exp = "Netscape"; elseif(strpos(strtolower($browser),"opera")) $exp = "Opera"; else $exp = "未知浏览器"; return $exp; } // -------------------------------------------------- // 分析返回用户ip // -------------------------------------------------- function getIp(){ $ip = ''; if ($_SERVER["HTTP_X_FORWARDED_FOR"]){ $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }elseif ($_SERVER["HTTP_CLIENT_IP"]){ $ip = $_SERVER["HTTP_CLIENT_IP"]; }elseif ($_SERVER["REMOTE_ADDR"]){ $ip = $_SERVER["REMOTE_ADDR"]; }elseif (getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); }elseif (getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); }elseif (getenv("REMOTE_ADDR")){ $ip = getenv("REMOTE_ADDR"); }else{ $ip = "unknown"; } return $ip; } ?> |
如何修改MySQL密码及开启phpMyAdmin 同步功能
修改MySQL密码
进入CMD切换到MySQL 安装目录中
比如安装路径是D:\wamp\bin\mysql\mysql5.1.36\bin
前提:MySQL用户ROOT密码为空。
输入 mysql -u root mysql
mysql> 状态下输入 update user set password=password('新密码') where user='root';
回显
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> 状态下输入 FLUSH PRIVILEGES;
回显
Query OK, 0 rows affected (0.00 sec)
mysql> 状态下输入 exit
退出 sql
重启MySQL
注意每个命令后都要加上一个分号 ";"
MySQL才开始执行该行命令
而第二个指令会让已载入记忆体的 MySQL系统资料库更新
重起 MySQL.
在更新ROOT密码后,以后要与MySQL 连接的方法为:
mysql -u root -p 新密码
如何使用phpMyAdmin管理数据库还要做相应的设置:
修改phpMyAdmin中MySQL ROOT的空改为新密码
例:d:\wamp\apps\phpmyadmin3.0.1.1下的config.inc文件中
$cfg['Servers'][$i]['password'] = ''改为
$cfg['Servers'][$i]['password'] = 'newpassword'
开启phpMyAdmin 同步功能
phpMyAdmin同步功能默认只有localhost,不能修改,这里需要在 config.inc.php里添加一个参数:
|
1 2 |
/* AllowArbitraryServer */ $cfg['AllowArbitraryServer'] = true; |
Windows 7的BitLocker为数据保驾护航
操作系统的安全泛泛而谈其实包括两个方面的内容,分别为操作系统本身的安全与操作系统上数据的安全。在Windows 7种,通过UAC控制机制、系统备份与还原等措施在很大程度上提高了操作系统的安全性与稳定性。那么我们不仅问,Windows 7 在数据安全的保护是是否也有新举措呢?这个答案是让人兴奋的。在Windows 7 中,其提出了一种新的数据保护机制,即BitLocker。这个工具可以为企业信息文件的安全保驾护航。
默认情况下,Window操作系统是不启动这个BitLocker功能的。如果企业对于数据文件的安全性要求比较高,则可以视情况来启动这个功能。那么这个功能到底有什么特色呢?其使用起来又有什么限制呢?笔者今天就为大家来解开这个谜题。
一、BitLocker与EFS加密机制的不同。
以前用过Windows操作系统的人一定了解,从2000操作系统开始,微软就在操作系统上实现了一种叫做NTFS的文件格式。这个文件格式根FAT32文件格式相比,相对来说比较安全与稳定一点。而且在这个分区格式上,微软还实现了很多让人欣喜的功能。其中EFS文件加密机制就是其中的一种。那么这个EFS文件加密机制与这个BitLocker有什么联系呢?又会有什么不同?
首先值得肯定的是,这两种技术都是很好的文件保护机制,能够在很大程度上保障数据文件的安全。不过他们有一个很大的差异,即EFS是针对特定的文件或者文件夹来进行加密的。而BitLocker则是针对整个驱动器来进行加密。也就是说,采用EFS技术的话,用户可以有选择的对一些重要的文件或者文件夹进行加密。而如果采用BitLocker的话,用户没有这个选择权。其要么对某个驱动器的所有文件夹进行加密,要么就全部不加密。这是这两种文件加密机制的主要差异。
不过他们也有很大的共同点。如无论是EFS加密系统,还是BitLocker保护机制,对于终端用户来说都是透明的。这个主要体现在如下几个方面。首先只要是合法的用户,其在访问数据的时候,是感受不到这种保护措施存在的,无论是对数据进行加密或者解密的过程,都是在后台完成,不需要用户干预。如只要在驱动器上实现了BitLocker技术,则当用户往这个驱动器中保存文件时,操作系统会自动对其加密。当下次访问时,操作系统也会自动对其进行解密。其次,如果其他非首选用户试图访问加密过的数据时,则其就会受到“访问拒绝”的错误提示。无论是EFS加密系统,还是BitLocker保护机制,其能够很好的保护用户的非授权访问。第三,他们的用户验证过程都是在登陆Windows操作系统是完成的。也就是说,他们的密钥是直接跟操作系统的帐户挂钩的。为此如果用户非法的将文件复制到其他主机上,如果没有主人用户的授权(证书),那么其他非法用户即使有了这些文件,那么他们也是无法打开的。
可见EFS与这个BitLocker保护机制具有很多的相同地方。那么为什么微软还要费力气开发这个BitLocker文件加密保护机制呢?这主要是因为这个保护机制还是有其自身很多特点的。而这些特点在某些程度上又弥补了EFS文件加密系统的不足。
二、BitLocker更方便共享。
如果某个文件夹中的文件采用了EFS加密系统加密,那么这个文件要在网络上共享是比较麻烦的。如系统管理员往往要将某个用户的证书导入到另外一个用户的操作系统,或者其他类似的手段才可以实现这文件的共享。不过如果采用BitLocker保护机制的话,则在这个文件共享上面会更加的方便。
当用户将文件保存到采用BitLocker机制的驱动器之后,系统会自动对其进行加密。但是如果用户将这个加密后的文件复制到其他没有采用BitLocker技术的驱动器中,会出现什么情况呢?此时文件会被自动解密。此时其他用户只要具有相关的权限,就可以随意的阅读。不过前提是这个复制文件的用户其具有解密的权限。到这里为止跟EFS的文件加密系统处理方法还是类似的。不过在这文件共享上双方还是有很大的不同。假设现在用户要将某个采用BitLocker加密机制加密过的文件,通过网络共享给其他的用户。此时操作系统会如何处理呢?首先需要明确的是,只要这个共享的文件仍然在这个受保护的驱动器上,那么这个文件仍然是以加密的形态保存的,操作系统不会对其解密。其次只要这个用户允许其他用户访问这个共享文件(通过授权认证来实现),那么其他用户就可以访问这个文件。而不需要像EFS加密文件系统那样,手工给其他用户导入证书等等。也就是说,在BitLocker保护机制下,这个认证授权过程对用户来说是透明的。这是BitLocker与EFS文件加密系统相比,最大的改善之一。
三、对操作系统分区的特殊保护。
EFS加密文件系统将系统文件与普通的用户文件是同等对待的。但是,BitLocker保护机制中,则对其采用了专门的保护措施,可以在最大程度上保护系统文件的安全。只要系统管理员利用BitLocker技术对系统分区进行了加密,则在操作系统启动后系统就会一直监视计算机,如会监视磁盘错误、Bios的更改、启动配置文件的更改等等,并可以防止由此带来的安全风险。如果操作系统检测到以上的这些错误,则BitLocker会自动的将这个磁盘驱动器锁住。此时系统管理员需要利用预先设置的一个密钥来解锁这个驱动器。通过这种措施可以防止操作系统的文件以及配置文件在系统管理员不知觉的情况下被修改。这对于防止木马、病毒、恶意程序等等对操作系统的破坏很有作用。
不过在对操作系统采用这个保护机制的时候,需要注意两点。首先在首次对系统分区采用加密保护机制时,需要创建一个解锁密码。否则的话,当操作系统因为遭受可疑的工具而被锁住驱动器时,系统管理员就无法对其进行解锁。而这驱动器中的文件也将无法访问。所以说,在各驱动器启用这个保护机制时,别忘了设置一个解锁的密码。其次,如果用户的电脑中安装了TPM芯片时,则可以将这个密码存储在这个芯片上。当遇到系统分区被锁住时,BitLocker就会像这块芯片所要密码进行解锁。如果将Windows 7操作系统作为服务器来使用,则为这个服务器配置一块TPM芯片并在系统分区上启用BitLocker保护机制,能够在很大程度上保障服务器系统的安全与稳定型。从这也可以看出,微软在服务器的安全与稳定性方面,一直在不断的改进。
另外如果采用EFS加密文件系统的话,只要攻击者知道了帐户与密码,则其可以登陆到操作系统。此时EFS加密文件的保护机制就失去了作用。不过BitLocker在这方面也有所改善。即使攻击者知道了用户的帐户与密码,其仍然可以采取措施来保护系统文件,即BitLocker会监测系统文件的更改。如果其发现这个更改会给操作系统带来安全上的风险时,就会采取措施拒绝其更改。到目前为止,这是EFS文件加密系统所不能够实现的功能。
可见EFS加密系统与BitLocker加密机制在实现细节上还有很大的不同。BitLocker主要在对系统分区的保护上有比较独特的表现。而且其在共享文件的管理上也更加的方便。
BitLocker数据恢复服务:http://www.datarelab.com/blog/DataRecoveryServer.html
最慢Linux计算机启动需要4小时
据国外媒体报道,一名叫做Dmitry Grinberg的国外黑客制作了一款简单的计算机设备,据称这款设备超级无敌可怕,因为它的启动速度比人们想象中的慢了上百倍。
我们先来看看这款计算机设备的硬件配置吧:
8位24MHz微处理器,16MB RAM,128KB内存,运行Linux系统,按照一般情况来 说,Linux不会在少于32位的系统上运行,因此,黑客Grinberg不得不为8位处理器编写了一个32位模拟器。事实证明,黑客就是黑客,他成功了,但是他的成功是建立在处理器时钟频率降至6.5KHz的基础上,最终导致的结果是加载命令提示符花费了两个小时!加载Ubuntu本身又花费了4个小 时!!!无语问苍天!不过,一旦启动之后,该计算机还是有点用处的。
另外,Grinberg自己也介绍称这款计算机设备也许是世界上最便宜,最慢,最简陋,最少部件量,最低端的Linux PC,他偶尔会用来格式化SD卡。(文/威锋网)

PHP中读写文件
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
在PHP中读写文件,可以用到一下内置函数: 1.fopen(创建文件和打开文件) 语法: fopen(filename,mode) filename,规定要打开的文件。mode,打开文件的模式,可能的值见下表。 mode 说明 "r" 只读方式打开,将文件指针指向文件开头。 "r+" 读写方式打开,将文件指针指向文件开头。 "w" 写入方式打开,将文件指针指向文件开头并将文件大小截为零。如果文件不存在则尝试创建。 "w+" 读写方式打开,将文件指针指向文件开头并将文件大小截为零。如果文件不存在则尝试创建。 "a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建。 "a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建。 如果成功打开文件,fopen函数的返回值是一个文件指针,如果出错,返回 FALSE。 示例: <?php $fp = fopen("test.txt", "r"); ?> 2.fclose(关闭文件) 语法: fclose(filepointer) filepointer,要关闭的文件指针。如果成功,fclose 函数返回 TRUE,如果失败,fclose 函数返回 FALSE。 示例: <?php $fp = fopen("test.txt", "r"); fclose($fp); ?> 3.feof(检测是否已到达文件末尾) 语法: feof(filepointer) filepointer,要检测的文件指针,该指针必须指向成功打开没有关闭的文件。如果文件指针到了文件末尾或者出错时,feof函数返回 TRUE。 示例: <?php $fp = fopen("test.txt", "r"); while(! feof($fp)) { echo fgets($fp). "<br />"; } fclose($fp); ?> 4.fgets(从文件指针中读取一行) 语法: fgets(filepointer) filepointer,要读取的文件指针。如果成功,从文件中读取一行并返回字符串,如果失败,返回 FALSE。 示例: <?php $fp = fopen("test.txt", "r"); if($fp) { for($i=1;! feof($fp);$i++) { echo "行".$i." : ".fgets($fp). "<br />"; } } else { echo "打开文件失败"; } fclose($fp); ?> 假设test.txt的内容为: hello world hello cnblogs hello heihaozi hello everyone 页面输出的结果为: 行1 : hello world 行2 : hello cnblogs 行3 : hello heihaozi 行4 : hello everyone 5.fwrite(写入文件) 语法: fwrite(filepointer,string) filepointer,要写入的文件指针。string,要写入的字符串。如果成功,返回写入的字符数,如果失败,返回 FALSE。 示例: view sourceprint?<?php $fp = fopen("test.txt", "w");//文件被清空后再写入 if($fp) { $count=0; for($i=1;$i<=5;$i++) { $flag=fwrite($fp,"行".$i." : "."Hello World!\r\n"); if(!$flag) { echo "写入文件失败<br>"; break; } $count+=$flag; } echo "共写入".$count."个字符"; } else { echo "打开文件失败"; } fclose($fp); ?> 页面输出的结果为: 共写入100个字符 test.txt文件会被写入: 行1 : Hello World! 行2 : Hello World! 行3 : Hello World! 行4 : Hello World! 行5 : Hello World! 注:为了简化操作,部分函数的可选参数没有列出。 |