Loading...

web 500错误的原因可能有哪些

Filed under: PHP,网站技术,虚拟主机 — 江东 @ 2009-06-24 09:47:30 才(2)条评论

可能原因如下:

web根目录权限错误。解决办法,将根目录的权限由错误的777改成755,参见下图。

php文件属性错误。解决办法,将php文件的属性改成 644

.htaccess文件错误 。 解决办法,修改.htaccess文件的内容,若在ftp下无法查看.htaccess文件,请用在本机制作一个空的.htaccess文件,上传覆盖之;

如何修改文件和文件夹的权限,请参考下图:

capanel文件管理器中:

(read on …)

写了一个基于ajax的图片文件管理器

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

用了一天的时间做了一个简单的文件管理器。

特点:

  1. 整个程序就一个文件,毕竟是用来管理图片的,php和其他文件过多不好打理;
  2. 不需要数据库,直接基于正常文件结构;
  3. 只可上传web能正常显示的图片格式(jpg,png,gif);
  4. ajax采用了缓存。文件目录一旦打开,浏览器不刷新,再次关闭和打开不会重复读取服务器内容,节约时间,这个功能耗费了80%的时间,因为要考虑到用户上传图片,修改文件夹之后缓存的局部更新;
  5. ctrl+鼠标左键可以选择多张图片;

目前还没有添加用户登录验证功能!欢迎大家去围观:0bad.com,目前只能保证在FireFox上最正常。

写在后面。有了jquery,处理dom真的好方便,缓存是本程序最伤脑筋的地方,一方面为了节约用户时间,所以load之后的数据必须以变量的方式缓存在浏览器里面,这个很简单,最麻烦的就是当用户创建文件夹、创建文件、删除文件夹、删除文件,一方面要保持左边的树形不要变化,另外一方面还好保证需要更改的缓存得以及时的更新。这个逻辑太麻烦了,所以现在依然有bug,可能还不少。

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文件

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再次覆盖保存即可。

host.storyday.com集成了部分Cpanel功能

Filed under: PHP,网站技术 — 江东 @ 2009-03-20 15:44:52 才(18)条评论

生活点滴虚拟主机 发现Cpanel还是比较强大的,也提供了API函数供第三方集成,使用起来很方便,因此cosbeta为了方便管理,把部分Cpanel的功能集成到了host.storyday.com中。

目前host.storyday.com可以自动将到期用户挂起,10日之后若不续费,挂起用户将被删除。

今天干脆把Cpanel登录也集成到host.storyday.com的后台中,这样用户就只需要登录host.storyday.com即可,登录Cpanel就不需要再次输入用户和密码了,应该会很方便,如左图所示,点击那个Cpanel的图标就可以自动登录到后台进行管理了。

同样,cosbeta也用比较BT的办法将支付宝支付直接集成进来了。这样用户续费的时候就可以直接给我支付宝汇款(因为是续费,已经使用过cosbeta的服务,所以不存在信用的问题了),然后按照流程操作即可,如下图所示:

生活点滴虚拟主机

点击续费一年,然后直接给cosbeta打款,付款回来之后,在上面的表格中填写上详细的信息:转帐金额、交易编码、真实姓名,然后点击确认,我们的系统便会去模拟人工操作:连接支付宝,查看当日交易记录,搜索交易编码、交易金额、交易人的姓名,系统一旦找到符合标准的直接转帐,便会自动将帐户续费一年,同时将此笔交易标记为已经操作。

当初有朋友在twitter问我,若是你的接口出错了怎么办?其实是没有关系的,因为这个接口只是模拟人工检查交易记录,即使检查失败,完全可以发邮件给我,我也可以人工再次检查。毕竟直接转帐是通过支付宝操作的,所以资金不存在任何风险。

就写到这里,完善一个系统是一个漫长的过程!

phpmailer 连接Gmail和web发送短信

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

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

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

(read on …)

集成paypal和支付宝支付的另外一种思路

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

我们知道,paypal和alipay(支付宝)都支持商家工具功能,不幸的是,他们都是收费的,基本上都是按照交易金额的百分比来收费。然而对于支付宝来说,需要一次性缴纳一定的费用,用来抵消今后交易中的收费。这点对于刚刚起步尝试做网络B2C服务的朋友可能无法接受。

商家工具的好处在于可以很方便的将支付方式集成在自己的网站中,稍会一点代码的人都可以根据帮助手册将其集成进来。所以cosbeta的这篇的日志就不写如何集成商家工具了,这篇日志只是想提出一个变态的解决思路,看看通过这样的方式是否可行!

假设我们将购物的方式的流程设计如下:

  1. 买家将商品添加到购物车、或者直接购买结帐;
  2. 到了结帐的页面(收银台),给买家一个支付宝直接转帐的链接,并且告诉买家直接转帐到某个帐户;
  3. 支付宝的页面是通过javascript打开的,所以收银台能够定时监控得到当前页面的变化(即使监控不到也没有关系);
  4. 买家直接转帐,然后收银台通过js获取到转帐交易的ID号码,若无法获取,则请买家手动输入;
  5. 在服务器端,登录支付宝(通过CURL),通过ID检查支付金额,若和需求金额相同,则提交订单;
  6. 完成支付;

其实上面的方式应该可行,而且这个也不会给支付宝带来任何损失,因为通过程序模拟客户端登录支付宝和用户本身登录支付宝没有什么两样,而且直接转帐超过5000之后,支付宝照样要收取手续费的,因此这种思路仅仅曲线的解决办法,不存在利用漏洞之说。

或者,支付宝本身就会拒绝非正常浏览器的登录,不过用程序模拟浏览器登录应该也不是难事。

当然,paypal也可以利用同样的方法,不过由于paypal的商家工具没有一次性费用的说法,而是按照交易金额的百分比来收费,所以完全没有这个必要。

另外,支付宝的商家工具是不是也可以来个0收费,直接从交易金额中按照一定百分比来扣除?

随便谈谈:合理设置网站的登录密码

Filed under: PHP,网站技术 — 江东 @ 2009-03-03 15:06:30 才(8)条评论

n年前,也就是大学期间,cosbeta接了几个php程序的开发,客户居然有奇怪的要求,说用户的密码要能在后台查看,以方便给用户找回密码。后来,在cosbeta的苦口婆心的劝说下,客户终于同意了cosbeta的方案:将密码加密保存在数据库中,访客不可以取回密码,只能重设密码。这样的好处有三:1.保密用户资料,即使黑客攻破MySql,也无法查看用户的密码,因为密码已经加密过;2.保护用户隐私,即便是是数据库管理员也无法查看用户的密码,从而去猜测用户其他地方可能会使用的密码;3.让用户更加信任你的站点。

为此,cosbeta在这个blog刚建立的时候还发表了一篇日志,建议大家妥善分类管理自己的密码。然而在我们的身边,密码不分等级的人比比皆是,比如有人的OA密码就设置得非常复杂,我在想,要是哪一天公司的IT部门相关人员邪恶一下,将你的密码记录下来,然后因此去推测你的银行卡密码,岂不是很危险。

不过各位放心,cosbeta在保存用户密码时,一律采用了md5(username+password)的方式将密码进行了加密,然后才保存,所以在cosbeta开发的应用中,你是无法找回密码的,只能重设。当然,即使我在这里信誓旦旦的承诺,你依然也要考虑分等级来管理你的密码,永远不要在不信任的站点使用你最重要的密码。