PHP関連のことを調べてみた2020年07月09日

PHP関連のことを調べてみた2020年07月09日
目次

GuzzleのJSONでのPOSTに大変苦労したお話

##who are you?
Guzzle使うから〜と聞いた時に本当に1mmも知りませんでした()

ギリギリcurlは触ったことはあるし、ただいつもAPIへ通信していたのが、
何故かajaxばかりの環境で育ってきた僕

育ってきた環境が違うから〜知らない言語はしょうがない〜

・・・(ー_ー)

それでもGuzzleを使うと言うことであれば、
やらなきゃならない事がある><

・・・

###環境
PHP:7系
Guzzle:6系
Laravel:7系(例題はLaravelでの実装ですが他もほぼほぼ変わらないと思います)

###Guzzleを使ったAPI通信

“`GuzzleSampleController.php

$client = new Client();

$options = [
‘header’ => [
‘Authorization’ => $token,
‘Content-Type’ => ‘application/json’,
],
‘form_

元記事を表示

Cannot end a section without first starting one. [Laravel]

`Cannot end a section without first starting one. `

bladeテンプレートの構文エラーと発生する原因について

## 発生する原因

シンタックスエラーの可能性:セクションが正しく囲われていないケース

“`php:master.blade.php
@section
〜記述
@endsection
“`
タイポ:共通レイアウトの呼び出し名が間違っているケース

“`php:master.blade.php
// 呼び出した共通レイアウト名が正しいか確認する
@extends(‘layouts.base’)
“`

タイポ:構文が間違っているケース

“`php:master.blade.php
// sectionがsecitonになっている
@seciton(‘main’)

{{ $msg }}

@endsection
“`

元記事を表示

LaravelのMailで、機能ごとに送信元アドレスを切り替えたい(Gmailなど)時にめっちゃ詰まった話

顧客「Aの機能の時は、hoge@gmail.comで確認メールを送信して欲しいんだよね」

ぼく「わかりました」

顧客「Bの機能の時は、hogehoge@gmail.comで確認メールを送信して欲しいんだよね」

ぼく「承知の助」

1時間後

ぼく「ん?むずくね?」

というわけで、詰まったお話

##なんで詰まったのか

LaravelのMailってfromとかのfunctionがあって一見簡単に切り替えられるように見えるんですけど

“`ruby:こんな感じに変えられそう
Mail::from(‘hogehoge@gmail.com’)
->to($request->user_mail)
->send(new Mail($request->user_name));
“`

まぁ当たり前なんですけど、ダメなわけで

そもそもGmailを使用するには、当然usernameとpasswordを使用しているわけで、それを.envに書いて読み込んでるわけですよね

“`ruby:.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.

元記事を表示

効果的な簡単のWebサーバセキュリティ対策「PHP編」

今日では、PHPを使って開発されたウェブサイトやウェブアプリケーションは、世界のインターネットの80%を占めています。PHPは登場以来、多くの問題を抱えています。その中に最も重要なのは、様々なセキュリティ問題です。

確かに、PHPのカーネルには非常に多くの脆弱性がありるですが、でも今まで、セキュリティ問題のほとんどは、PHPカーネルではなく、ウェブアプリケーションのロジック自身の脆弱性に起因しています。

Webアプリケーション自身の問題を置いといて、サーバー内のPHP環境の設定が間違っていることがもう一つの原因だ。

# セキュリティ対策前提条件

**`FastCGI`モードや`apache2handler`モードなど、どのような方法でphpを実行しても、`root`ユーザーとしてphpを実行することはいけません。そうでなければ、すべてが無意味になってしまう。**

# PHP環境のセキュリティ設定

それでは、PHP環境のセキュリティ設定を始めましょう。

## リスク関数を無効化

以下のPHP関数は、ほとんどのWebShellが利用している。 そのため、それらを無効にする必

元記事を表示

Slim 3とSlim 4のContainerInterfaceはnamespaceが違う

## 背景

社内にSlim 3のPJとSlim 4のPJがあって、Slim 4側は最近実装された新規開発でだいぶきれいに書かれていたので、レガシーなプロジェクト(Slim 3)のリファクタリング時にSlim 4の実装を真似していたらハマりました。
(こんな状況はなかなかないので参考にならなそうですが。。。)

`TypeError: Argument 1 passed to app\helpers\XxxHelper::__construct() must be an instance of Psr\Container\ContainerInterface, instance of Slim\Container given, called in /xxx/app/app.php on line 75 in xxxxx.php on line 19`

## 結論

`Slim\Container`を見ても`implements ContainerInterface`してるのになぜ?ってなってしまいましたが、
よくよくその定義を確認すると、Slim 3とSlim 4では `Contai

元記事を表示

cookieで条件分岐するときはjQueryよりPHPがいいってハナシ。

**「同じページに2回目以降は表示させない」**

というのをやりたかったのですが、
つまったので、苦労の後を記録しておきます。

##jQueryの場合

jQueryのクッキー使うときは、以下のように

– jQuery
– jquery.cookie.js
– cookieを発火させる記述

の順番に記述します。

“`html