phpとか

自分用備忘録なので、自分が分かる程度にしか書いてません。

ブラウザバック時、formの値が保持される

タイトルの現象をすっかり忘れていました。

ブラウザバック時、formの値は保持されるけど、jsはonloadの処理が再度走る。
なので、例えば初回読み込み時は静的にセットした初期値を参照、チェックボックスとかの値が変わればその値を参照みたいにしてると、
ずれが生じてしまいますね。

なので、初回読み込み時も初期値を渡すのではなくて、初期値を持つチェックボックスをチェック状態にするとかしないとダメですね。



iOSでのみclickイベントが発火しない

どうやら以下の条件の場合、iOSでclickイベントが発火しないようです。

・通常クリッカブルな要素でない
・$(elem).on('click',elem)の場合(動的追加要素にも効かせるやつ)

なので、要素自体をbuttonやaタグにするか、要素を生成したタイミングで{cusor: pointer}つけるとかすれば動きました。




特定のandroidでのみajaxエラー

特定のandroid端末かつ、特定のブラウザでのみajaxエラーとなっておりました。
覚えてる範囲だと、6.1のchrome、4.2の標準ブラウザとかだったと思います。

原因としては、ajax通信先のサーバの中間証明書が設定されていなかったからでした。
どのブラウザもエラーにしてくれれば気づくの早いのに

普通にアクセスすると証明書エラー特にでないからわかりずらい。
下記サイトとかでちゃんとチェックしないとダメですね。

https://cryptoreport.websecurity.symantec.com/checker/



【Laravel】 Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

laravelを始めようと思い、下記コマンドでテーブル作成しようとしたらタイトルのエラー発生。

php artisan migrate

公式に書いてありました。

データベース:マイグレーション 5.4 Laravel

/app/Http/Providers/AppServiceProvider.php内を下記に修正。

public function boot()
{
    Schema::defaultStringLength(191);
}

もしくは、データベースの「innodb_large_prefix」オプションを有効にする


Unity5の教科書 (Entertainment&IDEA)

Unity5の教科書 (Entertainment&IDEA)

formの二重送信 html

なぜか画像アップロードできる画面で、アップしたのにリンク切れのものがあるとの連絡があり、
画像が消える可能性を1日調べてようやく原因がわかりました。

formの二重送信でした。


送信ボタンを二回押す可能性なんて考えもしませんでした。
ソース追ったりログ追ったりばかりじゃなくて、
ユーザ目線で考えなきゃダメですね・・・

なので、submit後に送信ボタンをdisableに。
戻るリンクも押されたくないので、disable用のclassをaddClassして、clickイベントでreturn false。
しかし、なぜか戻れる。

画像アップロード中も同様にaddClassしていて、その時はclickイベントにちゃんと入るのに、
submit後だとイベントに入らない・・・

原因はまだ不明ですが、addClass時に下記の処理を追加で行い、イベント発火はなくなりました。

$('.test').css('pointer-events', 'none');



Unity5の教科書 (Entertainment&IDEA)

Unity5の教科書 (Entertainment&IDEA)

特定URL時のみ、basic認証

管理画面が同一サイトの/adminとかで、ip制限はしないけどbasic認証は入れとく。
かつ、再起動はさせたくない。

という仕様を実装することになりました。
下記のブログ様を参考にさせていただきました。ありがとうございます。

【cakePHP】.htaccessでmod_rewriteを使いつつ特定のURLをBASIC認証なしにする | ぼくの答えはいつもNo…そしてYes!

apache再起動OKなら、httpd.confにlocatoinディレクティブとか書いてすぐ終わるんですが、
今回はダメとのことなので.htaccessに下記を追記することで対応しました。

fuelphpなので、filesディテクティブとかで物理パスを指定できなかったため。

SetEnvIf Request_URI "/admin*" noauth
AuthUserFile /var/www/.htpasswd
AuthName "Input your ID and Password."
AuthType Basic
require valid-user
Satisfy any
Order Deny,Allow
Deny from all
allow from env=!noauth


下記で一旦全拒否。

Order Deny,Allow
Deny from all

Satisfy anyで、下記のどちらかの場合、許可する。という感じです。

  • require valid-user(basic認証突破)
  • allow from env=!noauth(/adminでない。)



Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

IE11で、dropできない jquery

ページにドロップ用の箱を作って、そこにファイルを投げるとアップロードできるという、
よくあるものを作っていたんですが、
IE11で確認したら、ドロップが出来ない。

drop用の箱にwidthを明示的に指定しないといけないらしいです。
下記のブログ様を参考にさせていただきました。

先人の知恵は素晴らしいですね。感謝です。

mariyudu.hatenablog.com



Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)