PHP関連のことを調べてみた2022年03月22日

PHP関連のことを調べてみた2022年03月22日
目次

現在時刻を表示する方法

・現在時刻を表示する方法
①構造化プログラミング
コード
“`
date_default_timezone_set(‘Asia/TOKYO’);
echo ‘現在の時刻は、’ . date(‘G時 i時 s秒’) . ‘です’;
“`
現在時刻を取得するにはdate()を使う。
date_default_timezone_set(‘Asia/TOKYO’)で日本時間を取得するように設定している。
echoで表示するようにして初めて表示される。(date()は時間を返すだけ)

②オブジェクト指向
コード
“`
$today = new DateTime();
$today->setTimezone(new DateTimeZone(‘Asia/Tokyo’));
echo ‘現在の時刻は、’ . $today->format(‘G時 i分 s秒’);
“`
日本時間の設定方法が異なる。

元記事を表示

「’」や「”」をechoで表示したいとき

・「’」や「”」をechoで表示したいとき

「I’m from Japan.」と表示したいとき、
“`
echo ‘I’m from Japan.’;
“`
では、シングルクォーテーション(‘)とアポストロフィー(‘)が同じ記号であるためエラーとなる。

これを解決する方法を載せておく。

①文字列をダブルクォーテーション(“)で囲む
“`
echo “I’m from Japan.”;
“`

②エスケープシーケンスを使う
“`
echo ‘I\’m from Japan.’;
“`

元記事を表示

PHPのreadfile()でファイルサイズが大きいzipファイルをダウンロードできなかったためfopen()-fread()にした話

PHPのreadfile()でファイルサイズが大きいzipファイルをダウンロードできなかったためfopen()-fread()にした話

#修正前
“`php
readfile($zip_name);
“`

#修正後
“`php
$handle = fopen($zip_name, ‘rb’);
while (!feof($handle)){
echo fread($handle, 4096);
ob_flush();
flush();
}
fclose($handle);
“`

元記事を表示

【Docker+Laravel6メモ】開発環境構築についてまとめてみました

## 背景
AWSでの本番環境構築にむけてポートフォリオ開発を進めていたところ、以前の開発環境が簡易的で必要な設定がされておらず、環境依存が起こってしまう可能性が高いと考えたので、本番環境構築前に整えておこうという目的で再構築しました。

:::note warn
今回は再構築、初構築両方に対応できるように手順を記載しました。
状況に応じて実行、スキップします。
:::

– GitHubリポジトリ

https://github.com/Yuuichi-M/travel-notes/tree/main/docker/dev

## 開発環境について

### 前提条件
– Dockerインストール済み
– VScodeインストール済み(Vimでも大丈夫です)

### 開発環境
– OS : Mac
– Docker 20.10.12
– Docker Compose v2.2.3
– Docker image
– laravel-app(appコンテナ)
– php7.4-fpm-alpine(nginx,php-fpm,supervisor)

元記事を表示

旅の思い出を共有できるSNSサービス『Travel notes』の紹介

# サービス概要
旅の思い出を投稿して、他ユーザーと共有できるWebアプリケーションです。
旅先の名所や宿泊施設の感想、グルメやおみやげの情報、
地元や近所のおすすめスポットなどを投稿して、他のユーザーと共有できます。

### アプリURL:https://travel-notes.online/

![スクリーンショット 2022-03-19 1.51.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/bf877b6b-6ab2-e9c1-7478-fc10665496e0.png)

## 機能一覧

#### 認証機能
– ユーザー登録機能:名前・メールアドレス・パスワード登録
– ログイン機能:メールアドレス・パスワード認証
– ゲストログイン機能:ユーザー未登録のままログイン可能
– パスワード再設定機能:メールアドレス認証・パスワード変更
– プロフィール編集機能:名前・メールアドレス変更。プロフィール画像、自己紹介文登録
– ログアウト機能:ログイン前画面に遷移
– 退会

元記事を表示

セッションがうまくいかないと思ったときの仮説検証

