月別アーカイブ: 2019年8月

summernoteで画像をアップロード

summernoteで画像をアップロードする方法を調べてみたが情報が古く自分で実装したのでまとめ。
画像をアップロードしたらエディタに画像を反映させるところまで解説します。

環境
summernote v0.8.12
XAMPP
PHP 7.3

読み込むファイル

<!-- include libraries(jQuery, bootstrap) -->
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.js"></script>
<!-- include summernote css/js -->
<link href="summernote-master/dist/summernote.css" rel="stylesheet">
<script src="summernote-master/dist/summernote.min.js"></script>
<script src="summernote-master/dist/lang/summernote-ja-JP.js"></script>

<form method="post" enctype="multipart/form-data" action="">
  <textarea id="summernote" name="editordata"></textarea>
<input type="submit" name="send" value="送信する">

bootstrapはCDNでsummernoteは日本語で読み込んでいます。

画像ファイルのアップロード部

$(document).ready(function() {
    $('#summernote').summernote({
      lang: 'ja-JP',
        height: 200,
        callbacks: {
            onImageUpload: function(files) {
                sendFile(files[0]);
            },
        }
    });
});

function sendFile(file) {
    data = new FormData();
    data.append("file", file);
    $.ajax({
        data: data,
        type: "POST",
        url: "upimg.php",
        cache: false,
        contentType: false,
        processData: false,
    }).done(function(data, textStatus, jqXHR){
        $('#summernote').summernote('insertImage', 'http://localhost/develop.git/img/' + file.name);
    });
}

sendFileに渡すデータはfileだけなのとsummernoteで画像をアップしたらエディタに反映させるのはinsertImageで画像URLを指定しています。
その他は先人の知恵をお借りしました。

upimg.php

    move_uploaded_file($_FILES['file']['tmp_name'], "img/". $_FILES['file']['name']);

画像をアップしているだけなので
ファイル名が重複しないようしたりリサイズなどはこのファイルでするようにしましょう。

Banggood バングッドでスマホを買ってみた

banggood

スマホについて

いろいろ調べてみてAndroid Snapdragon 855の中華スマホXiaomi K20 Proのグローバル版Mi 9T Proを購入することにしました。

Mi 9T Pro
nanoSIM
Snapdragon 855
ベンチ 約360,000
非防水
有機EL
11ac
USB Type-C(PDで充電)
42,000円(クーポンが謎の1万以上OFFだった)

いつもながら調べすぎなのですがCPUはFFのソシャゲやっているので最新のものを
有機ELは綺麗な画面でファンタジー感を味わいたくて
(画面焼きつくのかな?放置はしないけど焼きつきの報告もちらほら)
11acが使えれば電波干渉はいいかな
モバイルバッテリー等PDで急速充電(3A)できればいいかな

Banggoodについて

・世界的に有名なので届かないことはあってもPayPayで返金してくれるとのこと
・問い合わせメールが英語
・商品が届くまで10日~30日かかること
・クレジット決済は海外扱い

クレジットカードが海外で使える設定じゃなかったのでクレカ止められました。
JCBからハガキがきてフリーダイヤルにかけて不正利用じゃないよと説明して本人確認で再度使えるようになりました。
クレカがダメとのことでコンビニ支払いで購入
コンビニ支払いでも返金はPayPayになるとのこと

届くまで

選択できる発送方法では
Air Parcel Register (252円 & 7-20 business days)
EMS Express Mail Service (1,064円 & 7-15 business days)
Air Parcel Registerが一番安かったので選択
遅いらしいけどね!
EMSとか選べば早く到着するみたいです。

保険は何もつけずに購入
Add Shipping Insurance to your order 1,139円
Broken Screen Service 1,094円
てか保険ってなに?届かなかったら返金されるんじゃないの?
途中紛失したり盗まれたら返金しないってことならその商売やりたい!
ガラス割れは今まで物を落としたことがないので平気。
実際割れたとして海外発送で直すの?とても面倒くさそう。
結果保険なしで冒険購入して到着したので疑問が残る。

追跡は17trackってサイトで追跡するらしい
https://www.17track.net/ja

番号:RGXXXXXXXBE
パッケージの状態:配達完了 (13 日)
国:ベルギー -> 日本
目的地:
2019-09-19 11:25, GIFU, OGAKI, 503-8799, Final delivery
2019-09-19 00:00, GIFU, OGAKI, 503-8799, Absence. Attempted delivery.
2019-09-18 14:00, GIFU, OGAKI, 503-8799, Processing at delivery Post Office
2019-09-18 01:00, KANAGAWA, KAWASAKIHIGASHI, 219-8799, Departure from inward office of exchange
2019-09-17 09:00, KANAGAWA, KAWASAKIHIGASHI, 219-8799, Held by import Customs
2019-09-16 18:47, KANAGAWA, KAWASAKIHIGASHI, 219-8799, Arrival at inward office of exchange
2019-09-12 03:38, BELGIUM, BRUSSELS EMC G, Dispatch from outward office of exchange
2019-09-11 19:53, BELGIUM, BRUSSELS EUROPEAN MAIL CENTRE, Arrival at outward office of exchange
発送元:
2019-09-18 14:00, Japan, Arrival distribution office
2019-09-18 01:00, Japan, Departure to distribution network
2019-09-17 09:00, Japan, Awaiting presentation to Customs
2019-09-16 18:47, Japan, Arrival from abroad
2019-09-12 03:38, Belgium, Departure to country of destination
2019-09-11 19:53, Belgium, bpost has received the item
2019-09-06 09:50, Item is announced / bpost received the information
======================================
Powered by www.17track.net

購入日とコンビニ支払いした日は8/30で9/19に無事到着
日本時間で土日祝日はステータスが変わらなかったからbpost(ベルギー郵政)は休みなのかもね。

Laravel ミドルウェアで独自のログイン機能を実装する

Laravelで二段階認証とか既存のAuthを使わずにミドルウェアでいろいろやったのでまとめ。

環境
Laravel:5.5 LTS

独自のAuthクラスを作成

app/Http/Middleware/Auth.php

<?php

namespace App\Http\Middleware;

use Illuminate\Support\Facades\Redirect;
use Closure;

class Auth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!session()->has('loginFlg')) {
            return redirect('admin/login');
        }
        return $next($request);
    }
}

セッションのログインフラグが立ってなかったらログイン画面へリダイレクト。

自作したAuthクラスをルートへ登録

app/Http/kernel.php

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
//        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth' => \App\Http\Middleware\Auth::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];

既存のAuthと名前が被るのでコメントアウトして追加

ルートに対しミドルウェアを指定

routes/web.php

Route::group(['middleware' => ['auth']], function () {
    Route::get('admin/my', 'Admin\MyController@index')
    Route::get('/', function () {
        return view('welcome');
    });
});

管理画面はログインフラグが立ってないとログイン画面にリダイレクトさせたいので管理画面のルートはgroup内に追加していく。
welcomeはログインフラグが立ってない場合ログイン画面にリダイレクトするかのテスト。
myページとwelcomeページにアクセスしてログインフラグが立っていないときちんとリダイレクトしたのでこの書き方でまとめて記載していく。