求一个SAE上面的代码示例,jake兄

#1 陈景山

今天在上面配置了一天,还是不好用,另外请教下,SAE上面的使用有什么限制?

方便的话
发我邮箱:scufox¥foxmail.com   (@用¥代替了) 或者在论坛里给出来吧

谢谢!

该贴已经同步到 陈景山的微博

2010-12-23 22:08:30

#2 jake

这里给个例子,是speedphp+smarty+mysql多模板那个例子,用的是speedphp的sae版。
注意:
1. SQL已经带上,要在sae后台开启mysql并导入SQL
2. 开启memcache,那是smarty缓存的地方
3. 行了。

sae+smarty+mysql.zip


演示地址:http://1.jake.sinaapp.com

2010-12-24 07:53:29

#3 jake

下面在这个例子基础上,说说如何做urlrewrite:
1. 在config.yaml中加入
handle:
  - rewrite: if(!is_dir() && !is_file()) goto "index.php?%{QUERY_STRING}"
这点的说明:
http://wiki.sae.sina.com.cn/doku.php?id=sae%E5%BC%80%E5%8F%91%E8%80%85%E6%89%8B%E5%86%8C
2. 在应用程序配置中加入URLREWRITE的配置

define("APP_PATH",dirname(__FILE__));
define("SP_PATH",APP_PATH.'/SpeedPHP');
$spConfig = array(
        'view' => array( // 视图配置
                'enabled' => TRUE, // 开启视图
                'config' =>array(
                        'template_dir' => APP_PATH.'/tpl', // 模板目录
                        'left_delimiter' => '<{',  // smarty左限定符
                        'right_delimiter' => '}>', // smarty右限定符
                ),
                'debugging' => TRUE, // 是否开启视图调试功能,在部署模式下无法开启视图调试功能
                'engine_name' => 'Smarty', // 模板引擎的类名称,默认为Smarty
                'engine_path' => SP_PATH.'/Drivers/Smarty/Smarty.class.php', // 模板引擎主类路径
        ),
         'launch' => array(
                        'router_prefilter' => array(
                                array('spUrlRewrite', 'setReWrite'),
                        ),
                'function_url' => array(
                                array("spUrlRewrite", "getReWrite"),
                        ),
        ),
         'ext' => array(
                        'spUrlRewrite' => array(
                                'suffix' => '.html',
                                'sep' => '-',
                        ),
         ),
);
require(SP_PATH."/SpeedPHP.php");
spRun();
即可使用类似/main-write.html的URL了。

2010-12-24 09:05:56

#4 陈景山

数据库相关的配置呢,写到哪儿了?

2010-12-24 10:25:47

#5 jake

数据库相关的配置呢,写到哪儿了?
陈景山 发表于 2010-12-24 10:25
压缩包内,sql文件是供mysql后台导入的表结构。
一般来说,speedphp的程序的配置,包括数据库配置都在入口文件index.php中。不过,sae版的speedphp不需要配置数据库相关信息。

2010-12-24 11:11:29

#6 陈景山

压缩包内,sql文件是供mysql后台导入的表结构。
一般来说,speedphp的程序的配置,包括数据库配置都在入 ...
jake 发表于 2010-12-24 11:11
呵呵,我就是问是不是你直接在数据库链接的时候已经把相关参数写死了,因为在index.php和spconfig里面都没看到

2010-12-24 12:01:43

#7 jake

呵呵,我就是问是不是你直接在数据库链接的时候已经把相关参数写死了,因为在index.php和spconfig里面都 ...
陈景山 发表于 2010-12-24 12:01
SAE上面的mysql不需要配置参数,没有host、端口等参数。这点可以看看SAE相关文档。

2010-12-24 12:06:43

#8 陈景山

回复 7 jake


    又来求救了,一修改main.php就出现乱码问题,检查过无数次,所有文件编码都是UTF-8,要疯了已经
而且好像是一载入原本的记事本就乱码,我试着从你原始的main.php一步步加内容,一加到“载入记事本的模板”就乱码了
代码如下:
include_once( 'config.php' );
include_once( 'saet.ex.class.php' );

