PHP Vue.js MySQLから取得(JSON)+更新

PHP復習のため、
・PHPでのログイン+ログアウト
・Vue.jp→PHP→MySQLでの取得(JSON)+更新
を作成してみた。

config.php

index.php

json.php

login.php

logout.php

 

PHP ログイン処理

PHPほぼ忘れてしまったので勉強中。

 

PHP session メモ

セッションはクッキーと違いサーバーで値を管理し、識別用のPHPSESSIDのみクライアントに渡す。

***

・データがある場所

(1)ファイル(/var/lib/php/session)

session.gc_maxlifetimeを過ぎたあと、PHPにリクエストがあった場合、
(session.gc_probability / session.gc_divisor)の確率でGCが削除。

共有しているため違うアプリでGCが動くこともある。
必要なら、session.save_pathから個別に設定する。

(2)グローバル変数($_SESSION)

スクリプト終了時、ファイルに保存される。

(3)ブラウザクッキー(PHPSESSID)

ブラウザ閉じるまで保存される。

・session_start()

session_start()すると、
(3)がなければ割り当てる。既に存在する場合は再開する。
(1)のデータを(2)に格納。

スクリプトが終了すると、
(2)のデータを(1)に格納

(1)はスクリプトが終了されるまでロックされる。
必要なら、session_write_close()

・グローバル変数

session_start()しなくても(2)を変数としては使えるが、(1)には保存されない。

test1php

test2.php

エラーにはならない。この場合session_start()
しても結果は同じなので分かりづらい。

test2.php

この場合Noticeがでる。

・データ破棄

$_SESSION = array();
(2)を削除

session_destroy()にて
(1)を削除。(session_start()していないと削除できない)

・session_regenerate_id()

(1)の古いファイルは残したまま、新しいファイルが作成される。
(2)そのまま使える。
(3)は新しくなる。

PHP MySQLデータをJSONで書き出し

PHP久しいので近いうち復習する。

 

PHP パスワード生成

パスワードがほしいとき用。

<?php
echo exec(“head /dev/urandom | tr -dc a-km-np-z2-9 | head -c 13”);

head
先頭から10行

/dev/urandom
ランダムな文字列

tr -dc
指定した文字列の集合

head -c
指定した文字数

PHP セキュリティメモ

最低限の部分

・PHP.ini

今回は、さくらのレンタルサーバーで利用している。
設置場所は、ドキュメントルートで、
echo phpinfo();
Loaded Configuration File
に反映される。

php.iniのパーミッションは600

追加内容は、
display_errors = Off
expose_php = Off

session.name = “hoge”
session.use_strict_mode=On
session.cookie_httponly=On
; HTTPSの場合
session.cookie_secure=On

allow_url_fopen = Off
file_uploads = Off

; post_max_sizeより大きくする
memory_limit = 20M
; upload_max_filesizeより大きくする
post_max_size = 20M
upload_max_filesize = 20M

・通常ファイル、ディレクトリのパーミッション

ファイル
604(もしくは644)

ディレクトリ
705(もしくは755)

・プログラム

リクエストにはワンタイムトークンを付加。
入力された値はサニタイジング。

 

PHP お問い合わせフォーム

 

PHP+JavaScript(Vue.js) メモプログラム

何かメモを取る場合、テキストファイルにパッと書くことが多いので、ブラウザに書けたらどうだろうと思い作成してみた。

普段からブラウザは開いているし、レンサバに設置すれば外でも見れるので、テキストファイルより便利になりそうと思っていたが、しばらく使ってみて、やっぱりテキストファイルに戻ってしまった。

Windows上にサーバー作成 Nginx/PHP/MariaDB/WordPress

以前は必要になるとXamppを使ってたけど、今回はNginx環境を手動で作ってみる。

Nginx

Windows用のzipファイルをダウンロードし解凍する。設定ファイルはもともとのコメント部を消して、とりあえずこんな感じ。

nginx-1.19.2/conf/nginx.conf

Nginxフォルダのパスに日本語があると起動しない場合があるので注意。

PHP

ダウンロードして解凍したら、phpというフォルダでnginxの中に入れる。
(nginx-1.19.2/php)

php.ini-development
をコピーしてphp.iniにし、
extension_dir=”ext”
extension=php_mysqli.dll
を追記する。

MariaDB

ダウンロードして解凍したら、mariadbというフォルダでnginxの中に入れる。
(nginx-1.19.2/mariadb)

nginx-1.19.2/mariadb/bin
の中にある、mysql_install_db.exeを実行すると、
nginx-1.19.2/mariadb/data
が作成され、my.iniも入っている。
(Nginxフォルダを移動したらmy.iniを修正しないと起動しない)

手動でDB作成等に使う場合、まずbinの中のmysqld.exeを起動。次にコマンドプロンプトからmysql -u root のような感じでログインできる。

・設定
nginx-1.19.2/mariadb/bin
に移動しmysqldを起動後、
mysql -u root
とするとログインできる。

mysql> set password = password(“1234”);

・データベース作成
mysql> create database wpd character set utf8;
(utf8を指定しないとWPのインストールでエラー)

起動・終了バッチ

start.bat

my.iniを自動で書き換える場合このような感じ

stop.bat

あるいは全て強制終了
(こうしないとプロセスが残る場合あり)

mysql.bat

mysqlのディレクトリに移動するためだけのバッチ

WordPress

nginx-1.19.2\html\wp
にWordPressを解凍したので、ブラウザから、
http://localhost/wp

にアクセス。

DBの情報を入れて送信したところ、
サイトに重大なエラーがありました。
と表示されエラーになった。
(1度目のインストール)

・DBをリセット
フォルダを手動で削除せず、mysqlのコマンドからdrop databaseする。
そして再度create databaseする。

・wp-config.phpを削除
wp-config-sample.phpを複写し、名前をwp-config.phpに変更する。

wp-config.phpが存在しないと自動でwp-config.phpは作成されるが、ここでは手動でwp-config.phpを設定する。

wp-config.phpの以下の部分をtrueに変更する。
define( ‘WP_DEBUG’, true);

以下の部分にDB情報を記入する。
define( ‘DB_NAME’, ‘wpd’ );
define( ‘DB_USER’, ‘root’ );
define( ‘DB_PASSWORD’, ‘1234’ );

再度挑戦するが、
サイトに重大なエラーがありました。
と表示されるだけで、特にエラー内容は表示されない。
(2度目のインストール)

Nginxのログ(logs/error.log)
を確認すると、
Fatal error: Maximum execution time of 30 seconds exceeded
とあるので、
php.iniで下記の部分を30から120に変更
max_execution_time = 120
(3度目のインストール)

これでインストールできた。

LAN経由(外部)から見る場合、ファイアーウォールに新しい規則を追加する。
もしCSSが適用されていない場合は、
設定>一般>アドレス
をIPアドレスに変更してみる。

CodeIgniterでホームページの骨格作成2

DB使わずにファイルで管理するタイプ。頻繁に更新するようなら、サブメニューは自動でファイルを読み込んで自動で生成した方が楽になりそう。

CSSだけRewrite除外する。

コントローラ(今回のクラス名は適当)

ビュー

1.php

2.php

header.php

footer.php