Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
PHPでのPOST送信には大まかに以下の様な4パターンほどの方法があります。 file_get_contents fopen fsockopen curl ただし、fopenに関してはfile_get_contentsとほぼ同じ様な処理なので、こういった方法もあるという参考程度にしてください。 簡単な送信であればfile_get_contentsを使う方法がベターです。 通信量が多い場合や、重い処理の場合はcURLを使うと良いです。 file_get_contentsを使った方法 $url = 'http://cppe.hol.es/post.php'; $data = array( 'msg' => 'メッセージ', ); $context = array( 'http' => array( 'method' => 'POST', 'header' => implode("\r\n",
はじめに こんにちは植木和樹です。今回はAWSで提供されているロードバランシングサービス ELBについて調べてみました。 ELBとは ELB(Elastic Load Balancing)サービスはその名の通りロードバランサを提供するサービスです。ロードバランサとは、Webサーバやアプリケーションサーバが複数あった場合に通信負荷が均一になるように分散してくれる装置です。商用製品としてはF5社のBIG-IPなどが有名です。 ELBについては弊社ブログ「Elastic Load Balancingで複数のゾーンにわたって振り分けるときに気をつけること」にまとまっていますので、ぜひそちらをご覧ください。 同一AZ内でどのように負荷は分散されるのか? さて今回は同一AZ(アベイラビリティ・ゾーン)内に2つのEC2インスタンスがあった場合、それらへの負荷がどのように分散されるか、について調べてみまし
http://www.wareko.net/ ワテ自作の革新的ウェブサイト このwareko.netのサイトでは、主に、 JavaScript jQuery TypeScript PHP ASP.NET などの学習を兼ねて自作のWEBサイトやWEBツールを公開している。 われこマップ 革新的地図情報サイト その中でも、ワテが最初に作成したのが、 われこマップ – 革新的地図情報サイト だ。 しかし、公開して約一年になるが利用者さんの数は今一つ伸び悩んでいる。 原因はいくつも考えられる。 起動が遅い(速くても5秒くらい、遅いと10秒以上掛かる場合もある) 各種機能を詰め込んだつもりだが、利用者さんの利便性があまり考慮されていない パソコンにしか対応していない(スマホ、携帯は表示が崩れる、タブレットは未確認) 地図とストリートビューを見るだけだと飽きてしまう(かも) 一番目の起動が遅い理由は、
$ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => 'http://hoge.com/fuga', CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(['hoge' => 'fuga']), ]); $response = curl_exec($ch); curl_close($ch); 正解は、http_build_query するだけ! なんで? 一番の問題は、どちらのコードも動いてしまうこと。ただ、 bad.php はすごく時間がかかるので、やっちゃだめ。 headerを見てみると、good.php は Content-Type: application/x-www-form-urle
http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html http://blog.ecworks.jp/archives/268 http://qiita.com/kazu56/items/eaaa0c2d7294a28ac21c http://qiita.com/moriyant/items/b57ee4fc45af2fc03194 hasとbelongが、すぐどっちがどっちかわからなくなる。 「持っている」とかアバウトな言葉じゃなくてテーブル定義で教えてくれ。 結論 hasMany 相手テーブルに、自分テーブル.idへの外部キーがある。 hasOne hasManyだけど外部キーがUNIQUE。 belongsTo 自分のテーブルに、相手テーブル.idの外部キーがある。 hasAndB
remi(Les RPM de Remi - Repository)のrpmパッケージを使います。 http://rpms.famillecollet.com/ epelとremiのリポジトリを追加します。CentOS 6.5 (6系)用です。 # For CentOS 6.5, 6.4, ... % sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm % sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # For CentOS 7.0 $ sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/7/
jonasjohn.de: htmlSQL - a PHP class to query the web by an SQL like language http://www.jonasjohn.de/lab/htmlsql.htm htmlをSQLっぽい記述でスクレイピングできるPHPのライブラリです。更新は2006年で止まっているみたいですが、最新バージョン(0.5)は問題なくダウンロードできました。BSDライセンスです。 利用手順 必要なファイルをインクルード <?php include_once("snoopy.class.php"); include_once("htmlsql.class.php"); インスタンス化 <?php $wsql = new htmlsql(); URLにアクセス <?php $wsql->connect('url', 'http://example
curl_multiはselectシステムコールを使って同時に複数のHTTPリクエストを行うことができます。マルチスレッドやらマルチプロセスを使っているわけではなく、原理はnode.jsなんかと近いI/O多重化で、一度に一つのことしかしていません。 PHPのcurlはlibcurlのAPIをほぼ踏襲しており、ちょっと取っつきにくいです。クラスでラッピングして、curl_close()などはデストラクタで呼ばれるように自動化すると、もう少しすっきりすると思います。 <?php /** * curl_multiでHTTP複数リクエストを並列実行するテンプレ * */ //タイムアウト時間を決めておく $TIMEOUT = 10; //10秒 /* * 1) 準備 * - curl_multiハンドラを用意 * - 各リクエストに対応するcurlハンドラを用意 * リクエスト分だけ必要 * *
このドキュメントの内容は、以下の通りです。 はじめに HTTPレスポンスの構造 HTTPレスポンスヘッダを取得する サンプルコード 実行例 はじめに インターネットでは、たくさんのウェブサービスが提供されています。一般の利用者は、パソコンやスマホで、ウェブサービスにアクセスしています。ブラウザで検索エンジンやソーシャルネットワーキングなどのサイトにアクセスするとき、ブラウザとウェブサービスの間では、HTTPプロトコルなどを利用して、通信が行われ、サービス・情報が提供されます。 そのウェブサービスは、いろいろなシステムと通信をして、サービスを提供していることもありますし、ウェブサービスにプログラムでアクセスして、データの取得・更新などを行うこともあるでしょう。 インターネットでは、いろいろなプロトコルが利用されていますが、よく使われているプロトコルの1つがHTTPでしょう。 スクリプト言語の
cURL ライブラリ php には cURL ライブラリ があって、このCライブラリのラッパーを使うことでほとんどのネットワークリクエストを扱うことが出来る。 cURLの本家は http://curl.haxx.se/ で、ここでlibcurl を一式準備してC言語からネットワークリクエストが扱えるんだけど、良くわからないし、C言語自体の使い方にトラブルことも考えられる。 php のcURLを使うメリット パッケージとして提供されていて、どこでも簡単にHTTPリクエストを扱うことが出来る。 php だけで書かれたHTTPリクエストライブラリは設計が古臭かったりしてちょっと・・・ file_get_contentsでも出来るんだけど、敢えてcURLで作るのもなれると便利だったりするよ。 curl の基本的な使い方 php の libcurl 関数はC言語のそれと同じような感じになっていて、初
logrotateでコマンドが中断されてしまうメカニズム そのサーバではcronの設定が下記のようになっており、 /etc/crontab 27 0 * * * root run-parts /etc/cron.daily 毎日0:27 に/etc/cron.daily/*が呼び出される設定になっていました。 そこには/etc/cron.daily/loglotateという実行コマンドがあります。 そしてlogrotateの設定はというと、 /etc/logrotate.d/httpd /var/log/httpd/*log { daily rotate 30 compress missingok notifempty sharedscripts postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true en
クロスサイトスクリプティングとは? クロスサイトスクリプティング(略してXSS)は、WEBサイト中で動的にHTMLやJavascriptを生成している部分に、悪意のあるコードを埋め込む攻撃です。 昨年、TwitterがXSS脆弱性によって、大騒ぎになった日がありました。 こんな風に、WEBサイトに怪しげなソースコードを埋め込み、それを見た別のユーザーに悪影響を与えます。 この対策は本質的な対策法は、 悪意あるコードを埋め込めないようにする これに尽きます。 1. <>“&は文字参照にする HTML中に悪意あるコードを埋め込めなくするためには、特殊な意味合いをもつ<>“&の文字をエスケープする必要があります。 $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); こうすると、<は<に、>は>に、&は&に、”は"e;
This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.
#引用/参考書籍 「よくわかるPHPの教科書」 「初めてのPHP5」 「パーフェクトPHP」 「体系的に学ぶ安全なWebアプリケーションの作り方」 「PHPスーパーサンプル」 「プロになるためのWeb技術入門」 インターネット上で情報をやりとりするということは、大事な内容をはがきに書いて相手に送るようなもの。その情報が相手に届くまでに誰に見られるかわからない。 #概要 HTTPはステートレスなプロトコル。「状態」を持てない。 例えば、「ログイン」ページの場合、「ログインしているかどうか」のチェックをする必要がある。 NG例) http://www.littleforest.jp/itemlist?login=ok loginパラメータを調べてokかどうかを調べる。 →→パラメータを容易に改変できてしまう。 解決策として、Cookieとセッションを使う。 Chromeで、Cookieを確認す
エラーハンドリングの基本 PHPのlibcurl拡張でHTTPリクエストをする際、色々なエラーが起きることが考えられる。 curl_errnoとcurl_errorで直近のexecで発生したエラーを調べることができる。 curl_exec()の戻り値がfalseだったらエラーだと判定できるのだけど、詳細なところがわからないので、明示的にエラーが起きたかを調べた方がよさそう。 例外を使いたいなら、ラッパークラス/関数でハンドリングして適当なException型を投げればよいだろう。 <?php // 単純なcurl関数のラッパー // 毎回コネクションを切断するので非効率かも function getHttpContent($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $body
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su
PHP の file_get_contents は外部リソースを手軽に扱えるので、Web サービスの API を使うときに便利です。 手軽に使える反面、例外処理をちゃんと考えておかないと 4xx や 5xx のステータスコードが返ってきたときに Warnning エラーが発生します。 file_get_contents でステータスコードを取得するにはひと手間かける必要があります。 $context = stream_context_create(array( 'http' => array('ignore_errors' => true) )); $response = file_get_contents('http://example.com/', false, $context); $pos = strpos($http_response_header[0], '200'); if
file_get_contentsにまつわるTIPS $res = file_get_contents('http://example.com'); file_get_contentsはローカルのファイルパスだけでなく、URLを入れることでHTTPリクエストを送信することもできます。しかし、その仕様は奥深く難解であり、TIPSが数多く存在する関数でもあります。今回はそんなfile_get_contentsにまつわるTIPSをまとめてみます。 PHP5.3.3で確認していますが、大まかな挙動は他の5.x系でもそんなに変わらないはず。 仕様的なこと 2xx, 3xx以外のレスポンスボディを取得しない HTTPステータスコードが204または304でなければレスポンスボディを含んでいる可能性があります。しかし、file_get_contentsは、2xx, 3xxのみ( それが204や304であっ
※ご注意 他社および他組織のWebサイトなどへのポートスキャンおよびデータの取得などの行為で得た情報を侵入などに悪用するか、または同じ目的を持つ第三者に提供した時点で違法となります。ご注意ください。 本稿の内容を検証する場合は、必ず影響を及ぼさない限られた環境下で行って下さい。 また、本稿を利用した行為による問題に関しましては、筆者および株式会社アットマーク・アイティは一切責任を負いかねます。ご了承ください。 「第2回 顧客データがすべて盗まれる」は、クロスサイトスクリプティング(XSS)と同様に実際のプログラミングを行うプログラマの責任であるという対策で、最も危険と思われるSQL InjectionとOS Command Injectionについて紹介した。今回は、プログラミング以前の設計段階で潜り込むセキュリティホール――見落としがちなセッション管理の脆弱性について説明していく。 We
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く