<?php
-// $Id: trackback.php,v 1.10 2003/08/06 05:51:50 arino Exp $
+// $Id: trackback.php,v 1.17 2004/07/09 23:47:48 henoheno Exp $
/*
* PukiWiki TrackBack ¥×¥í¥°¥é¥à
* (C) 2003, Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
* ref_save($page) Referer ¥Ç¡¼¥¿Êݸ(¹¹¿·) // pukiwiki.php
*/
-if (!defined('TRACKBACK_DIR'))
-{
- define('TRACKBACK_DIR','./trackback/');
-}
-
// TrackBack Ping ID¤ò¼èÆÀ
function tb_get_id($page)
{
// TrackBack Ping ¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ
function tb_get_filename($page,$ext='.txt')
{
- return TRACKBACK_DIR.tb_get_id($page).$ext;
+ return TRACKBACK_DIR.encode($page).$ext;
}
// TrackBack Ping ¥Ç¡¼¥¿¸Ä¿ô¼èÆÀ
{
return;
}
-
- set_time_limit(0); // ½èÍý¼Â¹Ô»þ´ÖÀ©¸Â(php.ini ¥ª¥×¥·¥ç¥ó max_execution_time )
+
+ // ½èÍý¼Â¹Ô»þ´ÖÀ©¸Â(php.ini ¥ª¥×¥·¥ç¥ó max_execution_time )
+ if (ini_get('safe_mode') == '0') set_time_limit(0);
$data = convert_html($data);
}
$r_page = rawurlencode($page);
+ $excerpt = strip_htmltag(convert_html(get_source($page)));
// ¼«Ê¸½ñ¤Î¾ðÊó
$putdata = array(
'title' => $page, // ¥¿¥¤¥È¥ë¤Ï¥Ú¡¼¥¸Ì¾
'url' => "$script?$r_page", // Á÷¿®»þ¤ËºÆÅÙ¡¢rawurlencode ¤µ¤ì¤ë
- 'excerpt' => mb_strimwidth(preg_replace("/[\r\n]/",' ',strip_htmltag($data)),0,255,'...'),
+ 'excerpt' => mb_strimwidth(preg_replace("/[\r\n]/",' ',$excerpt),0,255,'...'),
'blog_name' => 'PukiWiki/TrackBack 0.1',
'charset' => SOURCE_ENCODING // Á÷¿®Â¦Ê¸»ú¥³¡¼¥É(̤´ûÄê)
);
$result = array();
$fp = @fopen($file,'r');
+ set_file_buffer($fp, 0);
flock($fp,LOCK_EX);
+ rewind($fp);
while ($data = @fgetcsv($fp,8192,','))
{
// $data[$key] = URL
- $result[$data[$key]] = $data;
+ $result[rawurldecode($data[$key])] = $data;
}
flock($fp,LOCK_UN);
fclose ($fp);
rdf:about="$script?$r_page"
dc:identifier="$script?$r_page"
dc:title="$page"
- trackback:ping="$script?plugin=tb&tb_id=$tb_id" />
+ trackback:ping="$script?tb_id=$tb_id" />
</rdf:RDF>
-->
EOD;
$url = $_SERVER['HTTP_REFERER'];
+ // URI ¤ÎÂÅÅöÀɾ²Á
// ¼«¥µ¥¤¥ÈÆâ¤Î¾ì¹ç¤Ï½èÍý¤·¤Ê¤¤
$parse_url = parse_url($url);
if (empty($parse_url['host']) or $parse_url['host'] == $_SERVER['HTTP_HOST'])
return;
}
- // URI ¤ÎÂÅÅöÀɾ²Á
- $arr = parse_url($url);
- if (!isset($arr['host']))
- {
- return;
- }
-
// TRACKBACK_DIR ¤Î¸ºß¤È½ñ¤¹þ¤ß²Äǽ¤«¤Î³Îǧ
if (!is_dir(TRACKBACK_DIR))
{
$url = '"'.str_replace('"', '""', $url).'"';
}
$filename = tb_get_filename($page,'.ref');
- $data = tb_get($filename,3);
- if (!array_key_exists($url,$data))
+ $data = tb_get($filename, 3);
+ $d_url = rawurldecode($url);
+ if (!array_key_exists($d_url,$data))
{
// 0:ºÇ½ª¹¹¿·Æü»þ, 1:½é²óÅÐÏ¿Æü»þ, 2:»²¾È¥«¥¦¥ó¥¿, 3:Referer ¥Ø¥Ã¥À, 4:ÍøÍѲÄÈݥե饰(1¤Ï͸ú)
- $data[$url] = array(UTIME,UTIME,0,$url,1);
+ $data[$d_url] = array(UTIME,UTIME,0,$url,1);
}
- $data[$url][0] = UTIME;
- $data[$url][2]++;
+ $data[$d_url][0] = UTIME;
+ $data[$d_url][2]++;
if (!($fp = fopen($filename,'w')))
{
return 1;
}
+ set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
+ rewind($fp);
foreach ($data as $line)
{
fwrite($fp,join(',',$line)."\n");