Archive for the ‘php學習’ Category

coreseek排序—attribute ‘id’ not found - IGNORING

2015-08-13

測試新站 Simple CD下載 時,出現排序不成功的問題。

檢查原因發現coreseek(sphinx)建立索引時提示錯誤:WARNING: attribute ‘id’ not found - IGNORING,如圖:

原因:

sphinx不能使用主鍵來做屬性字段,你的索引配置文件中一定用了類似

sql_attr_uint = id (id為表的主鍵)

解決方法:

去掉sql_attr_uint = id

或改為

sql_query = SELECT id,id as aid,body from table

sql_attr_uint = aid

即:在sql_query中給id用as 重新命個名字

 2、重建索引

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/ed2000.conf all rotate

3、建立索引排序,在查詢語句中加入排序規則

$cl->SetSortMode(SPH_SORT_EXTENDED, "aid desc");

2012版PHP調用谷歌翻譯實現翻譯功能

2012-06-02

之前的php調用谷歌來實現翻譯的api已經關閉,因為不需要驗證碼,所以可以嘗試使用php的curl類來翻譯,以下是代碼:

 

  1. <?php
  2. /*
  3. * PHP調用谷歌翻譯
  4. * author:野草
  5. * date:2012/3/23
  6. * email:[email protected]
  7. * site:http://yckit.com
  8. */
  9. function translate($text,$language='zh-cn|en'){
  10.     if(empty($text))return false;
  11.     @set_time_limit(0);
  12.     $html = "";
  13.     $ch=curl_init("http://google.com/translate_t?langpair=".urlencode($language)."&text=".urlencode($text));
  14.     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  15.     curl_setopt($ch,CURLOPT_HEADER, 0);
  16.     curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
  17.     $html=curl_exec($ch);
  18.     if(curl_errno($ch))$html = "";
  19.     curl_close($ch);
  20.     if(!empty($html)){
  21.         $x=explode("</span></span></div></div>",$html);
  22.         $x=explode("onmouseout=\"this.style.backgroundColor='#fff'\">",$x[0]);
  23.         return $x[1];
  24.     }else{
  25.         return false;
  26.     }
  27. }
  28. //echo translate('?','kr|zh-cn');
  29. echo translate('2012版PHP調用谷歌翻譯實現翻譯功能');
  30. ?>

友情鏈接一下笑話

php自動百度ping代碼

2012-03-09

幫朋友寫一個自動更新程序用到的一段php自動百度ping代碼:

  1. <?php
  2. function postUrl($url, $postvar) {
  3.     $ch = curl_init();
  4.     $headers = array(
  5.             "POST ".$url." HTTP/1.0",
  6.             "Content-type: text/xml;charset=\"utf-8\"",
  7.             "Accept: text/xml",
  8.             "Content-length: ".strlen($postvar)
  9.         );
  10.     curl_setopt($ch, CURLOPT_URL, $url);
  11.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  12.     curl_setopt($ch, CURLOPT_POST, 1);
  13.     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  14.     curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar);
  15.     $res = curl_exec ($ch);
  16.     curl_close ($ch);
  17.     return $res;
  18. }
  19. $baiduXML = "
  20.     <?xml version=\"1.0\" encoding=\"UTF-8\"?>
  21.     <methodCall>
  22.     <methodName>weblogUpdates.extendedPing</methodName>
  23.     <params>
  24.     <param><value><string>寬寬手記</string></value></param>
  25.     <param><value><string>http://www.qcrpiq.live</string></value></param>
  26.     <param><value><string>http://www.qcrpiq.live/2011/10/25/6-ways-to-improve-the-conversion-rate-of-foreign-trade-b2c/</string></value></param>
  27.     <param><value><string>http://www.qcrpiq.live/rss</string></value></param>
  28.     </params>
  29.     </methodCall>";
  30. $res = postUrl('http://ping.baidu.com/ping/RPC2', $baiduXML);
  31. //下面是返回成功與否的判斷(根據百度ping的接口說明)
  32. if (strpos($res, "<int>0</int>"))
  33.         echo "PING成功";
  34.     else
  35.         echo "PING失敗";
  36. ?>

