- 1. BotUIでチャットボット開発(ツール編)
- 2. git commit できず苦戦(Controller.phpにActionを追加しただけ)
- 3. PHP関数(Math編)
- 4. PHP関数(その他)
- 5. PHP関数(Hash編)
- 6. PHP関数(セッション編)
- 7. AWS EC2にてPHPのRedis拡張機能を有効化する。
- 8. 【PHP】チャット機能の自作!Ajaxでスムーズな更新も実現
- 9. Docker環境でDBに接続するとcould not find driverが出たときの対処方法
- 10. 【PHP】2つの時間帯が重複しているかをチェックする
- 11. PHPからSQLに接続する
- 12. [PHP] データベースから取得した文字列などの定型文への、動的な値・変数の埋め込み/置き換え
- 13. PHPでアップロードできるファイルの上限値を変更する
- 14. PHPで配列を関数の返り値として使ってみましょう!
- 15. [Laravel] SQLログをいい感じに整形して出力させる
- 16. PHPで可変長引数を使ってみましょう!
- 17. PHPで配列の中の配列にアクセスしましょう!
- 18. 可変長の配列の行列を入れ替える方法
- 19. paiza問題集 スキルチェック過去問題 Cランク野球の審判
- 20. PHPでforeachを使って配列を操作してみましょう!
BotUIでチャットボット開発(ツール編)
## はじめに
以下2つの記事の続きです。
* [BotUIを使ってチャットボットを開発してみた](https://qiita.com/t_power/items/e966b4a5f35340ed9a41)
* [BotUIでチャットボット開発(DB編)](https://qiita.com/t_power/items/aac7cc0e34736e557a0a)本記事では、DBのデータをメンテナンスするためのツールを開発した話を扱います。
## ツールの概要
![ツールの概要.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1998725/643ab6c7-c56d-51b0-7883-150ef313da63.png)
上記の手順で管理することにより、プログラミングの知識が全くない方でも、シナリオを変更できるようになりました。
また、担当者が改行を含むデータを扱いやすくするために、CSVファイルはExcelで編集する運用にしました。**実際のシナリオ管理ページのキャプチャ**
![シナ
git commit できず苦戦(Controller.phpにActionを追加しただけ)
# はじめに
<自己紹介>
こんにちは、この記事が初投稿になります。
某SES企業に所属しています。現在は、非ITのクライアントに常駐しながら開発案件を目指して日々奮闘中です!
日々の学習のアウトプットのために活用させていただきます。# <エラー概要>
◉Laravel学習初日
Admin/ProfileControllerに、add、create、edit、updateそれぞれのActionを追加しターミナル上でgit commitを入力したが:::note warn
” On branch master Initial commit nothing to commit ”
:::
と出力されうまく実行できない。#<仮説/試したこと>
◉ masterブランチ上で操作しているのでブランチを切ってくださいと怒られている
→ブランチを一度削除しやり直し
◉ そもそも指定しているディレクトリが違う
→確認、問題なし。
◉ VScodeとの接続がうまくできていない
→“`git add/git remote -v“` で確認、問題なしあらゆることを試しましたが全然うまく
PHP関数(Math編)
# はじめに
今まで触れてきたMath関連の関数です。
随時追記予定。# rand(int $min, int $max)
乱数を生成する– パラメータ
$min = 生成される乱数の最小値$max = 生成される乱数の最大値
– 戻り値
生成した乱数“`PHP
$ip = $_SERVER[‘REMOTE_ADDR’];
$sessionId = hash_hmac(‘sha256’, $ip.uniqid(rand(), true).$_SERVER[“SERVER_NAME”], false);
“`
PHP関数(その他)
# はじめに
今まで触れてきたその他関連の関数です。
随時追記予定。# [uniqid(string $prefix, bool $more_entropy)](https://www.php.net/manual/ja/function.uniqid.php)
一意なIDを生成する– パラメータ
$prefix = 設定したい接頭語$more_entropy = 末尾にエントロピーを追加するかどうか
– 戻り値
生成したID“`PHP
$ip = $_SERVER[‘REMOTE_ADDR’];
$sessionId = hash_hmac(‘sha256’, $ip.uniqid(rand(), true).$_SERVER[“SERVER_NAME”], false);
“`
PHP関数(Hash編)
# はじめに
今まで触れてきたHash関連の関数です。
随時追記予定。# [hash_hmac(string $algo, string $data, string $key, bool $binary)](https://www.php.net/manual/ja/function.hash-hmac.php)
HMAC方式を使用して、ハッシュ値を生成する– パラメータ
$alge = 指定したいアルゴリズム名$data = ハッシュ値にする文字列
$key = 共有の秘密鍵
$binary = trueの場合は生のbinaryデータ、falseの場合は小文字の16進数値
– 戻り値
生成されたハッシュ値“`PHP
$ip = $_SERVER[‘REMOTE_ADDR’];
$sessionId = hash_hmac(‘sha256’, $ip.uniqid(rand(), true).$_SERVER[“SERVER_NAME”], false);
“`
PHP関数(セッション編)
# はじめに
今まで触れてきたセッション関連の関数です。
随時追記予定。# [session_status()](https://www.php.net/manual/ja/function.session-status.php)
セッションの状態を確認する– 戻り値
| 戻り値 | 意味 |
| —- | —- |
| PHP_SESSION_DISABLE | セッションが無効 |
| PHP_SESSION_NONE | セッションが有効だが存在しない |
| PHP_SESSION_ACTIVE | セッションが有効で存在する |“`PHP
if(session_status() === PHP_SESSION_NONE) {
session_name(‘token’);
session_st
AWS EC2にてPHPのRedis拡張機能を有効化する。
PHPのREDIS拡張機能を追加する。
手順はシンプル
・インストール
・有効化**※以下、インストール**
インストールにはpeclを利用する。## peclインストール
“`
wget http://pear.php.net/go-pear.phar
php go-pear.phar
“`インストール時にオプション指定をいくつか設定できるが、
筆者はデフォルト設定にしたためEnterを押した。## PATHの追加
“`
export PATH=$PATH:/home/ec2-user/pear/bin
“`## redisのインストール
“`
sudo pecl install redis
“`**※以下、有効化**
## php.iniに以下を追加
“`
extension=redis.so
“`## Apache再起動
“`
sudo service httpd restart
“`# 参考
https://pear.php.net/manual/en/installation.getting.php
https://se
【PHP】チャット機能の自作!Ajaxでスムーズな更新も実現
PHPで作れる定番機能の1つ「チャット機能」を自作してみました。
完成までの流れと苦労したポイント、どんなふうに作っていったかをまとめてみました。
#チャット機能を自作
今回使ってみたのはこのような感じのチャットです。
[自作チャット](https://portfolio.amefure.com/chatsystem/chat.php#chat-area)チャット機能を作ることができればPHPのあらかたのテクニックが学習できるかなと思い、作成することにしました。
##要件定義
まず最初にチャットを実現するために必要な機能を洗い出します。
チャットで欲しい機能
– チャットを送信時に時間とアイコンを表示
– チャットログを蓄積、表示
– チャットログが増えたら自動更新
– デモなのでユーザー切り替え
– チャットログリセット必要になる言語
– HTML/CSS(元枠)
– PHP(データ操作)
– JavaScript(自動更新)##設計
実現方法
– ログはJSONファイルに格納
– ログが増えたかどうかはファイルサイズで判断
– ajaxを使って更新時の
Docker環境でDBに接続するとcould not find driverが出たときの対処方法
## DBに接続する処理を作成
“`php
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false
]
);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
“`
## 接続すると下記のエラーが出力された
“`bash
could not find driver
“`
### ドライバが見つからないようなので現在のドライバ
【PHP】2つの時間帯が重複しているかをチェックする
## どんなときつかうか
予約システムつくるとき、よく使う。例えば予約したい時間帯に**「空きがあるがどうか」**を調べたいときなど。### 重複している時間帯をチェックするプログラム
“`index.php
/*
* @param int $startTimeTarget 比較対象元の時間範囲開始時間
* @param int $endTimeTarget 比較対象元の時間範囲終了時間
* @param int $startTimeSource 比較対象の時間範囲開始時間
* @param int $endTimeSource 比較対象の時間範囲開始時間
* @return bool 重複している場合はtrueを返す
*/
public function isTimeDuplication($startTimeTarget, $endTimeTarget,
$startTimeSource, $endTimeSource)
{
$startTimeTarget = new DateTime($startTimeTarget);
$endTimeTar
PHPからSQLに接続する
記録用
##準備
###DBに接続する読み込めば接続できるファイルを作っておく
“`php:dbh.php
false, // 静的プレースホルダにする //セキュリティの強化
\PDO::MYSQL_ATTR_MULTI_STATEMENTS => false, // 複文を禁
[PHP] データベースから取得した文字列などの定型文への、動的な値・変数の埋め込み/置き換え
文章・定型文中への、動的な値・変数の埋め込みを行うには、結論から言うと、“`str_replace“` や “`mb_ereg_replace“` を使用して文字列を置き換えて表現します。
例えばメールの定型文や、記事のテンプレートなど、何かしらの文字列・文章がすでにある中へ、日時に応じて、ユーザーに応じてなど、動的な値をその時々で変えながら埋め込みたいということがあると思います。
下記はメッセージテンプレートがDBに保存してあると仮定して、そのテンプレートのタイトルや本文、日付部分などをメッセージ閲覧時の情報で置き換えるサンプルソースとなります。
“`php
PHPでアップロードできるファイルの上限値を変更する
# 背景
PHP×nginxの案件でファイルをうまくアップロードできないことがあり、アップロードする際に許容上限に引っかかっていることが判明。
PHPとnginxの設定をそれぞれ変更してあげる必要があったので、その手順を記載。# PHPの設定を変更
## PHPの設定を確認
まずはphpinfo()でPHPの設定を確認。
以下内容のファイルをブラウザで表示できる任意のディレクトリ下に設置して、PHPの設定を確認。“`phpinfo.php
PHPで配列を関数の返り値として使ってみましょう!
#関数の返り値に配列を渡す
返り値を配列にして仮引数に渡します。以下の sum 関数があったとします。
“`php:index.php
ターミナルに以下を入力します。
“`
~$ php index.php
“`合計が出力されました。
“`
~ $ php index.php
6~ $
“`3つの合計の平均値も一緒に出力されるように、
返り値を配列にします。
3つの合計値と、 合計値を個数で割るようにします。
“`php:index.php
[Laravel] SQLログをいい感じに整形して出力させる
# 概要
webアプリケーションを開発する際、アプリケーションが実行したSQLクエリの確認は欠かせません。ロギング周りの調整は開発の初期の段階でアプリケーションに仕込むことがほとんどだと思います。
今回は、LaravelでSQLログをいい感じに整形して出力する方法を紹介します。# サービスプロバイダを作る
“`shell
php artisan make:provider DataBaseQueryLoggerServiceProvide
“`### app.phpに登録する
“`config/app.php
‘providers’ = [
//
App\Providers\DataBaseQueryLoggerServiceProvider::class,
],
“`できたファイルをこんな感じにする。
“`app/Providers/DataBaseQueryLoggerServiceProvide.php
PHPで可変長引数を使ってみましょう!
#可変長引数
渡された引数が何個になっても処理してくれる可変長引数を、foreachと一緒に使います。
以下の sum 関数があったとします。
引数に可変長引数の 「 … $ numbers 」を入れておきます。
foreach で $numbers の中身を一つづつ取り出して、
$total にプラスしていきます。
$total を …$numbersの仮引数に返します。
“`php:index.php
echo sum (1, 2, 3) . PHP_EOL ; で実引数を渡します。echo sum (4, 5, 6, 7
PHPで配列の中の配列にアクセスしましょう!
#配列の中の配列
配列を、他の配列の中で使ってみます。以下の配列があったとします。
$scores の配列の中に、 $numbers配列を入れています。
“`php:index.php
ターミナルに以下を入力します。
“`
~$ php index.php
“`配列の中に配列が入った状態で表示されます。
“`
~ $ php index.php
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => Array
(
[0] => 4
[1] => 5
)[4] => 6
)
~ $
“`そのまま連続で入れ込みたい場合は、
配列の前に 「 .
可変長の配列の行列を入れ替える方法
# 概要
授業で課題で出ていて調べても対処法がなかったので残しておきます。
以下に数字がインデックスになっており、0からインデックスが始まる一般的な配列の行列変換のコードを残しておきます。# コード
“`php
function matrix_replacement($arr)
{
$result = [];
for ($i = 0; $i < count($arr); $i++) { $result[] = array_column($arr, $i); } return $result; } ```
paiza問題集 スキルチェック過去問題 Cランク野球の審判
初めてqiitaで何を書けばいいのかわからないので、paizaの演習問題を書いてみる。
要件
標準入力で 「ストライク」か「ボール」が入力される
ストライクが入力され、かつストライクが1、2の時は「strike!]
ボールが入力され、かつボールが1~3の時は「ball!」
ストライクが入力され、かつストライクが3つの時は「out!」
ボールが入力され、かつボールが4つの時は「four ball!」
ただし、バッターはバットを振らないこと前提“`php:yakiu.php
PHPでforeachを使って配列を操作してみましょう!
#foreach
配列の要素を、foreachを使って1つ1つ取り出してみます。
“`php:index.php
1,
‘2番目’ => 2,
‘3番目’ => 3,
];foreach ($scores as $score) {
echo $score . PHP_EOL;
}
“`以下をターミナルに入力します。
“`
~$ php index.php
“`1つずつ出力されました。
“`
~ $ php main.php
1
2
3
~ $
“`キーも一緒に取り出してみます。
$key => 追加します。
“`php:index.php
1,
‘2番目’ => 2,
‘3番目’ => 3,
];foreach ($scores as $key => $score) {
echo $key . ‘ は ‘ . $scor