中国インターネット事情
  • カテゴリ プログラム の最新配信
  • RSS
  • RDF
  • ATOM

このブログにも、いいねボタンやらツイートボタンやらを取りつけようと思いついた。とくに意味はない。
取りあえず、いいねボタンをつけるにはどうしたら良いのか?

このエントリーをはてなブックマークに追加 

 このようなボタンだ。以下のようなコードをはさみこめばOKだ。赤字部分は自分のページのものになる。
コードは公式サイトで取得できる。 

Facebook
公式サイト:http://developers.facebook.com/docs/reference/plugins/like/

 <iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fchinese-homepage.com%2F
&amp;send=false&amp;layout=button_count&amp;width=110&amp;show_faces=true&amp;action=like
&amp;colorscheme=light&amp;font&amp;height=21" scrolling="no" frameborder="0" style="border:none;
overflow:hidden; width:110px; height:21px;" allowTransparency="true"></iframe>

はてなブックマーク
公式サイト:http://b.hatena.ne.jp/guide/bbutton

<a href="http://b.hatena.ne.jp/entry/https://chinese-homepage.com/" class="hatena-bookmark-button" data-hatena-bookmark-title="中国インターネット事情" data-hatena-bookmark-layout="standard" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>

Twitter
公式サイト:http://twitter.com/about/resources/tweetbutton

<iframe allowtransparency="true" frameborder="0" scrolling="no" src="//platform.twitter.com/widgets/tweet_button.html" style="width:100px; height:20px;"></iframe>

これを見ると、Twitterのものだけが自動でサイトを認識してくれるようだ。他はURLが必要となっている。
このURLの部分、方法はいくらでもあるのだが面倒なので、これでいいや。

 

skypeを騒がすEasyBits goとは、どうもこいつらしい。

EasyBits Software AS
http://www.easybitsmedia.com/
スカイプのゲームチャンネルをやっている会社らしい。スカイプにそんなものが有ったのを知らなかったが。
スカイプ回線を利用してマルチプレーヤーで遊べるもののようだ。

そして今回の問題は、理由は不明だが、この会社がスカイプを利用して自社のソフトを強制的にインストールしたことにある。
スカイプも、マイクロソフトに莫大な金額で買収されたのだから、もう少しサードパーティの管理を厳格にしてほしい。

2011年5月28日あたりから、強制インストールが始まっているようで、日本だけでなく中国でも日本と同じ質問があった。
状況は、全世界同時進行ってことだろうか。

なお、まだ勝手にインストールされてないぞって方も、
こちらのサイトからダウンロードして、自分でインストールすることができる。
http://www.easybitsmedia.com/
なお、フラッシュがないと動作しない。バージョンが古い場合は先にフラッシュをバージョンアップしてからのインストールとなる。

こうして堂々とHPを用意し、skypeと共同開発したということが書いてあるから、意図的ではなく単なるポカミスの可能性も否定できない。
ウイルスやマルウェアの可能性は低いのかもしれない。

しかし、まあ、いずれにしてもあまり遊ぶ気にはなれないソフトである。

EasyBits GOという変なソフトが、PCに勝手にインストールされてしまった。
ゲームができると言う事だがちょっと待ってくれ。人のPCに勝手にインストールするようなソフトを誰が使うか。

筆者の環境でのソフトのEasyBits GOの位置は以下の通りで、この場所は通常隠しフォルダなので見ることができない。
C:\ProgramData\Easybits GO\EasyBitsGO.exe
このあたりも、このソフトの厭らしさを垣間見ることができる。こんな胡散臭いソフトは即刻削除するべきだろう。

削除をするべく通常の方法のアンインストールを実行すると、リストから消えるだけで本体は全く消えないというのだからタチが悪い。
アンインストールを実行しても、綺麗に消えないというのは、大抵後ろめたい、胡散臭いソフトだといえる。
筆者の中では完全にウィルス認定である。誰だこんなクソソフトをばら撒いているのは?

とりあえず、無理矢理消すことにした。手順は以下の通りである。

...続きを読む

■東電データを基に、実際に電源をOFFにして節電するソフト
東電の更新データを監視、使用量が上昇してブラックアウトに近付いたらPCの電源を自動切断するソフト作りました。
つまり、ただ電力の利用状況を表示するのではなく、実際にPCの電源を切断して電気の利用を抑制します。