clickbank 短信提醒代碼及設置方法

2010-09-15

有人在尋找設置Clickbank產生銷售時手機短信提醒的設置方法,很多說測試不成功,onlyqian把代碼發我測試了一下,是可以用的。

原理簡述:cb產生sale以后,根據自己后臺提供的secret key和mail.php,使用mail函數發郵件至指定郵箱,郵箱為139郵箱或qq郵箱綁定手機,即可收到cb產生銷售的手機短信提醒。

代碼如下:點擊下載 (此代碼cb后臺可獲取)

  1. <?php
  2.  
  3. function cbValid() {
  4.  
  5.     $key='7009';
  6.     $ccustname = $_REQUEST['ccustname'];
  7.     $ccustemail = $_REQUEST['ccustemail'];
  8.     $ccustcc = $_REQUEST['ccustcc'];
  9.     $ccuststate = $_REQUEST['ccuststate'];
  10.     $ctransreceipt = $_REQUEST['ctransreceipt'];
  11.     $cproditem = $_REQUEST['cproditem'];
  12.     $ctransaction = $_REQUEST['ctransaction'];
  13.     $ctransaffiliate = $_REQUEST['ctransaffiliate'];
  14.     $ctranspublisher = $_REQUEST['ctranspublisher'];
  15.     $cprodtype = $_REQUEST['cprodtype'];
  16.     $cprodtitle = $_REQUEST['cprodtitle'];
  17.     $ctranspaymentmethod = $_REQUEST['ctranspaymentmethod'];
  18.     $ctransamount = $_REQUEST['ctransamount'];
  19.     $caffitid = $_REQUEST['caffitid'];
  20.     $cvendthru = $_REQUEST['cvendthru'];
  21.     $cbpop = $_REQUEST['cverify'];
  22.  
  23.     $xxpop = sha1("$ccustname|$ccustemail|$ccustcc|$ccuststate|$ctransreceipt|$cproditem|$ctransaction|"
  24.                       ."$ctransaffiliate|$ctranspublisher|$cprodtype|$cprodtitle|$ctranspaymentmethod"
  25.                       ."|$ctransamount|$caffitid|$cvendthru|$key");
  26.    
  27.  
  28.     $xxpop=strtoupper(substr($xxpop,0,8));
  29.  
  30.     if ($cbpop==$xxpop) return 1;
  31.     else return 0;
  32. }
  33. if (cbValid())mail("[email protected]", "ClickBank - " . $_REQUEST['ctransaction'],"Product: " . $_REQUEST['cprodtitle'] . "\nPublisher: " . $_REQUEST['ctranspublisher'] . "\nAffiliate: " . $_REQUEST['ctransaffiliate'] . "\nTransaction: " . $_REQUEST['ctransaction'] . "\nAmount: " . $_REQUEST['ctransamount']);
  34. ?>

用法:

1、命名以上代碼為mail.php,修改mail.php中的Secret Key 改為任意的大寫字母或數字,郵箱改為你的郵箱,保存,然后上傳到你的空間上。

2、打開CB賬號,進入 ACCOUNT SETTINGS - My site – Advanced Tools – Edit

Secret Key: 填上剛才PHP文件中的“任意的大寫字母或數字”
Instant Notification URL: 點 (request access)

3、出來一列問題,你都選 YES,然后下面的Terms of Use 拉下來, I understand and agree to the Terms of Use. * 打勾,保存。

4、然后 Instant Notification URL 填上你剛才那個PHP文件的地址,如 XXX.COM/mail.php 點后面的 TEST,如果有收到信件就代表成功了!

不成功的原因:

1、存放mail.php的webhosting不支持mail函數。
2、郵箱對沒有反向解析過的郵件發送,默認設為垃圾郵件件,推薦使用qq郵箱。
3、test的時候,選擇2.0,本人測試1.0成功。

另外refund也會提醒。

php 模擬POST提交的三種方法[實例代碼]

2010-08-27

