January 7, 2008
20种让你的Apache配置更安全的方法
"声明:关于安全的事情没有保证的或者绝对的。这些建议可以让你的服务器更安全,但不要认为遵循这些建议后你的服务器就理所当然是安全的。\n另外,在这些建议中有的建议可能会降低服务器性能或者因为你的环境引起问题。我建议所作的任何改变是否适合你的需求完全由你决定。换句话说,那是你的风险。\n一、确保你安装的是最新的补丁\n如果门是敞开的话,在窗户上加锁就毫无意义。同样道理,如果你没有打补丁,继续下面的操作就没有什么必要。\n二、隐藏Apache的版本号及其它敏感信息\n默认情况下,很多Apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的Apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。\n这里有两条语句,你需要添加到你的httpd.conf文件中:\nServerSignature Off\nServerTokens Prod\nServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。ServerTokens目录被用来判断Apache会在Server HTTP响应包的头部填充什么信息。如果 …"
January 5, 2008
让mysql能够远程连接
"在远程连接mysql的时候发生的这个错误\nERROR 1130: Host *\\*.***.***.** is not allowed to connect to this MySQL server\n**1。 改表法 ** 一:首先确认3306远程端口开启。\n二:mysql默认不支持远连.必须设置。\n如下:\nroot权限进入\nmysql -u root -p密码\nuse mysql;\nupdate db set host = ‘%’ where user = ‘用户名’;\nFLUSH PRIVILEGES;\n退出.然后重启mysql. 上面的那个用户即可远连你的mysql了.\n记得为了安全一定要有个where条件。\n三:host:%表示你的数据库接受任何一个IP的访问,而如果明确访问方机器的IP,可以设置host:访问方IP,所以在网络物理连接的前提下,限制是否能连接到你的数据库跟你自身的IP地址无关。\n**2. 授权法。 ** 例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。\nGRANT ALL PRIVILEGES ON *.* TO …"
December 6, 2007
mysql中 is marked as crashed and last (automatic?)
"使用php+mysql时,用的数据库偶然一次出现了Table ‘./****/tbl_admin is marked as crashed and last (automatic?) repair failed],在此以前使用过一次myisamchk ,结果就出现这个错误提示了,在网上也找不了少办法,但都差不多,myisamchk 表名,可是提示tbl_admin.MYII不存在,在数据库目录里发现这个文件没有了,但同时多出一个tbl_admin.TMD文件,网上查了一下说是一个临时文件的,其实这些是本地的数据,要不要无所谓的,但这个问题我们得解决吧.后来用了以下方面的:\n先把这个文件做个备份,然后直接把.TMD扩展名改成.MYI了.然后用check table 命令结果成功了,呵呵,大家如果遇到此类问题不妨一试的.\n另个也可以用其它命令试一下:repair table 表名 和 check table 表名等其它命令的…"
November 23, 2007
windows下mysql定时自动备份
"对于linux或unix下备份mysql可以说很简介的,但在windows下备份,好像只有用windows自带的计划任务了.\n============== 假想环境: MySQL 安装位置:C:MySQL 论坛数据库名称为:bbs MySQL root 密码:123456 数据库备份目的地:D:db_backup\n程序代码\n@echo off C:MySQLbinmysqladmin -u root –password=123456 shutdown C:MySQLbinmysqldump –opt -u root –password=123456 bbs \u0026gt; D:db_backupbbs.sql C:MySQLbinmysqld-nt 将以上代码保存为backup_db.bat 然后使用Windows的“计划任务”定时执行该脚本即可。(例如:每天凌晨5点执行back_db.bat)"
November 23, 2007
使用mysqldump定时备份数据库的脚本
"每7天备份一次所有数据,每天备份binlog,也就是增量备份.\n(如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)\n作者对shell脚本不太熟悉,所以很多地方写的很笨 🙂\n开启 bin log\n在mysql 4.1版本中,默认只有错误日志,没有其他日志.可以通过修改配置打开bin log.方法很多,其中一个是在/etc/my.cnf中的mysqld部分加入:\n[mysqld] log-bin\n这个日志的主要作用是增量备份或者复制(可能还有其他用途).\n如果想增量备份,必须打开这个日志.\n对于数据库操作频繁的mysql,这个日志会变得很大,而且可能会有多个.\n在数据库中flush-logs,或者使用mysqladmin,mysqldump调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的).\n所以如果从来不备份,开启日志可能没有必要.\n完整备份的同时可以调用flush-logs,增量备份之前flush-logs,以便备份最新的数据.\n完整备份脚本\n如果数据库数据比较多,我们一般是几天或者一周备份一次数 …"
November 23, 2007
mysql表索引被破坏的问题及解决
"常见错误信息: Table xxx is marked as crashed and should be repaired\n用mysql的用户,经常会遇到这样的问题,检查mysql日志,错误信息为:\nTable ‘.dedecmsv4dede_archives’ is marked as crashed and should be repaired\n提示说cms的文章表dede_archives被标记有问题,需要修复。于是赶快恢复历史数据,上网查找原因。最终将问题解决。解决方法如下:\n找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:\nmyisamchk -c -r ../data/dedecmsv4/dede_archives.MYI\n然后myisamchk 工具会帮助你恢复数据表的索引。重新启动mysql,问题解决。\n问题分析:\n1、错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、 …"
November 22, 2007
MySql创建用户及授权
"GRANT 语句的语法如下: GRANT privileges (columns) ON what TO user IDENTIFIEDBY “password” WITH GRANT OPTION\n对用户授权\nmysql\u0026gt;grant rights on database.* to user@host identified by “pass“;例1:\n增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。\ngrant select,insert,update,delete on . to test1@”%” Identified by “abc”; ON 子句中*.* 说明符的意思是“所有数据库,所有的表”例2:\n增加一个用户test2密码为abc, 让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作。\ngrant select,insert,update,delete on mydb.* to test2@localhost identified by “abc”;\n例子3 增加一个 …"
November 21, 2007
PHP5中的时间相差八小时的解决办法
"法一:\nPHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时\n找到php.ini中的“;date.timezone =”这行,将“;”去掉,改成“date.timezone = PRC”(PRC:People’s Republic of China 中华人民共和国),重启Apache,问题解决。\n法二:\n安装好php5后,在论坛不经意间,在论坛上看到有人说php5.1.2的时间显示整整少8个小时,\n\u0026lt;?php echo date(\u0026#34;Y-m-d H:i:s\u0026#34;); ?\u0026gt; 结果自己测试果然是相差8小时。\n后来经过在论坛上找资料,结果终于解决,在php5以及起以上的版本,要输出本地的时间(限中国),可以这么写\n\u0026lt;?php date_default_timezone_set(\u0026#39;Asia/Shanghai\u0026#39;); echo date(\u0026#39;Y-m-d H:i:s\u0026#39;); ?\u0026gt; 这样时间相差八小时的问题就解决了!!~~~"
November 20, 2007
Smarty中in_array函数的应用
"php脚本:\n$Action= array(“article”,”soft”,”news”); $smarty = new Smarty(); $smarty-\u0026gt;assign(“Action”,$Action); 模板:\n在数组内非数组内的值"
October 28, 2007
windows下两个很有用的dns刷新命令
"首先过往command提示符下:\n先运行:ipconfig/displaydns这个命令,查看一下本机已经缓存了那些的dns信息的,然后输入下面的命令\nipconfig/flushdns\n这时本机的dns缓存信息已经清空了,我们可以再次输入第一次输入的命令来看一下,\nipconfig/displaydns"
October 24, 2007
CSS技巧DIV为空时占据空间的解决办法
"如果给div元素设置了宽度时,比如width:100%,此时div在IE中(IE6,IE7)将占据物理空间,而在FF中不占据物理空间(正确理解)。为了表述直观,将样式直接写在元素标签内:\n此时在IE中到底是什么在影响着最终的显示,又是如何解析的呢?\n可能的影响因素:字体大小(font-size),字体行高(line-height),高度(height),溢出(overflow)\n我们对上面的代码逐一添加过滤属性(具体的过程有兴趣的朋友,可以私下里实验一下,“自己动手,丰衣足食”!)\n在测试的过程中,你会发现IE6和IE7的解析也不尽相同,比如在给div设置了line-height:0; height:0; 的样式后,IE7中显示正常了,不再占据物理空间了,而IE6却依然我行我素,亦或是悲!\n最终的测试结果,最简单的方法是,给div设置高度(height)和溢出(overflow)属性:"
October 19, 2007
用PHP的ob_start();控制您的浏览器cache
"Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。\n我们先举一个简单的例子,让大家对Output Control有一个大致的印象: Example 1.\nob_start(); //打开缓冲区 echo “Hellon”; //输出 header(“location:index.php”); //把浏览器重定向到index.php ob_end_flush();//输出全部内容到浏览器 ?\u0026gt; 所有对header()函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用这个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错。如果我们去掉第一行的ob_start(),再执行此程序,我们会发现得到了一条错误提示:”Header had all ready send by”!但是加上ob_start,就不会提 …"
October 13, 2007
PHP让页面马上过期
"header(\u0026#34;Expires: \u0026#34;.gmdate(\u0026#34;D, d M Y H:i:s\u0026#34;,time()-1).\u0026#34; GMT\u0026#34;); header(\u0026#34;Last-Modified: \u0026#34;.gmdate(\u0026#34;D, d M Y H:i:s\u0026#34;).\u0026#34; GMT\u0026#34;); header(\u0026#34;Cache-Control: no-cache, must-revalidate\u0026#34;); header(\u0026#34;Pragma: no-cache\u0026#34;); "
October 12, 2007
利用ajax实现同步通信
"1。创建ajax 对象, 可以用以下通用代码, 此代码适合各种浏览器\nfunction newXMLHttpRequest() { var xmlreq = false; if (window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else { if (window.ActiveXObject) { try { xmlreq = new ActiveXObject(\u0026#34;Msxml2.XMLHTTP\u0026#34;); } catch (e1) { try { xmlreq = new ActiveXObject(\u0026#34;Microsoft.XMLHTTP\u0026#34;); } catch (e2) { } } } } return xmlreq; } 2。发送数据,ajax有2种方处理数据,同步和异步\n同步:\nfunction get_xmlhttp()\n{ var method=\u0026ldquo;GET\u0026rdquo;;//method=\u0026ldquo;post\u0026rdquo;;\nvar url=ajax.php; //接收数据后台 …"
September 27, 2007
unix 查找文件
"如果你用的是linux,首先可以考虑用locate方法,一般够用了,而且速度很快,当然在用这个命令之前要生成文件数据库[execute updatedb in console],下面的是关于find的用法,具有通用性,在unix下也可以用 每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。\n可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通常为“find”命 …"