PCの電源が落ちたら仕事ができない?
仕事のPCが使えない。仕事にならない。オフィスに居ても仕方がない。とっとと「さんぽ」という流れです。

■ソフトの動作
常駐ソフトとして東電のデータに15分に一度アクセス。電力利用が96%を超えたら20秒間のカウントを経てPC電源をシャットダウンします。
20秒間に間にバックアップ等を行って下さい。
また、保存していないものがあるとシャットダウンプロセスが止まるので、そこでもセーブ可能です。

ダウンロードはこちらから
https://chinese-homepage.com/mysoft/setup.exe

検索用のブラウザを1人で作っています。これを使えば情報収集能力は誰でも2倍程度に。

クロームと比べて

 
従来のListbrowserと比べて

まだ公開していません。従来版のみ公開されています。

ECcubeにはPaypalモジュールがあるのだが、ペイパルの支払いページに移った時、フォームに自動入力してくれない。
これだと、ペイパルでの購入者は、住所や氏名など何項目も再入力する必要がある。
ユーザー登録の時に同じデータを入力しているのに、また同じ項目を入力させるフォームが出たらユーザー側からすれば腹立たしい物ではないだろうか。
少なくても筆者ならやりたくない。

そこで、ユーザの利便を考え、ペイパルサイトに遷移した時にカード情報以外の部分を予め自動入力してしまおうというハックである。
改善を行ったのはECcubeの2.4.4、決済モジュールは1.0.1というバージョンである。恐らくは他のバージョンでも大体は似たようなものだろう。


変更部分は次の二か所