分享使用php模擬POST提交的三種方法,可以做的事很多:提交表單,發布留言。稍稍改進一下可以當做 php留言群發的小工具使用,只公布兩種方法,其它的自己加工吧。

關php于執行效率的問題,可以改進為linux底下命令行執行php,減少輸出和增加多任務。

以下是代碼:

1、通過curl函數

  1. $post_data = array();
  2. $post_data['clientname'] = "test08";
  3. $post_data['clientpasswd'] = "test08";
  4. $post_data['submit'] = "submit";
  5. $url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';
  6. $o="";
  7. foreach ($post_data as $k=>$v)
  8. {
  9.     $o.= "$k=".urlencode($v)."&";
  10. }
  11. $post_data=substr($o,0,-1);
  12. $ch = curl_init();
  13. curl_setopt($ch, CURLOPT_POST, 1);
  14. curl_setopt($ch, CURLOPT_HEADER, 0);
  15. curl_setopt($ch, CURLOPT_URL,$url);
  16. //為了支持cookie
  17. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  18. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  19. $result = curl_exec($ch);

2.通過fsockopen

  1. $URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';
  2. $post_data['clientname'] = "test08";
  3. $post_data['clientpasswd'] = "test08";
  4. $post_data['submit'] = "ログイン";
  5. $referrer="";
  6. // parsing the given URL
  7. $URL_Info=parse_url($URL);
  8. // Building referrer
  9. if($referrer=="") // if not given use this script as referrer
  10. $referrer=$_SERVER["SCRIPT_URI"];
  11.  
  12. // making string from $data
  13. foreach($post_data as $key=>$value)
  14. $values[]="$key=".urlencode($value);
  15.  
  16. $data_string=implode("&",$values);
  17. // Find out which port is needed - if not given use standard (=80)
  18. if(!isset($URL_Info["port"]))
  19. $URL_Info["port"]=80;
  20. // building POST-request:
  21. $request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
  22. $request.="Host: ".$URL_Info["host"]."\n";
  23. $request.="Referer: $referrer\n";
  24. $request.="Content-type: application/x-www-form-urlencoded\n";
  25. $request.="Content-length: ".strlen($data_string)."\n";
  26. $request.="Connection: close\n";
  27. $request.="\n";
  28. $request.=$data_string."\n";
  29. $fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
  30. fputs($fp, $request);
  31. while(!feof($fp)) {
  32.     $result .= fgets($fp, 128);
  33. }
  34. fclose($fp);

3.使用httpclient類

  1. $pageContents = HttpClient::quickPost('http://example.com/someForm', array(       
  2.     'name' => 'Some Name',       
  3.     'email' => '[email protected]'      
  4. ));

附:httpclient類庫 下載 及 httpclient 類庫的其它用法舉例:

檢查頁面是否存在

  1. $client = new HttpClient('bankcha.com');       
  2. $client->setDebug(true);       
  3. if (!$client->get('/thispagedoesnotexist')) {       
  4.     die('An error occurred: '.$client->getError());       
  5. }       
  6. if ($client->getStatus() == '404') {       
  7.     echo 'Page does not exist!';       
  8. }       
  9. $pageContents = $client->getContent();

偽造客戶端

  1. $client = new HttpClient('bankcha.com');       
  2. $client->setDebug(true);       
  3. $client->setUserAgent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021207');       
  4. if (!$client->get('/')) {       
  5.     die('An error occurred: '.$client->getError());       
  6. }       
  7. $pageContents = $client->getContent();

登錄驗證并請求一個網頁

  1. $client = new HttpClient('bankcha.com');       
  2. $client->post('/login.php', array(       
  3.     'username' => 'Simon',       
  4.     'password' => 'ducks'      
  5. ));       
  6. if (!$client->get('/private.php')) {       
  7.     die('An error occurred: '.$client->getError());       
  8. }       
  9. $pageContents = $client->getContent();

httpclient類 更多用法實例,可參考:
http://scripts.incutio.com/httpclient/index.php

[轉載]php程序員如何進階-多看、多寫、多交流

2010-04-14

原文載自志凡’s blog