class main extends spController
{
function index(){ // 这里是首页
//$tpl = $this->spArgs("tpl", "blue"); // 这里接收tpl参数,使得模板变化
//$guestbook = spClass("guestbook");
//$this->results = $guestbook->findAll();
//$this->display("{$tpl}/index.html");

/**认证相关代码---START*/
$o = new SaeTOAuth( WB_AKEY , WB_SKEY );
$port = '';
//echo $_SERVER['SERVER_PORT'];
if( $_SERVER['SERVER_PORT'] != 80 ) $port = ':'.$_SERVER['SERVER_PORT'];
$keys = $o->getRequestToken();
$posturl = spUrl("main", "callback");
$aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false , 'http://' . $_SERVER['HTTP_APPNAME'] . '.sinaapp.com' . $port .$posturl);
$_SESSION['keys'] = $keys;
echo '
';
echo $posturl;
echo '
';
echo "点击认识";
echo "留言成功,返回";

/**认证相关代码---END*/
}

//回调
function callback(){
$o = new SaeTOAuth( WB_AKEY , WB_SKEY , $_SESSION['keys']['oauth_token'] , $_SESSION['keys']['oauth_token_secret'] );

$last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] ) ;

$_SESSION['last_key'] = $last_key;
$this->display("callback.html");

}

//进入正式首页
function index1(){


}
function write(){ // 这里是留言
$guestbook = spClass("guestbook");
$newrow = array( // 这里制作新增记录的值
'name' => $this->spArgs('name'),
'title' => $this->spArgs('title'), // 从spArgs获取到表单提交上来的title
'contents' => $this->spArgs('contents'),
);
$guestbook->create($newrow);
echo "留言成功,返回";
}

}

2010-12-24 14:58:55

#9 陈景山

完了,编码问题很严重,全手打都不行,完全不能从外面加载文件

2010-12-24 15:24:58

#10 jake

回复  jake


    又来求救了,一修改main.php就出现乱码问题,检查过无数次,所有文件编码都是UTF-8,要 ...
陈景山 发表于 2010-12-24 14:58
“一修改main.php就出现乱码问题”,那你试过换一个编辑器吗?推荐用notepad++

2010-12-24 20:31:16

#11 陈景山

“一修改main.php就出现乱码问题”,那你试过换一个编辑器吗?推荐用notepad++ ...
jake 发表于 2010-12-24 20:31
notpad++没用,但是editplus,DW试过都有这问题

而且一般的编码问题的话整个文件重新保存为UTF-8编码一般就解决了,但是sp下面就还是有问题呢?

2010-12-24 21:30:37

#12 jake

如果是“一修改文件就会乱码”,那我想不会是框架的问题,毕竟框架不是编辑器。而且例子也可以看到,提交数据和显示数据都没有问题。


除了检查编辑器外,还有就是不能“复制”代码,最好手打(全部)。
如果想知道是否UTF8编码的乱码,在浏览器打开乱码的时候,选择浏览器编码,选回中文(GB2312)时如果是正常显示,那么就是utf8编码的问题。但是如果是纯“乱码”(无论什么编码都是乱码),那恐怕是编辑器或者其他因素造成的。

另外还是重新写一次关于UTF8编码的问题。
确定以下问题无误,UTF8就不会出现乱码:
1. 数据表 表编码 和 字段编码,两个位置
2. 在写入数据等数据库操作前,发送语句 'set names utf8'
3. PHP文件和模板文件都是UTF8编码,无签名(无BOM)
4. 页面上使用header或保证输出的页面是UTF8编码
5. 还有一种较少见的,服务器不支持UTF8

另外,很多时候遇到UTF8乱码的问题的人,都是检查不仔细造成的,所以请仔细检查以上每项(正常来说不包括第5项)是非常重要的。

2010-12-24 22:08:10

#13 陈景山

如果是“一修改文件就会乱码”,那我想不会是框架的问题,毕竟框架不是编辑器。而且例子也可以看到,提交数 ...
jake 发表于 2010-12-24 22:08
发现浏览器打开应用时竟然是默认以gb2312来打开的,选择UTF-8后显示正常(chrome浏览器没找到更改编码的地方,所以打开还是乱码)

但是开发的其他应用没发现有这个问题呢,jake大大能给分析下?

2010-12-25 00:11:23

#14 jake

chrome转换编码的地方是在“扳手”->“Tools”->“编码”里面。

如果是这种浏览器默认用gb2312打开的情况,那么就是上面我说的utf8注意问题的第4条。在页面端没有meta或发送header来指明浏览器要用utf8来显示。不过这点有些不同的是,这里的utf8,是utf-8

2010-12-25 09:06:02

#15 陈景山

恩,已解决,因为我首页是做验证后跳转,所以没有display页面,现在在main.php加上meta后OK了,虽然看起有点儿不安逸~
多谢了,jake兄

2010-12-25 11:28:45