Tommy 碎碎念
https://blog.teatime.com.tw/
Tommy Wu's blog
tommy
2024-03-19T14:26:15Z
-
讓 LifeType 1.2 支援 PHP7
https://blog.teatime.com.tw/1/post/473
<p>LifeType 似乎已經停止開發很久了... 最近 <a href="http://php.net/" target="_blank">PHP7</a> 推出後, 發現原本的程式不能正常使用.... 原本考慮是不是要換到 WordPress 上面... 不過, 反正也很少在寫, 好像能用就可以... 所以就動手改了一下.</p><p><a href="http://www.teatime.com.tw/~tommy/files/lifetype/lt12_php7.patch.gz" target="_blank">http://www.teatime.com.tw/~tommy/files/lifetype/lt12_php7.patch.gz</a> </p><p>patch 不小是因為把 <a href="http://getid3.sourceforge.net/" target="_blank">getid3</a> 與 <a href="http://www.smarty.net/" target="_blank">smarty2</a> 更新的最後一個版本 (主要是 getid3), 使用 LifeType 1.2_r7162 為基礎修改 (應該也不是原始的版本, 忘了之前有改什麼了).</p><p>修改的部份主要是</p><ol><li><a href="http://php.net/manual/en/function.ereg.php" target="_blank">ereg</a>() 用 <a href="http://php.net/manual/en/function.preg-match.php" target="_blank">preg_match</a>() 取代</li><li><a href="http://php.net/manual/en/function.split.php" target="_blank">split</a>() 用 <a href="http://php.net/manual/en/function.preg-split.php" target="_blank">preg_split</a>() 取代</li><li><a href="http://php.net/manual/en/function.preg-replace.php" target="_blank">preg_replace</a>() /e 的功能用 <a href="http://php.net/manual/en/function.preg-replace-callback.php" target="_blank">preg_replace_callback</a>() 取代 </li><li>mysql 的函式改用 mysqli 來取代 </li></ol><p>印象中是改這上面幾個就能夠在 PHP7 中執行, 只是會有一些 DEPRECATED 的訊息. 所以順便改了</p><ol><li>class 的同名 constructor 另外加上 __construct() 來處理, 再去執行原本的同名函式. </li><li>使用 static 方式執行的 class 函式, 要宣告為 static</li></ol><p>patch 如果有錯...有可能是</p><ul><li>之前程式我改過, 與你的版本不太一樣... 請想辦法改一下吧. </li><li>plugins 的部份, 可能是你沒用那個 plugins, 或版本不一樣. 基本上沒裝就忽略好了.</li></ul><p>如果改不出來... 就留在 PHP5.x 或者換到 WordPress 去吧. </p>
LifeType
Patch
2016-03-17T16:04:36Z
tommy
-
LifeType RecentComment 顯示修正
https://blog.teatime.com.tw/1/post/429
<p>前幾天在有人新增 comment 之後, 發現整個網站的顯示格式大亂. 找了一下, 發現是在顯示最近留言功能裡頭, 會把留言截短之後再透過 strip_tags 處理. 像是這樣:</p><pre class="php"><div class="insertcode"><pre class="php" style="font-family: monospace"><span class="sy0"><</span>li<span class="sy0">><</span>a title<span class="sy0">=</span><span class="st0">"View comments by {<span class="es4">$comment->getUsername</span>()}"</span> href<span class="sy0">=</span><span class="st0">"{<span class="es4">$url->postPermalink</span>(<span class="es4">$commentpost</span>)}#{<span class="es4">$comment->getId</span>()}"</span><span class="sy0">><</span>b<span class="sy0">></span><span class="br0">{</span><span class="re0">$comment</span><span class="sy0">-></span><span class="me1">getUsername</span><span class="br0">(</span><span class="br0">)</span><span class="br0">}</span>¡G<span class="sy0"></</span>b<span class="sy0">></span><span class="br0">{</span><span class="re0">$comment</span><span class="sy0">-></span><span class="me1">getText</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">|</span>truncate<span class="sy0">:</span><span class="nu0">100</span><span class="sy0">:</span><span class="st0">"..."</span><span class="sy0">|</span>strip_tags<span class="br0">}</span><span class="sy0"></</span>a<span class="sy0">></</span>li<span class="sy0">></span></pre></div></pre><p>但是, 先做 truncate, 就可能造成 tag 變成有頭沒有尾, 所以後面的 strip_tags 也就沒什麼作用了. </p><p>改成先做 strip_tags 再去處理 truncate 就應該可以避免這個問題了. </p><pre class="php"><div class="insertcode"><pre class="php" style="font-family: monospace"><span class="sy0"><</span>li<span class="sy0">><</span>a title<span class="sy0">=</span><span class="st0">"View comments by {<span class="es4">$comment->getUsername</span>()}"</span> href<span class="sy0">=</span><span class="st0">"{<span class="es4">$url->postPermalink</span>(<span class="es4">$commentpost</span>)}#{<span class="es4">$comment->getId</span>()}"</span><span class="sy0">><</span>b<span class="sy0">></span><span class="br0">{</span><span class="re0">$comment</span><span class="sy0">-></span><span class="me1">getUsername</span><span class="br0">(</span><span class="br0">)</span><span class="br0">}</span>¡G<span class="sy0"></</span>b<span class="sy0">></span><span class="br0">{</span><span class="re0">$comment</span><span class="sy0">-></span><span class="me1">getText</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">|</span>strip_tags<span class="sy0">|</span>truncate<span class="sy0">:</span><span class="nu0">100</span><span class="sy0">:</span><span class="st0">"..."</span><span class="br0">}</span><span class="sy0"></</span>a<span class="sy0">></</span>li<span class="sy0">></span></pre></div></pre><p>改好後看起來就正常了. (如果怕有其它的情形... 也許後面再加上一個 escap 來濾掉一些字元也可以) </p>
LifeType
網站修改記錄
2012-10-21T15:41:39Z
tommy
-
Lifetype 模組: gallery
https://blog.teatime.com.tw/1/post/400
<p>這個是以前寫給 <a href="http://www.lifetype.net/" target="_blank">LifeType</a> 使用的 gallery 模組的修改版本, 與之前版本的差異就是可以選擇不使用 Gallery 的 embed 方式來存取. (這時相簿的連結會直接轉到 <a href="http://gallery.menalto.com/" target="_blank">Gallery</a> 的網頁)</p><p>檔案放這兒: <a href="http://www.teatime.com.tw/~tommy/files/lifetype/lifetype_gallery.tgz">http://www.teatime.com.tw/~tommy/files/lifetype/lifetype_gallery.tgz</a> </p><p>需要的就自己抓回去用吧.</p><p> </p>
LifeType
PHP
2011-12-16T12:54:18Z
tommy
-
Lifetype 模組: minislideshow
https://blog.teatime.com.tw/1/post/399
<p>這是給 <a href="http://www.lifetype.net/" target="_blank">LifeType</a> 用的 <a href="http://www.flashyourweb.com/article.php?story=mini_slideshow" target="_blank">minislideshow</a> plugin, 可以加上一個區塊顯示 minislideshow 的內容.</p><p>檔案放這兒: <a href="http://www.teatime.com.tw/~tommy/files/lifetype/lifetype_minislideshow.tgz" target="_blank">http://www.teatime.com.tw/~tommy/files/lifetype/lifetype_minislideshow.tgz</a> </p><p>要用的就自己抓回去用吧, 安裝的方式參考裡面的 README 或自己慢慢試吧. </p>
LifeType
PHP
2011-12-16T12:49:30Z
tommy
-
Lifetype 在 nginx 的 rewrite 處理
https://blog.teatime.com.tw/1/post/385
<p><a href="http://lifetype.net/" target="_blank">Lifetype</a> 同樣只提供 <a href="http://www.apache.org/" target="_blank">Apache</a> 的 rewrite 處理, 所以... 我們一樣需要轉換為 <a href="http://nginx.org/" target="_blank">nginx</a> 的方式.</p><p>底下是我用的方式 (我是用自訂的格式, 並不是 Lifetype 預設的那種簡短網址, 所以... 如果你要用, 還是要改一下才有作用):</p><pre class="apache"><div class="insertcode"><pre class="apache" style="font-family: monospace"><span class="co1"># Lifetype rewrtie rule</span><br /><span class="co1">#</span><br /><span class="co1"># sitemap</span><br /><span class="co1"># /sitemap1.tgz</span><br />rewrite ^/sitemap([0-9]+)\.gz$ /tmp/sitemap/$1/sitemap.gz last;<br /> <br /><span class="co1"># post</span><br /><span class="co1"># /1/post/3</span><br />rewrite ^/([0-9]+)/post/([0-9]+)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2 last;<br />rewrite ^/([0-9]+)/post/([0-9]+)/page/([1-9][0-9]*)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2&page=$3 last;<br /><span class="co1"># /1/aechive/3</span><br />rewrite ^/([0-9]+)/archive/([0-9]+)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2 last;<br />rewrite ^/([0-9]+)/archive/([0-9]+)/page/([1-9][0-9]*)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2&page=$3 last;<br /><span class="co1"># /post/1/3</span><br />rewrite ^/post/([0-9]+)/([0-9]+)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2 last;<br />rewrite ^/post/([0-9]+)/([0-9]+)/page/([1-9][0-9]*)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2&page=$3 last;<br /><span class="co1"># /aechive/1/3</span><br />rewrite ^/archive/([0-9]+)/([0-9]+)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2 last;<br />rewrite ^/archive/([0-9]+)/([0-9]+)/page/([1-9][0-9]*)$ /index.php?op=ViewArticle&blogId=$1&articleId=$2&page=$3 last;<br /> <br /><span class="co1"># Monthly/Daily archive</span><br /><span class="co1"># /1/archives/200401</span><br />rewrite <span class="st0">"^/([0-9]+)/archives/([0-9]{6})$"</span> /index.php?op=Default&blogId=$1&Date=$2 last;<br />rewrite <span class="st0">"^/([0-9]+)/archives/([0-9]{6})/page/([1-9][0-9]*)$"</span> /index.php?op=Default&blogId=$1&Date=$2&page=$3 last;<br /><span class="co1"># /1/archives/20040101</span><br />rewrite <span class="st0">"^/([0-9]+)/archives/([0-9]{8})$"</span> /index.php?op=Default&blogId=$1&Date=$2 last;<br />rewrite <span class="st0">"^/([0-9]+)/archives/([0-9]{8})/page/([1-9][0-9]*)$"</span> /index.php?op=Default&blogId=$1&Date=$2&page=$3 last;<br /><span class="co1"># /archives/1/200401</span><br />rewrite <span class="st0">"^/archives/([0-9]+)/([0-9]{6})$"</span> /index.php?op=Default&blogId=$1&Date=$2 last;<br />rewrite <span class="st0">"^/archives/([0-9]+)/([0-9]{6})/page/([1-9][0-9]*)$"</span> /index.php?op=Default&blogId=$1&Date=$2&page=$3 last;<br /><span class="co1"># /archives/1/20040101</span><br />rewrite <span class="st0">"^/archives/([0-9]+)/([0-9]{8})$"</span> /index.php?op=Default&blogId=$1&Date=$2 last;<br />rewrite <span class="st0">"^/archives/([0-9]+)/([0-9]{8})/page/([1-9][0-9]*)$"</span> /index.php?op=Default&blogId=$1&Date=$2&page=$3 last;<br /> <br /><span class="co1"># Album</span><br /><span class="co1"># /88/album/34</span><br />rewrite ^/([0-9]+)/album/([0-9]+)$ /index.php?op=ViewAlbum&blogId=$1&albumId=$2 last;<br />rewrite ^/([0-9]+)/album/([0-9]+)/page/([1-9][0-9]*)$ /index.php?op=ViewAlbum&blogId=$1&albumId=$2&page=$3 last;<br /><span class="co1"># /album/88/34</span><br />rewrite ^/album/([0-9]+)/([0-9]+)$ /index.php?op=ViewAlbum&blogId=$1&albumId=$2 last;<br />rewrite ^/album/([0-9]+)/([0-9]+)/page/([1-9][0-9]*)$ /index.php?op=ViewAlbum&blogId=$1&albumId=$2&page=$3 last;<br /> <br /><span class="co1"># Albums</span><br /><span class="co1"># /88/album/</span><br />rewrite ^/([0-9]+)/album/$ /index.php?op=ViewAlbum&blogId=$1&albumId=0 last;<br /><span class="co1"># /album/88/</span><br />rewrite ^/album/([0-9]+)/$ /index.php?op=ViewAlbum&blogId=$1&albumId=0 last;<br /> <br /><span class="co1"># Category view</span><br /><span class="co1"># /88/categories/4</span><br />rewrite ^/([0-9]+)/categories/([0-9]+)$ /index.php?blogId=$1&postCategoryId=$2 last;<br />rewrite ^/([0-9]+)/categories/([0-9]+)/page/([1-9][0-9]*)$ /index.php?blogId=$1&postCategoryId=$2&page=$3 last;<br /><span class="co1"># /88/category/4</span><br />rewrite ^/([0-9]+)/category/([0-9]+)$ /index.php?blogId=$1&postCategoryId=$2 last;<br />rewrite ^/([0-9]+)/category/([0-9]+)/page/([1-9][0-9]*)$ /index.php?blogId=$1&postCategoryId=$2&page=$3 last;<br /><span class="co1"># /categories/88/4</span><br />rewrite ^/categories/([0-9]+)/([0-9]+)$ /index.php?blogId=$1&postCategoryId=$2 last;<br />rewrite ^/categories/([0-9]+)/([0-9]+)/page/([1-9][0-9]*)$ /index.php?blogId=$1&postCategoryId=$2&page=$3 last;<br /><span class="co1"># /category/88/4</span><br />rewrite ^/category/([0-9]+)/([0-9]+)$ /index.php?blogId=$1&postCategoryId=$2 last;<br />rewrite ^/category/([0-9]+)/([0-9]+)/page/([1-9][0-9]*)$ /index.php?blogId=$1&postCategoryId=$2&page=$3 last;<br /> <br /><span class="co1"># Category-Feeds</span><br /><span class="co1"># /3/feeds/categories/2/atom</span><br />rewrite ^/([0-9]+)/feeds/categories/([0-9]+)/(.+)$ /rss.php?blogId=$1&categoryId=$2&profile=$3 last;<br /><span class="co1"># /feeds/3/categories/2/atom</span><br />rewrite ^/feeds/([0-9]+)/categories/([0-9]+)/(.+)$ /rss.php?blogId=$1&categoryId=$2&profile=$3 last;<br /><span class="co1"># /feeds/categories/3/2/atom</span><br />rewrite ^/feeds/categories/([0-9]+)/([0-9]+)/(.+)$ /rss.php?blogId=$1&categoryId=$2&profile=$3 last;<br /><span class="co1"># /3/rss/categories/2/atom</span><br />rewrite ^/([0-9]+)/rss/categories/([0-9]+)/(.+)$ /rss.php?blogId=$1&categoryId=$2&profile=$3 last;<br /><span class="co1"># /rss/3/categories/2/atom</span><br />rewrite ^/rss/([0-9]+)/categories/([0-9]+)/(.+)$ /rss.php?blogId=$1&categoryId=$2&profile=$3 last;<br /><span class="co1"># /rss/categories/3/2/atom</span><br />rewrite ^/rss/categories/([0-9]+)/([0-9]+)/(.+)$ /rss.php?blogId=$1&categoryId=$2&profile=$3 last;<br /> <br /><span class="co1"># Feeds</span><br /><span class="co1"># /3/feeds/atom</span><br />rewrite ^/([0-9]+)/feeds/(.+)$ /rss.php?blogId=$1&profile=$2 last;<br /><span class="co1"># /feeds/3/atom</span><br />rewrite ^/feeds/([0-9]+)/(.+)$ /rss.php?blogId=$1&profile=$2 last;<br /><span class="co1"># /feeds/atom/3</span><br />rewrite ^/feeds/(.+)/([0-9]+)$ /rss.php?blogId=$2&profile=$1 last;<br /><span class="co1"># /3/rss/atom</span><br />rewrite ^/([0-9]+)/rss/(.+)$ /rss.php?blogId=$1&profile=$2 last;<br /><span class="co1"># /rss/3/atom</span><br />rewrite ^/rss/([0-9]+)/(.+)$ /rss.php?blogId=$1&profile=$2 last;<br /><span class="co1"># /rss/atom/3</span><br />rewrite ^/rss/(.+)/([0-9]+)$ /rss.php?blogId=$2&profile=$1 last;<br /> <br /><span class="co1"># Trackbacks</span><br /><span class="co1"># /3/trackbacks/34</span><br />rewrite ^/([0-9]+)/trackbacks/([0-9]+)$ /index.php?op=Trackbacks&blogId=$1&articleId=$2 last;<br /><span class="co1"># /trackbacks/3/34</span><br />rewrite ^/trackbacks/([0-9]+)/([0-9]+)$ /index.php?op=Trackbacks&blogId=$1&articleId=$2 last;<br /> <br /><span class="co1"># Comment form</span><br /><span class="co1"># /88/comment/34</span><br />rewrite ^/([0-9]+)/comment/([0-9]+)$ /index.php?op=Comment&blogId=$1&articleId=$2 last;<br /><span class="co1"># /comment/88/34</span><br />rewrite ^/comment/([0-9]+)/([0-9]+)$ /index.php?op=Comment&blogId=$1&articleId=$2 last;<br /> <br /><span class="co1"># Resources</span><br /><span class="co1"># /88/resource/1/2</span><br />rewrite ^/([0-9]+)/resource/([0-9]+)/([0-9]+)$ /index.php?op=ViewResource&blogId=$1&albumId=$2&resId=$3 last;<br /><span class="co1"># /resource/88/1/2</span><br />rewrite ^/resource/([0-9]+)/([0-9]+)/([0-9]+)$ /index.php?op=ViewResource&blogId=$1&albumId=$2&resId=$3 last;<br /><span class="co1"># Download a resource</span><br /><span class="co1"># /88/gallery/this-is-a-resource-name.pdf</span><br /><span class="co1">#rewrite ^/([0-9]+)/gallery/(.+)$ /resserver.php?blogId=$1&resource=$2 last;</span><br /><span class="co1"># /get/88/this-is-a-resource-name.pdf</span><br /><span class="co1">#rewrite ^/gallery/([0-9]+)/(.+)$ /resserver.php?blogId=$1&resource=$2 last;</span><br /> <br /><span class="co1"># A non-default blog</span><br /><span class="co1"># /88</span><br />rewrite ^/([0-9]+)$ /index.php?blogId=$1 last;<br />rewrite ^/([0-9]+)/index\.php$ /index.php?blogId=$1 last;<br />rewrite ^/([0-9]+)/page/([1-9][0-9]*)$ /index.php?blogId=$1&page=$2 last;<br /> <br /><span class="co1"># default blog</span><br /><span class="co1"># /</span><br />rewrite ^/$ /index.php?blogId=1 last;<br /> <br /><span class="co1"># Static Pages</span><br /><span class="co1"># /3/demosites</span><br />#<strike>rewrite ^/([0-9]+)/(.+)$ /index.php?op=Template&blogId=$1&show=$2 last;</strike></pre></div></pre><p>除了上面這些外, 因為有裝 <a href="http://gallery.menalto.com/" target="_blank">Gallery</a> 的 plugins, 所以也要處理 Gallery 的部份: </p><pre class="apache"><div class="insertcode"><pre class="apache" style="font-family: monospace"><span class="co1"># Galley begin</span><br /><span class="co1"># Gallery</span><br /><span class="co1"># for index.php?op=gallery</span><br />rewrite ^/([0-9]+)/index(.+)$ /index$2 last;<br /> <br /><span class="co1">#</span><br /><span class="co1"># from gallery's .htaccess</span><br /><span class="co1"># 1. insert /([0-9]+)/ to /xxx</span><br /><span class="co1"># 2. change !/main\.php$ to !index\.php$</span><br /><span class="co1"># 3. change /main.php? to index.php?op=gallery&</span><br /><span class="co1"># 4. shift parameter, add 1 to them</span><br />rewrite ^/([0-9]+)/sitemap$ /index.php?op=gallery&g2_view=sitemap.Sitemap last;<br />rewrite ^/([0-9]+)/updates$ /index.php?op=gallery&g2_view=dynamicalbum.UpdatesAlbum last;<br />rewrite ^/([0-9]+)/popular$ /index.php?op=gallery&g2_view=dynamicalbum.PopularAlbum last;<br />rewrite ^/([0-9]+)/admin/$ /index.php?op=gallery&g2_view=core.SiteAdmin last;<br />rewrite ^/([0-9]+)/radom([^\?]+)$ /index.php?op=gallery&g2_view=dynamicalbum.RandomAlbum last;<br />rewrite ^/([0-9]+)/v/([^\?]+)/slideshowapplet\.html$ /index.php?op=gallery&g2_view=slideshowapplet.SlideshowApplet&g2_path=$2 last;<br />rewrite ^/([0-9]+)/d/([0-9]+)-([0-9]+)/([^\?]+)$ /index.php?op=gallery&g2_view=core.DownloadItem&g2_itemId=$2&g2_serialNumber=$3&g2_fileName=$4 last;<br />rewrite ^/([0-9]+)/v/([^\?]+)/slideshow\.html$ /index.php?op=gallery&g2_view=slideshowapplet.Slideshow&g2_path=$2 last;<br />rewrite ^/([0-9]+)/rating/([^?/]+)$ /index.php?op=gallery&g2_view=rating.RatingAlbum&g2_limit=$2 last;<br />rewrite ^/([0-9]+)/rss/([^\/\?]+)$ /index.php?op=gallery&g2_view=rss.Render&g2_name=$2 last;<br />rewrite ^/([0-9]+)/srss/([0-9]+)$ /index.php?op=gallery&g2_view=rss.SimpleRender&g2_name=$2 last;<br />rewrite ^/([0-9]+)/key/([^?/]+)$ /index.php?op=gallery&g2_view=keyalbum.KeywordAlbum&g2_keyword=$2 last;<br />rewrite ^/([0-9]+)/f/([^\?]+)$ /index.php?op=gallery&g2_controller=permalinks.Redirect&g2_filename=$2 last;<br />rewrite ^/([0-9]+)/v/([^\?]+)$ /index.php?op=gallery&g2_path=$2 last;<br /><strike>#rewrite ^/([0-9]+)/([^\?]+)$ /index.php?op=gallery&g2_view=rewrite.FileNotFound last;</strike><br /><span class="co1">#rewrite ^/([0-9]+)/([^\?]+)$ /index.php?op=gallery&g2_controller=migrate.Redirect&g2_path=$2;</span></pre></div></pre><p>最後, 與 nginx 沒什麼關係, 不過與 <a href="http://www.php.net/" target="_blank">php</a> 有點關係. 新版本的 php 有可能會有個 intl 的模組, 如果包含這個 php5-intl 的話, 裡頭會有 Locale 這個 Class 存在. 因為 LifeType 也有一個同樣名稱的 class, 所以... 就會無法執行了. 解決方法就是不要用 php5-intl 或把 LifeType 更新到 1.1.12 (還沒推出, 所以只能抓 <a href="http://lifetype.net/snapshots/" target="_blank">snapshot</a> 或 svn 裡頭的版本). </p><hr width="100%" size="2" /><br />2011/12/10:<br />修正一下 static page 的 rewrite, 這會影響後頭 gallery 的 rewrite, 如果要用, 記得把這個放到最後頭. (gallery 的 rewrite 也有一個類似的設定, 同樣記得取消)
LifeType
Nginx
2011-12-03T11:56:08Z
tommy
-
廣告迴響入侵?
https://blog.teatime.com.tw/1/post/294
<p>前幾天這兒的廣告迴響突然有增多的情形, 在那兩三天內, 每天都有近十筆的廣告迴響. 雖然我這兒有用了 AuthImage, 也修改過 AuthImage, 把數字改成中文的, 在以前, 相同的作法, 幾乎沒有任何廣告, 不過... 上星期這麼多廣告的出現, 實在不怎麼正常.有點懷疑是不是那兒有漏洞, 因為有出現內容是空白的迴響, 而我自己試過, 沒內容應該是不能成功才對. 不過, 看 apache 的記錄, 所有的 POST 動作看起來都很正常, 並沒有什麼特殊的地方.</p><p>花了一點時間, 把 AuthImage 做了些修改, 在原本的數字前後再各加上一個數字, 然後註明輸入時不要包含前後的數字, 並且加上一些 log 來檢查看看有沒有什麼問題.</p><p>也不知道是這樣子處理後有效果 (那可能表示那些中文的數字也可以被程式判讀了), 還是這些發廣告的人還沒輪到我這兒來發... 這兩天的確沒廣告了. 再觀察一陣子看看吧.</p><hr width="100%" size="2" />2008/04/02:<p>看起來應該是有 "人" 專門在做這類的廣告刊登動作, 由 apache 的 log 來看, 通常是會有個類似的 referer 的內容是經由 Google 或其它搜尋引擎查詢 [inurl:/post/ "發表迴響" "暱稱" "AuthImage"] 這些文字的結果, 再經由這個查詢結果的網頁轉到使用 LifeType 與 AuthImage 的網頁, 然後輸入廣告的迴響. 可以到 Google 試一下就知道, 再到每個結果網址去看, 通常可以看到相同的廣告.</p><p>我們可以利用 Apache 的 Rewrite 模組, 做下列的動作:</p><pre class="apache"><div class="insertcode"><span class="kw1">RewriteCond</span> %<span class="br0">{</span>HTTP_REFERER<span class="br0">}</span> q= <span class="br0">[</span>NC<span class="br0">]</span><br /><span class="kw1">RewriteCond</span> %<span class="br0">{</span>HTTP_REFERER<span class="br0">}</span> inurl<span class="br0">(</span>:|%3A<span class="br0">)</span><span class="br0">(</span>post|/post|%2Fpost<span class="br0">)</span> <span class="br0">[</span>NC<span class="br0">]</span><br /><span class="kw1">RewriteRule</span> .* - <span class="br0">[</span>F,L<span class="br0">]</span></div></pre><p>把這類的 request 直接給擋掉, 或許可以減少這類的廣告吧.</p><p> </p>
LifeType
2008-04-02T14:31:23Z
tommy
-
在 LifeType 中使用 TinyMCE 的 InsertCode 模組應注意的問題
https://blog.teatime.com.tw/1/post/292
<p>今天突然發現, 怎麼在 TinyMCE 中使用 InsertCode 的這個模組來輸入程式碼時, 在儲存之後, 格式就怪怪的. 往之前的文章一看, 果然這幾個月都有這個問題. 查了一下, 發現在是更新到 LifeType 1.2.5 之後, 才出現這個問題的.</p><p>我記得剛用 InsertCode 的時候也碰過這個問題, 就比較了一下 TinyMCE 的設定, 果然, 在新的版本中, 有個設定在 tiny_mce-plog.js 中:</p><pre class="javascript"><div class="insertcode"> apply_source_formatting : <span class="kw2">true</span>,</div></pre><p>我在之前的版本並沒有這個設定, 所以就把它改成 false. 這樣子好像就正常了. </p><p> </p>
LifeType
2008-03-06T19:47:29Z
tommy
-
LifeType 外掛: 新增迴響 MSN/Yahoo 即時通知 ver 20070716
https://blog.teatime.com.tw/1/post/251
<p>異動記錄:</p><ul><li>更新 <a href="http://code.google.com/p/phpmsnclass/" target="_blank">phpmsnclass</a> 到 1.7 版</li><li>加入 trackback 通知的功能 <br /></li></ul><p>檔案放在: <a href="http://www.teatime.com.tw/%7Etommy/files/lifetype/lifetype_1.2_addcommentnotify_20070716.tgz" target="_blank">http://www.teatime.com.tw/~tommy/files/lifetype/lifetype_1.2_addcommentnotify_20070716.tgz</a> </p>
LifeType
2007-07-16T12:29:56Z
tommy
-
修正 LifeType 1.2.2 在使用 smtp 傳送信件時, 無法載入 class.smtp.php 的問題
https://blog.teatime.com.tw/1/post/242
<p>昨天晚上把 LifeType 升級到 1.2.2 之後, 今天早上發現有人連續留了幾個相同的迴響, 但是.... 我的 MSN/Yahoo 帳號卻沒有收到任何的訊息. 檢查了一下伺服器上的記錄, 果然沒有執行到送出訊息的地方. 後來就自己試著產生一個新的迴響, 發現在 1.2.2 中, 會出現找不到 class.smtp.php 的錯誤. (所以沒有訊息, 而留言的人會以為不成功就再留一次, 所以產生多個相同的迴響.) 把 email 的傳送設定, 由 smtp 改成 PHP mail() 之後, 就可以正常使用了.</p><p>比較了一下 1.2.1 與 1.2.2 的部份, 發現在 phpmail 的部份, 1.2.2 使用了 lt_include() 取代 include_once() 來載入 class.smtp.php 檔案. 不過... 由於並沒有定義 phpmail 物件的 PluginDir 變數, 所以原本在執行 include_once($this->PluginDir.'class.smtp.php') 時, 會找目前路徑下的 class.smtp.php, 所以可以正常的載入. 不過改用 lt_include() 之後, 變成執行 lt_include('class.smtp.php'), 並沒有加上路徑, 而 lt_include() 定義在別的檔案, 也就是在別的路徑下頭, 在那裡頭去執行 include('class.smtp.php') 時, 變成只找該路徑, 而不是原本 phpmail 所在的路徑了. 自然會載入失敗.</p><p>經過下面的修正, 就可以避免這個問題:</p><pre class="php"><div class="insertcode">diff -Nur lifetype<span class="nu0">-1.2</span><span class="nu0">.2</span>/<span class="kw2">class</span>/<a href="http://www.php.net/mail"><span class="kw3">mail</span></a>/emailservice.<span class="kw2">class</span>.php blog/<span class="kw2">class</span>/<a href="http://www.php.net/mail"><span class="kw3">mail</span></a>/emailservice.<span class="kw2">class</span>.php<br />--- lifetype<span class="nu0">-1.2</span><span class="nu0">.2</span>/<span class="kw2">class</span>/<a href="http://www.php.net/mail"><span class="kw3">mail</span></a>/emailservice.<span class="kw2">class</span>.php <span class="nu0">2007</span><span class="nu0">-05</span><span class="nu0">-18</span> <span class="nu0">15</span>:<span class="nu0">21</span>:<span class="nu0">32.000000000</span> <span class="nu0">+0800</span><br />+++ blog/<span class="kw2">class</span>/<a href="http://www.php.net/mail"><span class="kw3">mail</span></a>/emailservice.<span class="kw2">class</span>.php <span class="nu0">2007</span><span class="nu0">-05</span><span class="nu0">-19</span> <span class="nu0">13</span>:<span class="nu0">17</span>:<span class="nu0">24.650920201</span> <span class="nu0">+0800</span><br />@@ <span class="nu0">-95</span>,<span class="nu0">6</span> <span class="nu0">+95</span>,<span class="nu0">9</span> @@<br /> <span class="co1">// create a phpmailer object</span><br /> <span class="re0">$mail</span> = <span class="kw2">new</span> PHPMailer<span class="br0">(</span><span class="br0">)</span>;<br /> <br />+ <span class="co1">// need to set PluginDir if we use lt_include()</span><br />+ <span class="re0">$mail</span>-><span class="me1">PluginDir</span> = PLOG_CLASS_PATH.<span class="st0">"class/mail/phpmailer/"</span>;<br />+<br /> <span class="co1">// set a few fields</span><br /> <span class="re0">$mail</span>-><span class="me1">ContentType</span> = <span class="re0">$message</span>-><span class="me1">getMimeType</span><span class="br0">(</span><span class="br0">)</span>;<br /> <span class="re0">$mail</span>-><span class="me1">From</span> = <span class="re0">$message</span>-><span class="me1">getFrom</span><span class="br0">(</span><span class="br0">)</span>;</div></pre><p>檔案可以由這兒抓取:<br /><a href="http://www.teatime.com.tw/~tommy/mypatch/lifetype_1.2.2_phpmail_smtp.patch" target="_blank">http://www.teatime.com.tw/~tommy/mypatch/lifetype_1.2.2_phpmail_smtp.patch</a> </p><p>這個修正同時送到 <a href="http://bugs.lifetype.net/view.php?id=1310" target="_blank">http://bugs.lifetype.net/view.php?id=1310</a></p>
LifeType
Patch
2007-05-19T13:20:42Z
tommy
-
修正 LifeType 1.2 中, 打開 magic_quotes_gpc 後, 無法儲存 backslash [\] 字元的問題
https://blog.teatime.com.tw/1/post/228
<p>在 LifeType 1.0.3 的時候, 我<a href="http://blog.teatime.com.tw/1/post/30" target="_blank">修正過一次 backslash 無法儲存的問題</a>, 不過, 最近發現又有人反應這類的問題, 查了一下, 發現原本的修正, 在 <a href="http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc" target="_blank">magic_quotes_gpc</a> 關閉時, 可以正確的儲存 backslash. 但是如果將 magic_quotes_gpc 打開之後, 就無法儲存 backslash 了.</p><p>下面這個 patch, 應該可以解決這一個問題了:</p><pre class="php"><div class="insertcode">diff -Nur <span class="kw2">class</span>.orig/data/kses.<span class="kw2">class</span>.php <span class="kw2">class</span>/data/kses.<span class="kw2">class</span>.php<br />--- <span class="kw2">class</span>.orig/data/kses.<span class="kw2">class</span>.php <span class="nu0">2007</span><span class="nu0">-03</span><span class="nu0">-20</span> <span class="nu0">20</span>:<span class="nu0">40</span>:<span class="nu0">22.000000000</span> <span class="nu0">+0800</span><br />+++ <span class="kw2">class</span>/data/kses.<span class="kw2">class</span>.php <span class="nu0">2007</span><span class="nu0">-04</span><span class="nu0">-10</span> <span class="nu0">10</span>:<span class="nu0">42</span>:<span class="nu0">10.601863738</span> <span class="nu0">+0800</span><br />@@ <span class="nu0">-76</span>,<span class="nu0">10</span> <span class="nu0">+76</span>,<span class="nu0">13</span> @@<br /> <br /> <span class="kw2">function</span> Parse<span class="br0">(</span><span class="re0">$string</span> = <span class="st0">""</span><span class="br0">)</span><br /> <span class="br0">{</span><br />+<span class="coMULTI">/* we already handle magic_quotes_gpc in class/net/request.class.php<br />+ so don't do it again.<br /> if (get_magic_quotes_gpc())<br /> {<br /> $string = stripslashes($string);<br /> }<br />+*/</span><br /> <span class="re0">$string</span> = <span class="re0">$this</span>->_no_null<span class="br0">(</span><span class="re0">$string</span><span class="br0">)</span>;<br /> <span class="re0">$string</span> = <span class="re0">$this</span>->_js_entities<span class="br0">(</span><span class="re0">$string</span><span class="br0">)</span>; <br /> <span class="re0">$string</span> = <span class="re0">$this</span>->_normalize_entities<span class="br0">(</span><span class="re0">$string</span><span class="br0">)</span>;<br />@@ <span class="nu0">-759</span>,<span class="nu0">4</span> <span class="nu0">+762</span>,<span class="nu0">4</span> @@<br /> <span class="kw1">return</span> <span class="st0">'0.0.2 (OOP fork of kses 0.2.1)'</span>;<br /> <span class="br0">}</span> <span class="co2"># function _version</span><br /> <span class="br0">}</span><br />-<span class="kw2">?></span><br />\ No newline at <a href="http://www.php.net/end"><span class="kw3">end</span></a> of <a href="http://www.php.net/file"><span class="kw3">file</span></a><br />+<span class="kw2">?></span><br />diff -Nur <span class="kw2">class</span>.orig/database/db.<span class="kw2">class</span>.php <span class="kw2">class</span>/database/db.<span class="kw2">class</span>.php<br />--- <span class="kw2">class</span>.orig/database/db.<span class="kw2">class</span>.php <span class="nu0">2007</span><span class="nu0">-03</span><span class="nu0">-20</span> <span class="nu0">20</span>:<span class="nu0">40</span>:<span class="nu0">21.000000000</span> <span class="nu0">+0800</span><br />+++ <span class="kw2">class</span>/database/db.<span class="kw2">class</span>.php <span class="nu0">2007</span><span class="nu0">-04</span><span class="nu0">-10</span> <span class="nu0">10</span>:<span class="nu0">42</span>:<span class="nu0">13.009975865</span> <span class="nu0">+0800</span><br />@@ <span class="nu0">-156</span>,<span class="nu0">6</span> <span class="nu0">+156</span>,<span class="nu0">8</span> @@<br /> */<br /> <span class="kw2">function</span> qstr<span class="br0">(</span><span class="re0">$string</span><span class="br0">)</span> <span class="br0">{</span><br /> <br />+<span class="coMULTI">/* we already handle magic_quotes_gpc in class/net/request.class.php<br />+ so don't do it again.<br /> if (get_magic_quotes_gpc()) {<br /> $string = stripslashes($string);<br /> //$string = stripslashes($string);<br />@@ -163,6 +165,7 @@<br /> $string = str_replace("\\'", "'", $string);<br /> $string = str_replace('\\"', '"', $string);<br /> }<br />+*/</span><br /> <br /> <span class="re0">$string</span> = <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">(</span><span class="st0">"<span class="es0">\\</span>"</span>, <span class="st0">"<span class="es0">\\</span><span class="es0">\\</span>"</span>, <span class="re0">$string</span><span class="br0">)</span>;<br /> <span class="re0">$string</span> = <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">(</span><span class="st0">"'"</span>, <span class="st0">"''"</span>, <span class="re0">$string</span><span class="br0">)</span>;<br />@@ <span class="nu0">-170</span>,<span class="nu0">4</span> <span class="nu0">+173</span>,<span class="nu0">4</span> @@<br /> <span class="kw1">return</span> <span class="re0">$string</span>;<br /> <span class="br0">}</span><br /> <span class="br0">}</span><br />-<span class="kw2">?></span><br />\ No newline at <a href="http://www.php.net/end"><span class="kw3">end</span></a> of <a href="http://www.php.net/file"><span class="kw3">file</span></a><br />+<span class="kw2">?></span></div></pre><p>上面的 patch, 可以由這兒抓取: <a href="http://www.teatime.com.tw/~tommy/mypatch/lifetype_1.2_backslash.patch" target="_blank">http://www.teatime.com.tw/~tommy/mypatch/lifetype_1.2_backslash.patch</a></p><p>Patch submit 到 Mantis: <a href="http://bugs.lifetype.net/view.php?id=1141" target="_blank">http://bugs.lifetype.net/view.php?id=1141</a> </p>
LifeType
Patch
2007-04-09T11:40:23Z
tommy