読者です 読者をやめる 読者になる 読者になる

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

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

PHP

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タグで囲んで出力すると自動で折り返…

PHP:TCPDFを使ってHTML形式のデータからPDFを生成する際に新たに追加した機能

2年以上前に、TCPDFを使ってHTML形式のデータからPDFを生成する際に追加した機能のことを書きました。 ajya.hatenablog.jpこの機能を使ったシステムを2年以上ぶりで使用することになりました。 動作確認のテストしていると、文章上の「-」の位置によっては、…

PHP:正規表現を少しだけ学びました

PHP

2年以上前に作成したシステムをベースに、一部修正して再利用することになりました。 ソースコードを確認すると、テストサイトで利用する場合は、テスト用のデータベースへの接続文字列を手作業で有効にしていました。 本番サイトで利用する場合は、本番用の…

PHP:POSTでデータを渡すためにcURL関数を使ってみました

PHP

入力された内容を画面遷移を行わず、POSTで渡すためにPEARになかったかなと探していたときに、cURL関数でもできることに気がつきました。 PHP: cURL 関数 - Manualインストールされただけの状態ではモジュールが組み込まれていないかもしれませんので、利用…

PHP:文字列のバイト数で処理を分ける方法(2)

PHP

より短いコードにする方法がありました。 photo credit: Elephpant needs a drink via photopin (license)以前、文字列のバイト数で処理を分ける方法として、Shift-JISに変換してから判定する方法を書きました。PHP:文字列のバイト数で処理を分ける方法 - …

PHP:文字列のバイト数で処理を分ける方法

PHP

文字コード変換をしてバイト数を判定しました。 photo credit: via photopin (license)文字列が特定のバイト数を超えた場合、処理を切り分けたくて以下のようなコードを作成しました。 $work= "12あいうえおかきくけこさしすせそたちつてと漢字混合"; $workS…

PHPExcel を使わず、Excelファイルを出力

PHPの環境なら、PHPExcelを使えば簡単にexcelファイルを出力できます。 PHPExcelを使わず、HTTPヘッダを一部変更すれば、Excelファイルを出力できると聞いたので、試してみました。 photo credit: Collin Anderson via photopin cc方法HTTPヘッダとして、 he…

SQL Server:データを挿入した後の、自動でカウントアップされた値の取得方法

以前出来ていたと記憶している方法とは違う方法で出来ました。 記憶していた方法PHPでSQL Serverのテーブルにデータを挿入して、自動でカウントアップされるカラムの、カウントアップされた値を取得する方法は、 INSERT INTO table1(column1) VALUES ('abc')…

PHP:PHP 5.3以降でMicrosoft提供のSQL Server用のドライバを利用する際の注意点

Microsoft SQL Server 2012 Native Clientが必要なことはちゃんと読めばわかる内容ですが、読まずに思い込みで設定していて悩みました。 Windwos Server 2008 R2 + SQL Server 2008 + IIS 7.5 + PHP 5.3 という環境を構築しなければならなくなりました。 PHP…

入力が消えているはずなのに消えたと判断できなかった現象

PHP

セッション変数が中途半端に残っていたら発生するのかもしれません。現象ユーザー情報登録システムで、ユーザー情報がまったくない状態で登録が完了する現象が発生しました。推定原因入力された値は、post形式で入力内容確認画面に渡され、入力内容確認画面…

再読み込みボタンを押されたときにPOSTメソッドを再処理させない方法

POSTメソッドで渡された値を使って登録処理を行う画面で、処理が終わった後にブラウザの再読み込みボタンを押されると、同一処理が繰り返されて、2重登録が発生しました。 開発中のデータベースへの反映やメール送信の動作確認をするには便利ですが、本番で…

suPHPの環境で、php_valueによるphp.iniの設定を変更ができない場合の対処

今まで使えていた方法が使えないと、解決できるのかと焦ります。今までの方法が使えない.htaccessファイルに php_value include_path '.:/usr/local/share/pear:/usr/home/www/public_html/test" と書いてWebサーバーにアップロードして動作確認したところ、…

PHP:file_get_contents()で、GETリクエストおよびレスポンスを取得

あるサイトに対して、httpのGETリクエストでIDをパラメータとして送り込むと、IDに従ってファイルが作成されるようにしてあります。 普段は他の処理と組み合わせた、一連の処理の流れの中でGETリクエストをしていますが、急遽GETリクエストだけ行わなければ…

PHP:TCPDFを使ってHTML形式のデータからPDFを生成する際に追加した機能

Webの画面から、HTMLの<sup>や<sub>などのタグを含んだ文章を入力し、タグを反映した状態でPDFにしたかったので、TCPDFを使ってHTML形式でPDFを作成しました。Webの画面上、不等式の大なりの「>」と小なりの「<」は半角を使わず、大なりは全角の「>」を使い、小なりは</sub></sup>…

