ヤフオク自動取り消しシステム

はじめにログイン状態を確認から、機動する別ウィンドウでヤフオクにログインしてください。

このウィンドウは2分くらいで自動で閉じられます。

    商品の登録方法

  1. 普段使っているブラウザを起動します(何でもOKです)
  2. 自身のアカウントから出品中の一覧を表示します
  3. 自動取り消しをしたい商品を右クリックしてリンクアドレスをコピーします

    4. URLのフィールドに貼り付けて 目標価格を入力します (その他の項目は自動で入ります)

    5.[登録する] ボタンを押します

    6. 何件も登録できますが,商品の終了時間はなるべく1分以上開けてください

    7.取り消し時間は,残り20秒が最小値です.

    登録された商品情報は5分間隔で更新されます.

    残り時間が1分を切った商品は9秒ごとに新しい価格に更新されます

セットアップ

フリーアプリのXAMPPをインストールしてください。
バージョンは最新のものを選んでください。

「はい」を選んでください

「OK」を選んでください

画像の通りに、必要ないアプリケーションのチェックを外してください。

このまま「Next」をクリック

チェックは外してから「Finish」をクリック

フリーアプリのnode.jsをインストールしてください。
バージョンは最新のものを選んでください。
すべて次へをクリックして完了してください。

C:¥xamppフォルダからhtdocsフォルダを削除してください。

ダウンロードしたhtdocs.zipをWクリックして中身をすべてC:¥xamppフォルダへコピーしてください

xam-permition.batを右クリックして管理者として実行してください。
次にxamp-controll.exeをWクリックしてください。
このアイコンをスタートメニューにピン留めをおすすめします。

一番右上のConfigをクリック

Apacheにチェックを入れてください。
次回からStartを押さなくても起動するようになります。

今回は一番上Apachのstartをクリック

外部のPCからのアクセスを許可するか聞いてきますが、キャンセルしていいです。

Startしたら Adminボタンを押してください。
Chromeブラウザでアプリケーションが起動します。

mb_convert_kana 濁点の結合 かな、カタカナ混在




$str = 'ぐボピ.png';
$strs = mb_str_split($str);
$strs = array_reverse($strs);
$nextkey = -1;

foreach ($strs as $key => $str) { //かな true
  if(preg_match("/^[ぁ-ん]+$/u",$str)){
    $kana = true;
  }else{
    $kana = false;
  } 

  if(preg_match("/゙|゚/",$str)){ //濁点なら保存
    $dakten = $str;
    $nextkey = ++$key;
    continue;
  }
  
  if($key == $nextkey){ //濁点なら次の文字の後ろに連結
    $str .= $dakten; 
  }
  
  $str = dakten_replace($str); //置換 濁点も一文字になってる
  
      
  if( $kana ) {  // 元が "かな" ならかなに戻す
    $str = mb_convert_kana($str, 'c', 'UTF-8');
  }

     $newstrs[] = $str ; 
}

$strs = array_reverse($newstrs);
$str = implode('',$strs);
  var_dump($str);

  function dakten_replace ($str){
    $str = str_replace('゙','゛' ,$str); //全角濁点を半角に
    $str = str_replace('゚','゚' ,$str);
    $str = mb_convert_kana($str, 'hkV', 'UTF-8');
    $str = mb_convert_kana($str, 'HV', 'UTF-8');
    $str = mb_convert_kana($str, 'C', 'UTF-8');
    return $str;
  }


string(13) “ぐボピ.png”
$str = ‘ぐボピ.png’;
比較しても見た目ではわからない。

濁点はひらがなでもカタカナでもないが、かなとカタカナは等しい

samba.conf 設定ファイルをincludeしてユーザーを追加する



$ cd ~

新規ファイルの作成
$ vi akita_hanako_smb.conf

i で編集モードにして 以下をペースト

	#この下の行から
	[share]
	  comment = Share Folder for All Users
	  path = /home/akita_hanako/
	  browseable = no
	  read only = no
	#この上の行まで

ESCキー → :wq 


共通ファイルの編集
$ sudo vi /etc/samba/smb.conf
	
# この一行を最終行へ貼り付ける	
	include = /home/akita_hanako/akita_hanako_smb.conf

ESCキー → :wq 

これでsambaユーザーを作る
$ sudo pdbedit -a akita_hanako
パスワードを打つ x2


sanbaの再起動実行
$ sudo systemctl restart smb.service


LINE Messaging APIで phpから Pushメッセージを送信する

1. LINE for Bussinessを用意する

LINE Messaging APIを使用するには Line Developers に登録する必要があります。
LINE Bussiness ID を作る

次に LINE Bussiness アカウントとLINEアカウントを連携します。
連携するURL

2. LINE Messaging APIを設定する

channelをつくる

Webhookを設定

Webhook settings の 「Edit」 をクリックし、公開しているWebhookURLを設定します。

Channel access tokenを有効化

Messaging APIの下部にある「Channel access token」の「Channel access token (long-lived) 」から「Issue」をクリック。

つくったchannelをお友達登録する

