• mode rewriteと Mysqlユーザー権限 wordpress

    WordPressインストール 移動 docume […]

    WordPressインストール

    移動 document rootへ


    解凍

    mode rewriteを有効にする (なってなかったら)

    ←こっちが本家

    	
    		  
    		 
    		     <Directory "/var/www/html">
    		        Options Indexes FollowSymLinks
    		        AllowOverride All
    		        Require all granted
    		     </Directory>
    		 
    		


    ディレクトリの一覧表示を有効にする(なってなかったら)

    対象ディレクトリに .htaccessを作ってこの一行を書く
    		Options Indexes FollowSymLinks
    		

    ユーザ名はApacheではない www-dataだ


    アップロードファイルの上限サイズを変更する

    	info.php  phpinfo()でファイルの所在が確認できる
    		
    			 
    			/filesizeで検索 Enter → Nで次の場所
    			  20Mに
    			display_errors On に変更(してなかったら)
    
    		Esc 編集モードの終了
    		/memory_limit  で検索
    		Enter
    		i 編集モード
    		memory_limit = 512M 
    		Esc
    		:wq   保存終了
    
    		

    Apache 再起動

    これで phpinfo() が実行できた
    だめなら OS再起動 windows の再起動

    MySQL バージョン確認

    $ mysql --version  →5.7

    MySQLでmysqld.sockのエラーが出た

    rootユーザーじゃない場合マンドはすべて「sudo」で実行します。
    mysqlコマンドをsudoをつけずに実行すると接続エラーになります。

    	#   ←root権限ならこれ 

    rootパスワードを設定する

    ubuntu18 mysql5.7 root password 設定 の記事参照
     

    rootパスワードを忘れた場合

    >MySQLでユーザを作成し、権限を設定する方法

    DBを作って,全権限を”既存”tanakaユーザーに追加

    	
    	   CREATE USER 'tanaka'@'localhost' IDENTIFIED BY 'wert';
    	   create database press;
    	   grant all on press.* to tanaka@localhost identified by  'wert';	
    
    	ユーザー確認(したければ)
    	   SELECT Host, User FROM mysql.user;
    	tanakaの権限を確認(したければ)
    	    SHOW GRANTS FOR tanaka@localhost;
    
    	rootの全権限を既存tanakaユーザーに追加 ← localならやっておけ
    	GRANT ALL PRIVILEGES ON *.* TO 'tanaka'@'localhost';
    
    	

    → adminerでDB名が出てこない → Database – Refresh する

    Apacheの実行ユーザの変更方法

    /etc/apache2/apache2.conf を見てみると、

    		# These need to be set in /etc/apache2/envvars
    		User ${APACHE_RUN_USER}
    		Group ${APACHE_RUN_GROUP}
    	

    とあるので、
    /etc/apache2/envvars を開いて、

    		export APACHE_RUN_USER=tanaka
    		export APACHE_RUN_GROUP=tanaka
    	

    にかえる

    imageMagic インストール

    後回し

    	sudo apt-get install php-imagick
    		sudo php -m | grep imagick
    		sudo service apache2 restart
    
    		apt install libmariadb-dev-compat
    		apt install libmariadbclient-dev
    
    	
  • functions.php 絵文字とかを消す

    remove_action(‘wp_head’, […]

     
    
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('wp_print_styles', 'print_emoji_styles' );
    remove_action('admin_print_styles', 'print_emoji_styles');
    
    
     
  • wp-config.phpに開発時入れる定数

    define(‘WP_DEBUG’, true); […]

     
    define('WP_DEBUG', true);  //phpデバックモード
    define('WP_POST_REVISIONS', 2); //リビジョンの制限
    define('SAVEQUERIES', true); // SQLデバック
    define('SCRIPT_DEBUG', true); // javaスクリプトデバッグ
    define('CONCATENATE_SCRIPTS',false) // メディアライブラリが表示されない場合
     
  • mysql root パスワードを忘れた場合

    $ sudo service mysql stop […]

    $ sudo service mysql stop
        sudo vim /etc/init.d/mysql
    		mysqld_safe で検索して、↓この行をコメントアウトし
    		   su - mysql -s /bin/bash -c "mysqld_safe > /dev/null &"
    		その下に↓こう追加。
    		su - mysql -s /bin/bash -c "mysqld_safe --user=root --skip-grant-tables &"
    		$ sudo service mysql start
    		$ mysql --database=mysql
    
    パスワードを更新
    use mysql
    UPDATE user SET authentication_string=password('新規パスワード') WHERE user='root';
    
    再設定したパスワードをMySQLに反映させます
    	mysql> flush privileges;
    	mysql> quit
    	/etc/init.d/mysql の コメント状態を元にもどす。
    	sudo service mysql restart
    	$ sudo mysql -u root -p
    

    パスワード変更

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '好きなパスワード';
    
  • Ubuntu 18.04 LTS にMySQL Serverをインストール

    Ubuntu 18.04にMySQL 5.7をイン […]

    Ubuntu 18.04にMySQL 5.7をインストールして、rootパスワードを変更するところまで。

    インストール

    aptでインストール

    以前はインストール中にrootパスワードの入力画面が表示されていたと思いますが、
    表示されなくなっていますね。

    インストールした後、「mysql_secure_installation」を実行してrootの
    パスワードを設定していきます。

    エラーが出る場合は下の記事を参照
    MySQLでmysqld.sockのエラーが出た

    最初に「VALIDATE PASSWORD PLUGIN」を使用するかの確認です。
    パスワードプラグインを使用して強固なパスワードを強制するか?

    ローカル環境なので n でいい

    Securing the MySQL server deployment.
    Connecting to MySQL using a blank password.
    VALIDATE PASSWORD PLUGIN can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD plugin?Press y|Y for Yes, any other key for No: n

    rootのパスワードを設定します。

    Please set the password for root here.
    New password: [設定するパスワードを入力]
    Re-enter new password: [設定するパスワードを再入力]
    Estimated strength of the password: 100
    Do you wish to continue with the password provided?(Press y|Y for Yes, an
    y other key for No) : y

    anonymousユーザーを削除するか。
    利用しないのでyを選択しました。

    By default, a MySQL installation has an anonymous user,
    allowing anyone to log into MySQL without having to have
    a user account created for them. This is intended only for
    testing, and to make the installation go a bit smoother.
    You should remove them before moving into a production
    environment.
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : ySuccess.

    rootで外部から接続可能とするか。
    「y」で接続不可としました。

    Normally, root should only be allowed to connect from
    'localhost'. This ensures that someone cannot guess at
    the root password from the network.
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
    Success.

    デフォルトの「test」データベースを削除するか。
    「y」で削除を選択しました。

    By default, MySQL comes with a database named 'test' that
    anyone can access. This is also intended only for testing,
    and should be removed before moving into a production
    environment.
    Remove test database and access to it? (Press y|Y for Yes, any other key f
    or No) : y
    - Dropping test database...
    Success.
    - Removing privileges on test database...
    Success.

    テーブルをリロードするか。
    「y」でリロードを実行しました。

    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
    Success

    起動する

    rootでログインする

    ログアウトする

     \q 
  • wordpress5.1 カテゴリをラジオボタンにして選択を1つに制限する方法

    jQueryでattrして、setTimeoutで […]

    jQueryでattrして、setTimeoutで遅延実行
    admin_print_footer_scripts でフック
    radioのchangeイベントで valueをcookieに保存
    publish_postフックで wp_set_object_terms 関数を実行

     
    function your_function() { echo '<script>
    //Cange_to_radio_button
    
    function to_radio_button(){
    var elem = jQuery("#editor .editor-post-taxonomies__hierarchical-terms-choice input");
    jQuery(elem).ready( function () {
    jQuery(elem).attr({"type":"radio","name":"radio-category"});
    });
    }
    
    setTimeout(function(){
    to_radio_button();
    },1000);
    
    jQuery(document).on("change", "input.editor-post-taxonomies__hierarchical-terms-input", function(){
    if( jQuery(this).prop("checked")){
    let category_number = jQuery(this).val();
    document.cookie = "radio-category=" + category_number;
    }
    });
    </script>';
    
    }
    add_action('admin_print_footer_scripts', 'your_function');
    
    function replace_post_terms($post_id) {
    $radio_category = (int)$_COOKIE['radio-category'];
    wp_set_object_terms($post_id, $radio_category, 'category',false );
    }
    add_action('publish_post', 'replace_post_terms', 99, 1);
    
     
  • Apacheを入れ直さずにhttp/2対応する

    SSLはすでに対応済みが条件 # httpd -v […]

    SSLはすでに対応済みが条件

     
    # httpd -v
    Server version: Apache/2.4.39
    
    yum -y install jansson-devel
    yum -y install libev-devel
    yum -y install c-ares-devel
    
    yum -y install centos-release-scl
    yum -y install devtoolset-7
    scl enable devtoolset-7 bash
    
    cd /usr/local/src/
    wget https://github.com/nghttp2/nghttp2/releases/download/v1.37.0/nghttp2-1.37.0.tar.gz
    
    tar xvzf nghttp2-1.37.0.tar.gz
    cd nghttp2-1.37.0/
    env OPENSSL_CFLAGS="-I/usr/local/openssl-1.1.1b/include" OPENSSL_LIBS="-L/usr/local/openssl-1.1.1b/lib -lssl -lcrypto" ./configure -enable-app
    make
    make install
    
    yum -y install cmake
    cd /usr/local/src/
    wget https://github.com/google/brotli/archive/v1.0.7.tar.gz
    
    tar xvzf v1.0.7.tar.gz
    cd brotli-1.0.7/
    mkdir out && cd out
    ../configure-cmake
    make
    make test
    make install
    
    
    echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf
    ldconfig
    
    vi /etc/httpd/conf.modules.d/00-base.conf
    こいつらを読み込む
      LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
      LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
      LoadModule brotli_module modules/mod_brotli.so
      LoadModule ssl_module modules/mod_ssl.so
      LoadModule http2_module modules/mod_http2.so
    
    vi /etc/httpd/conf.d/ssl.conf
    これを書き足す
       
          Protocols h2 http/1.1
    
    
    vi /etc/httpd/conf.modules.d/00-mpm.conf
    これは読まない
       #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    これを読む
       LoadModule mpm_event_module modules/mod_mpm_event.so
    
    
    
     
  • Forbidden You don’t have permission to access

    .htaccess #シンボリックリンクでのアクセ […]

    .htaccess

     
    #シンボリックリンクでのアクセスを許可
    Options FollowSymLinks
    

    親ディレクトリの所有者 or グループ に読み取り権限

    バーチャルホストの場合confファイルにあれば削除

     
    #インデックスの表示を消す
    # Options Indexes
    
  • 日本語 縦書きのcssレイアウト

     禅智内供の鼻と云えば、池の尾で知らない者はない。 […]

     禅智内供の鼻と云えば、池の尾で知らない者はない。
    長さは五六寸あって上唇の上から顋の下まで下っている。
    形は元も先も同じように太い。云わば細長い腸詰のような物が、
    ぶらりと顔のまん中からぶら下っているのである。

    くれなゐの二尺伸びたる薔薇の芽の
    針やはらかに春雨のふる

    柿くへば鐘が鳴るなり法隆寺

    俳句や短歌や小説を横書きするとかなり違和感がある
    縦書きなのはとても自然

  • sshにブルートフォースを確認

    #su – 最後の正しいログインの後に 59 回の […]

    #su - 
     最後の正しいログインの後に 59 回の失敗ログインの試行があります (ブルートフォースの兆候)
    
    
    
    # netstat -anp  (接続している、試みているアクセス ***は非表示IP部分)
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 ***.147.238.***:22      218.92.0.133:43722      ESTABLISHED 28568/sshd: root [p 
                                            (これが自分じゃない)
    tcp        0      0 127.0.0.1:36996         127.0.0.1:44210         ESTABLISHED 31121/node          
    tcp        0      0 ***.147.238.***:22      ***.158.230***:49543     ESTABLISHED 27075/sshd: root@pt 
    
    # kill 28561 (不正なプロセスPIDを強制終了)
    -bash: kill: (28561) - そのようなプロセスはありません
    	この瞬間にはない。
    
    
    # who (現在ログインしているユーザー)
    root     pts/1        2019-03-31 04:18 (kd***230009.ppp-bb.dion.ne.jp)
    	自分しかいない
    
    # egrep "Failed|Failure" /var/log/secure  (sshのログ パスワードで弾かれている)
    Mar 31 03:50:04 h***-147-238-*** sshd[23230]: Failed password for root from 218.92.0.133 port 17039 ssh2
    Mar 31 03:50:07 h***-147-238-*** sshd[23230]: Failed password for root from 218.92.0.133 port 17039 ssh2
    Mar 31 03:50:10 h***-147-238-*** sshd[23230]: Failed password for root from 218.92.0.133 port 17039 ssh2
    Mar 31 03:50:12 h***-147-238-*** sshd[23230]: Failed password for root from 218.92.0.133 port 17039 ssh2
    Mar 31 03:50:15 h***-147-238-*** sshd[23230]: Failed password for root from 218.92.0.133 port 17039 ssh2
    Mar 31 03:50:18 h***-147-238-*** sshd[23230]: Failed password for root from 218.92.0.133 port 17039 ssh2
    Mar 31 03:50:22 h***-147-238-*** sshd[23326]: Failed password for root from 218.92.0.133 port 41200 ssh2
    Mar 31 03:50:24 h***-147-238-*** sshd[23326]: Failed password for root from 218.92.0.133 port 41200 ssh2
    Mar 31 03:50:27 h***-147-238-*** sshd[23326]: Failed password for root from 218.92.0.133 port 41200 ssh2
    Mar 31 03:50:30 h***-147-238-*** sshd[23326]: Failed password for root from 218.92.0.133 port 41200 ssh2
    Mar 31 03:50:32 h***-147-238-*** sshd[23326]: Failed password for root from 218.92.0.133 port 41200 ssh2
    Mar 31 03:50:34 h***-147-238-*** sshd[23326]: Failed password for root from 218.92.0.133 port 41200 ssh2
    Mar 31 03:50:39 h***-147-238-*** sshd[23333]: Failed password for root from 218.92.0.133 port 61584 ssh2
    Mar 31 03:50:41 h***-147-238-*** sshd[23333]: Failed password for root from 218.92.0.133 port 61584 ssh2
    Mar 31 03:50:44 h***-147-238-*** sshd[23333]: Failed password for root from 218.92.0.133 port 61584 ssh2
    Mar 31 03:50:46 h***-147-238-*** sshd[23333]: Failed password for root from 218.92.0.133 port 61584 ssh2
    Mar 31 03:50:48 h***-147-238-*** sshd[23333]: Failed password for root from 218.92.0.133 port 61584 ssh2
    Mar 31 03:50:51 h***-147-238-*** sshd[23333]: Failed password for root from 218.92.0.133 port 61584 ssh2
    Mar 31 03:50:56 h***-147-238-*** sshd[23338]: Failed password for root from 218.92.0.133 port 18658 ssh2
    Mar 31 03:50:58 h***-147-238-*** sshd[23338]: Failed password for root from 218.92.0.133 port 18658 ssh2
    Mar 31 03:51:00 h***-147-238-*** sshd[23338]: Failed password for root from 218.92.0.133 port 18658 ssh2
    Mar 31 03:51:03 h***-147-238-*** sshd[23338]: Failed password for root from 218.92.0.133 port 18658 ssh2
    Mar 31 03:51:06 h***-147-238-*** sshd[23338]: Failed password for root from 218.92.0.133 port 18658 ssh2
    Mar 31 03:51:08 h***-147-238-*** sshd[23338]: Failed password for root from 218.92.0.133 port 18658 ssh2
    Mar 31 03:51:12 h***-147-238-*** sshd[23342]: Failed password for root from 218.92.0.133 port 40554 ssh2
    Mar 31 03:51:15 h***-147-238-*** sshd[23342]: Failed password for root from 218.92.0.133 port 40554 ssh2
    Mar 31 03:51:18 h***-147-238-*** sshd[23342]: Failed password for root from 218.92.0.133 port 40554 ssh2
    Mar 31 03:51:20 h***-147-238-*** sshd[23342]: Failed password for root from 218.92.0.133 port 40554 ssh2
    Mar 31 03:51:23 h***-147-238-*** sshd[23342]: Failed password for root from 218.92.0.133 port 40554 ssh2
    Mar 31 03:51:25 h***-147-238-*** sshd[23349]: Failed password for invalid user guest from ***.146.209.68 port 42988 ssh2
    
    対策1  rootログインの禁止
     vim /etc/ssh/sshd_config
    	PermitRootLogin yes →PermitRootLogin no に変える
    
    保存したらsshd再起動
    
    $ sudo systemctl restart sshd
    
    
    対策2 これをインストール
    # yum --enablerepo=epel install fail2ban 
    
    拒否リストに入った
     `- Banned IP list:	218.92.0.133 183.146.209.68
    
    アタックは1/10に激減したが 160/dayはある
    Apr  1 20:25:12 h***-147-238-*** sshd[5736]: Failed password for invalid user admin from 219.149.225.154 port 54177 ssh2
    Apr  1 20:25:36 h***-147-238-*** sshd[5744]: Failed password for invalid user zimbra from 201.17.130.197 port 45573 ssh2
    Apr  1 20:26:08 h***-147-238-*** sshd[5757]: Failed password for invalid user qun from 118.24.221.190 port 21474 ssh2
    Apr  1 20:27:53 h***-147-238-*** sshd[5794]: Failed password for invalid user system from 122.224.203.228 port 47930 ssh2
    Apr  1 20:27:54 h***-147-238-*** sshd[5796]: Failed password for invalid user od from 118.89.46.169 port 34138 ssh2
    こんどはパスワードスプレー
    

    鍵認証に変える

    1. 鍵ペアはローカルマシンで作る
    2.公開鍵をサーバーへコピペで保存する

    macで鍵を作る
    ターミナルで (winならPowerShell )

    $ cd Users/ginzo/.ssh  ←パーミッションは 700にする
    $ ssh-keygen
    	Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/ginzo/.ssh/id_rsa): hplocal 鍵の名前を打つ
    Enter passphrase (empty for no passphrase): 		そのままEnter(パスフレーズはなし)
    Enter same passphrase again: 				もう一回Enter
    Your identification has been saved in hplocal.	←秘密キー	
    Your public key has been saved in hplocal.pub.	←公開鍵
    

    サーバーにログイン
    ログインユーザーの/home/ginzo/.ssh/ にauthorized_keysというファイルを作る

     cd ~/.ssh
     $ touch authorized_keys
     $ vi authorized_keys
    	mac で作った公開鍵の中身をこのファイルの末尾行にコピペ
     $ chmod 600 authorized_keys
    	exit
    

    macからログイン (ポートも変えているので-pオプション必要)

     $ ssh -p 2**** -i ~/.ssh/hplocal ginzo@192.168.0.**
    

    パスワード認証の禁止

     vi /etc/ssh/sshd_config
    

    CentOS 7 の sshd の設定は /etc/ssh/sshd_config ファイルに記述されています。

      PasswordAuthentication no  ←パスワード認証の拒否
      PermitEmptyPasswords no	←パスワードなしユーザーの拒否
    

    systemctl restart sshd ssh再起動

    アタックは0になった

  • Fatal error: Call to undefined function: get_currentuserinfo()

    ユーザーの権限レベルで何かを分岐したい場合 req […]

    ユーザーの権限レベルで何かを分岐したい場合

     
    require_once ABSPATH . WPINC . '/pluggable.php'; // ←これの読み込みが必要
    function my_admin_style() {
        
        $user = wp_get_current_user();
          //ステータス
        if( $user -> wp_user_level == 2 )
      echo '<style>
      #wpadminbar,#adminmenuwrap,#adminmenuback{display:none}
      </style>'.PHP_EOL;
    }
    add_action('admin_print_styles', 'my_admin_style');
    
    
    function my_admin_script() {
      echo '<script>
      //〜適用したいスクリプトを記入〜
      </script>'.PHP_EOL;
    }
    add_action('admin_print_scripts', 'my_admin_script');
    
     
  • mac jarファイル クリック実行 パラメータ

    こんな感じのシェルスクリプトを作る myshell […]

    こんな感じのシェルスクリプトを作る myshell.sh
    フルパスがいい

     
    #!/bin/bash
     java -jar /Users/tanaka/myjma.jar パラメータ1 パラメータ2 
     

    保存したら実行権限付与

    chmod +x ./myshell.sh
    chmod +x ./myjma.jar 
    
    $ ./myshell.sh   これで実行できる
    
  • To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address.

    複数ドメイン環境での Let’s en […]

    複数ドメイン環境での Let’s encrypt 更新の際のエラー

    原因はたぶん複数ドメインにしていて,非SSLアクセスすると全く別のドメインのドキュメントルートへリダイレクトされていたためと思われる,
    すべての複数ドメインをSSL化してHSTS と.htaccessで強制SSLにしたところ解決

    .htaccess

     
    RewriteEngine On
    RewriteBase /
    # HTST
      RewriteCond %{HTTPS} off
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
     
  • WSLのドキュメントルートの場所

    Windows SubSystem for Lin […]

    Windows SubSystem for Linuxでのファイルアクセス
    C:\Users\user\AppData\Local\Packages
    \CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\var\www\html

    Windowsから作ったファイルはパーミッションが  —- となっているので
    chmod 644 に変えるとブラウザでも開けるようになる
    ただし,ファイルシステムが違うせいかWindowsで保存,編集したファイルの反映が行われない.
    結局Cドライブ以下に移動するしか無いようだ

  • ubuntu18 mysql5.7 root password 設定

    mysql5.7あたりからpasswordというフ […]

    mysql5.7あたりからpasswordというフィールドは無くなっている

    mysql> SELECT User , authentication_string FROM mysql.user
    mysql> UPDATE user SET authentication_string=password('大文字と記号を含むパスワード') WHERE user='root';
    mysql> flush privileges;
    mysql> \q
    
    # mysql-uroot -p
    

    ちなみに ubuntuでrootユーザーでログインするとパスワードも聞かれずにログインできてしまう
    $mysql -uroot -p
    一般ユーザーならちゃんと聞かれる

  • ヤフオクに出品した商品を自動で取り消すシステムです。

    定まった相場がなく、高額な商品に向いています。 骨 […]

    定まった相場がなく、高額な商品に向いています。
    骨董、美術、車、限定プレミアム品などがそうです。

    予め目標金額を入力しオークションIDを登録すると終了時刻5分前に起動し、目標に達していたらそのまま終了します。
    達していない場合は終了時刻の20秒前に取り消しを行うシステムです。

    自動延長にも対応し価格が競り上がって、達成した場合には落札させます。

    最低落札価格を設定してしまうと入札が少なくなり、即決を指定すると相場を決めてしまうことになり価格が競り上がりません。

    取り消しの際に入札があれば、取消手数料が500円かかりますので低価格な商品には向いていません。

    インストール版 Windows11, 10 macOS 対応 ¥78,000 (税込み)
    購入する

    クラウド版 Windows、Mac、Linux iOS、Android 対応 お見積りはこちらのフォームから送信してください

    メールアドレス:
    お電話番号:
    会社名:
    お名前:
    ご予算:
    お問い合わせ内容

  • Myチャットワーク

    チャットワークのような機能 デモを見る Incor […]

    チャットワークのような機能

    デモを見る

    Incorporate features like chat work on your site

    メールで招待+同時複数

    一度に複数の相手先メールを登録して招待メッセージを送信できます

    複数相手に同一メッセージを送信 BCC機能

    超高速無限スクロール

    過去の会話は上方向へのスクロールで待ち時間を意識せずにスクロールで表示できます

  • フォント 英語 L I 1 区別 均等幅

    Windows Bahnschrift Light […]

    Windows Bahnschrift Light または 源ノ角ゴシック

    源ノ角ゴシックの vscode での設定方法​

  • SceneBuilder 10で日本語が文字化けするのを直す Windows10

    日本語の言語パックが原因なので単純に削除して英語に […]

    日本語の言語パックが原因なので単純に削除して英語にするというもの
    ユーザ\AppData\Local\SceneBuilder\app\dist.jar
    の拡張子を.zipに変更
    zipのまま開く
    com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties を削除
    自動的に保存されるのでしばらく待つ
    これでEclipseから呼び出しても文字化けしない

  • javascript location.href でリダイレクトすると維持できないセッション変数がある

    echo ‘<meta http […]

    echo ‘<meta http-equiv=”refresh” content=”0;URL=?/mail_complate.php”>’;
    var_dump($_SESSION[‘payment’]); → OK

    echo ‘<script>location.href=”mail_complate.php”;</script>’;
    var_dump($_SESSION[‘payment’]); → NULL

  • Jquery .on(‘scroll’) not firing the event while scrolling \n スクロールイベント ajax埋め込みは埋め込まれる方にあれば動く

    //スクロールイベントの発火 ajax埋め込みは埋 […]

    //スクロールイベントの発火 ajax埋め込みは埋め込まれる方にあれば動く
    $("#msgs").bind('scroll', function() {
       console.log('Event worked');
    })
    
  • setcookie php secure httponlyのサンプルコード

    //ここまでに通信bodyに出力がなにもないことが […]

     
     //ここまでに通信bodyに出力がなにもないことが条件
    session_start();
     
     $time=time()+3600*240;
          setcookie('_user[0]' ,"44",$time,"/","","","");
          setcookie('_user[1]' ,"Jackey",$time ,"/","",true );
          setcookie('_user[2]' ,"guest",$time ,"/","",true,true);
    
     header("Content-type: text/html; charset=UTF-8");
    
    print_r($_COOKIE);
    ?>
    引数の 5 はdomain 省略するとサブドメインは含めいない
    6 セキュア属性 SSLのみでやり取りする
    7 httponly属性 下のスクリプトでは表示されない
    
     <script>
       
       console.log(document.cookie);
     </script>
    
     
  • wordpressのログインアタック (ブルートフォース攻撃) の阻止

    普通の対策では認証をさせないだけなのでアクセスは減 […]

    普通の対策では認証をさせないだけなのでアクセスは減らず,サーバーのパフォーマンス低下は避けられない。
    以下はwp-login.phpへのアクセス自体を阻止する対策。

    WordPressの自動更新にも対応

    .htaccess に追加

    # END WordPress の下に

     redirect 301 /wp-login.php /new-login.php  

    nginxなら default.conf に

     rewrite ^/wp-login.php /new-login.php permanent; 

    wp-login.php を new-login.php に別名コピー

    ファイルを開いてwp-login.php → new-login.phpに全置換

    new-login.phpの<?php 以下に追加

    session_start();
      if(!isset($_SESSION['任意文字'])){ 
         echo '<h1>404 Not Found<hr></h1>';
       exit;
    }
    
    if($_SESSION['任意文字']!="てきとうなひらがな"){
        echo '<h1>404 Not Found<hr></h1>';
        exit;
    }
    

    [logon.php] ← セッションを作るためのダミーのログインファイル

     <?php
      session_start(); //セッション開始
    
      $_SESSION["任意文字"]="てきとうなひらがな";
     ?>
    
      <a href="new-login.php"> 秘密のログインへ </a>
    

    普通に/wp-admin/ や /wp-login.php でログインしようとすると 404 Not Found になる。
    ダミーで作った /login.php からならログインできる。

  • zipをDLして展開してパーミッション変更

    カレントディレクトリのファイルのパーミッションを全 […]

    カレントディレクトリのファイルのパーミッションを全部変更

    ファイルのオーナー変更

    ファイルをダウンロード

    unzipをダウンロード

    ファイルを解凍

    ディレクトリ名の変更

    ディレクトリのオーナー変更

    mysqlに管理者ログイン

    [sudo] password for あなた:  データベースではなくOSのパスワード
    Enter password: データベースのパスワード
    mysql>  これでログイン完了
    	show databases; で一覧表示
    

    sumpledb という名前のデータベースをつくる 文字エンコードはutf8

    ginzoというユーザーをパスワード wert3333で作成

    rootの全権限を既存ginzoユーザーに追加

  • have_posts()でカテゴリ分岐

    //カテゴリーID 2の記事 if( have_p […]

    
    //カテゴリーID 2の記事
     if( have_posts() ) {
    		 while(have_posts() ) {
    		 the_post();
    			 $cat = get_the_category(); //現在の記事のカテゴリー情報を取得
    			 	if( $cat[0]->term_id===1) //現在の記事のカテゴリーIDを取得
    			 get_template_part( 'content');
    		 }
     } 
    //カテゴリーID 2の記事
      if( have_posts() ) {
    		 while(have_posts() ) {
    		 the_post();
    			 	 $cat = get_the_category(); 
    			 	if( $cat[0]->term_id===2) 
    			 get_template_part( 'content');
    		 }
     } 
    

    query_posts、get_posts を使うとページャーが動かなくなるので注意!

  • Contact Form 7 サンキューページ|送信後に異なる URL にリダイレクトさせるには.

    コンタクトフォーム サンキューページ これらのフッ […]

    コンタクトフォーム サンキューページ

    これらのフックは2017年廃止予定となっているので使えなくなりました。on sent ok:, on submit:

    また、こちらの本家サイトの記事でうまくいかない場合の対処方法

    手順はこう

    1. 送信フォームの専用テンプレートが必要。例 page-contact.php
    2. 固定ページへショートコードの投稿 → スラッグは”contact”
    3. page-contact.phpの先頭にコレを追加
      
      	<?php
      		if(!empty($_POST['必須項目']) && !empty($_POST['必須項目']) ...全部の必須 ){
      			header('Location: http://example.com/thanks/');
      			exit;
      		}
      	?>
      
    4. 固定ページへ サンクスページ投稿 →スラッグは “thanks”
  • 二次元の連想配列を値で検索して一次元のキーを取得 php 配列を2次元の値で取得

    こんな感じの2次元配列がある [highlight […]

    こんな感じの2次元配列がある

    [highlight_php]
    pref_areas= array(
    “hokkaido” => array(1,”北海道”), “aomori” => array(2,”青森県”),…..
    [/highlight_php]

  • array_column
  • array_search
  • array_slice
  • key

    青森県 で aomori を取得したい場合 、上の関数から順に使って

    	
     var_dump(key(array_slice($pref_areas, array_search( '青森県',array_column($pref_areas,1)), 1, true)));
    

    二次元の方のキーを取得したい場合

    		
     var_dump(array_search( "青森県" ,array_column($pref_areas, 1 ))+1 );
    

    javascript EC6でもできるようになった

    
    
    var obj2={'北海道':'hokkaido','青森':'aomori'};
      var searchKen = 'aomori';
      
    var result = Object.keys(obj2).reduce(function(r, k) {
                 return obj2[k] == searchKen ? k : r 
            }, null);
    console.log(result);
    

    reduce → 配列をループして1つの値を取得。

    rにはそれまでの結果
    kには今のキーが代入される

  • テーマ更新通知を非表示

    // テーマ更新通知を非表示 remove_act […]

     
    // テーマ更新通知を非表示 
    remove_action( 'load-update-core.php', 'wp_update_themes' );
    add_filter( 'pre_site_transient_update_themes', create_function( '$a', "return null;" ) );
     
  • botによるDOS攻撃、特定ファイルへの連続アクセスをipブロックにて遮断

    access.log により moodle/cal […]

    access.log により moodle/calendar/set.php への不正規アクセスを確認 ユーザーエージェントは “MJ12bot”

    ipsetを利用することで、IPアドレスの集合を簡単に管理することができる。
    iptables を実行しなくて済むので早速入れた。

    # yum install ipset 

    セットの作成

    接続拒否IPの集合”BLACKLIST”を作成

    # ipset create BLACKLIST hash:net

    プログラムフロー

    moodle/calendar/set.php 先頭へ追記

    [highlight_php]
    $uaip = $_SERVER[‘REMOTE_ADDR’];//ipを取得
    $ua = $_SERVER[‘HTTP_USER_AGENT’];// ユーザエージェントを取得
    if( strpos($ua, ‘MJ12bot’) !== false ){
    http_response_code( 301 ) ;
    header( “Location: ../../abcdef/iptables.php?uaip=$uaip” ) ;
    exit;
    }
    [/highlight_php]

    ../../abcdef/iptables.php 新規作成 (場所はどこでもいい)

    [highlight_php]
    <?php
    $file=’/var/www/deny_ip’;
    $getparam=htmlspecialchars($_GET[‘uaip’]);

    file_put_contents($file,$getparam,FILE_APPEND | LOCK_EX);
    ?>

    [/highlight_php]

    /var/www/deny_ip には MJ12botがアクセスしてきたipアドレスが書き込まれていく

    /root/iptables.sh シェルスクリプト作成

    [highlight_php]
    #!/bin/bash

    # 拒否IPリストに記載されたIPからのアクセスを拒否する
    if [ -s /var/www/deny_ip ]; then
    for ip in `cat /var/www/deny_ip`
    do
    ipset add BLACKLIST $ip
    done
    fi
    : > /var/www/deny_ip

    [/highlight_php]

    cron で5分おきに実行 vi /etc/crontab

    [highlight_php]
    */5 * * * * root sh /root/iptables.sh
    [/highlight_php]

    cron log確認 tail -f /var/log/cron

    ipset list BLACKLIST

    [highlight_php]
    Name: BLACKLIST
    Type: hash:net
    Header: family inet hashsize 1024 maxelem 65536
    Size in memory: 17008
    References: 1
    Members:
    158.69.254.103 ←これが拒否IP
    [/highlight_php]

  • 特定IPをブロック 追加 削除 CentOS7

    遮断したいIP 例 149.56.223.241を […]

    遮断したいIP 例 149.56.223.241を設定します

    
     # iptables -I INPUT -s 149.56.223.241 -j DROP
     # /etc/init.d/iptables save
     # /etc/init.d/iptables restart
    
    
    Firewall  IPTABLE 操作
     iptables -L -v -n    一覧が見れる
     iptables -L -v -n --line-numbers   行番号もでる
    num   pkts bytes target     prot opt in     out     source               destination         
    1        4   240 DROP       all  --  *      *       149.56.223.241       0.0.0.0/0           
    2        0     0 DROP       all  --  *      *       185.163.1.11         0.0.0.0/0           
    3       31  1865 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 
    

    iptables -D INPUT 1 1のルールが消えるが、その後に繰り上がって、2が1になるので注意!

    次回このコマンドをアタック検出→ 自動実行にしてみる

  • Vagrant入れて、ホストからpingが通る、インターネット接続までmac

    インストールはここの記事に従う Vagrantfi […]

    インストールはここの記事に従う

    Vagrantfile 有効なとこだけ

    	Vagrant.configure("2") do |config| 
    	config.vm.box = "rafacas/centos71-plain"
    	
    	  config.vm.provider "virtualbox" do |vm|
    		vm.memory = 1024
    	  end
    	  
    	  config.vm.define :app do |server|
    		server.vm.hostname = "app"
    		config.vm.network :public_network, :bridge => "en1: Wi-Fi (AirPort)"
    	  end
    	end
    

    起動時にエラー

    	翻訳	
    	VagrantはVirtualBox共有フォルダをマウントできませんでした。 これは通常です
    	ファイルシステム "vboxsf"が利用できないためです。 このファイルシステムは
    	VirtualBox Guest Additionsとカーネルモジュールを介して利用可能になりました。
    	これらのゲストの追加情報が適切にインストールされていることを確認してください。
    	ゲスト。 これはバージュのバグではなく、通常は不具合が原因です
    	不気味な箱。 コンテキストの場合、試行されたコマンドは次のとおりです。
    	
    	mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
    	
    	コマンドから出力されたエラーは次のとおりです。
    	
    	/sbin/mount.vboxsf:マウントに失敗しました:そのようなデバイスはありません
    
    	

    mac $ vagrant plugin install vagrant-vbguest で解決できた。

    $ curl yahoo.co.jp → ソースが開く

    $ ping 192.168.111.103
    PING 192.168.111.103 (192.168.111.103): 56 data bytes
    64 bytes from 192.168.111.103: icmp_seq=0 ttl=64 time=0.531 ms

    Vargrant ホストからpingが通る。インターネットに繋がる までのまとめ

  • 画像リンクに書き出されるURLを [ショートコード] 化する方法 WordPress

    <img src=”http:/ […]

    <img src=”http://sanzo.domain.jp/ze/wp-content/uploads/2017/09/torapist1-300×281.jpg” alt=”” width=”300″ height=”281″ class=”alignnone size-medium wp-image-36″ />

    ↑サイトURL を ショートコード化↓

    <img src=”[site]/wp-content/uploads/2017/09/torapist1-300×281.jpg” alt=”” width=”300″ height=”281″ class=”alignnone size-medium wp-image-36″ />

    メリットはたくさんあるといっても思いついたのは3つだけ

    1. ローカルからアップするときに文字置換がいらない (リンクについては)
    2. ドメイン名が変わっても自動的に対応
    3. パスが短くなる

    やりかた

     add_shortcode('site', 'site_url');

    このコードを functions.php に書くだけ。 site_url() WP関数が最初からある

  • mysql create table 索引のインデックスが長すぎます

    Specified key was too lon […]

    Specified key was too long; max key length is 767 bytes

    
    	mail varchar(255) NOT NULL,
    	 kibobi date NOT NULL,
      	KEY kibobi (kibobi(191)),
       UNIQUE KEY mail (mail(191))
    

    とか長さを指定すればOK

    日本語エンコードがutf8の場合はバイト数が少ないのでエラーは出ないが
    utf8mb4にすると大きくなるので警告が出るようになった。