変更1
data/downloads/module/mdl_paypal/paypal_link.tpl 53行くらいに以下を追加

    <!--{assign var=key value="first_name"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="last_name"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="state"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="city"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="address1"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="address2"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="zip"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="night_phone_b"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
    <!--{assign var=key value="email"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />

 

変更2
data/downloads/module/mdl_paypal/LC_Page_Mdl_Paypal_Helper_Link.php 161行くらいに以下を追加

        //追加///////////////////////////////////////////////////////////////////////////////////
        $this->objFormParam->addParam("first_name", "first_name", URL_LEN, "KVa", array("MAX_LENGTH_CHECK"),$arrData["deliv_name02"]);
        $this->objFormParam->addParam("last_name", "last_name", URL_LEN, "KVa", array("MAX_LENGTH_CHECK"),$arrData["deliv_name01"]);
        $this->objFormParam->addParam("zip", "zip", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"),$arrData['deliv_zip01']."-".$arrData['deliv_zip02']);
        $Jp_ken = array("北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県");
        $objQuery = new SC_Query();
        $city = $objQuery->get('mtb_zip', 'city', 'zipcode = ?', $arrData['deliv_zip01'] . $arrData['deliv_zip02']);
        $this->objFormParam->addParam("state", "state", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"), $Jp_ken[$arrData["deliv_pref"]-1]);
        $this->objFormParam->addParam("city", "city", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"), $city);
        $this->objFormParam->addParam("night_phone_b", "night_phone_b", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"),$arrData["order_tel01"]."-".$arrData["order_tel02"]."-".$arrData["order_tel03"]);
        $this->objFormParam->addParam("address1", "address1", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"), str_replace($city, "", $arrData["deliv_addr01"]));
        $this->objFormParam->addParam("address2", "address2", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"), $arrData["deliv_addr02"]);
        $this->objFormParam->addParam("email", "email", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"), $arrData["order_email"]);

 

これで、ページ遷移時にフォームへ自動入力されているはずです。
なお、不具合については特にチェックしていませんのでよくテストをした方が良いと思われます。
ハックの適用は自己責任でお願いします。

サンプル(無料商品)を取り寄せる人に会員登録をお願いするための手法で、ログイン状態でないと無料商品をカートに追加できません。

場所
/data/class/SC_CartSession.php

まず、こちらを参考にしてください。
https://chinese-homepage.com/modules/d3blog/details.php?bid=301

if ($price === "0"){以下の部分に、以下のコードを挿入します。

              $objCustomer = new SC_Customer();
              //ログイン判定
              if (!$objCustomer->isLoginSuccess()){
                 SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG,"",false,"無料商品は会員登録してログイン状態で選択してください。<br />会員登録は右上の「会員登録」からお願いします。",false); //←ログイン以外はエラー
                 exit;
              }

会員以外は、エラーメッセージを表示して、無料商品をカートに追加することが出来ない状態になります。なお、有料商品は普通に追加可能です。
サンプルを配りつつ会員を増やす場合に有効です。

なお、不具合については特にチェックしていませんのでよくテストをした方が良いと思われます。
ハックの適用は自己責任でお願いします。 

ゼロ円商品の購入数に制限を設ける場合の手法です。ゼロ円のサンプル商品を大量に注文されても困りますので。

場所
/data/class/SC_CartSession.php

215行目付近 追加の時に、ゼロ円のものは強制的に1つにしてしまいます。
                    if ($_SESSION[$this->key][$i]['price'] === "0"){
                        $_SESSION[$this->key][$i]['quantity'] = 1;
                    }else{
                        $_SESSION[$this->key][$i]['quantity']+= $quantity;
                    }
                   
                    if(!empty($campaign_id)){
                        $_SESSION[$this->key][$i]['campaign_id'] = $campaign_id;
                        $_SESSION[$this->key][$i]['is_campaign'] = true;
                    }
                }
                $find = true;
            }
        }
        if(!$find) {

           $price ="1";
           if ($classcategory_id1 === "0"){
               $arrProductsClass = array();
               $objQuery = new SC_Query();
               $col = "price02";
               $table = "vw_cross_products_class";
               $where = "product_id = ?";
               $objQuery->setorder("rank1 DESC, rank2 DESC");
               $arrProductsClass = $objQuery->select($col, $table, $where, array($id[0]));
               $price =$arrProductsClass[0]['price02'];
           }else if($classcategory_id1 !== "0"){
               $arrProductsClass = array();
               $objQuery = new SC_Query();
               $col = "price02";
               $table = "vw_cross_products_class";
               $where = "product_id = ? and classcategory_id1 = ?";
               $objQuery->setorder("rank1 DESC, rank2 DESC");
               $arrProductsClass = $objQuery->select($col, $table, $where, array($id[0],$id[1]));
               $price =$arrProductsClass[0]['price02'];
           }else if($classcategory_id2 !== "0"){
               $arrProductsClass = array();
               $objQuery = new SC_Query();
               $col = "price02";
               $table = "vw_cross_products_class";
               $where = "product_id = ? and classcategory_id2 = ?";
               $objQuery->setorder("rank1 DESC, rank2 DESC");
               $arrProductsClass = $objQuery->select($col, $table, $where, array($id[0],$id[2]));
               $price =$arrProductsClass[0]['price02'];
           }

            $_SESSION[$this->key][$max+1]['id'] = $id;

            if ($price === "0"){
               $_SESSION[$this->key][$max+1]['quantity'] = 1;
            }else{
               $_SESSION[$this->key][$max+1]['quantity'] = $quantity;
            }

ここの if ($price === "0"){以下の部分を

            if ($price === "0"){
              $find2 = false;
              for($i = 0; $i <= $max; $i++) {
                if($_SESSION[$this->key][$i]['price'] === "0") {$find2 = true;}
              }

              if(!$find2){
                $_SESSION[$this->key][$max+1]['id'] = $id;
                $_SESSION[$this->key][$max+1]['quantity'] = 1;
                $_SESSION[$this->key][$max+1]['cart_no'] = $this->getNextCartID();
                if(!empty($campaign_id)){
                  $_SESSION[$this->key][$max+1]['campaign_id'] = $campaign_id;
                  $_SESSION[$this->key][$max+1]['is_campaign'] = true;
                }
              }
            }else{
                $_SESSION[$this->key][$max+1]['id'] = $id;
                $_SESSION[$this->key][$max+1]['quantity'] = $quantity;
                $_SESSION[$this->key][$max+1]['cart_no'] = $this->getNextCartID();
               if(!empty($campaign_id)){
                  $_SESSION[$this->key][$max+1]['campaign_id'] = $campaign_id;
                  $_SESSION[$this->key][$max+1]['is_campaign'] = true;
               }
            }

こうすれば、他のゼロ円商品がすでにカートにある場合は、新たなゼロ円商品をカートに追加できません。


323行目付近 if文を追加 個数を増加させません。

    // 個数の増加
    function upQuantity($cart_no) {
        $max = $this->getMax();
        for($i = 0; $i <= $max; $i++) {
            if($_SESSION[$this->key][$i]['cart_no'] == $cart_no) {
                if(strlen($_SESSION[$this->key][$i]['quantity'] + 1) <= INT_LEN) {
            if ($_SESSION[$this->key][$i]['price'] !== "0"){$_SESSION[$this->key][$i]['quantity']++;}
                }
            }
        }
    }

 これで、価格がゼロの時には、購入数が1つに限定されます。
もっと洗練された良い方法があるかもしれません。

なお、不具合については特にチェックしていませんのでよくテストをした方が良いと思われます。
ハックの適用は自己責任でお願いします。 

ECcubeは便利ですが、無料商品(0円)の登録ができない状態でした。そこでここを改善します。

ディレクトリ:/data/class/pages/admin/products/

LC_Page_Admin_Products_ProductClass.php 416行付近
"ZERO_CHECK"を消去。

$objErr->doFunc(array(NORMAL_PRICE_TITLE, "price01:".$no, PRICE_LEN), array("ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array(SALE_PRICE_TITLE, "price02:".$no, PRICE_LEN), array("EXIST_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));

LC_Page_Admin_Products_Product.php 651行付近
"ZERO_CHECK"を消去。

$objErr->doFunc(array("通常価格", "price01", PRICE_LEN), array("ZERO_CHECK", "SPTAB_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("商品価格", "price02", PRICE_LEN), array("EXIST_CHECK", "NUM_CHECK", "ZERO_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));


サンプル商品などの登録にいかがでしょうか。

なお、不具合については特にチェックしていませんのでよくテストをした方が良いと思われます。
ハックの適用は自己責任でお願いします。

月額費用無しでクレジット決済が利用できるpaypalは非常に便利です。
今回、オープンソースのECcubeに無料で使えるPaypalモジュールが出来たというので使ってみました。
ペイパルのテスト環境で利用すると問題なく動作しているようです。

しかし、注文確認メールが決済前に送られてしまっているので、そこが少し気になりました。
そこで、決済後に注文確認メールが送られるように改造してみました。

PayPalサーバからIPN(支払い通知)を受け取るコードにメール送信機能を追加する。
/user_data/paypal_recv.php 87行くらい。

   if (in_array('VERIFIED', $response)) {
       GC_Utils::gfPrintLog("IPN VERIFIED: status by ". $arrRequest['payment_status'], PAYPAL_LOG_PATH);
       $objQuery = new SC_Query();
       $objQuery->update("dtb_order", $arrVal, "order_id = ?", array($arrRequest['invoice']));

   //追加部分開始///////////////////////////////////////////////////////////////////////////
       $order_id = $arrRequest['invoice'];
       // 完了メール送信
       if($order_id != "") {
           $mailHelper = new SC_Helper_Mail_Ex();
           // 携帯
           if (SC_MobileUserAgent::isMobile()) $mailHelper->sfSendOrderMail($order_id, '2');
           // PC
           else $mailHelper->sfSendOrderMail($order_id, '1');
       }
   //追加部分終了///////////////////////////////////////////////////////////////////////////

       return true;
   } else {
       return false;
   }


メールを送信する部分を削除しておく。ここを消さないと決済前にメールが送信されてしまいます。
/downloads/module/mdl_paypal/LC_Page_Mdl_Paypal_Helper_Link.php 215行くらい。

        // セッションに保管されている情報を更新
        $this->objCustomer->updateSession();

   //削除部分開始///////////////////////////////////////////////////////////////////////////
        // 完了メール送信
        if($order_id != "") {
            $mailHelper = new SC_Helper_Mail_Ex();
            // 携帯
            if (SC_MobileUserAgent::isMobile()) $mailHelper->sfSendOrderMail($order_id, '2');
            // PC
            else $mailHelper->sfSendOrderMail($order_id, '1');
        }
   //削除部分終了///////////////////////////////////////////////////////////////////////////
    }
}
?>

これで、決済前ではなく決済後に注文確認のメールが行くようになるはずです。
なお、不具合については特にチェックしていませんのでよくテストをした方が良いと思われます。
ハックの適用は自己責任でお願いします。

ペイパルのテスト環境は使いにくい部分があるのですが無料なので仕方がないかもしれません。
月額料金が無料で可能なクレジットカード決済ですので、利用価値は大いにあるのではないでしょうか。

中国的には銀連に対応。
 

その他のニュース
ブログランキング
にほんブログ村 IT技術ブログへ
 
ニュースカテゴリ
中国ネット基本情報
人気の記事
ニュースのトップへ
中国語サイト制作
ランキング参加中

にほんブログ村 IT技術ブログ Webサイト構築へ

プロフィール
後藤(作者)