タグ

PHPに関するunijamのブックマーク (21)

  • 個人的にPHPで開発する上で頭に入れておきたいと思っている事 - Qiita

    はじめに 私は、これまでいくつかのPJでPHPの開発をしたり、自分でも勉強がてらアプリを作ったりしてきました。 その中で、同じPJに参画していた方から教えていただいた技術や自分でこれは心得ておきたいと思った事をまとめてみました。 また、最初にこの記事を書いたのは2018年3月ですが、半年後、1年後、さらにその先はガラリと状況が変わっている可能性もあります。 その場合、できるだけ最新の情報に更新し続けたいです。 1. バージョン もし、これから新規でPHPで何かを作り始めるなら間違いなく7系を使った方がいいです。 5系に比べて言語としての処理速度も上がっていますし、新機能も増えています。 昔からある古いプロダクトの保守などで、どうしても5系を使い続けなければいけないPJもあると思いますが、 5系で一番新しい5.6ですら2018年内にセキュリティサポートが切れてしまうので、多少大変でも7系への

    個人的にPHPで開発する上で頭に入れておきたいと思っている事 - Qiita
  • 2018年のパスワードハッシュ - Qiita

    数年前であれば仕方なかったところですが、2018年の今となっては、パスワードハッシュの手動計算はもはや"悪"です。 まずログイン認証と称してmd5とかsha1とか書いてあるソースはゴミなので投げ捨てましょう。 hashやcryptは上記に比べればずっとマシですが、使い方によっては簡単に脆弱になりえます。 あと『パスワードを暗号化する』って表現してるところも見なくていいです。 PHPには、ハッシュに関わる諸々の落とし穴を一発で解消してくれるpassword_hashという超絶便利関数があるので、これを使います。 というか、これ以外を使ってはいけません。 以下はフレームワークを使わずに実装する際の例示です。 フレームワークを使っている場合は当然その流儀に従っておきましょう。 ハッシュの実装 データベース ユーザ情報を保存するテーブルを作成します。 パスワードカラムの文字数は、システム上のパスワ

    2018年のパスワードハッシュ - Qiita
  • 『Ratchet』を使ってPHPのwebsocketを試してみた

    初めまして、テクノロジー&デザインセンターのゆっちーと申します。 今回より不定期で技術系のお話を書いていければと思いますので宜しくお願いします。 第一回目はPHPのライブラリ「Ratchet」を使って、websocketを試してみたいと思います。 【Websocketとは?】 WebSocket(ウェブソケット)は、コンピュータ・ネットワーク用の通信規格の1つである。インターネットの標準化団体であるW3CとIETFがウェブサーバーとウェブブラウザとの間の通信のために規定を予定している双方向通信用の技術規格であり、APIはW3Cが、WebSocket プロトコルはIETFが策定に関与している。プロトコルの仕様は RFC 6455。TCP上で動く。 ※wikipediaより引用 ■今回使用するライブラリ「Ratchet」 http://socketo.me/ Websocketを使えば、ユーザ

    unijam
    unijam 2018/02/08
  • 新人プログラマがPHPを学ぶべき理由 - Qiita

    PHPは優れた言語だ! それも、他の言語の追従を許さない程に優れている言語なのである!! 私がそう考えている理由についてお伝え出来ればと思って、この記事を書く事にした。 無限に雇用を生み続ける魔法 かつて、C++が複雑怪奇な言語仕様を内在させる事によって開発期間を長期化させ、労働者たちの安定雇用を創出した。 PHPは雇用創出に対してのもう一つの答えを提示してくれたのである。 定期的なアップデート、それも後方互換が無いアップデートによって仕事を創出し続けているのである!! もちろん、アップデート以外にも雇用創出する為の工夫が随所に施されているので、その紹介もしていきたいと思う。 素晴らしき雇用創出の方法 貧弱な構文 バージョンアップによって構文は少しずつ改善されている。 言語が出来てから20年経過し、ついに定数に配列が使えるようになったのだ!! そう、2015年以前のPHPでは定数に配列を使

    新人プログラマがPHPを学ぶべき理由 - Qiita
    unijam
    unijam 2017/11/18
  • PHPの連想配列は常にin_arrayより速いのか - hnwの日記

    プログラムを書いていると、入力値が辞書に含まれているかを調べたいようなことがあります。たとえば、ユーザーに都道府県名を入力させて、それが正しい都道府県名であるかどうかを調べたい、というようなことがあるかもしれません。 このような内容をPHPで書く際、キーに都道府県名を持つような連想配列を作る習慣がある人は多いはずです。これは典型的な連想配列の使い方といえるでしょう。 <?php $prefs = array( "北海道" => true, "青森" => true, // ... "沖縄" => true, ); if (isset($prefs[$input])) { // 都道府県名が正しい時の処理 } 一方で、in_array関数を使うやり方も考えられます。 <?php $prefs = array( "北海道", "青森", // ... "沖縄", ); if (in_array

    PHPの連想配列は常にin_arrayより速いのか - hnwの日記
  • teratailに投稿されたメールフォームにCSRF脆弱性が残存した理由 | 徳丸浩の日記

    teratailに以下のような投稿がありました。 PHPでメールフォームを作成したので、脆弱性がないかアドバイスいただけないでしょうか。 エンジニアでもなければ、PHPもろくに書けない雑魚ですが、「php メールフォーム 作り方」でググって表示されるサイトを見ると、「んんんんん???」と思うところがあります。 これらを参考にしたり、コピペする方は、記述されているコードの良し悪しは判断できないかと思います。 そのような方々が参考にできるメールフォームを作りたいという思いで、調べて作りました。 周りに書いたコードを確認してもらえる人もいないので、皆様からのアドバイスがほしいです((_ _ (´ω` )ペコ 【PHP】作成したメールフォームに脆弱性がないか、アドバイスもらえないでしょうかより引用 どれどれ…と確認すると、トークンのチェックが入っているにも関わらずクロスサイト・リクエストフォージ

  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

  • Fatal error: Call to undefined function imagecreatefromjpeg() の対処法 - [PHP + PHP] ぺんたん info

    Fatal error: Call to undefined function imagecreatefromjpeg() の対処法 PHPでGD関数のうちJPEG関連の関数が使えない場合の対処法です。 [参考記事] PHPをyumでインストールする [参考記事] PHPをソースコードからインストールする 具体的にはimagecreatefromjpeg()などを使用すると次のようなエラーが出たときです。 Fatal error: Call to undefined function imagecreatefromjpeg() このとき、まずはGD自体が使用できるか確認します。 phpinfoなどでgdの項目があるかどうかを確認します。 コマンドラインからは次のコマンドを実行します。 php -i webサーバからは次のコードを書いたPHPファイルを公開層においてブラウザからアクセスします

    Fatal error: Call to undefined function imagecreatefromjpeg() の対処法 - [PHP + PHP] ぺんたん info
  • Fatal error: Class ‘DOMDocument’ not foundと出たら | プログラムの種 ブログ

    最近のCentOSやFedoraでPHPを走らせていると、時々 Fatal error: Class ‘DOMDocument’ not found なんてエラーに出くわしますが、これはいわゆるDOMがPHPに組み込まれていない>CentOSなどでは–with-domなconfigureでコンパイルされていない、ということですね。モジュールとして組み込めばOKです。 # yum install php-xml php-xmlにphp-domも組み込まれています。

  • [PHP]フォームの制限を回避してPOSTできるようにする方法 - スーパーソフトウエア 世界最強のホットテクノロジー - アプリ開発

    POSTされない、POSTデータが抜け落ちている今日この頃。 皆様いかがお過ごしでしょうか。私は元気です。 さて、さっきまで正常にPOSTできていたフォームが改修した途端に原因不明に POSTできなくなったり、POSTデータが抜け落ちたりするようになりました。 もしかして:フォームの<input type="file" >が多すぎる アップロードフォームが多いと php.ini に設定されている制限に引っかかるようです。 max_file_uploads | PHP: コア php.ini ディレクティブに関する説明 - Manual max_file_uploads(同時にアップロードできるファイルの最大数)が php.ini では 20がデフォルトらしいのでコレをini_setで増やせば直ると思います。 それでも直らない もしかして:フォームのinputタグが多すぎる これも

  • AWSにApache+PHP+MySQLとphpMyAdmin,vsftpdを導入する手順 |https://wp.yat-net.com/name

    インスタンスが立ち上がったらSSHでサーバーにログインし、パッケージをインストールしていきます。SSHでログインするにはMacなら標準で搭載のターミナル、WindowsならTeraTermのようなフリーソフトを利用します。 まずはサーバーへ接続しましょう ssh -i (鍵のパス) ec2-user@(Public DNS) 鍵のパスは、KeyPairsを作成した際に保存した***.pemというファイルです。それが保存されている場所を指定します。 ec2-userはユーザーIDで、AWSにてSSH接続する際は大体このIDで接続します。 Public DNSはインスタンスを立ち上げた際に割り当てられる言わばURLに当たります。 もし接続した際に下記のようなエラーが出た場合は鍵のパーミッションを変更しないと行けません。 chmod 600 (鍵のパス) 接続できたらsuを利用してroot権限に

    AWSにApache+PHP+MySQLとphpMyAdmin,vsftpdを導入する手順 |https://wp.yat-net.com/name
  • PEAR::DBより高速なADOdb(PHP版とExtension版)を試す

    ADOdb Database Abstraction Library for PHP (and Python) for MySQL, PostgreSQL and many other databases PHPでデータベースへの接続は、今までPEAR::DBに頼っていましたが高速だと言うADOdbを試してみました。マニュアルは日語訳もあり。 PHPで書かれた方は上記マニュアルの最小インストールに従い、ダウンロードした中からファイルを選んでパスの通るディレクトリに設置。DBはPostgreSQL7.3にしたのでdriversにはadodb-postgres7.inc.phpとadodb-postgres64.inc.phpが必要。PEAR::DBではTCP/IPではなくUNIXソケットでアクセスできましたが、$serverを”unix(/tmp)”だと動かなかったのでpostgresql

  • ADOdb

    ADOdb is a PHP database class library to provide more powerful abstractions for performing queries and managing databases. ADOdb also hides the differences between the different databases so you can easily switch dbs without changing code. There is also an outdated and unmaintained Python library

  • apacheのMaxClientsの適正値調べた - うまいぼうぶろぐ

    参考. http://www.typemiss.net/blog/kounoike/20060202-61 http://d.hatena.ne.jp/babie/20060201/p3 http://yutuki.blogspot.com/2007/08/apache-maxclients.html http://d.hatena.ne.jp/hideden/20080409/1207740439 わけあってMaxClientsの設定を色々調べました。初っ端から言い訳ですが勉強中なので、あまり鵜呑みにしないでください。 追記 topのSHRの項目が共有メモリサイズだと思ってたけど、naoyaさんのblogによると違うらしい。 http://d.hatena.ne.jp/naoya/20080212/1202830671 なので↓に出てくるtopのSHMを使っている計算は間違ってる模様。同

    apacheのMaxClientsの適正値調べた - うまいぼうぶろぐ
  • 拡張子「.html」にてPHPを実行するための.htaccess

    PHPの勉強を始めました PHPHTMLソースの中に組み込むことも出来る。これがPerlとの大きな違いかな。 例)index.html <html> <?php print "hello world"; ?> </html> このように「*.html」ファイルのなかでPHPを呼び出すことが出来ます。可能にするには、 「.htmlでもphpとして実行してね」という記述が必要です。 以下の記述を.htaccessにします。 AddType application/x-httpd-php .html .htm 上記の記述で動かない場合、以下の記述をお試しください。 PHPCGIとして実行されている場合には、この記述が必要となります。 AddHandler application/x-httpd-php .html .htm 両者とも「.html」または「.htm」で終わるファイルはPHPとし

    拡張子「.html」にてPHPを実行するための.htaccess
  • 有限会社アストロワークス | Astroworks Co.,ltd.

    トレンドポータル、Eコマース、SNSインフルエンサーなど、多くの業界を広範囲にプロモーションする専門知識があります。 包括的なWEBコンテンツサービスの連携により、あらゆる面でお客様をサポートさせていただきます。 icon7 Intellectual Property (知的財産) ビジネスをするからには、社名やロゴや商材のデザインは会社にとっても顧客にとっても大切な財産です。特許庁へ商標または意匠登録し、知的財産権を取得しましょう。 icon21 Unify (一元化) 営業ツールとしてのオフィシャルサイトや、情報発信を目的とするソーシャルメディア、商品知識を共有するための商品紹介サイトなど、散在しているWEB構造を可視化し、統一します。

    有限会社アストロワークス | Astroworks Co.,ltd.
  • PHP5.2と5.3を共存させるまでの道のり - てきとう

    前提 ・CentOS5.3でApache2.3.3(たしか) ・元々PHP 5.2.13が入っている ・そこにPHP5.3.3もご一緒したい ・5.2はApache Handlerで、5.3はfastCGIで ・バーチャルホストで動かしているmoge.com内は5.2で、hoge.comは5.3で動かしていこうと思う やっていこう なんかすごくエラーがたくさん出て困ったけど、なんとかインストールできた。やっぱり困ったらgoogle先生と相談して頑張るのが一番。 時にはしくじる事もある、ちょっぴり悲しい事もある、だけど、なんとかなる。 今回当に好き…と思ったサイトは Multiple PHP versions on one webserver (http://blog.dynom.nl/archives/Multiple-PHP-versions-on-one-webserver_2009

    PHP5.2と5.3を共存させるまでの道のり - てきとう
  • PHPでjQueryチックにWebサイトをクローリングする方法 | 株式会社LIG(リグ)|DX支援・システム開発・Web制作

    あ、どうも僕です。 今日はPHPでWebサイトをクローリングしてjQueryチックにDOMを操作して、データを取得したり、画像などをダウンロードする方法について書こうと思うよ! これができると何がうれしいかって、いつも手動で巡回しているサイトなんかにアップされてる画像データを自動でダウンロードできるようになるんだよね。 人がやっていた作業をコマンド一発で自動化できるから、捗ること間違いなしだよ! あれ、この人、この前node.js使って同じことやってなかったっけか? node.jsを使ってjQueryチックにWebサイトをクローリングする方法 なんで同じことをPHPでやってんだ?とか思っていやしないだろうか。ああそうさ!ついこの前、node.jsで全く同じことをやって記事を書いたさ!なぜかって!?それは、node.jsの非同期地獄にやられたからさ! やつめ、データのダウンロードからデータベ

    PHPでjQueryチックにWebサイトをクローリングする方法 | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
  • EC-CUBE‐日本発の「ECオープンソース」

    ※1 独立行政法人情報処理推進機構「第3回オープンソースソフトウェア活用ビジネス実態調査」による。 ※2 ECマーケティング株式会社が行ったネットショップ動向調査において「月商1000万円以上で利用されているカートシステム」利用数にてNo.1を獲得。 ※1 独立行政法人情報処理推進機構「第3回オープンソースソフトウェア活用ビジネス実態調査」による。※2 ECマーケティング株式会社が行ったネットショップ動向調査において「月商1000万円以上で利用されているカートシステム」利用数にてNo.1を獲得。

    EC-CUBE‐日本発の「ECオープンソース」
  • Google Analytics APIを使って、プラグインに頼らずに記事のアクセスランキングを表示しよう[ wordpress]

    こんにちは、霙(@xxmiz0rexx)です。 サイトにGoogle Analyticsを導入していることが条件ですが、APIを利用すればプラグインに頼らなくても記事のアクセスランキングが表示できることを最近知りました!色々カスタマイズもしてみましたので、以下に手順とサンプルコードをメモしていきます。 1:GAPI(GAPIGoogle Analytics API PHP Interface)をダウンロード まずは下記のサイトからライブラリが入っているzipファイルをダウンロードします。 gapi-google-analytics-php-interface 2:example.report.phpの中身を編集 次に、ダウンロードしたzipファイルを解凍し、中に入っているexample.report.phpを編集していきます。 下記のサンプルは結構盛りだくさんなので要らない部分は外し

    Google Analytics APIを使って、プラグインに頼らずに記事のアクセスランキングを表示しよう[ wordpress]