使用Drush
1. 修改密码

drush upwd --password="123" admin  //修改admin用户的密码为123

2. 创建登陆链接

drush user-login

这样会创建一个链接. 类似于

http://www/user/reset/1/1396591957/zelsFiAgf-iOittnSLwaGTk16OWyJaIVSgsM5xEYDSI/login

将user/reset/1/1396591957/zelsFiAgf-iOittnSLwaGTk16OWyJaIVSgsM5xEYDSI/login这段复制到你的网站主url后面. 然后打开这个URL自动登陆用户ID为1的用户

修改数据库

将Users表中的pass字段修改成新的加密值.$S$DRrSW.5c9Ocaf6p3ZwZ2IauMDKBC62XpBrxJUIX7.mwrPkSo6Ifd
上面这个加密密码是admin

  1. function bash_path() {
  2.   if(isset($_SERVER['REQUEST_URI'])) {
  3.     // This request is either a clean URL, or 'index.php', or nonsense.
  4.     // Extract the path from REQUEST_URI.
  5.     $request_path = strtok($_SERVER['REQUEST_URI'], '?');
  6.     $base_path_len = strlen(rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/'));
  7.     // Unescape and strip $base_path prefix, leaving q without a leading slash.
  8.     $path = substr(urldecode($request_path), $base_path_len + 1);
  9.     // If the path equals the script filename, either because 'index.php' was
  10.     // explicitly provided in the URL, or because the server added it to
  11.     // $_SERVER['REQUEST_URI'] even when it wasn't provided in the URL (some
  12.     // versions of Microsoft IIS do this), the front page should be served.
  13.     if ($path == basename($_SERVER['PHP_SELF'])) {
  14.       $path = '';
  15.     }
  16.   }
  17.   else {
  18.     // This is the front page.
  19.     $path = '';
  20.   }
  21.   return $path;
  22. }
  23. var_dump(bash_path());
Posted in PHP.

模板中的变量判断,只能判断true或者false

  1. {{if .TrueCondi}}
  2. TrueCondtion
  3. {{end}}
  4.  
  5. {{if .FalseCondi}}
  6. {{else}}
  7. FlaseCondition.
  8. {{end}}

嵌套.

{{with .user}}
{{end}}

循环

{{range .user}}
{{.name}}
{{.age}}
{{end}}
Posted in Go.

数据库驱动使用的是: https://github.com/Go-SQL-Driver/MySQL

首先要先安装Mysql, 执行

  1. go get github.com/Go-SQL-Driver/MySQL
  1. package main
  2.  
  3. import (
  4.  "database/sql"
  5.  _ "github.com/Go-SQL-Driver/MySQL" // 引入数据库驱动
  6.         "fmt"
  7. )
  8.  
  9. func main() {
  10.  // 连接mysql: db, err := sql.Open("mysql", "user:password@/dbname")
  11.  db, err := sql.Open("mysql", "root:root@/mygo?charset=utf8")
  12.  checkErr(err)
  13.  
  14.  //插入数据
  15.  stmt, err := db.Prepare("INSERT users SET username=?,password=?")
  16.  checkErr(err)
  17.         // 执行Sql.
  18.  res, err := stmt.Exec("admin", "admin")
  19.  checkErr(err)
  20.  
  21.         //打印出执行成功的条数
  22.  affect, err := res.RowsAffected()
  23.         // 获取插入成功后的ID
  24.         id, err := res.LastInsertId()
  25.  
  26.  fmt.Println(affect)
  27. }
  28.  
  29. func checkErr(err error) {
  30.  if err != nil {
  31.   panic(err)
  32.  }
  33. }
Posted in Go.

今天才知道PHP也有类似于Go语言的goto语法

  1. <?php
  2.  
  3. for($j = 0; $j < 100; $j ++ ){
  4.   if($j > 10) {
  5.     goto end; // 直接跳转到End.
  6.   }
  7. }
  8.  
  9. echo "test1";
  10.  
  11. end: {
  12.   echo "test2";
  13. }

http://www.php.net/manual/zh/control-structures.goto.php

Posted in PHP.

Go 语言不需要Apache, Nginx等之类的服务器也可以运行.

  1. package main
  2.  
  3. import (
  4.  "fmt"
  5.  "log"
  6.  "net/http"
  7. )
  8.  
  9. func sayhelloName(w http.ResponseWriter, r *http.Request) {
  10.  //这个写入到 w 的是输出到客户端的
  11.  fmt.Fprintf(w, "Hello World!")
  12. }
  13. func main() {
  14.  http.HandleFunc("/", sayhelloName)       //设置访问的路由
  15.  err := http.ListenAndServe(":9090", nil) //设置监听的端口
  16.  if err != nil {
  17.   log.Fatal("ListenAndServe: ", err)
  18.  }
  19. }
Posted in Go.

程序执行顺序. 以下解释
Module: i18n_node

Node FORM 表单

1. node_add() 添加node跑的第一个函数
2. 接着获取node_form() 获取node表单. 里面会有一个node_object_prepare是整合node对象. 当你翻译一个已存在的node时, 你会发现跑了这个函数里面会多一个对象translation_source. 此对象由系统模块locale提供translation_node_prepare(). 此处的translation_source对象是由你在点击添加翻译以后根据传过来$_GET对象translation来获取. 传过的$_GET数据中还有target这个是lancode

在I18n模块中: i18n_node_form_node_form_alter() 这里覆盖了node默认的submit函数node_form_submit. 其实没有太大用处. 可以无视.

Node Save Process

主要的作用在于node_save中. 会调用Hook_node_insert. 这里会调用系统模块locale: translation_node_insert()
node_add();

  1. func main() {
  2.    f := closure(100);  // 返回一个匿名函数
  3.    fmt.Println(f(10))   // 运行匿名函数
  4.    fmt.Println(f(11))
  5. }
  6.  
  7. func closure(x int) func(int) int {
  8.    // 创建匿名函数
  9.    return func(y int) int {
  10.     return x + y;
  11.   }
  12. }

打印结果
110
111

Posted in Go.