很多初學者都說入門之后不知道該如何提高,我都是告訴他們多實踐。最近在我們的團隊中建立了一個學生的實習小組,我在和他們講授程序設計分析的時候,我也給他們了個小建議寫代碼就是多看多寫,后來又補上一點:多交流

我認為不管是做什么行業或工作,只要專注都可以有自己不同的成就。因此我覺得做任何事必需要有熱情,而且是持續的熱情,有一句話說“好的開始是成功的一半,持之以恒是成功的另一半”我很認同,所以自己的認定的事情就應該堅持的去做。我提出了三多:多看、多寫、多交流,來將熱情付出行動。

這里談到的是當你入門后怎么使自己不段的提高的一些方法,可能只是一些片面之詞,但我相信只要你去做了都會有一些收獲。

在 我們開始學習程序,都必須對一些基礎知識進行學習,例如語法、常用的內置函數,就PHP來說內置函數有成百上千個(沒有統計過),就常用的也有上百個。怎 么才可以對這些逐個掌握?死記硬背?這是一個常人都無法做到的,即使是記住了,通常能否靈活的應用還要打個問號。那該怎么做呢?

首先是多看,看技術文章,看開源代碼。

技 術文章應該不必多說,這是學習新技術和積累技術的必備渠道。這里我談談該怎么看,很多人包括我自已有時候,只是看一遍就算了,這樣的結果一般都是知其然不 知所以然。我認為要把別人的東西變成自己的必須實踐。把文章所說的技術通過自己理解的寫出來并改進,并在合適的時候盡快應用的你的實際工作中。

再 說看代碼,一是一些網友的代碼,這里就要有一個觀念,就是不能迷信別人的代碼,應該客觀的去看,學習別人的方法的時候,應該去考慮它是否有問題,應該是辯 證的態度對對待,如果有問題自己試著去解決,并和他們交流。二是看開源項目中的代碼,這類就不僅僅是看代碼了還有框架、設計思想等。我建議每個人至少看到 1到2套開源代碼,因為我認為開源代碼對自己的提高比一般的技術文章要快的很多。首先它們都是一些較為成功的項目,在成功項目中其實包含了原作者的經驗和 其項目不斷改進中產生的非富經驗。對于開源項目,我的方法是先從它的入口文件看起一般是index.php看它的整體文件結構,再看它的公共文件里的內 容,具體的一些常用的工具類,這樣會對整個項目的結構有一個了解,然后就是你所興趣的功能的具體實現代碼,并詳細搞懂他的實現方式和原理。在看的過程中你 肯定可以學到很多有價值的東西。我個人的經驗是:看的最多的是DZ的代碼,其它項目也很多,但比較全面的還是dz的代碼。個人認為看代碼還是比較速成的一 種方式,因為別人的走過的路你就不需要再走了,站在巨人的肩膀上總是可以走的更快更遠。

關于多寫其實 上面也提到了,學習后的東西應該要馬上實踐,并盡快在合適的時候應用到自己的工作中,這樣才能收獲的更多更快。另一方面是自己嘗試著去寫一些小項目,只有 去做一完整性的項目才是最有價值的實踐,但在做這些實踐中我認為應該嚴格的要求自己,既然是為了學習,就不是應該敷衍了事,盡可能把所有細節都處理的最 好。還有就是時間一定要要求自己,不能拖,一方面是要給自己壓力,二是如果時間拖的太久思路和激情沒法持續的話,那你的計劃很可能最終會失敗并不了了之。

開 篇我提到很多初學者都說入門之后不知道該如何提高,我都告訴他們要多寫,為什么會無法提高,我認為是沒有目標,只要你給自己定一個目標,然后去實現,完成 后其實也達到自己提高的目的了。例如你去寫一個簡單的博客程序,在實現的過程中會遇到很多問題,再逐一去解決,這樣你就有了學習的方向了,解決問題就是積 累經驗和學習的過程。總的來說要給自己設置一個需要完成的目標,這個目標是什么有什么內容,什么時候完成都很清楚。