Messaging API 管理画面から作ったチャンネルのQRコードを表示してお友達登録する



    // LINE Messaging API プッシュメッセージを送る
    $LINE_PUSH_URL = "https://api.line.me/v2/bot/message/push";


    $LINE_CHANNEL_ACCESS_TOKEN = 'ZXCVFDSA*******************'; 

    // Your user ID
    // Messaging API 管理画面で確認 これくらいながいやつ
    $LINE_USER_ID = "U3**********************";

    // 送信するメッセージ
    $message_1 = "こんにちは API";
    $message_2 = "PHPからPUSH送信\r\n改行して2行目";

    // リクエストヘッダ
    $header = [
        'Authorization: Bearer ' . $LINE_CHANNEL_ACCESS_TOKEN,
        'Content-Type: application/json'
    ];

    // 送信するメッセージの下準備
    $post_values = array(
        [
        "type" => "text",
        "text" => $message_1
        ],
        [
        "type" => "text",
        "text" => $message_2
        ]
    );

    // 送信するデータ
    $post_data = [
        "to" => $LINE_USER_ID,
        "messages" => $post_values
        ];

    // デバグ確認用のログ:送信データ
    $file = '/tmp/post_data.txt';
    file_put_contents($file, json_encode($post_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), FILE_APPEND);
    file_put_contents($file, PHP_EOL.PHP_EOL, FILE_APPEND);

    // cURLを使った送信処理の時は true
    // file_get_contentsを使った送信処理の時は false
    $USE_CURL = true;

    if ($USE_CURL) {
        // cURLを使った送信処理
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $LINE_PUSH_URL);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post_data));
        $result = curl_exec($curl);
        curl_close($curl);
    }
    else
    {
        // file_get_contentsを使った送信処理
        $context = stream_context_create(array(
            'http' => array(
                'method' => 'POST',
                'header' => implode("\r\n", $header),
                'content'=>  json_encode($post_data),
                'ignore_errors' => true
            )
        ));

        $result = file_get_contents(
            $LINE_PUSH_URL,
            false,
            $context
            );
    }

    // デバグ確認用のログ:受信レスポンス
    $file = '/tmp/result.txt';
    file_put_contents($file, $result, FILE_APPEND);
    file_put_contents($file, PHP_EOL.PHP_EOL, FILE_APPEND);

jquery 要素を取得 いろいろ

オブジェクト要素数のカウント


  let a = {de:234}
  console.log( Object.keys(a).length)

// a.length はundefined になる

変数が未定義かどうかの判定


                                                 // あり   なし
    console.log(typeof session !== "undefined" );// true  false
    console.log(typeof session === "undefined" );// false true
 

指定した要素本体の取得


   $('#youso').prop('outerHTML');
 

自分の親要素の順位

 
 var this_index = jQuery('.oya p').index(jQuery(this).parent());
 oyaクラスの中のpが何番目かが取得できる this は同じ親を持つボタンとか
 

チェックされているラジオボタン、checkBoxの値を取得

 
jQuery('input[name="shipper"]:checked').val();
 

ラジオボタンの見た目をONにする、属性を選択状態にする←これらは別物

 
 jQuery('[type="radio"]').eq(0).prop('checked',true).attr('checked',true);
 

選択されたラジオボタンがあればtrue

 
 var ret = $('[name="fls"]').is(':checked'); 
 

セレクトメニューに値をセット

 
jQuery(this).prop("selectedIndex", 0); //最初のoption指定
 

セレクトメニューで選択されたoption要素のdata属性を取得

 
jQuery('select').children('option:selected').data('id');

datalistで選択されたoption要素のdata属性を取得

 
  $('[name="company"]').change(function(){
      var issuer_id = $("#datalistOptions22 option[value='" + $('#company').val() + "']").data('issuer_id');
      console.log(issuer_id);
    });

GoogleのOAUTHログイン

Google App を作成する

Google 認証機能には、Google Developers Console のクライアント id とシークレットのパスが必要になります。そのために Google アカウントで入り、新規プロジェクトを作成していきます。 Google Developers Console

 

 

クライアントIDとクライアントシークレットを作成後、後々のためにコピーしておきます。承認済みのリダイレクト URIは、

http://あなたのドメイン/login/google/callback

を加えておきます。

laravel の config/services.php にペーストします。


return [
    ....
    'google' => [
        'client_id' => 'app id',
        'client_secret' => 'add secret',
        'redirect' => 'http://localhost/login/google/callback',
    ],
]

プラグインをデータベースから無効化

これで探す


select * from wp_options where option_name = 'active_plugins'
 
 
// シリアライズされた文字列↓
$a='a:48:{i:0;s:25:"add-to-any/・・・・・・";}';

$b= unserialize($a);

array_splice($b,25,1);  //インデックスだと24を無効化
array_splice($b,13,1);  //〃 12
print_r($b);
$b = serialize($b);
var_dump($b); // 再度シリアライズして コピー
 
 
update wp_options
            -- ここに貼る ↓
set  option_value = 'i:0;s:23:"add-to-any/・・・・・・";}'
where option_name = 'active_plugins'