Loading...

一个判断网站是否和谐的思路

Filed under: 网站技术,虚拟主机 — 江东 @ 2009-05-19 17:31:56 才(10)条评论

万里长城永不到,互联网上的长城一直是网友心中的痛,它将我们保护得严严实实,密不透风,以至于墙外的好东西都无法让我们欣赏到,一旦有东西探头进来,必杀之。如今的墙已经变得不能再敏感了,就如同有过敏性鼻炎的人一样,一旦有少量的过敏原,喷嚏就会不断。

cosbeta对墙异常害怕,因为它的一个小动作就能让我忙上几十天。所以cosbeta自己写了一个小程序,来判断homezz 下面的站点是否有少量出格的语言。具体思路如下:

  1. 利用api获取homezz下面主机群所有绑定的域名,包括子域名;
  2. 每天定时用curl模拟浏览器,google和百度搜索 site:xxx.com;
  3. 截取前面搜索的几个url链接(因为每天都要执行这个动作,所以cosbeta只截取了前面10个链接);
  4. 利用php curl逐一访问这10个链接,访问之后再访问三次,比较三次的结果,若发现某个网址3次结果数据length差距明显,变分析是不是访问不拒绝;
  5. 若是访问拒绝,从api中获取该用户的cpanel帐户,suspend 之;

当然,上面的程序必须在国内的服务器上运行,或者在你本机上运行。

前天运行此程序,suspend了3个帐户,不过考虑到主要靠自律,所以cosbeta暂时取消了这个程序。

目前正在想办法进一步完善这个程序!

phpmyadmin无法导入大的SQL解决方案

Filed under: PHP,网站技术 — 江东 @ 2009-05-10 11:16:20 才(16)条评论

其实导入SQL的最快的方法还是直接登录到服务器上,直接命令行导入,没有开通SSH的服务器可以通过其他服务器中转导入,但是这些方法对于不熟悉linux命令的朋友都显得比较麻烦。所以,我昨天晚上就花了一点时间,写了一个简陋的php文件,用于导入大的sql到新的mysql数据库中。

内容如下
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'wordpress');
define('DB_HOST', 'localhost');
/*直接copy您wordpress数据库设置部分即可*/
$mysql = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("mysql connect fail, wrong password");
mysql_select_db(DB_NAME)or die("select DB fail");
mysql_query("set names utf8");
$fp = fopen("db.sql","r") or die('can not open file');
while( $s = fgets( $fp,100000 ) ){
$m .= $s;
}
$sql_content = explode(";\n",$m);
$i = 0;
$max = count($sql_content) ;
while( $i < $max ){
mysql_query( $sql_content [$i] );
if( mysql_error()) echo mysql_error()."<br />";
else{
$n ++;
}
$i ++;
}
echo "<br />mysql queries:".$n;
fclose($fp);

导入就很简单了,将需要导入的sql文件命名为db.sql,上传到网站根目录,将上面的代码保存为import.php也上传到根目录,然后运行import.php,即可完成数据库的导入。
当然,您也可以直接下载这个文件:import

注意:导入之后,请一定要删除或者重命名这个import.php文件

lamp CPANEL主机管理系统预告

Filed under: 网站技术,虚拟主机 — 江东 @ 2009-04-13 15:52:52 才(19)条评论

最近在外面跑得比较多,加上php任务不少,所以这个程序不知道何时能搞定,还是预先在这里打一个广告吧。