其實說到這里就可以回答上面該如何去掌握那么多的函數呢,當你看過和寫過很多代碼后你會發現你所掌握的函數和方法已經很多了,這就是在實踐的過程中無形產生的結果。所以什么語法之類的基礎的東西是不需要去死亡硬背的,在運用的時候自然就可以對它駕輕就熟。

最 后我認為做技術的交流很重要,因為做技術是個永無止境的學習過程,而交流是一種更有效的學習方式。因為每個人的知識系統都是不同的,每個人掌握的東西不 同,思維方式各異。所以交流就是一個互相學習和促進的過程,當你把自己的想法與別人交流你就會收獲更多新的想法。交流是一咱倍速增長的過程,前一段我寫了 一篇《當你開啟一扇門的時候,很多扇門將為你開啟》給我們的團隊就是想表達這個想法。

交流有很多的, 有線上的有線下的,大家都有上論壇的習慣,這是一種交流方式,但我認為線下交流更有效,語言的交流比文字的交流方式更直接和全面。因為我是PEA福州的常 委之一,很多線下活動是由我組織的,從參加人數來看并不是很理想,所以我認為做技術的應該更開放一些,多參加類似PEA的這種交流。

交流一定要是開放的,所以在交流中應該是一種包容的心態去面對。也就是說我們是持有自己想法的時候也應該耐心傾聽他人的意見,不能認死理。只有站在客觀的角度去看問題才能把問題看的更透徹,只有不抵觸才能讓自己學到更多的東西。

在我們的技術團隊中有定期的技術分享會,目的就是為了建立交流的平臺,讓大家都嘗試表達自己的意見,鍛煉自己的能力,并可以和更多的人去交流。

最后總結一下,多看,吸收別人的經驗轉化為自己所用,多寫,全面性的鍛煉自己的能力,多交流,利用眾人的智慧。三多更多的就是去做。

使用php結合移動飛信接口發送短信

2009-04-28

作用:通過飛信API發送短信到手機,進行日程提醒、服務器監控、報警、故障通知或短信自動控制。

好處:免費、方便、提高效率、偷懶。

使用接口:http://sms.api.bz/

API接口調用方式:http訪問,支持GET和POST。

http://sms.api.bz/fetion.php?username=您的移動飛信登錄手機號&password=您的移動飛信登錄密碼&sendto=接收短信的飛信好友手機號(也可以是你自己的手機號)&message=短信內容

其實只需要把這個地址的內容替換成自己的手機號和相關信息后,加入瀏覽器,就可以成功發送短信了。

注:短信內容最大長度為180個漢字,超過180個漢字不發送。返回的信息為UTF-8編碼的中文文本信息。

為什么使用php來調用呢?

  1. 方便
  2. 可做一些程序判斷,用來監測網站,服務器日志等。
  3. 有時也可以裝裝B的,呵呵:)

php調用方法一:在PHP5中通過file_get_contents函數發送短信(HTTP GET 方式)

代碼如下:

  1. <?php   
  2. $url = "http://sms.api.bz/fetion.php?username=13812345678&password=123456&sendto=13512345678&message=短信內容";   
  3. $result = file_get_contents($url);   
  4. echo $result; //返回信息默認為UTF-8編碼的漢字,如果你的頁面編碼為gb2312,請使用下行語句輸出返回信息。   
  5. //echo iconv("UTF-8", "GBK", $result);   
  6. ?>

