默认情况下1小时内50次登录失败会封IP。下面SQL可改修改该次数:
update variable set value='i:60000;' where name='user_failed_login_ip_limit';
默认情况下1小时内50次登录失败会封IP。下面SQL可改修改该次数:
update variable set value='i:60000;' where name='user_failed_login_ip_limit';
绕过“检测到一个非法的选择”问题
默认情况下,Drupal7输错5次口令/密码会锁定账号21600秒。以下语句可改写这个规则:
update variable set value='i:5;' where name='user_failed_login_user_limit';
参考school_users_import
1. 注册theme
function weike_course_evaluate_theme() {
return array(
'weike_course_evaluate_all' => array(
'render element' => 'form',
),
);
}
2. 生成form,数据以value类型form元素传递。
function weike_course_evaluate_all($form, &$form_state) {
$result = db_query('…');
$form['data'] = array();
$ret = db_query('SELECT * FROM test_table WHERE tid = :tid', array(':tid' => $tid);
db_query语句返回的是一个对象,但是这个对象可以通过foreach遍历,就好像$ret是一个数组一样遍历。其成员是对象。
foreach ($ret as $row) {
echo $row->tid;
}
要注意的是,db_query语句返回的结果虽然可以项数组一样遍历,但只能遍历一次。其内部的实际逻辑是遍历的时候向数据库获取新一行数据,当数据获取完之后并不会重头再获取。
要学习Drupal 7作为PHP框架的应用首先要学习怎样写模块,我们以创建一个最简单的hello模块为例。
先创建模块目录:sites/default/modules/hello
一个最简单的Drupal 7模块至少包含两个文件:hello.info, hello.module
hello.info是对模块信息的描述:
name = "Hello"
description = "Hello World"
package = "Other"
core = "7.x"
version = "7.x-1.0"
hello.module的内容如下:
一般的PHP框架并没有一套机制去定义数据库表,通常是自己通过phpMyAdmin直接创建,或者把创建的语句写成SQL保存下来并执行。这个方式对于只维护一个网站问题不大。但如果要做成一个通用的插件,或者说这件事要在成千上万的网站上做就有问题了。
Drupal 7里,我们自己的模块如果要新增数据表,可以先在phpMyAdmin里创建。然后通过结构->schema->inspect来查看这个表在Drupal里的表示方式,如下图:
我们新增的表会出现在Unknown区域,复制代码。
首先,我们需要用db_select,而不是db_query来写表格的查询语句。
其次,我们需要调用 ->extend('PagerDefault')
最后,我们调用theme('pager')显示页码控件,就是这么简单!
下面是代码例子:
$query = db_select('node', 'n')
->extend('PagerDefault')
->fields('n', array('nid', 'title'))
->distinct()
->limit(10);
本教程将以最小的篇幅解释Drupal 7里最核心的两个概念:怎样创建自己的模块和怎样操作表单。
首先下载examples模块,启用其中的form_example子模块。我们将分析form_example的代码。examples模块是学习Drupal的很好资料,读者可以自行学习其它子模块。
Drupal 7的模块以模块名作为文件夹的名称,放在Drupal代码目录树里的某个modules文件夹内。系统模块放在Drupal根目录的modules下。Drupal官网上可以下载的模块可以放在sites/all/modules下。而自己创建的模块可以放在sites/default/modules下。这不是绝对的,不按这样的规则去放,模块也能被识别出来。如果在不同modules里放有同名的模块,会产生冲突。
一个模块的的文件夹里至少包含两个文件:foo.info和foo.module。这里的foo是指模块名,对于form_example来说就是form_example.info和form_example.module。
最新评论