Monthly Archives: August 2012

JQuery修改表格属性

手头上有一个封闭源代码的web软件(我无法修改源代码),其中有一个报表是是生成所有用户的List,包括姓名、邮箱、购买数量等。在生成的List中每个用户有一个checkbox用来选择用户,可以选择多个后执行操作。

我打算在生成的List中对那些没有购买过产品(也就是services)数量为0的用户发送促销邮件,就需要手工在List中一个一个的找到services为0的用户,然后点击前面的checkbox。这样不仅效率低而且容易出错。如果自动在services为0的用户前面点击的话就会很方便,不过这套web系统是闭源的,所以我无法修改源代码;不过可以通过Jquery的来自动逐行迭代table,发现如果services这一列的数值是0的话,自动把前面的checkbox设定为checked。

$(document).ready(function(){
	$("table.datatable tr td:nth-child(7)").each(
		function()
                        {
				var serviceInt = $(this).text()
				if(serviceInt == 0){
					 $(this).parent().find(':checkbox').attr('checked', true);
				}
                        }
	)
  });


1. 截取所需列

$("table.datatable tr td:nth-child(7)").each()

截取到class为datatable的表,循环的取每行第7个td的值。(由此看到了Jquery选择器的强大之处)

2. 判断

var serviceInt = $(this).text()
    if(serviceInt == 0)

判断这个td中的值是否为0

3. 执行
如果改行第七个td的值为0的话,则执行将改行(tr)中找到的checkbox赋值为checked。

$(this).parent().find(':checkbox').attr('checked', true);

其中parent()、find()等函数用起来的确很方便。

B2C平台之Opencart

Opencart是一个类似于Magento一样的B2C平台程序,但是不同于Mangeto的复杂和强大,Opencat是一个很清爽的B2C平台,轻便的MVC结构,让我觉得Opencart采取了类似Codeignter框架的设计思想,相对于Mangento使用的Zend框架,简直是轻便了许多许多。在Magento下面,如果你要修改一点内容,在不熟悉架构的前提下,至少要一天时间才能大致掌握;而我在Opencart上简单的修改了一个注册内容的部分,只修改了一个tpl模板页面和另外两个controller就可以了,不到10分钟时间。

经过大致对这两个B2C框架的观察,Mangento适合那些“大型”的B2C网站,你能够有一个团队来控制的修改你的网站;而Opencart则更适合中小型的B2C网站。甚至如果你的B2C不需要那么多复杂的流程的话,完全可以使用Opencart。

Opencart目前不足的地方在于document不足,起码没有magento那么多。不过Opencart基础的system和engner中的php文件和class也不多,简单的研究一下就差不多了。

关于PHP的register_globals的问题

register_globals容易引起PHP的安全性问题,例如下面的例子是用来检验用户是否已经登录,如果登录后就显示数据的php:

<?php
// 检查用户是否登录,如果登录就把$authorized设置为true
if (authenticated_user()) {
    $authorized = true;
}

// 但是因为我们没有在开始的时候设置$authorized为false,
//恶意用户可以通过访问auth.php?authorized=1达到通过验证的效果
// 这样的话,每个人都能看到数据了
if ($authorized) {
    include "/highly/sensitive/data.php";
}
?>

在PHP 4.2.0以后的版本中,register_globals是默认被设置为OFF的,如果有老的代码需要使用register_globals,可以在index中做如下处理:

<?php
// Emulate register_globals on
if (!ini_get('register_globals')) {
    $superglobals = array($_SERVER, $_ENV,
        $_FILES, $_COOKIE, $_POST, $_GET);
    if (isset($_SESSION)) {
        array_unshift($superglobals, $_SESSION);
    }
    foreach ($superglobals as $superglobal) {
        extract($superglobal, EXTR_SKIP);
    }
}
?>

参考:
http://www.php.net/manual/en/security.globals.php
http://www.php.net/manual/en/faq.misc.php#faq.misc.registerglobals

QR代码API

http://phpqrcode.sourceforge.net 是一个开源的php qr代码生成lib,不过本身也奉献了一个QR的api:

http://phpqrcode.sourceforge.net/qrsample.php?data=test&ecc=H&matrix=10

把data=XXX换成你想要的文本即可。

Cuteftp注册的问题

Cuteftp 8.0绿色版在连接sftp的时候经常报错,只有8.3以上的版本才能正确连接sftp。但是在网上搜索“cuteftp注册机”下载的补丁也是没用的,倒是这个reg是可用的:

Windows Registry Editor Version 5.00
[HKEY_USERS\.DEFAULT\Software\GlobalSCAPE]
"RegUserName"="Cracked by RxZcums"
[HKEY_USERS\.DEFAULT\Software\GlobalSCAPE\CuteFTP 8 Professional]
"RegUserName"="Cracked by RxZcums"
[HKEY_USERS\.DEFAULT\Software\GlobalSCAPE\CuteFTP 8 Professional\Value]
"1"=hex:41,41,45,33,39,55,47,47,35,4e,46,39,41,44,00
"3"=hex:41,6c,6c,20,73,65,72,69,61,6c,73,20,61,72,65,20,65,78,70,6f,73,65,64,\
  20,61,6e,64,20,79,6f,75,20,73,74,69,6c,6c,20,63,68,65,63,6b,20,66,6f,72,20,\
  74,68,65,20,73,69,6c,6c,79,20,41,32,32,32,32,32,32,32,32,32,32,32,32,32,2c,\
  20,47,65,74,20,4c,6f,73,74,21,00

另存为reg文件,双击导入即可