タグ

ブックマーク / qiita.com/mpyw (21)

  • PHPでデータベースに接続するときのまとめ - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース

    PHPでデータベースに接続するときのまとめ - Qiita
    kasumani
    kasumani 2016/04/22
    PHPでデータベースに接続するときのまとめ この章はデータベースをPHPから扱ったことのある経験者を対象とします。全く触ったことのない方からすれば何を言っているかサッパリ分からないことばかりであると思われます
  • SimpleXMLの名前空間・CDATAセクション・整形出力 - Qiita

    <?xml version="1.0"?> <root xmlns:qiita="http://www.w3.org/2001/XMLSchema-instance"> <qiita:a>foo</qiita:a> <b qiita:c="bar" /> </root>

    SimpleXMLの名前空間・CDATAセクション・整形出力 - Qiita
    kasumani
    kasumani 2014/11/17
    SimpleXMLの名前空間・CDATAセクション・整形出力 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket November 17, 2014 at 04:57PM via IFTTT
  • 標準入力から安全に文字列を受け取る方法いろいろ - Qiita

    scanfは"%s"のようにサイズ指定せずに使うこともできますが,バッファオーバーランの危険性があるので出来るだけちゃんと書きましょう。 scanfの利用 scanfは多機能なので動作のカスタマイズが可能です。そのままの状態ではfgetsの劣化版のように見えてしまいますが,フォーマットをちゃんと書くことで実用性が向上します。 %sはすべての空白文字を無視します。これには半角スペースも含まれています。そこで,%sの代わりに%[^\n]と書くことで,無視する対象を改行だけに限定することができます。%255[^\n]は,改行以外を1〜255文字読み込むことを意味します。 %の代わりに%*を使うと,その部分を読み飛ばすことができます。1行に256文字以上入力されたとき,最初の255文字までを受け取って残りを捨てたい場合は,%255[^\n]%*[^\n]と書きます。 さらに次にscanfを使う場合

    標準入力から安全に文字列を受け取る方法いろいろ - Qiita
    kasumani
    kasumani 2014/11/11
    安全な標準入力方法いろいろ Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket November 11, 2014 at 01:14AM via IFTTT
  • array_rand関数の結果を日付ごとに一意に固定する - Qiita

    毎日 00:00 のタイミングで更新する array_rand 関数は srand 関数で設定されるシードをそのまま利用しているので、ここに当該日の00:00ごとに更新される固有な値を与えれば、日付ごとに結果を固定して取得することが出来ます。また、それ以降の処理に影響を及ぼさないように、再度シードをランダムに初期化しています。 function daily_array_rand(array $array, $num = 1) { $datetime = new DateTime('now', new DateTimeZone('Asia/Tokyo')); srand($datetime->format('Ymd')); $retval = array_rand($array, $num); srand(); return $retval; } function daily_array_r

    array_rand関数の結果を日付ごとに一意に固定する - Qiita
    kasumani
    kasumani 2014/10/30
    array_rand関数の結果を日付ごとに一意に固定する array_rand 関数は srand 関数で設定されるシードをそのまま利用しているので、ここに当該日の00:00ごとに更新される固有な値を与えれば、日付ごとに結果を固定して取得するこ
  • issetとunsetのシンタックスハイライトがおかしい - Qiita

    class A {} function () {}; const A = $a; if ($a) { } foreach ($a as $b) {} require $a; print $a; echo $a; isset($a); unset($a); empty($a);

    issetとunsetのシンタックスハイライトがおかしい - Qiita
    kasumani
    kasumani 2014/10/23
    issetとunsetのシンタックスハイライトがおかしい Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket October 23, 2014 at 09:44AM via IFTTT
  • JavaScript(jQuery)からPHPのAPIを利用する - Qiita

    // DOMを全て読み込んだあとに実行される $(function () { // 「#execute」をクリックしたとき $('#execute').click(function () { // Ajax通信を開始する $.ajax({ url: 'api.php', type: 'post', // getかpostを指定(デフォルトは前者) dataType: 'json', // 「json」を指定するとresponseがJSONとしてパースされたオブジェクトになる data: { // 送信データを指定(getの場合は自動的にurlの後ろにクエリとして付加される) age: $('#age').val(), job: $('#job').val(), }, }) // ・ステータスコードは正常で、dataTypeで定義したようにパース出来たとき .done(function (r

    JavaScript(jQuery)からPHPのAPIを利用する - Qiita
    kasumani
    kasumani 2014/10/20
    JavaScript(jQuery)からPHPのAPIを利用する 類似の記事はありますが、個人的に納得のいくものが無かったので書いてみます。 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket October 20, 2014 at 12:29AM via IFTTT
  • PHPで最後に評価した値を返す論理関数を作ってみる - Qiita

    前書き @38kun さんの 「JavaScript の a || b || c と PHP の $a || $b || $c は動作が異なる」 より、これをもしPHPで実現するんだったらどう書くかなーと。ただ、可能であればこうするよりも 「PHPに演算子オーバーロードを実装する」 のようにC言語レベルで演算子自体を書き換えてしまったほうが便利かもしれません。これはあくまで簡単に実装したい人のための関数です。 実装例 命名はVisualBasicより。 function orelse() { foreach (func_get_args() as $value) { if ($value) { return $value; } } return null; } function andalso() { foreach (func_get_args() as $value) { if (!$

    PHPで最後に評価した値を返す論理関数を作ってみる - Qiita
    kasumani
    kasumani 2014/07/13
    PHPで最後に評価した値を返す論理関数を作ってみる 6 ストック 3 コメント この投稿をストックする 前書き @38kun さんの 「JavaScript の a || b || c と PHP の $a || $b || $c は動作が異なる」 より、これをもしPHPで実現するんだったら
  • 最もシンプルなカレンダー生成ロジック - Qiita

    HTMLのマークアップをロジックに組み込んでしまうと可読性が大きく下がるので、カレンダーを 2次元配列 として表現することにします。また、 2038年問題 に対応するために 日付・時刻関数 の代わりに DateTime クラスを用いることにします。 手続き型コーディング 誰もが理解できる最もオーソドックスな方法です。たぶん。 $date = new DateTimeImmutable('指定年-指定月-1 00:00:00'); $day = (int)$date->format('w'); // 曜日オフセット(※生成過程で書き換えられます) $week = 0; // 週オフセット(※生成過程で書き換えられます) $max = (int)$date->format('t'); // 合計日数 for ($i = $day; $i > 0; --$i) { // 1日のオフセット分空白セ

    最もシンプルなカレンダー生成ロジック - Qiita
    kasumani
    kasumani 2014/06/14
    最もシンプルなカレンダー生成ロジック 7 ストック 0 コメント この投稿をストックする カレンダー生成ロジック HTMLのマークアップをロジックに組み込んでしまうと可読性が大きく下がるので、カレンダーを 2次元配列 と
  • PHPでcURLのクソ仕様 "@" を回避する - Qiita

    導入 PHPcURL関数群 はC言語で書かれた libcurl の極薄ラッパーとして実装されていますが、ポストフィールドのファイル取り扱いに関する実装が クソ仕様 としか思えないようになっています。 以下の2つのファイルを用意します。 <?php $params = /* something */ ; $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => 'http://localhost/respond.php', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, )); curl_exec($ch);

    PHPでcURLのクソ仕様 "@" を回避する - Qiita
    kasumani
    kasumani 2014/06/05
    PHPでcURLのクソ仕様 &quot;@&quot; を回避する PHPの cURL関数群 はC言語で書かれた libcurl の極薄ラッパーとして実装されていますが、ポストフィールドのファイル取り扱いに関する実装が クソ仕様 としか思えないようになってい
  • PHPオブジェクト指向入門(後半) - Qiita

    コンセプト オブジェクト指向プログラミング未経験者~理解を深めたい人、ノンケ~ホモまで幅広くカバーするつもり。多分。 クラスとオブジェクト(初級) クラスとオブジェクト(中級) クラスとオブジェクト(上級) 非常に長くなりそうだったので分けました。こっちは書くペース遅いと思います、あともう前半で出し尽くした感あるのでそんなに期待しないで( 遅延静的束縛 抽象クラス インターフェース オーバーロード トレイト 名前空間 オートロード use self static parent final キーワードに関するまとめ オーバーライド オーバーロード オートロード に関するまとめ ジェネレータ エラーハンドラ 例外スタック バージョン毎の差異の概要 暇人向けの考察 「配列」「オブジェクト」における「キー」「プロパティ」の扱い方の差異 どこまでアクセス権に配慮すべきか PHPのマジックメソッドは安

    PHPオブジェクト指向入門(後半) - Qiita
    kasumani
    kasumani 2014/05/28
    PHPオブジェクト指向入門(後半) オブジェクト指向プログラミング未経験者~理解を深めたい人、ノンケ~ホモまで幅広くカバーするつもり。多分。 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket May 28, 2014 at 11:18PM via
  • PHPにルートクラスなんて無かった - Qiita

    public class Main { public static void main(String[] args) { new A(); new B(); } } class A { public A() { System.out.println(getClass().getSuperclass().getSimpleName()); } } class B extends Object { public B() { System.out.println(getClass().getSuperclass().getSimpleName()); } }

    PHPにルートクラスなんて無かった - Qiita
    kasumani
    kasumani 2014/05/27
    PHPに基底クラスなんて無かった 0 ストック 1 コメント この投稿をストックする Java ソースコード public class Main { public static void main(String[] args) { new A(); new B(); } } class A { public A() { System.out.println(getClass().getSuperclass(). Tags: ifttt, kas
  • PHPで壊れたHTMLを整形する - Qiita

    <html> <p> <a href="http://google.com/?q=あいうえお">あいうえおで検索</a> <br> <img src="hoge.jpg" alt="<'あいうえお'>"> A & B >< <p></p> 整形する方法 Tidy を使う 最も「イイカンジ」に整形してくれて尚且つ実行速度も速いものはこれだと思います。但し、環境によっては拡張インストールが必要です。

    PHPで壊れたHTMLを整形する - Qiita
    kasumani
    kasumani 2014/05/24
    PHPで壊れたHTMLを整形する 最も「イイカンジ」に整形してくれて尚且つ実行速度も速いものはこれだと思います。但し、環境によっては拡張インストールが必要です。 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket May 24
  • PHPで各種バリデーション - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    PHPで各種バリデーション - Qiita
    kasumani
    kasumani 2014/05/23
    PHPで各種バリデーション 「$_GET, $_POSTなどを受け取る際の処理」 でも紹介しています。 「$_GET, $_POSTなどを受け取る際の処理」 でも紹介しています。 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket May 23, 2014 at 11:32AM via I
  • 複数のRSSに並列リクエスト後マージして返す関数 - Qiita

    わりと需要のある機能なのでコピペして使えるように関数化しました。 ほとんど @Hiraku さんの記事のパクリです。 RSS2.0に準拠していないXMLが返されてきたときの挙動は未定義です。ちゃんと対応したい場合は全ての必要項目に関して isset 構文などを用いたチェックが必要です。 /** * fetch_rss_items * * @param $urls RSSのURLが記述された1次元配列 * @return マージして新しい順にソートされたitemの2次元配列(pubDateはtimestampに変換済み) * @link http://qiita.com/Hiraku/items/1c67b51040246efb4254 * @link http://qiita.com/mpyw/items/77288c948b64eab1a3b3 */ function fetch_rss

    複数のRSSに並列リクエスト後マージして返す関数 - Qiita
    kasumani
    kasumani 2014/05/23
    複数のRSSに並列リクエスト後マージして返す関数 2 ストック 0 コメント この投稿をストックする わりと需要のある機能なのでコピペして使えるように関数化しました。 ほとんど @Hiraku さんの記事のパクリです。 RSS2. Tags: if
  • [PHP] 自分の主要な記事のまとめ - Qiita

    告知 2016/06/18 更新 最近この記事もかなりストックされるようになってきたので選定し直そうかと思います. 特に重要度の高いものは太字にします その中でも特にイチオシのものは更に下線を引きます 現状に合わない内容を含むと予想されるものには を記載します 派生記事は子要素として表現します PHPに関係ないものも少し混じってます 外部入力の利用 $_GET, $_POSTなどを受け取る際の処理 「何故htmlspecialcharsを通すのか?」を一言でどうぞ PHPで各種バリデーション PHP7で流行って欲しいリクエストパラメータの受け取り方 ユーザ認証およびプロトコル リクエストパラメータ・セッションに関するまとめ ぼくのかんがえたさいきょうのsession_start PHPを利用したBasic認証の仕組み PHPによる簡単なログイン認証いろいろ PHP+JavaScriptでク

    [PHP] 自分の主要な記事のまとめ - Qiita
    kasumani
    kasumani 2014/05/14
    自分の主要な記事のまとめ 友人にPHP布教するときに最低限読んでいただきたい、自分が過去に書いた主要な記事のまとめ的な何か。自己満足でごめんなさい。 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket May 14, 2014 at
  • リモートファイルのサイズを取得する - Qiita

    function remote_filesize($url) { if (false === $response = @file_get_contents($url)) { return false; } return strlen($response); } しかしこのままだと巨大ファイルを相手にしたとき、サイズのみを知りたいのに延々とダウンロードで待たされるのは無駄な感じがしますよね。そこでヘッダーを取得したらレスポンスを待たずにブッチしちゃう get_headers 関数を利用します。処理は一瞬で終わるようになりますが、 Content-Length ヘッダーが返されていない場合には取得に失敗するという欠点はあります。 function remote_filesize($url) { static $regex = '/^Content-Length: *+\K\d++$/im';

    リモートファイルのサイズを取得する - Qiita
    kasumani
    kasumani 2014/05/06
    リモートファイルのサイズを取得する 1 ストック 0 コメント この投稿をストックする 真っ先に思いつくのはこういう実装でしょう。 function remote_filesize($url) { if (false === $response = @file_get_contents($url)) { return false; } return strlen($re
  • トレイトによるアクセサの自動実装 - Qiita

    2016年6月30日 更新 リフレクションを使わない方法を思いついたので,オーバーヘッドの少ない方法に変更しました. 型チェックはPHP7.0+のスカラータイプヒントにしました. マジックメソッド__call()を利用してGetterメソッドとして実装するのは大文字小文字の区別などの面で厄介事が多いので,素直にマジックメソッド__get()を利用して外部から読み取り可能なプロパティとして実装することにしました. 全プロパティを対象にする <?php trait AllReadable { public function __get(string $name) { if (array_key_exists($name, get_object_vars($this))) { return $this->$name; } if (property_exists($this, $name)) {

    トレイトによるアクセサの自動実装 - Qiita
    kasumani
    kasumani 2014/04/30
    トレイトによるアクセサの自動実装 10 ストック 0 コメント この投稿をストックする 実装 マジックメソッド __call() を利用して Getterメソッド として実装するのは大文字小文字の区別などの面で厄介事が多いので、素直にマ
  • realpath関数の相対パス取得版 - Qiita

    function relativepath($dst) { switch (false) { case $src = getcwd(): case $dst = realpath($dst): case $src = explode(DIRECTORY_SEPARATOR, $src): case $dst = explode(DIRECTORY_SEPARATOR, $dst): case $src[0] === $dst[0]: return false; } $cmp = DIRECTORY_SEPARATOR === '\\' ? 'strcasecmp' : 'strcmp' ; for ( $i = 0; isset($src[$i], $dst[$i]) && !$cmp($src[$i], $dst[$i]); ++$i ); return implode( DIRECTO

    realpath関数の相対パス取得版 - Qiita
    kasumani
    kasumani 2014/03/31
    realpath関数の相対パス取得版 0 ストック 0 コメント この投稿をストックする function relativepath($dst) { switch (false) { case $src = getcwd(): case $dst = realpath($dst): case $src = explode(DIRECTORY_SEPARATOR, $src): case $dst = explode(DIRECTORY Tags: ifttt, kasumani
  • CSVアップロードからのMySQLへのデータ挿入 - Qiita

    前書き まだ 「ファイルアップロードの例外処理はこれぐらいしないと気が済まない」 や 「PHPでデータベースに接続するときのまとめ」 をご覧になっていない方は先にそちらからどうぞ。 …もうこのシリーズ何番煎じだよって感じになってきましたが、気にせず書きますwww 実装のポイント ファイルアップロード段階でエラーが発生した場合にも適切に対応する このシリーズ共通の目標です。 CSVファイルのMIMEタイプは判定できない 実は finfo::file メソッドを使って判定しようとすると text/csv とはならず、どう頑張っても text/plain にしかなりません。というわけでこの方法は断念せざるを得ません。これ以降、 文字コードの厳密な判定 や CSVとして正しく読み取れたかどうか などのチェックを交えることによって、ここで実現出来なかった判定に代えようと試みることにします。 アップロ

    CSVアップロードからのMySQLへのデータ挿入 - Qiita
    kasumani
    kasumani 2014/03/20
    CSVアップロードからのMySQLへのデータ挿入 まだ 「ファイルアップロードの例外処理はこれぐらいしないと気が済まない」 や 「PHPでデータベースに接続するときのまとめ」 をご覧になっていない方は先にそちらからどうぞ
  • PHPで作るメールフォーム - Qiita

    メールフォーム作成 以下のサイト様からソースコードを一部拝借しています。 webに生きる人+α - PHPのmb_send_mail()を使った時にgmailだけメールが届かない Allied ArchitectsEngineer BlogRSS - PHPでJIS以外の文字を文字化けせずに日語メールを送る方法 VeryPosi - PHP応用 コンタクトフォームの作成 入力チェックの追加 3番目のエントリのPHPロジック部分は全然ダメなのですが、サッと作れるデザインとしてはなかなか気に入ったので…w ソースコード sendmailに渡す -f (Return-Path) は適切に指定してください。 <?php /** * HTML特殊文字をエスケープする関数 */ function h($str) { return htmlspecialchars($str, ENT_QUOTES,

    PHPで作るメールフォーム - Qiita
    kasumani
    kasumani 2014/03/17
    PHPで作るメールフォーム 3番目のエントリのPHPロジック部分は全然ダメなのですが、サッと作れるデザインとしてはなかなか気に入ったので…w Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket March 17, 2014 at 07:21PM via IFTTT