エンジニア初心者がPHPの勉強でつまづいたところを備忘録として記載しています。
自作でToDoアプリを作成しようと思っていまして、そのsignup機能の実装においてエラーが起きました。
以下にまとめます!

# 目次
– 前提
– 課題と結論
– 仮説1(セッションの不具合)
– 仮説1の検証と結果
– 仮設2(コーディングミス)
– 仮設2の検証と結果
– まとめ

# 前提
アカウント作成、signup機能でのエラーです。
フローは
signup画面→確認画面→登録thanks画面→signin画面を想定しており、
signup画面で「2つの条件を両方とも満たす場合」のみ確認画面に遷移するよう設定します。

また、条件とは以下で、満たさない場合はエラーを表示して確認画面に遷移しないようにするような機能を作っています。
・メールアドレスが空欄ではない
・パスワードが4文字未満ではない

# 課題と結論
課題:2つの条件を満たしていないにもかかわらず、画面遷移をしてしまう
結論:コーディングミスがあった

# 仮説1
最初の仮説は、セッションがうまく機能していないのではないかと考えまし

元記事を表示

【Laravel】Web開発初心者が1週間で入門チュートリアルを実施した記録(7)

以下の続き。

https://qiita.com/yotty19911207/items/1053c3153e9c3c252b9d

前回までで、フォルダ作成&タスク作成機能をつくった。

入門Laravelチュートリアル(7)ToDoアプリのタスクの編集機能を作る

続いて、タスクの編集機能。
流れとしてはフォルダ作成&タスク作成機能と同じ。

①ルーティング設定(web.php)

Route::get(‘/folders/{id}/tasks/{task_id}/edit’, ‘TaskController@showEditForm’)->name(‘tasks.edit’);
Route::post(‘/folders/{id}/tasks/{task_id}/edit’, ‘TaskController@edit’);


getは一覧画面の「編集」ボタンを押して、タスク編集画面に遷移してきた時。
postはタスク編集画面にてタイトル・状態・期限を入力して「送信」ボタンを押した時。

まずはget時のshowEditFormメソ

元記事を表示

Laravelで直接データベースをいじったら地獄を見た件

みなさん、こんにちは!

アプリを完成しましたが、データの削除の際に外部キーのエラーがあったので修正しようとしたところ、地獄を見たので愚痴らせてください。

### サービスについてはこちら
laravel学んで2か月で自サービスを開発した話 Part1