php調用方法二:在PHP中通過curl發送短信(HTTP POST 方式)

  1. <?php   
  2. $data["username"] = 13812345678;   
  3. $data["password"] = "password123";   
  4. $data["sendto"] = 13512345678;   
  5. $data["message"] = "這是一條測試短信!";   
  6.   
  7. $curl = new Curl_Class();   
  8. $result = @$curl->post("http://sms.api.bz/fetion.php", $data);   
  9. echo $result; //返回信息默認為UTF-8編碼的漢字,如果你的頁面編碼為gb2312,請使用下行語句輸出返回信息。   
  10. //echo iconv("UTF-8", "GBK", $result);   
  11.   
  12. //curl類   
  13. class Curl_Class   
  14. {   
  15.     function Curl_Class()   
  16.      {   
  17.         return true;   
  18.      }   
  19.   
  20.     function execute($method, $url, $fields = '', $userAgent = '', $httpHeaders = '', $username = '', $password = '')   
  21.      {   
  22.         $ch = Curl_Class::create();   
  23.         if (false === $ch)   
  24.          {   
  25.             return false;   
  26.          }   
  27.   
  28.         if (is_string($url) && strlen($url))   
  29.          {   
  30.             $ret = curl_setopt($ch, CURLOPT_URL, $url);   
  31.          }   
  32.         else  
  33.          {   
  34.             return false;   
  35.          }   
  36.         //是否顯示頭部信息   
  37.          curl_setopt($ch, CURLOPT_HEADER, false);   
  38.         //   
  39.          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   
  40.   
  41.         if ($username != '')   
  42.          {   
  43.              curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);   
  44.          }   
  45.   
  46.         $method = strtolower($method);   
  47.         if ('post' == $method)   
  48.          {   
  49.              curl_setopt($ch, CURLOPT_POST, true);   
  50.             if (is_array($fields))   
  51.              {   
  52.                 $sets = array();   
  53.                 foreach ($fields AS $key => $val)   
  54.                  {   
  55.                     $sets[] = $key . '=' . urlencode($val);   
  56.                  }   
  57.                 $fields = implode('&',$sets);   
  58.              }   
  59.              curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);   
  60.          }   
  61.         else if ('put' == $method)   
  62.          {   
  63.              curl_setopt($ch, CURLOPT_PUT, true);   
  64.          }   
  65.   
  66.         //curl_setopt($ch, CURLOPT_PROGRESS, true);   
  67.         //curl_setopt($ch, CURLOPT_VERBOSE, true);   
  68.         //curl_setopt($ch, CURLOPT_MUTE, false);   
  69.          curl_setopt($ch, CURLOPT_TIMEOUT, 10);//設置curl超時秒數   
  70.   
  71.         if (strlen($userAgent))   
  72.          {   
  73.              curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);   
  74.          }   
  75.   
  76.         if (is_array($httpHeaders))   
  77.          {   
  78.              curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);   
  79.          }   
  80.   
  81.         $ret = curl_exec($ch);   
  82.   
  83.         if (curl_errno($ch))   
  84.          {   
  85.              curl_close($ch);   
  86.             return array(curl_error($ch), curl_errno($ch));   
  87.          }   
  88.         else  
  89.          {   
  90.              curl_close($ch);   
  91.             if (!is_string($ret) || !strlen($ret))   
  92.              {   
  93.                 return false;   
  94.              }   
  95.             return $ret;   
  96.          }   
  97.      }   
  98.   
  99.     function post($url, $fields, $userAgent = '', $httpHeaders = '', $username = '', $password = '')   
  100.      {   
  101.         $ret = Curl_Class::execute('POST', $url, $fields, $userAgent, $httpHeaders, $username, $password);   
  102.         if (false === $ret)   
  103.          {   
  104.             return false;   
  105.          }   
  106.   
  107.         if (is_array($ret))   
  108.          {   
  109.             return false;   
  110.          }   
  111.         return $ret;   
  112.      }   
  113.   
  114.     function get($url, $userAgent = '', $httpHeaders = '', $username = '', $password = '')   
  115.      {   
  116.         $ret = Curl_Class::execute('GET', $url, '', $userAgent, $httpHeaders, $username, $password);   
  117.         if (false === $ret)   
  118.          {   
  119.             return false;   
  120.          }   
  121.   
  122.         if (is_array($ret))   
  123.          {   
  124.             return false;   
  125.          }   
  126.         return $ret;   
  127.      }   
  128.   
  129.     function create()   
  130.      {   
  131.         $ch = null;   
  132.         if (!function_exists('curl_init'))   
  133.          {   
  134.             return false;   
  135.          }   
  136.         $ch = curl_init();   
  137.         if (!is_resource($ch))   
  138.          {   
  139.             return false;   
  140.          }   
  141.         return $ch;   
  142.      }   
  143.   
  144. }   
  145. ?>
女校剑道部官网