おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

カテゴリ「PHP」の26件の記事 Feed

2018年4月17日 (火)

【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい

POSTやGETなどのスーパーグローバル変数へのアクセスは直接以下の様にすることで行えます。
この例では、$_GET変数から id という引数を取得します。

これを filter_input 関数を使うと1行ですっきりします。

但し、これだと引数 id が全く指定されない場合は、変数 $id の中身がNULLになってしまいます。 そこで filter_input 関数の第3引数に FILTER_SANITIZE_STRING を指定すれば id を文字列として 取得できます。

引数 id を整数値として扱いたい場合は、第3引数に FILTER_VALIDATE_INT を指定します。

この場合でも、id=aaa の文字列指定であったり、id= の様に未指定であったりすると 変数 $idfalse で返されます。
これでは不都合があったりしますので、値の規定値、最小値、最大値の指定を filter_input 関数の第4引数に配列で指定します。

指定された min_range指定値と max_range指定値の範囲外の場合は default指定値が返されます。

楽天市場


■関連記事
【PHP】可変変数と可変クラスの使い方について
【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する
【PHP】配列の代入はクローンコピーになる
【PHP】連想配列の様な「stdClass」の使い方について
【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい
【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る

デル株式会社

2018年4月11日 (水)

【PHP】ブラウザに長時間処理の内容を順次表示を行う方法

PHPでの長い処理の中で単にブラウザに表示する場合、以下の様な手順で行います。

まず最初にブラウザに対する出力用バッファを最初にフラッシュをします。
その後、長時間の処理のループで echo 関数で文字列を表示した時に その都度バッファのフラッシュを行います。

プログラムの例としては以下の通りです。

楽天市場


■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

デル株式会社

2018年4月 5日 (木)

【PHP】HTMLのリンクにダウンロード処理を設定する方法

HTMLの a タグのリンク先にPHPプログラムを指定してファイルをダウンロードする方法ですが、 リンクファイルの引数を GET 指定する様にします。

HTMLのソースは以下の様にします。 リンクファイルの引数を file として、その値にファイル名を直接指定しています。
呼出すPHPプログラムは download.php とします。

PHPプログラムは以下の通りです。 いろんなサイトを見ると、 出力ヘッダのタイプは application/force-download でOKな様です。
ファイル出力は readfile() で行います。
デル株式会社
■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

2018年3月20日 (火)

【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る

今回はPHPのプログラムを組んでいて、 関数array_keysを利用して配列のキーの中に、指定されたキーの存在チェックを行う為に 使っていたのですが、指定されたキーが無かった場合はどうなるのかなと思い、調べてみました。

PHPの公式のマニアルには以下の様な例が載っています。 これを実行すると以下の様になります。 確かにこれで例としては問題無いのですが、結果としてキー値が返るものしか載っていません。 まあ、該当しないキー値を指定した場合は自分で調べればいいのですが。 そこで、2番目の例で、キーが存在しない yellow でやってみました。 この結果は、以下の様になります。 結果としては、空のarrayが返ります。 この結果に対して、count()を取ってやれば、0となります。 また、foreachで処理しても結果の配列は空なので、以下の様に処理されないことになります。 PHPのマニアルも空の配列の例が載っていると助かるのですが・・・


■関連記事
【PHP】可変変数と可変クラスの使い方について
【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する
【PHP】配列の代入はクローンコピーになる
【PHP】連想配列の様な「stdClass」の使い方について
【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい
【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

2018年3月16日 (金)

【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない

画像ファイルのアップロードでBMPファイルをJPGに変換する時に imagecreatefromwbmpを使ったがうまくいかない現象が発生しました。
以下の様なソースで、画像ファイルの種類としては「jpeg」「bmp」「png」「gif」を 対象としていたのですが、「bmp」用の関数「imagecreatefromwbmp」がうまく動作しませんでした。 何度やってもうまくいかないので、PHPの正式な関数の説明書を見ると 以下の関数の投稿が載っていました。
ダメもとで一度この関数で行うと取り敢えず処理がうまくいったのでこれでOKとしました。
楽天市場


■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合


転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

2018年3月 9日 (金)

【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時

今日は、またまた簡単なエラーの件で恐縮ですが、 以下のソースで、「L_test()」の宣言でタイトルのエラーが発生しました。

「処理A」「処理B」共に長い処理だったので、なかなか見つからなかったのですが、 よくよく見ると、「switch」文の閉じる括弧「}」がありません。
こんな簡単なところにバグが潜んでいました。
論理的には問題無い様な感じだったので、括弧「{}」の対応をチェックするのを怠っていました。 完全にケアレスミスでした。

