PHP関連のことを調べてみた2021年11月17日

PHP関連のことを調べてみた2021年11月17日

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

元記事を表示

OTHERカテゴリの最新記事