# 何が起きたか
![FireShot Capture 016 – フラワーギフト – flower-gift.herokuapp.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/9dbc3d42-68a5-eef5-44c1-dbfa7fa6c154.png)
以前、凍結されたぶりを削除しようとしたら、
![fireshot_capture_013_-_sqlstate_23000___integrity_constraint_violation__1451_cannot_delete_

元記事を表示

PHPの文字列検索でSQLの”LIKE”的に使える関数を作ってみた

# コピペ用関数

こちらをコピーして使ってください。

“`
//
function strlike(string $haystack, string $needle): bool
{
//
$initial_is_percent = false;
$final_is_percent = false;

//
if (substr($needle, 0, 1) === ‘%’) {
$initial_is_percent = true;
} else {
//no action.
}

//
if (substr($needle, -1) === ‘%’) {
$final_is_percent = true;
} else {
//no action.
}

//
$matched = false;
if (
$initial_is_percent === true &&
$

元記事を表示

【Laravel】ControllerからViewへの変数渡し方法と表示まで

こんにちは、最近Laravel楽しいなと思っているLaravel初心者エンジニアです。

今回は**ControllerからViewへ変数渡す方法とView上で、その変数を展開するところまで**まとめてきたいと思います。

## Viewであるbladeファイルに変数を渡す方法

方法としては以下の3つがあります。

①配列を使って渡す
②withメソッドを使う
③compact関数を使う

どれを使っても変数を送信することができますが、
**可読性の点からcompact関数が良いとのこと。**

### 前提の準備

まずは事前準備ということで、以下を用意します。

1.ルーティングの記述
2.viewを返すControllerファイル
3.bladeファイル

1.ルーティング
“`php:web.php
// localhost:8000/view にアクセスしたらVariableControllerのtest関数を呼び出す
Route::get(‘/view’, ‘VariableController@test’);
“`

2.Controllerファイル
“`ph

元記事を表示

【Laravel】SplFileObjectでCSVファイルのデータを読み込んでDBに反映する

## サンプル
### 入力画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218398/6426acdb-5760-fa7e-dbfb-2617c47f00e4.png)

## コード

### ルーティング処理

“`\routes\web.php
Route::get(‘/csv/’,’Csv\CsvController@index’)->name(‘csv.index’);
Route::post(‘/csv/finish/’,’Csv\CsvController@finish’)->name(‘csv.finish’);
“`

今回は`view`に使うファイルが1つしかないため、`name()`を使って、ルーティング処理ができるようにしている。

### コントローラー
– `index`: 入力画面の処理
– `finish`: CSVファイルデータ登録処理

“`\app\Http\Controllers\Csv\CsvController.php

元記事を表示

Codeigniter のPOST処理で独自ルールを活用して文字を全角に変換する

CodeigniterのPOST処理を行う際に
“`php
$this->form_validation->set_rules
“`
などでルールを定め、バリデーション処理を行うと思うのですが
その際に以前から文字を変換する作業も一緒に行いたいと考えてました。

公式のサイトを読み漁ったのですが、それらしき利用方法は見つからず諦めていた際に
偶然方法を自分で見つけたのでこちらに記載し共有させて頂きます。

# 方法

独自ルール関数のreturnをbool型ではなく、セットしたい内容にするだけ。
以上になります。

# 具体的なやり方

libraries以下に「CI_Form_validation」をextendsした独自クラスを追加
そのクラス内に文字を全角にしてセットしたい場合は下記の関数を追加
“`php
function cv_zenkaku($str)
{
return mb_convert_kana($str, ‘RNAKH’); // 全角に変換
}
“`

コントローラーでそのクラスを呼び出します。
“`php:クラス名は例
$this->load->

元記事を表示

【PHP9】ついに未定義変数が使えなくなる

ついに来るべき時が来ました。

“`php
echo $undefined;
“`

PHP9以降、致命的エラーになります。

以下は該当のRFC、[Undefined Variable Error Promotion](https://wiki.php.net/rfc/undefined_variable_error_promotion)の紹介です。

投票期間は2022/03/14から2022/03/28です。
2022/03/21時点では賛成30反対6の賛成多数であり、ほぼ確実に可決されます。

# Undefined Variable Error Promotion

## Introduction

未定義変数とは、使用する前に値がまだ初期化されていない変数のことです。
未定義変数にアクセスすると、現在は`Warning: Undefined variable $varname`の警告E_WARNINGが表示され、その変数値はNULLであるかのように扱われますが、実行が中断されることはありません。
しかし、これは意図しない挙動である可能性が高いでしょう。

この挙動を

元記事を表示

曜日を取得する方法

・曜日を取得する方法

コード
“`

元記事を表示

Laravel?docekr?漢ならPHPのみっしょ!!

# 成果物
https://dogcat.haniwa.site
# ソースコード
https://github.com/fujioka8700/php_internet_forum
# 準備
## なぜこのようなことをしたのか
以前からLaravelやdockerを触っていたのですが、上手く扱えている気がしていませんでした。
それ以前にLinuxやCLIに慣れた方がいいのでは?と思い、Linuxを積極的に使うことにしました。
あとLinuxを触ると同時に、AWSの基本も理解しようと、デプロイ先はAWSにしました。
## 目的
以下の基本を理解し、CLI操作を慣れる。
– Linux
– Apache
– MariaDB
– PHP
– AWS
## 開発環境
– Ubuntu 20.04.4 LTS
– Apache 2.4.41
– MariaDB 10.3.34
– PHP 7.4.3
## 「犬・猫 どちら派掲示板」を作ろうと思った理由
大好きな犬と猫のことを、語り合える場を作りたかったから。
# 要件定義
頭の中のイメージをノートに書きます。
これがないと、何を作ればいいか全

元記事を表示

PHP + MySQLフルスクラッチでユーザー認証機能を実装する【ユーザー登録編】

PHP + MySQLフルスクラッチでのユーザー認証機能の実装方法を解説します。今回は【ユーザー登録編】です。
開発環境、ファイル構成、ER図はこちらからご確認ください。

https://qiita.com/Michi1090/items/67db6a38bb63752237e7

# 要件定義

– 入力フォームはユーザー名、パスワード、パスワード(確認用)の3つ
– すでに使用されているユーザー名は登録できない
– ユーザー名は半角英数字20文字以内
– パスワードは半角英数字8文字以上で英大文字、英子文字、数字を最低1個以上含む
– ユーザー登録完了後、自動でログイン処理を行いインデックスページへリダイレクト

# ユーザー登録画面 (sign_up.php)

“`sign_up.php

元記事を表示

Laravel8でHTMLの共通部分をパーツにして使い回す方法(レイアウト共通化)|ビュー、コントローラー、ルーティング

# 前提
Laravel6や7の記事は多かったのですが、Laravel8からルーティングの書き方が変わったのに気づかず進めてうまくいかなかったので、解決策を備忘録として残します。

Laravel 8.83.4
Composer version 2.2.7

# コントローラーを作る
プロジェクトファイルに移動した状態で以下のコマンドを打つとコントローラーファイルが生成される

“`
$ php artisan make:controller LayoutController
“`

`app/Controllers`の中に、`LayoutController.php`ができているので開く。

“`PHP

元記事を表示

PHPのjson_encode←変数→json_decodeで改行コード(LF)が含まれている場合の挙動

PHPの `json_encode` と `json_decode` でこれまで把握していなかった挙動を最近知ったのでメモとして残しておきます。

動作環境は `PHP 7.4.28` を利用しました。

“`
$ docker container run –rm -it php:7.4.28-cli-alpine /bin/sh
“`

まず、改行コード(LF)を含む変数をヒアドキュメントで作成(変数 `$heredoc` にセット)します。

“`
# vi json_test.php

元記事を表示

Laravelでチェックボックスを使用した検索フォームの作り方

## サンプル
### 検索画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218398/d1ca1c43-5ede-4260-49ef-0847e880d5d4.png)

### 検索結果画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218398/28c4a18b-f897-cbe6-54d8-81095ecc007a.png)

## コード

### ルーティング処理

“`\routes\web.php
Route::get(‘/search/’,’Search\SearchController@index’);
Route::post(‘/search/result/’,’Search\SearchController@result’);
“`

### コントローラー
– `index`: 検索画面の処理
– `result`: 検索結果画面の処理

“`

元記事を表示

レンタルサーバー上のphpMyAdminにPHP7でPDOを使って接続する方法

## はじめに
備忘録
タイトルの通りです。
ローカルで作っていたものをサーバー上で公開しようとした時に、MySQLへのPDO接続のところで少しつまずいたことを書いておきます。
誰かのお役に立てれば幸いです。

## ローカルでの開発時
phpMyAdminをローカル上に設置していたので、PDO接続時のhost指定は
“`php
$pdo = new PDO(
‘mysql:host=localhost;dbname=test_db’,
‘username’,
‘password’
);
“`
のようにlocalhostにしていました。

## 解決方法
localhostの部分をサーバー上に設定したMySQLホスト名にするだけで解決できました。

例えばXFREEサーバーなら
“`diff_php
$pdo = new PDO(
– ‘mysql:host=localhost;dbname=test_db’,
+ ‘mysql:host=mysql1.php.xdomain.ne.jp;dbname=test_db’,
‘username’,

元記事を表示

OTHERカテゴリの最新記事