ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PHP

PHP:curlでPOSTして、結果のXMLを処理

PHP

他社のAPIで認証を行わなければならなくなりました。 仕様を確認すると、POST形式でidとパスワードを送信し、結果をXML形式で返してきます。XMLをPHPで処理したことがなかったので検索しました。 curlを使って、idとパスワードを送信 curlでPOSTする方法の参…

PHP:LDAP認証を利用する際の注意点

PHP

PHPには、LDAP関数が用意されていて、LDAP認証を利用できます。 www.php.netldap_connect関数でLDAPサーバーに接続のための引数が妥当か確認し、ldap_bind関数で実際に接続します。 www.php.net www.php.netldap_bind関数の戻り値が、成功のtrueになかなかな…

PHP:英語の文字列を適度な文字数で改行したい場合、単語の途中で改行させない方法

PHP

Webの登録システムで、英文を入力して登録する場合があります。 登録すると、登録内容を通知するメールを送信します。英文を登録した場合、メールに記載する英文の改行の位置は、単語の途中にしないで欲しい、と要望がありました。 自力で実装する場合 単語…

CentOS 7.6-1810に、PHP 7.3とLaravel 6のインストール

調べながらCentOS 7.6にPHP 7.3とLaravel 6のインストール をしました。 Laravel 6のインストールでハマりましたが解決できました。 EPELリポジトリを追加 最新のApacheのインストールのために既に行っていれば不要です。 $ sudo install epel-release yumを…

PHP:CSV形式を自力実装する際の手間

PHP

PHPで作られた既存のシステムで、CSV形式でのファイルのダウンロード機能に、なぜかfputcsvが使われていませんでした。 fputcsv ファイルを一旦作成後ダウンロードするのではなく、直接データを出力してダウンロードするため、使われていないようです。fputc…

PHP:画面遷移せずGETでデータを渡して処理を行うために、cURL関数を使いました

3年以上前に、POSTでデータを渡すための方法を書いていました。 ajya.hatenablog.jpPOSTで使えたのだから、GETでも使えるでしょうと考えて試したところ、使えました。cURL関数のGETでの利用方法以下のようにして、利用できました。 // 初期化 $curl = curl_i…

PHP:セッション変数を初期化したはずなのに初期化されない現象

PHP

PHPで、セッション変数の初期化を行いました。 セッションの破棄まではしたくなかったので、 $_SESSION = array(); としました。セッション変数の初期化は、PHPのマニュアルにサンプルとして書いてある方法です。 セッション変数が連想配列になっているから…

PHP:TSVの読込

PHP

古いPHP環境で作成されたシステムで、TSVのファイルを読み込まなければならなくなりました。 PHPでTSVを読み込む方法を検索すると、SplFileObjectを使うと楽そうだとわかりました。 PHP: SplFileObject - Manual TSVを読み込んでみる 試してみると、簡単に読…

PHP:変数展開を使って2次元配列へのデータ設定

PHP

以前、2次元配列へのデータの設定方法を書きました。 ajya.hatenablog.jpこれでもいいのですが、 foreach()を使って代入するほうが手間がかかるのではと思ってしまいます。PHP:2次元配列へのデータの設定方法 - ソフトウェア開発者の日常と書いたように、fo…

PHP:2次元配列へのデータの設定方法

PHP

