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

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

PHPでHTML圧縮 – WordPress対応かも?

### はじめに

WordPressプラグインでHTML圧縮ができるかもしれませんが、
過剰に圧縮するためにうまく動かない場合が存在します。

簡単なコードで HTML圧縮をしてみるのも良いでしょうか

### 先に参考サイトの記載

https://prfac.com/php-minify/

https://manablog.org/php-html-minify/

### 試しに組み込んでみたもの

“`functions.php
function sanitize_output($buffer) {
$search = array(
‘/\s\/\>/s’, // XMLの /> を圧縮
‘/\>[^\S ]+/s’, // タグの後の空白を削除
‘/[^\S ]+\/s’ // コメントを削除
‘/type=\”text\/javascript

元記事を表示

PHPでの配列とハッシュ(連想配列)の書き方(初学者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 配列とは
簡単にいうと***データのかたまり***のことです。
つまり***データをたくさん

元記事を表示

TOAST UI Editor のファイルアップロード機能

# 目次
[1.基本的な流れ](#1-基本的な流れ)
[2.まずはエディターに機能を追加する](#2-まずはエディターに機能を追加する)
[3.実際にアップしてurlを返す処理](#3-実際にアップしてurlを返す処理)

**TOAST UI Editor** というマークダウンエディターでファイルアップロードする方法に苦戦したので、誰かのためになればと思いアウトプット記事を書いてみます。
Laravel + Vue.js を使った開発です!

# 1. 基本的な流れ

今回実装させた TOAST UI Editor でのファイルアップロードは、
**選択した画像をサーバーにアップロードして、返ってきた URL を textarea に表示させるというものです。**
最初の状態だと、下記のように画像の情報がそのまま表示されてしまうため、
アップロードして返ってきたURLを表示できるようにしたいところ。

![スクリーンショット 2022-04-03 16.51.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

CakePHP2で表のカラムの順番を入れ替えるボタンの作り方

## きっかけ
演習でファイルがダウンロードできるサイトを作っていて、そのカテゴリーを管理するサイトで矢印↑↓をクリックすると前後の順番を入れ替えられるようにしたかったです。どのように作ったか記しておきます。

![カテゴリ管理画面イメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1802093/9b0f7363-c92e-5dd8-44c4-65296197cc08.png)

## 手順
1, Controllerに更新するデータのidを渡す
2, 並び替え用の数値を書き換え
3, データベースに書き換えたデータを保存

## データベース
order_numberは表示順を表わします。表示順を入れ替えて更新することで並び替えできるようにします。
| id | category_name | order_number |
|:———–|:————|————:|
| 1 | カテゴリー1 | 1 |
| 2

元記事を表示

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

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

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

# 要件定義

– ユーザー登録削除は物理削除で対応
– 削除前にパスワードを入力させ、本人確認を行う
– ユーザー登録削除と同時に、削除ユーザーに紐づくトレーニングログもすべて削除
– 削除完了後は、完了画面にリダイレクト

今回は外部キー連携を行うので、もう一度ER図を掲載しておきます。
`weight_logs`テーブルは色々なカラムがありますが、要するに`users`テーブルと外部連携できるキーがあれば、あとは何でも構いません。

![ER図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485055/adb788f4-1c27-ef50-6c03-a2e58e6850ed.jpeg)

#

元記事を表示

登録システム

## 会員登録システムの構成
### データベース
データベースは、『登録した会員情報を保存しておく』という役割があります。

### PHPファイル
必要なPHPファイル(仮)
・dbconnect.php – このファイルでは、PHPからデータベースに接続するための処理を行います。
すべてのファイルで、データベースとの接続処理を記述することは無駄が多いので、1つのファイルにまとめておこう、という発想です。

・entry.php – このファイルでは、登録フォールを作成し、会員情報を実際に入力してもらう画面を作ります。

・check.php – このファイルでは、entry.phpで入力してもらった情報の再確認を行います。
要するに、「メールアドレスとか本当にこれでいいの?」って確認するやつです。

・thank.php – このファイルでは、登録が完了した旨を伝え、ログインページへと促します。

### 全体の流れ

![join_system_architecture-1024×543.png](https://qiita-image-store.s3.ap-northea

元記事を表示

PHPでのログイン機能

## フレームワークを使用すれば簡単に実装できるが…
現在、有名なフレームワークというとLaravelやFuelPHPなどがあります。もしフレームワークを使ってログイン機能を実装する場合、大抵は「(フレームワーク名) ログイン機能」などで検索すればヒットすることでしょう。

### フレームワークのみでは応用が効かない場合がある
実は、フレームワークはあまりにも簡単に機能が実装できるため、いざバグが起きたとしても原因がわからず詰まってしまったり、細かな応用が効かない場合が多いです。内部でどのような処理が行われているのかを把握しないまま簡単に実装ができてしまう、というのが逆にデメリットになります。

## phpのログイン機能実装の流れ
### ユーザーに情報を入力してもらう
ユーザーに情報を入力してもらう為に、htmlで入力フォームを作成し、送信できるようにページを作成する必要があります。

### 入力された情報に対してバリデーションを行う
ここで言うバリデーションというのは、「入力チェック」「書式チェック」のことを指します。例えば、Eメールアドレスであれば、
・アルファベット・

元記事を表示

無料の「最寄り駅検索API」を公開した&30msの高速化手段

最寄りの駅を検索して返却するAPIサービス【NeaREST API】を公開してみたのでご紹介します。
※以前zennに投稿した内容と同じです
– 商用利用無料
– 認証制限なし
– 高速応答
– 最大検索件数20件
## 概要・デモ
以下ページにAPIドキュメントと仕様がありますのでご確認ください。

https://station.ic731.net/docs/near

また、簡単なデモとして今いる位置から最も近い駅を検索するアプリを公開していますのでスマートフォンでお試しください。

https://station.ic731.net/demo/nearest

以下のようなJSONを返却します。

“`json
{
“meta”: {
“status”: “success”
},
“data”: [
{
“station_id”: 9930101,
“station_name”: “都庁前”,
“pref”: “東京都”,

元記事を表示

変数に値が入っているか判定 isset

## 用途
変数に値が入っているかを判定したい時に使う

## 使用方法
“`php:php
if (isset(変数名)) {
// 変数がある場合の処理;
} else {
// 変数がない場合の処理;
}
“`

:::note warn
注意
「変数の値がある場合、且つNULLでない場合」に `TRUE` を返す。
「NULL」または、「値がない場合」は `FALSE` を返す。
:::

元記事を表示

foreachカウンター

## 用途
foreach内で何回ループしたかを数える際に使用する。

## 使用方法
“`php:php
“);
var_dump($counter.”
“);
$counter++; //カウントを1ずつ増やす
};
“`

“`:結果

0








“`

 
 
 
この記事は以下の情報を参考にして執筆しました。
– https://dezanari.com/php-foreach-counter/

元記事を表示

PHPの変数と定数(初心者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 変数とは
変数とは変わる数のことで、***値に名前をつける名札***とイメージしてください。

元記事を表示

Mysql旧pearとPDO利用でテーブルフィールド名取得

oearによるDBのtablesinfoにてフィールド名取得例。
“`
require_once ‘DB.php’;
$dsn = “mysqli://root:password@localhost/db名”;
$options = array(
‘debug’ => 2,
‘portability’ => DB_PORTABILITY_ALL,
);
$db = DB::connect($dsn);
if (DB::isError($db)) {
die($db->getMessage());
}
$db->query(‘SET NAMES utf8’);
$info = $db->tableInfo(‘テーブル名’,0);
//print_r($info);
$i=0;
foreach($info as $key => $value){
//echo $info[$i][len].”
“;
echo $info[$key][name].”
“;
}
“`
PDOによるフィールド名取得。
“`
$mysqli = new mysql

元記事を表示

サクラレンタルサーバーでphpからメールを送信する

# 概要
サクラレンタルサーバーで動かしてるLaravelのフレームワークからメールが送信したくなったのでその時実装したものの紹介

## 方法

Laravelのフレームワークでやるやり方がいくつかあったんですけど、レンタルサーバー側でcomposerのupdateができなくなってしまっていて、それに頼ることができなくなったので素のPHPの書き方をベースに書くことにした。

## 書き方
最終的に書いたコードがこちら

“`php
mb_language(“uni”);
mb_internal_encoding(“UTF-8”);
$to = “送信したいメールアドレス”
$subject = “件名”
$header = “Content-Type:text/plain;charset=UTF-8\r\n”;
$header .= “From: 送信元メールアドレス\r\n”;
$param = “-f 送信元メールアドレス”;
$message = “

元記事を表示

月別記事一覧と、投稿数表示機能

# 目次
[1.月別集計](#1-月別集計)
[2.月別ページ表示](#2-月別ページ表示)

Laravelを使ったブログサイト作成で、月別記事一覧と投稿数を表示させる機能を作ったのでアウトプット記事書いてみます。
***

**↓ 最終目標はこんな感じです**
![スクリーンショット 2022-04-02 17.39.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2077017/bbcd94e8-d3c7-ddd1-ac0c-6fcd635d980a.png)

# 1. 月別集計

流れとしては、公開中の記事から指定した年の記事を取得し、月別取得&投稿数取得。
あとは blade側で @foreach を使って月と投稿数を表示させていく感じです!

**`where(‘is_published’, 1)` を書かないと非公開記事まで表示されてしまうので注意です!**

“`php:PostController.php
public function index(): View

元記事を表示

laravelでyoutubeの料理動画を管理するアプリを作ってみた。

laravelを使ってYoutube上にある料理動画を管理するサービスを作成しました。
Youtubeには様々な料理動画が日々アップされていますが、実際に作ってみてよかったものをストックしたり、
少し自分好みにアレンジした時のメモを残したいと思ったので、当サービスを作ってみました。
セキュリティ面など至らない点が多いとは思いますが、興味があれば使ってみていただけると幸いです。

⇩作成したサービス

http://laravel-cookshelf.com

## 自己紹介
PHPを本格的に学習し始めて3ヶ月目の駆け出しエンジニア。前職はインフラ系で現在Webエンジニアになるため転職活動中です。

## 使用技術

##### フロントエンド

+ Javascript
+ Jquery
+ Bootstrap

##### バックエンド
+ PHP(Laravel8)
+ YoutubeAPI
+ Mysql

##### インフラ
+ AWS
+ Git

認証機能はLaravelにデフォルトで備わっているlaravel-authを使用しました。
また、AWSはEC2でサーバーをた

元記事を表示

使用しているブラウザを判定

## 使用用途
– ユーザーが使用しているブラウザを判定する

## 使用方法
“`php:ユーザーエージェント判定
$hoge = $_SERVER[‘HTTP_USER_AGENT’]; // ユーザーエージェントを取得
if (strpos($hoge, ‘ここに各ブラウザを判定する文言を入力’) !== false) {
指定したブラウザだった場合に行いたい処理を入力
}
“`
strpos は判定したい文言が見つからない場合に false を返す。

## IEサポート終了
2022 年 6 月 16 日(日本時間)をもって、Microsoft 社より Internet Explorer のサポートが終了となることが告知されています。

IEを判定するには
`MSIE` か `Trident`という文字が入っているかを確認する。
(古いIEは「Trident」が含まれないので、2つを確かめる)

## その他のブラウザ
「Chrome」は
`Chrome` が入っているか判定する。
`Safari` の文字列が含まれる場合もあるため注意。
`Chrome` が入ってい

元記事を表示

Phaser.jsで作った大富豪をユーザー登録制にしました

Laravelでバックエンドを作成し、大富豪をユーザー登録制にしました。
成績がバックエンドに登録され、ネットで確認することができます。

大富豪のURL
https://www.new-doumeishi.me/vs_daihugou/public/

成績確認のURL
https://www.new-doumeishi.me/vs_daihugou_server/show

元記事を表示

PHPのin_array,array_column,array_multisortを駆使してランキング集計してソートするロジックを組んだ話

ランキング集計ロジックを作りたくて実装を進めていた

DBのランキングテーブルは下記のような構成になっていて

|id|no|place_id|
|-|-|-|
|1|1|abc|
|2|2|aaa|
|3|3|bbb|
|4|1|abc|

no(ランキング順)1のものは重みが3
no(ランキング順)2のものは重みが2
no(ランキング順)3のものは重みが1

といった形で集計した結果ポイントが一番高い順に並べるということがしたかった。

このテーブルから

“`
[
{place_id: 1, point: 4},
{place_id: 2, point: 2},
{place_id: 3, point: 1}
]
“`
こんな感じの結果を作りたかった。

“`php
// place_idごとにポイント集計とかする
foreach ($ranking_records as $ranking_record) {
if(in_array( $ranking_record->place_id, a

元記事を表示

PHPの書き方(初心者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
“`MAMP“`をインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# PHPの書き方

### 1. 基本的な書き方

“`index.php

“`
“`“`のの間に処理を書いていきます。この間でPHPの処理が走るので、
の外に書くとPHPとして処理されません。

***?>は省略することができます***。そうすると

元記事を表示

【Laravelエラー】Cannot drop table ” referenced by a foreign key constraint

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況
usersテーブルを“`php artisan migrate:rollback“`したときのエラー。

“`
Cannot drop table ‘users’ referenced by a foreign key constraint ‘posts_user_id_foreign’ on table ‘posts’. (SQL: drop table if exists `users`)
“`

## 原因
usersテーブルに“`post_id“`が外部キーとして設定されており、postsテーブルよりusersテーブルを先に“`rollback“`しようとしたため。

## 解決法
migrationファイルで外部キーを削除する。

“`php
public function down()
{
Schema::table(‘posts’, function (Blueprint $table) {
$table->dropForeign(‘posts_user_id

元記事を表示

OTHERカテゴリの最新記事