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

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

【PHP】Google広告APIでオフラインコンバージョンを自動アップロードしたい!

#はじめに

以前YahooAPIでオフラインコンバージョンを自動でアップロードする方法について、
調べて[記事](https://qiita.com/azasaz/items/20e49936471c4dd5ecb6)にしたんですけど、それじゃGoogleは?というおはなし。

#そもそもオフラインコンバージョンてなんぞや。

Googleさんが広告タグに「gclid」という長い文字列をくっつけてくれるので、
コンバージョンに結びついたデータからそのIDを引っこ抜いて、
ついでに何時何分何秒にいくらでコンバージョンに至ったかの情報を
まるっと渡すと、GoogleさんがAIを駆使して分析してより細分化された広告設定ができるようになる。らしい。

(とは担当者談なので、実際のところよく知らないんだけど)

オフラインコンバージョンについての詳細は[ココ](https://anagrams.jp/blog/listing_knowhow/offline-conversion-tracking-for-google-ads/)がわかりやすい

※ちなみにYahooの場合は「yclid」という

元記事を表示

Laravel:パスワードリセット実装の仕方

プログラミング初心者です。

##やりたいこと
LaravelのAuthをインストールすると、“`Forgot your Password?“`という名前でパスワードリセット機能が実装されます。
ただそのままだとメール送信することができず、エラー表示がでました。そこから実装に成功したので、ここに記録します。

日本語やデザイン変更してしまってますが、パスワードリセット部分の写真です。
![スクリーンショット 2021-11-17 1.08.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1362518/bc40309c-6473-4183-fa6a-03e6d482adfb.png)

##1 まずエラー①
何も自分で実装してなかったのでそのままメール送信すると以下のエラーが出ました。

“`
Call to undefined method App\User::notify()
“`
###1-1 エラー①解決方法
①Notificationsディレクターに一つもファイル作成してなかった

元記事を表示

【Laravel】App Store Connect API からiOSアプリの売上レポートを取得する

# はじめに

自分で作ったiOSアプリのダウンロード数などが知りたい場合、以下の2つの方法で確認することができます。

1. App Store Connectにアクセスし、ブラウザ上で可視化された情報を確認する
1. App Store Connect API を叩き、データとして取得する

本記事では、iOSアプリの新規ダウンロード数を算出することを想定し、2番のApp Store Connect API経由でSales and Trendsレポートを取得する方法を紹介します。

# 準備

※ Laravelのプロジェクトが立ち上げ済みであることを前提に話を進めます

## JWT生成ライブラリのインストール
App Store Connect API の認証には、__JWT__(Json Web Token)が必要となります。
今回はLaravelでの実装のため、PHPでJWTを生成できるライブラリである`PHP-JWT`を使用します。(https://github.com/firebase/php-jwt)

上記リンクのREADMEにもあるように、composerでインス

元記事を表示

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】時間帯が重複しているかをチェックする

## どんなときつかうか
予約システムつくるとき、よく使う。例えば予約したい時間帯に**「空きがあるがどうか」**を調べたいときなど。

### 重複している時間帯をチェックするプログラム

“`index.php
// 予約したい時間帯
$reserveStartDate = ‘2021-10-21 14:00’;
$reserveEndDate = ‘2021-10-21 15:00’;

// 予約ができないorうまっている時間帯
$fullSinceDate = ‘2021-10-21 14:30’;
$fullUntillDate = ‘2021-10-21 15:30’;

// invertは間隔が負の数になっている場合は1、正の数なら0を返す
$is_duplication = isTimeDuplication($reserveStartDate,$reserveEndDate,$fullSinceDate,$fullUntillDate);
if($is_duplication){
print_r(‘重複しています。空きがありません’);
}
else {

元記事を表示

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 DataBaseQueryLoggerServiceProvider
“`

### 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
)
~ $
“`

そのまま連続で入れ込みたい場合は、

配列の前に 「 .

元記事を表示

OTHERカテゴリの最新記事