Bootstrap3 フォーム入力チェック機能
HTML5初心者。
フォーム入力チェック機能の「このフィールドを入力してください。」のメッセージをカスタマイズしたくて、bootstrap.jsやjquery.jsとにらめっこしたが見つからず、どうやって実装しているのかハマったので備忘。
下記はBootstrap公式のログインフォームテンプレート
環境はChrome バージョン59.0.xx
ブラウザの種類・バージョンによって動作が異なるので注意。(*)
まずは基本から確認。
その1.テキストフィールドを必須項目にする:required
例えば、入力必須にしたいテキストフィールド
<input type="text" name="email">
ここに「required」(必須)の属性を追加し、
<input type="text" name="email" required>
とする。
required="required" といった属性指定の形式も可。
その2.メールアドレス書式:email
Bootstrap3では、type属性にemailを指定することが可能。
入力値をメールアドレス形式(@マークの有無)かどうか判断してくれる。
<input type="email" name="email" required>
補足:required属性は、inputの各type属性、textarea、select で実装が可能
(*)と、ここまで色々とググっていると、「ブラウザによってメッセージや動作が異なる」ということを知り、「"required"を付与することでブラウザ依存の語句(動作)を呼び出している」ということに気付いた、というオチです。。
JQuery Validation Engine という入力チェック機能もあるんですね。
Bootstrap3 事前準備
まずは事前準備。下記のサイトからBootstrapをダウンロードする。
Bootstrap · The world's most popular mobile-first and responsive front-end framework.
CDN版も用意されているが、今回はソース版をダウンロードして使用する。
解凍し適切に展開する。
<!-- BootstrapのCSS読み込み --> <link href="css/bootstrap.min.css" rel="stylesheet"> <!-- jQuery読み込み --> <script src="js/jquery.js"></script> <!-- BootstrapのJS読み込み --> <script src="js/bootstrap.min.js"></script>
Bootstrap3ではJQueryが必要。
BootstrapのJSファイルよりも先にJQueryのJSファイルを読み込むようにすること。
Codeigniter3 ログ出力設定
Codeigniter3系のログ出力設定の備忘です。
設定ファイル
application/config/config.php
204行目付近(初期値)
$config['log_threshold'] = 0; $config['log_path'] = ''; $config['log_file_extension'] = ''; $config['log_file_permissions'] = 0644; $config['log_date_format'] = 'Y-m-d H:i:s';
$config['log_threshold']
ログレベルを指定。初期値は 0 ロギングしない。
0 = Disables logging, Error logging TURNED OFF |
1 = Error Messages (including PHP errors) |
2 = Debug Messages |
3 = Informational Messages |
4 = All Messages |
$config['log_file_extension']
ログファイル名の拡張子(.log)指定。
指定しない場合はデフォルトの「.php」となる。違和感がある場合は「.log」に変更すればよい。
$config['log_file_permissions']
ログファイルのパーミッション値を指定。セキュリティ要件に合わせて適時変更。
$config['log_date_format']
ログ記録時の日時フォーマット
初期値の'Y-m-d H:i:s'を指定した場合、「2017-07-14 16:29:55」
ログの出力方法
PHPコード内で log_message($level, $message); を呼び出す。
levelは以下のいづれかを指定
error :エラーレベル |
debug :デバッグレベル |
info :Infoレベル |
デバッグ等でログ出力させたい場合の例
log_message('info', 'hogehogehoge_001');
ログ出力例
INFO - 2017-07-14 16:29:55 --> hogehogehoge_001
余談
php.iniでDefault_Timezoneが指定されていないとdate(date_default_timezone_set)呼び出しに失敗するので忘れずに。
Severity: Warning --> date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
Windows SMBv1の無効化/有効化
WannaCry対応の一環でSMBv1を無効化したものの、某社製のNASがSMBv1を使用していたことが発覚、切り戻した。
その1 SMB1を無効化する場合
【Win8.1、Win10】
PowerShellを管理者権限で起動し、以下を実行
①SMBv1がシステムにインストール済みか確認する
PS C:\> Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol | Select-Object State
State
-----
Enabled ……「Enabled」MBv1はインストール済み
②SMBv1をシステムから削除する
PS C:\> Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
警告: NoRestart が指定されているため、再起動は抑制されています。
Path :
Online : True
RestartNeeded : True ……「True」ならシステムの再起動が必要。「False」なら不要
③再起動後、①を再実行し確認
Disable になっていればSMB1はシステムから削除済み
その2 無効化したSMB1を有効化する場合
【Win8.1、Win10】
①SMBv1をインストール
PS C:\> Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
②再起動後、確認(前述の①と同じ)
PS C:\> Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol | Select-Object State
PythonからCisco機器にTelnet接続してみました ~その1~
Cisco Aironet に MACアドレスを登録する処理を半自動化してみたく、Pythonを使ってみました。
まずは Python で Telnet接続し、簡単なCiscoコマンドを発行してみます。
実装環境
Pythonのバージョンは 3.6.1を使用
Ciscoのプロンプトは通常下記。
User Access Verification Password:
import getpass import telnetlib HOST = '192.168.xxx.xxx' password = getpass.getpass() tn = telnetlib.Telnet(HOST) if password: tn.read_until(b'Password: ') tn.write(password.encode('ascii') + b'\n') # Ciscoコマンド発行 tn.write(b'show clock' + b'\n') tn.write(b'exit' + b'\n') # read_until以降のテキストを出力 print(tn.read_all().decode('ascii'))
実行結果は以下の通り。
Password: <手入力> router>show clock Load for five secs: 0%/0%; one minute: 0%; five minutes: 0% Time source is SNTP, 18:55:19.232 JST Tue Jun 27 2017 18:55:19.232 JST Tue Jun 27 2017 router>exit