该程序基于php+mysql,有如下功能:

  1. 该程序只能管理lamp虚拟主机,并且该虚拟主机上装有cpanel和cpanel WHM(国外的linuxreseller虚拟主机大多如此);
  2. 集成支付宝,自动为用户开通虚拟主机帐号;
  3. 支持无尾巴推介(参见这里http://host.storyday.com/affiliate.php 南方电信问题,可能访问较慢)系统;
  4. 后台可设定多种虚拟主机PLAN,方便用户选择;
  5. 后台可以添加多个(1000个都没有问题,只要该程序所在的虚拟主机够用)reseller虚拟主机帐户,动态将用户分配到用户较少的虚拟主机上;
  6. 后台可手动停止指定帐户的虚拟主机;
  7. 可定时将未续费帐户挂起;
  8. 支持删除到期帐户;
  9. 可设定卡密续费,类似中国移动充值卡的方式;

特点:

  1. 支持多用户,方便多管理员操作;
  2. 操作日志记录清晰,方便查阅;
  3. 全站ajax,方便管理;
  4. 可定制功能(额外收费)

该系统预售价:¥3000元一套,含3年售后技术支持和3年之内的技术升级。

哈哈,若你也相同的系统,纯属巧合。

程序预览嘛,将会在一段时间之后推出!

欢迎朋友一起讨论相关技术。

Cannot modify header information

Filed under: PHP,网站技术 — 江东 @ 2009-03-28 19:19:19 才(7)条评论

请php熟练者略过此文。

既然你打算继续往下看,说明你不熟悉php或者正在入门,那么我就用最简单(不会假装高深的搬出http 协议中header的解释,其实我也不会)的说说出现这样问题的原因:

当php程序出现cannot modify header information错误的时候,从cannot modify header information的字面不难理解,表示程序无法发送header信息,一般的出错信息完整的应该是类似Warning: Cannot modify header information – headers already sent by的提示。那么下面几种情况会出现Cannot modify header information

  1. 单独的php文件session_start()之前有echo print等等输出;
  2. 在setcookie之前有echo print等等输出;
  3. 在set cookie和session_start之前有包含的文件,而这个包含的文件有输出;
  4. 在set cookie和session_start之前有包含的文件,而这个包含的文件为html或者含有html(包括<?php ?>外面的空格);
  5. 程序文件<?php之前不小心打了一个空格;
  6. 带有bom的utf8编码文件,因为有bom,所有在<?php之前其实有编辑器看不到的输出;

总之,出现这个问题的根源只有一个:那就是在session_start和setcookie之前有输出的都会出现Cannot modify header information的错误。无论是程序本身echo出来的、被include 进来的程序echo的还是php代码之外的html存在空格它们统统都是输出。

所以你若是使用wordpress,第一次安装进入后台,发现Cannot modify header information之类的错误,首先要要检查的就是wp-config.php文件中<?php之前和?>之后是不是不小心打了换行或者空格符号?是的话,则删除之。检查wp-config.php是不是utf8编码?管他是不是,用编辑器(下载一个editplus的试用版本)打开,另存为的时候,选择UTF-8再次覆盖保存即可。

phpmailer 连接Gmail和web发送短信

Filed under: PHP,网站技术 — 江东 @ 2009-03-14 22:48:17 才(4)条评论

折腾了一个小时,终于将在线发送短信给折腾成功了,哇,网友能在线给webmaster发短信,真的好高深啊!其实未必,下面我就介绍相关的一些解决方法。

首先是如何通过php连接pop3发送邮件。在旧版本的phpmailer中,要连接Gmail可不是那么一件容易的事情,需要修改核心代码,但是在新版的phpmailer中,这个问题就被完美的解决了,首先请下载phpmailer,然后利用cosbeta写的这个发送邮件的函数:

(read on …)

php缩略图制作代码

Filed under: PHP,网站技术 — 江东 @ 2009-01-13 22:06:47 才(2)条评论

今天由于上传头像需要,找到了一个很好的程序,不敢独享,特此分享出来,它就是很多朋友可能需要的东西,php制作缩略图,来自这里,代码如下:

<?php
/*
* File: SimpleImage.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 08/11/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
?>

使用起来也很简单,而且没有任何问题

$newfile = UPLOAD_DIR."/icons/".md5($_SESSION['USER']->email).".jpg";//上传文件保存的目录
$image = new SimpleImage();
$image->load($_FILES['icons']['tmp_name']);//上传的临时文件名
$image->resizeToWidth(80);设置宽度
$image->save($newfile);

shopex大大的进步了

Filed under: PHP,网站技术 — 江东 @ 2008-12-14 18:21:05 才(4)条评论

认识王总,所以接触了shopex。shopex是一个强大而简单的中文电子商城程序,因为它的强大,所以通过这个程序,不会写程序的人可以轻松在网络上开一家自己的网上商城。为什么说它简单,主要他的模板机制:

首先来说说shopex的模板是如何的简单。先给一个总体概念让大家感觉一下,那就是我大概用了不到半天的时间就能比较有信心的说自己能做这个模板了。模 板架构确实简单,比wordpress的模板机制都还要简单(也就是这个草率的保证让这个兄弟怀疑我是一个说大话的人)。shopex的每个页面都有对应 的模板框架文件,然后框架文件再去引用具体的模板文件,这样通过框架文件就可以很方便的修改页面的布局,而通过模板文件就可以自由的修改具体的内容,并且 模板文件还能被其他框架所引用,就相当于被include。这样一对一的模板系统当然就很简单了,所以制作shopex模板,上手是相当容易的(from 谈谈shopex)。

然而正是他的简单让cosbeta感到不适,因为 难易度*工作量=常数。 shopex模板设计是如此的简单以至于工作量非常大庞大,所以最终cosbeta没有再答应给王老板继续做下去了。

最近闲着没事,下载了一个新版的shopex来看看,发现新版的shopex有了很大的改变,模板基于smarty,编写更加灵活,工作量大大的减少了,而且可以嵌入php代码,很多功能就能更加容易的衍生出来了,新版本的shopex和旧版本相比,在模板引擎上已经有了一个质的飞跃。对于smarty这个东西,cosbeta在5年前都已经很熟悉了,所以用起来就更加的顺手了。

看来,或许因为这个原因,cosbeta又会再次和shopex打上交道!如此看来,基于smarty模板引擎的zen-cart应该没有多大优势可言了。

另外一件和shopex无关的小事情在这里一并记录下来:

如何给XAMPP加上zend Optimizer支持,其实XAMPP本身已经集成了zend Optimizer,只不过没有打开支持而已,所以给XAMPP添加zend Optimizer支持也是一件很容易的事情:

  1. 停止apache
  2. 打开xampp/php/php.ini 将 zend_optimizer.enable_loader = 0改成 zend_optimizer.enable_loader =1
  3. 打开xamp/apache/bin/php.ini  将 zend_optimizer.enable_loader = 0改成 zend_optimizer.enable_loader =1
  4. 重启apache即可

NetBeans IDE 6.5 For PHP

Filed under: PHP,网站技术 — 江东 @ 2008-11-27 09:45:01 只有1条评论

第一次接触到netbeans还是在大学的时候,一晃都已经快6年了,那时NetBeans仅仅支持java,是一个java开的集成开发环境,使用起来相当的方便,更好的是它是免费的。如今 Net Beans也支持php了,咱们来看看新版的NetBeans都有些什么特性吧:

新特性包括:一个针对Firefox 和IE的PHP、JavaScript调试的强健的IDE,以及支持Groovy 和Grails。NetBeans IDE 6.5还包含了大量对Java, Ruby on Rails, 和C/C++开发的增强。Java增进包括:内置对Hibernate的支持,允许引入Eclipse工程,及保存自动编译。 From CSDN

下载NetBeans IDE 6.5:
http://communications1.sun.com/r/c/r?2.1.3J1.2U2.11J8XW.CCDJGu..T.Ffaa.2CRg.DPBWEXO0

有关NetBeans IDE 6.5的更多信息:
NetBeans IDE 6.5特性:
http://communications1.sun.com/r/c/r?2.1.3J1.2U2.11J8XW.CCDJGu..T.Ffac.2CRg.DPHKEXQ0
NetBeans IDE 6.5指南和文档:
http://communications1.sun.com/r/c/r?2.1.3J1.2U2.11J8XW.CCDJGu..T.Ffae.2CRg.DPMeEXS0
指南视频:
http://communications1.sun.com/r/c/r?2.1.3J1.2U2.11J8XW.CCDJGu..T.Ffag.2CRg.DPSSEXU0