不知道在V2EX问这种事情会不会太low了
是这样的,朕最近为了给自己的ThinkSNS小站写一个桌面客户端。是用ThinkPHP(妈呀不行气质更low了!QAQ)框架弄的,登录验证、获取微博信息这些都实现了,正在朕心中翻涌起滚滚巨浪心想着能一统江山的时候,出现了谜之难题。
朕的发布文字微博的函数是这样写的
function textTweet($uid, $content){
$Feed = M('feed');
$Feed->uid = $uid;
$Feed->publish_time = time();
$Feed->type = 'post';
$feed_id = $Feed->add();
$FeedData = M('feed_data');
$FeedData->feed_id = $feed_id;
$FeedData->feed_data = "a:16:{s:7:\"content\";s:24:\"".$content."\";s:4:\"body\";s:24:\"".$content."\";s:10:\"source_url\";s:0:\"\";s:9:\"attach_id\";s:0:\"\";s:3:\"uid\";i:283;s:3:\"app\";s:6:\"public\";s:4:\"type\";s:4:\"post\";s:10:\"app_row_id\";i:0;s:13:\"app_row_table\";s:4:\"feed\";s:12:\"publish_time\";i:".time().";s:4:\"from\";s:1:\"0\";s:12:\"repost_count\";i:0;s:13:\"comment_count\";i:0;s:6:\"is_del\";i:0;s:9:\"is_repost\";i:0;s:8:\"is_audit\";i:1;}";
$FeedData->client_ip = get_client_ip();
$FeedData->feed_content = $content;
$FeedData->add();
return $feed_id;
}
求别吐槽文风…然后那个谜一样的feed_data
大概就是万恶之源
POST以后确确实实输出了Feed_id(是的你没看错那个key就是密钥)
然而在Timeline里面显示出来是空空的
数据库里面的feeddata明明活蹦乱跳的啊!QAQ
嗯,问了一只触触,他说TS是读缓存的,然而朕清了服务器缓存后还是一片空白。所以朕就找到大家了…希望大家不要嫌弃朕……
1
giuem 2015-06-18 18:32:23 +08:00 via Android
自称 朕,真是恶心
|
2
blacktulip 2015-06-18 18:33:17 +08:00 9
皇上自行圣裁即可,草民不敢乱言。
|
3
laoertongzhi 2015-06-18 18:36:59 +08:00
皇上自行圣裁即可,草民不敢乱言。
|
4
laoertongzhi 2015-06-18 18:37:09 +08:00
皇上自行圣裁即可,草民不敢乱言。+1
|
5
incrediblink OP |
6
Septembers 2015-06-18 18:49:47 +08:00 via Android 1
$FeedData->feed_data的字符串可以反序列化后用var_dump打印出来改成array再序列化 看起来会稍微好点
|
7
543400 2015-06-18 19:13:14 +08:00 via Android
(≧▽≦) 楼主萌萌哒
|
8
itfanr 2015-06-18 19:15:08 +08:00 1
@incrediblink 以后乖乖的吧
|
9
49 2015-06-18 19:37:15 +08:00 via Android
|
11
oott123 2015-06-18 19:54:39 +08:00
你知道 phpserialize 这个函数么……
|
12
thinkif 2015-06-18 19:54:48 +08:00
大胆,在朕面前敢自称朕,你让其他的朕们怎么看。。。
|
13
oott123 2015-06-18 19:55:56 +08:00
记忆偏差了,抱歉,这函数就叫 serialize
http://php.net/manual/zh/function.serialize.php |
14
oott123 2015-06-18 19:58:47 +08:00 2
刚刚忘了说你的问题在哪了。
s:24 这个地方,24是代表字符串长度;然而你的 $content 的长度不确定,反序列化的时候就挂了…… |
15
incrediblink OP @oott123 (❁´▽`❁)谢谢小天使!
|
16
tSQghkfhTtQt9mtd 2015-06-18 21:33:42 +08:00
我想知道你的POST测试工具是什么
|
17
oott123 2015-06-18 21:41:46 +08:00
@liwanglin12 目测 postman ,chrome app
|
18
tSQghkfhTtQt9mtd 2015-06-18 21:54:42 +08:00
@oott123 哦。。的确是,旧版的不长这样,没认出来。。
|
19
incrediblink OP @oott123 其实昨天晚上看到你说的还是云里雾里,但是睡觉翻来覆去的时候突然想通,今天立马(写了一段很丑的代码)就实现了!小天使万岁!( ´∀`)
|
20
oott123 2015-06-19 08:53:35 +08:00 via Android
@incrediblink 你该不会吧 24 换成了 strlen 吧…
|
21
incrediblink OP @oott123 (つД`)我在你心中就这么呆吗!
现在我把代码改成这样了w ``` $unserialized_feed_data[content] = $content; $unserialized_feed_data[body] = $content; $unserialized_feed_data[source_url] = ""; $unserialized_feed_data[attach_id] = 0; $unserialized_feed_data[uid] = $uid; $unserialized_feed_data[app] = "public"; $unserialized_feed_data[type] = "post"; $unserialized_feed_data[app_row_id] = 0; $unserialized_feed_data[app_row_table] = "feed"; $unserialized_feed_data[publish_time] = $time; $unserialized_feed_data[from] = 0; $unserialized_feed_data[repost_count] = 0; $unserialized_feed_data[comment_count] = 0; $unserialized_feed_data[is_del] = 0; $unserialized_feed_data[is_repost] = 0; $unserialized_feed_data[is_audit] = 1; $FeedData->feed_data = serialize($unserialized_feed_data); ``` |
22
oott123 2015-06-19 19:46:08 +08:00 1
@incrediblink 哈哈哈哈哈哈还是好呆……
首先你这个代码,数组下标里应该用字符串,如 $data["from"] 而不是 $data[from], 不然会报一个 Warning 级别的错误,这属于未定义常量。 其次,你可以写成 $data = array( 'a'=> 'b', 'c'=> 'd' ); 的形式,不用写那么复杂…… 另外我觉得你应该好好系统的学一下 PHP 了…… |
23
incrediblink OP @oott123 臣妾遵旨(´-ι_-`)
|