「unexpected 'private'」などと表示されたので、てっきり他の部分を疑っていましたが、 もっとソースをよく見るべきでした。

タイトルの様なエラーが出たら、一度処理の括りの括弧「{}」の対応を確認してみては 如何でしょうか。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

2018年2月27日 (火)

【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

表示される行番号にはエラーが無く、他の部分にエラーが在る場合が多いです。

例えば、if文などの{(中括弧)の閉じ忘れなどがあります。

また、今回くだらないミスを起こしたのですが、変数名の先頭の【$】ドルマークを忘れたことです。
長い変数名を使用していて、他の所からのコピペでささっとソースを直したら 【$】ドルマークをつけるのを忘れていて、解決するまで30分も掛かってしまいました。

{(中括弧)の閉じ忘れを中心に見直していたのですが、人間正しいと思いこむと 簡単な変数の【$】ドルマークを忘れるものです。笑ってやってください。
皆さんもくれぐれも変数の先頭の【$】ドルマークを忘れませんように。

尚、エラーの部分を特定する方法としては、 エラーが起きている部分を含む大まかなところで、 【/**/】コメントにしてエラーが出ない様にしてから、 順次内側にコメント部分を狭めていき見つける様にしています。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

2011年8月30日 (火)

PHPでエクセルファイル処理

今回はPHPでエクセルファイルの読み書きができるオープンソースの紹介をしたいと思います。

先ず、PHPExcelを以下のサイトの「Downloads」の「Recommended Download」より取得します。
最新のバージョンはPHPExcel 1.7.6の様です。

http://phpexcel.codeplex.com/

尚、動作条件としてはPHPのバージョンは5.2.0以上で、「zip」「xml」「gd」のPHP用ライブラリが必要の様です。 (zipはzipファイルの生成等が無ければいらない様です)


ダウンロードしたzipファイルを「htdocs/excel/」のディレクトリに展開しました。
展開したディレクトリは以下の様になります。

・htdocs/excel/Classes       :PHPExcelのライブラリ
・htdocs/excel/Documentation :PHPExcelのドキュメント
・htdocs/excel/Tests         :PHPExcelの各種サンプルソース

ドキュメントは英語ですが、一通りの説明がなされていて、一応使える感じでした。

私の環境ではlocalhostでのテストを行いましたので、
htdocs/test/test.phpとして以下のソースで簡単なエクセルファイルを出力するプログラムで確認しました。


ソースをみれば、結構簡単にエクセルが出力できています。
ファイルの出力形式は「Excel2007形式」「Excel95形式」「CSV」等があります。


尚、最後の書込のところを以下の様にすれば、ブラウザでのダウンロードができます。



■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

2011年8月23日 (火)

PHPでPDF出力

PHPでPDFファイルを出力する必要があり、調べてみたところTCPDFというオープンソースがありました。

TCPDFはFPDFをベースに拡張されたものらしい。
ソースのダウンロードは以下のサイトから最新のものが取得できます。

http://sourceforge.net/projects/tcpdf/files/


現状では「tcpdf_5_9_112.zip」が最新のようです。

このZIPファイルをサイトのディレクトリに展開します。
今回は、「htdocs/tcpdf/」のディレクトリにしました。

簡単なPDF出力を行うプログラムを作成してみました。

「htdocs/test/test1.php」に以下のソースを保存し、実行します。
(ローカル環境で行うため、http://localhost/test/test1.phpでの実行)


割と簡単にPDF出力できるので、今後の仕事で利用価値がありそうです。

また、いろいろテストしてからTCPDFについて書きます。


楽天市場

■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

2011年4月26日 (火)

submitとフォーム変数について

submitとPHPに渡されてくるフォーム変数について、すこし調べてみました。

以下の様に1個のHTMLソースの中で複数のフォームを宣言することができます。
このソースは、それぞれのsubmitボタンをクリックするとそれぞれのフォーム内の"data"がフォーム変数として渡されます。
dataの値により、それぞれの処理を行うことができます。

フォームを複数宣言するのはどうかと思われる方は、以下の様な方法もあります。
この場合の動作は、クリックされたボタンの名前が$_POSTの添え字となり値は"送信"が渡されます。
このボタンの動作で何かの処理を行う場合は、添え字の値に従って、処理を分けることでできると思います。

以下の様なソースで実現可能かと思います。