あまり使いたくはありませんが、2次元配列で値を定義した方が後々管理が楽になる場合があります。定義する値が少ないのであれば、以下のように書けば済みます。 array(1 => 'abc', 2 => 'def'), 2 => array(3 => 'hij', 4 => 'klm'), ); あるいは、 array(…

PHP:defineには何を指定できる?

PHP

PHPのdefineに変数を指定したくなって、できた記憶がなかったのでマニュアルを見てみました。 PHP: define - Manualマニュアルによると、 PHP 5 では、value は スカラー値 (integer、 float、string、boolean あるいは NULL) でなければいけません。PHP 7 …

PHP:empty()で少し悩む

PHP

データベースから値を読み込んで、1だったら会員、0だったら非会員のラジオボタンを設定しようとしました。 必ずデータベースに値があるとは限らなかったので、empty()で判定して、empty()の戻り値がfalseならラジオボタンに設定することにしました。 PHP: e…

PHP:セレクトボックスの選択の重複のチェック方法

セレクトボックスが4個ある画面があります。 4個のセレクトボックスには全て同じ選択肢が設定されています。 同じ選択肢を選ばれていないか、チェックが必要です。 重複を除去して、配列の数が異なっていれば、重複して選択していると判定 if文で1個目の選択…

PHP:配列の最初の要素の削除/最後の要素の削除の方法

PHP

一見すると選択肢がほぼ同じ選択項目が2箇所あります。 2箇所の選択項目の違いは、1個の選択肢の有無だけです。 一方の選択項目の選択肢の最後にある選択肢が、もう一方の選択項目の選択肢にはありません。 それ以外は選択肢は全く一緒です。PHPで選択項目の…

PHP:文字数を数える方法

PHP

帳票出力のために、出力する文字列の長さが全角で20文字を超えたら、強制的に改行をしなければならなくなりました。 文字コードがUTF-8なので、strlen()とmb_strlen()では、全角20文字が正しく数えられません。 PHP: strlen - Manual PHP: mb_strlen - Manua…

PHP:ZipArchiveを利用した際に戸惑った点

PHP

サーバー上のファイルを圧縮するために、ZipArchiveを初めて利用しました。 利用した際、以下の2点に戸惑いました。 アーカイブの作成先のパーミッションが無くてもopenに成功する $zip = new ZipArchive; $res = $zip->open("/home/usr/test/zip/test.zip")…

PHP:必ずフラグがONで更新されてしまう

PHP

昨日の記事に続いて、これまでに見たことがあるバグです。 昨日の記事はこちらです。 ajya.hatenablog.jp あるシステムで、データの更新兼削除の設定ができる画面があります。 データを更新するために入力して、更新ボタンを押すと、削除が勝手に設定されて…

PHP:ロールバックしているはずがロールバックされない

PHP

これまでに見たことがあるバグです。あるシステムで、 入力内容をデータベースに登録処理 決済処理 メール送信処理 という流れで処理をしていました。決済処理でエラーが発生した場合とは、例えばクレジットカード番号が間違っていて決済できなかったときが…

PHP:header()関数で画面遷移させる場合の注意点

PHP

Webシステムのプログラムで、ログインしていない状態なのに、なぜかデータベースの参照を行っていました。 index.phpにアクセスされると、ログインしていなければlogin.phpに遷移するようになっています。 ログインしていれば、login.phpには遷移せず、index…

PHP:小数点以下の切り捨て誤差の対処

PHP

JavaScriptの計算誤差への対処を書きました。 ajya.hatenablog.jpこのとき、同時にPHPの小数点以下の切り捨て誤差の対処もしました。 JavaScriptとは異なる箇所で誤差発生 JavaScriptでは、36.3×700=25,410になるはずのところ、25,409になっていました。 PHP…

CentOS 7.4、PHP 5.6の環境でのPHPExcelのインストール手順

CentOS 7.4、PHP 5.6の環境でPHPExcelを利用したくなったので、インストールしました。 github.com photo credit: Nguyen Vu Hung (vuhung) CentOS 7 64bit 07 via photopin (license)インストール手順こちらのページを参考にして、以下の手順でインストール…

PHP:複数ファイルのアップロードへの対応方法

PHP

ファイルアップロードが複数になった場合、どのようなコードを書けばいいのかわかりづらいので、メモとして書いていきます。 photo credit: FootMassagez Coding a program - Credit to https://costculator.com/- Credit to https://costculator.com/ via p…

PHP:Webページのフォームのラジオボタンが増えた場合に、次のページのコードをなるべく変更しないで済む方法

PHP

Webページにラジオボタンがあり、初期は2個でした。 <form method="POST" action="next.php"> <input type="radio" name="radio1" value="1">Aを希望 <input type="radio" name="radio1" value="2">Bを希望 </form> 「Bを希望」を選ばれた場合だけ処理したいときは、PHPで次のフォームを作成していた場合、 if ($_POST["radio1"] === "2") { // Bの処理 } と書けば処理ができます。この状態に対して選…

PHP:Webページのフォームの複数のラジオボタンの値を、次のページで読み込む方法

PHP

以前、チェックボックスのname属性を配列のようにして、値を取得する方法を書きました。 ajya.hatenablog.jp今回はラジオボタンを配列のようにして、値を取得する方法です。 今回もうろ覚えで作成して、よくわからなくなって、上の記事を読み直していました…

文字コードがShift_JISのページをブラウザで表示すると文字化けする

過去に作られたデータベースにデータを登録するプログラムを、XAMPPをインストールして動作させました。 動作するまでに起きた現象と対処について、以下の記事で書きました。 ajya.hatenablog.jp文字化けが発生するPHPのファイルはShift_JISで作成されていて…

PHP 7.0とApahce 2.4の組み合わせのXAMPPを利用して学んだこと

データベースにデータを登録しなければならず、2年前に利用したプログラムを確認しました。 確認した結果、PHPだけあればいいと思っていところ、ApacheとPHPが動作するWebの環境が必要なことがわかりました。手っ取り早くApacheとPHPが動作する環境を構築す…

PHP:実行時間の制限を確実に回避できるのは?

PHP

PHPの実行時間の制限について書きました。 ajya.hatenablog.jpmax_execution_timeの値を長い時間をにして止まらないのを確認するのも方法ですが、1秒という極端に短い時間にして試してみました。 確かに1秒で終了したので、max_execution_timeの値で制限がで…

PHP:実行時間の制限はどうなっているの?

PHP

以前お客さんのWindows Server環境で、PHPで作ったコマンドラインから起動するプログラムを実行していました。 半年に一度ほどの作業で、時間がかかる処理というのはわかっていました。 処理の状況から1時間半くらいで終了するかと予想して待機していました…

PHP:Webページのフォームの複数のチェックボックスの値を、次のページで読み込む方法

PHP

Webページのフォームに、久しぶりに一から複数のチェックボックスを配置して、次のページで選ばれた複数のチェックボックスの値を読み込もうとしました。 なんとなく覚えていたので作成できましたが、うろ覚えなので記録として残します。 読み込み側のページ…

PHP:TCPDFを使ってHTML形式で出力すると文字がはみ出る現象への対処

先日、TCPDFでHTML形式のデータを指定してPDF出力すると「-」で折り返してしまったので対処をしたことを書きました。 ajya.hatenablog.jpこのとき、別の現象にも気がついていました。 別の現象は、文字列をtableタグのtdタグで囲んで出力すると自動で折り返…