年末の週番号は何番になるのが正しいの?

先日、以下のツイートをしました。今週は、2013年第53週と2014年第1週のどっちが正しい?プログラムの挙動を見ていると、2014年第1週みたい。根拠というかルールはどこかにあるのかな。— AJYA (@ajyaa) 2013, 12月 31 きっかけは、PHPのdate関数でフォーマッ…

PHP:日付の扱いを間違っていても、目的は果たしていた例

以前作られたプログラムを修正するために、期日を過ぎたので入力画面を表示しないようになっていたのを、表示するように設定しても、表示されません。 原因調査 以下のコードで期日が過ぎているか判定していました。 $endDate = date('U',strtotime('2014-01…

PHP:defineを使わず変数を使っているプログラム

何年か前に作成されたプログラムの修正をしています。 共通ファイルに変数で固定値が書かれていて、変数を使って処理しています。 $systemId = 1; 他の書き方 固定値を書くなら、defineを使う方法があります。 define("SYSTEM_ID","1"); どちらでも適切にコ…

PHP:3桁になると正常に動作しないプログラム

0埋めされた文字列を文字列型のカラムから値を取得して、連番を生成するために、以下のようなコードが書かれていました。 $sql = "SELECT max(no) FROM table "; $result = pg_query($pgsql, $sql); $no = pg_fetch_result($result,0,0); $newno = sprintf("…

ひらがなチェックでつまずいたこと

人名のふりがなとして、ひらがなが入力されているか、JavaScriptやPHPでチェックしています。 photo credit: fhisa via photopin cc 「ー(長音)」がひらがなと判定されない 正規表現でチェックしていて、PHPの場合、文字コードがECU-JPで作られたページで…

PHP:文字が化けて保存できない現象への対処

以前作られたプログラムをベースに、部分的に修正を加えて利用したら、データベースへの登録時にエンコーディングできないエラーが発生しました。 そのときに表示されたエラーメッセージです。 Query failed: ERROR: invalid byte sequence for encoding "EU…

PHP:ファイルダウンロードで予想外の動作

CSVファイルをダウンロードするために、以下の記事のようなコードを利用して、ファイルをダウンロードできるようにしました。 PHPでファイルをDLさせる際のPHPコード例:phpspot開発日誌 このコードで僕の環境で試したところ、予定通りのファイルがダウンロー…

PHP:TCPDF:画像を指定するために試したこと

PEARのImage_Barcodeを使って作成したバーコードの画像を、TCPDFで作成するPDFに挿入して、バーコード付きPDFを作成することになり、以前作ったプログラムをベースに作成しました。 画像の位置調整ができない 試してみると、バーコードが左に寄りすぎている…

PHP:PEAR:バーコード Code39の生成を試してみました

以前、PEARのImage_Barcodeを使って、バーコード JAN13生成の失敗談を書きました。 PHP:PEAR:Image_Barcodeを使ってバーコード生成で間違えていたこと - ソフトウェア開発者の日常 試すにあたり方針を決める 今回、Code39での生成を指定されたので、 Code39…

ファイルを上書きしてしまうトラブル

トラブル対応はエネルギーを余分に使います。 photo credit: Kasaa via photopin cc トラブル発生 部下からファイルが上書きされたのは、なぜなんでしょうと相談を受けて、どんな仕組みを作ったのか確認してみました。 作られていたのは、 アップロードされ…

実行環境のバージョン違いでエラーが出たので対処しました

バージョンアップで、チェックが厳しくなっていたようです。 photo credit: YanivG via photopin cc 新しい実行環境でのテスト PHP 5.4.7の環境で、以前作られたプログラムを動かしたら、2種類のメッセージ表示されました。 「Strict Standards: Redefining …

PHPの実行時間の制限を変更する方法

動的に変える方法があったんですね。 photo credit: wwarby via photopin cc タイムアウトが発生 クレジットカード決済を行うプログラムがあり、今年用に修正を行いました。 テスト環境で動作させると、タイムアウトで終了してしまいました。 テスト環境のma…

PHP:時間がずれている原因を探して、新たな知識を得る

PHP

設定があるとは、今になると納得できますが、最初は全く思っていなかったです。 photo credit: leoplus via photopin cc 明日の午前9時から本番モードに切り替えるプログラムがあります。 既に準備モードで動いているため、プログラムが動いているサーバーの…

PHP:バージョンアップした後の動作確認は重要です

PHP

バージョン間で、動作が違うので注意が必要です。 新しい環境で、以前使ったプログラムを動作させることになりました。 新しいPHPのバージョンは5.4.7で、古いPHPのバージョンは5.2.6です。 正常に動作するまでに、以下の3点を修正しました。 ショートタグを…

PHP:XAMPP最新版からPostgreSQL最新版へ接続しようとして相変わらずだと思ったこと

XAMPPバージョン 1.8.1とPostgreSQL 9.2.3でWindows 7上に環境構築しようとしたときのことです。 apache friends - xampp for windowsXAMPP新バージョン 1.8.1 ... NPO法人 日本PostgreSQLユーザ会 以前、PHP5.2.7以降に付属のDLLは、PostgreSQLに接続できな…

PHP:週数の数え方をよくよく知らなくて、予想外の動作が発生した

週送りの機能が正常に動作していませんでした。 photo credit: *Kicki* via photopin cc 予想外の動作の状況 前週/次週というボタンがあって、1週間毎に遷移する機能(=週送り機能)を作りましたが、年をまたぐと正常に動作しませんでした。 2013年1月7日(…

データベースへの接続にはコストがかかる

この場合の「コスト」とは、サーバーのCPUやメモリのことで、「コストがかかる」とは、サーバーのCPUやメモリをたくさん使っているということになります。 photo credit: ottonassar via photopin cc ことの発端 PHPのバッチプログラムでデータベースからデ…

PHP:非同期処理の方法を調べた

出来たのはいいが、わからない点もある。 photo credit: Thorbard via photopin cc ことの発端 PHPでCSVファイルを生成して、ダウンロードを行うプログラムがあるが、データの取得に時間がかかりすぎて、ブラウザが待機時間を過ぎて、タイムアウトしてしまう…

PHP:TCPDFで調べたこと

自分で試した内容だけど、バラバラで探しにくいのでまとめておく。 photo credit: Cranky Pressman via photopin cc TCPDFマニュアル(勝手訳)にはお世話になってる。 TCPDFマニュアル(勝手訳) MultiCellで文字の大きさを自動で縮小させて枠に収める$pdf-…

PHP:¥マークの判定動作ではまった

久しぶりに¥マークではまった。何年ぶりくらいだろ。 photo credit: Kaptain Kobold via photopin cc ことの発端 ¥マークが含まれているかチェックするために、 $str = "入金予定"; $pos = strpos( $str, "¥¥"); if ( $pos !== false ) { echo("a"); } とし…

PHP:セッションのタイムアウトがよくわからない

session関係の設定をして気がついたこと。 photo credit: Ian-S via photo pin cc ことの発端 Webのシステムになって、ログインして放置しているとセッションが切れるんだろうけど、実際どれくらいの時間で切れるんだろうという話になったので試してみた。 …

PHP:OLE経由でExcelファイルを扱うときの注意点

当たり前といえば、当たり前なんだけど。 photo credit: Till Zoltán via photo pin cc Excelで作られたシステムからデータを抜き出して、データベースに登録するプログラムを作っている最中に気がついたこと2点。 1.ボタンの貼り付けられているセルからは、…

PHP:月末の日付の求め方

最近もわからなくなって、昔のソースコードを探してた。 photo credit: pvera via photo pin cc プログラムを作っていると、データを抽出するときに月末の日付が欲しいことがある。 if文かSQLの条件で、 日付データ < 2012/8/1 とすればいいのはわかっている…

プログラムでメール送信失敗を判定して、別のメールアドレスに送りなおすことができるか

考えてみたけれど、簡単には出来ないという結果になった。 photo credit: Éole via photo pin cc なぜそんなことを考えたのか お客さんから、 「プログラムから添付ファイル付きメールを送ると、添付ファイルの容量が大きいために受け取れない人がいる。 そ…

PHP:TCPDF:文字の大きさを自動縮小させて、枠に収まるようにする

一覧表をPDF形式で出力する必要があり、Excelのようにセルの大きさは変えず、文字を自動で縮小させたくなった。 プログラム内で、計算してフォントのサイズを縮小しなくてはならないのかと思いつつ、試した結果、以下のようにすると、自動で文字が縮小して収…

PHP:HTMLメールの送信方法を探した

PHP

既存のサイトに、HTMLメールの送信機能を追加しなくてはならなくなった。 現在は、問い合わせフォームの内容送信にPHP標準のmail()でメール送信をしている。 mail()では手間がかかるだろうから、他の方法はないかと検索した。 検索した結果、PEAR::Mailを使…

PHP:ディスク空き不足時に発生した現象

PHP

動作確認のためにシステムにログインすると、画面の下の方に Warning: Unknown: write failed: No space left on device (28) in Unknown on line 0 Warning: Unknown: Failed to write session data (files). Please verify that the current setting of se…

PHP:integerの最大値はいくつか

PHPは宣言なしで変数が使えるので、変数に整数が代入されたらinteger型になる。 integer型なら、上限があるはずだと思って調べたら、integer型の上限を超えたらfloatになると書いてある。 以下のコードで確かめたら、確かにfloatになっていた。 "; } ?> int(…