X



PHP上級者が集まるスレ

0001nobodyさん
垢版 |
2007/01/14(日) 16:53:46ID:???
ここでは他のPHPスレよりもより一層と高いレベルでの情報交換・体験談などを行うスレです。 
我こそはPHPプロフェッショナルだという方の書き込みをお待ちしております。 
0451nobodyさん
垢版 |
2012/04/15(日) 21:42:40.71ID:???
PHPerには理解できぬか。
0452nobodyさん
垢版 |
2012/04/15(日) 22:28:38.09ID:???
shellやperlはさわらんの。
0453nobodyさん
垢版 |
2012/04/17(火) 20:37:29.47ID:???
PHPやシェルスクリプトなど、シングルクォートとダブルクォートで違いがある以上、使い分けるのが当然。
ダブルクォートは、必要があるときだけ。
必要が無いのにダブルクォートを使っていたら、必要があるから使っているように見えて混乱する。
0454nobodyさん
垢版 |
2012/04/17(火) 22:51:35.16ID:???
>>453
どっちを基準にするかは自由だけどな

おれはダブルクォートをメインに使って、
必要があるときにのみシングルを使うわ
0456nobodyさん
垢版 |
2012/04/19(木) 01:18:44.75ID:???
妙にやる気がでなくてphpだけでだらだら作った測定ツールが思いのほか
大好評で、バグってハニーしても満面の笑みで「許す!」と言われた時に
「じゃあ直さなくてもいいですよね」と堂々とサボります宣言できるようになったら
上級者って思ってもいいですよね。
ちなみに今日それを言ったらもう30になるのに物凄い説教されました。
めんどくさいです。
0457nobodyさん
垢版 |
2012/04/19(木) 05:57:56.10ID:???
いい年してガキか
0458nobodyさん
垢版 |
2012/04/19(木) 22:38:34.62ID:ETb6Xu93
流れ読まずに質問するが、
0123456789abcdefABCDEF
しか含まれていないことをチェックする最速な方法って何だと思う?
その変数はマルチバイトが入る可能性があるんだ。

ちなみに PostgreSQL+phpで書くと
SELECT $str=replace('0123456789abcdefABCDEF',$str,'');
が多分一番早そうに思うんだ。phpのみでこんなことをする場合のゆとり用の関数あったかな?
0459nobodyさん
垢版 |
2012/04/19(木) 22:43:19.73ID:ETb6Xu93
>>458
あ、ごめん。
SELECT translate($str,'0123456789abcdefABCDEF','')='';
だった。
0460nobodyさん
垢版 |
2012/04/19(木) 23:06:05.25ID:???
お前ら初心者の癖してこのスレにいすわるな。
0461458
垢版 |
2012/04/19(木) 23:14:43.44ID:ETb6Xu93
最速、という答えを言えるには上級者じゃないと!
ちなみに当方、アクセラレータいれてるんでインタープリタのオーバーヘッドは無視してください。
0462nobodyさん
垢版 |
2012/04/19(木) 23:19:05.98ID:???
>>458
preg_match('^[0-9a-f]+$/i', $string);
しか考えられんが最速かどうかは知らん
0463458
垢版 |
2012/04/19(木) 23:24:13.65ID:ETb6Xu93
>>462
可読性からいうと一番「美しい」予感ではありますな。
0464nobodyさん
垢版 |
2012/04/19(木) 23:26:19.39ID:???
正規表現が可読性いい(笑)
0465nobodyさん
垢版 |
2012/04/19(木) 23:30:40.38ID:ETb6Xu93
>>464
エスケープ文字が2段階入った鬼のような正規表現に比べりゃ >>462 は余裕っしょ。
0466nobodyさん
垢版 |
2012/04/19(木) 23:49:48.56ID:???
そうか、君がいいならそれでいいよ
0467nobodyさん
垢版 |
2012/04/20(金) 17:08:54.51ID:???

$str = "aaaa @bbbb"; // ← @
$dummy = split("@",$str);


@において @の左側の一見すると半角スペースの部分に
バイナリエディタで確認すると 1A の文字が入っている場合に
splitでは意図した分割が出来ません。

そもそも、この 1A ってなんなんでしょうか?

0468467
垢版 |
2012/04/20(金) 17:17:03.30ID:???
いずれにしてもこのデータのパターンは例外の様なので
UTF-8で定義した変数内文字列に
1A の物があったら除外を行う方向で対応したいのですが
どうすれば、

特定の文字コード(文字列じゃない)の文字を削除する事が出来ますか?
0470nobodyさん
垢版 |
2012/04/21(土) 10:05:36.60ID:xu2If+se
>>447
文字と文字列の差を考えるとまぁ、そんな感じ。

>>458
最速かは分からんが、alpha numeric略してalnumというのを探してみると、なんやらにあったりする事がある。関数のオプションとか。
0471nobodyさん
垢版 |
2012/04/21(土) 11:40:29.46ID:???
ぜんぜん上級者集まってないスレだな
0473nobodyさん
垢版 |
2012/04/21(土) 17:13:26.37ID:IaLOn3+I
>>470
そこから調べてみたら ctype_xdigit
なんてのがあることが判った。サンクス。あとで比較してみるわ。
0474nobodyさん
垢版 |
2012/04/21(土) 17:21:59.60ID:???
PHPの上級者の皆さん(自称は勘弁)は
Eclipseで開発する場合に
ブレークポイントとかって使っていますか?
0475nobodyさん
垢版 |
2012/04/21(土) 18:09:15.50ID:???
PHP上級者がEclipseで開発するとは思えんw
0476nobodyさん
垢版 |
2012/04/21(土) 18:13:09.64ID:???
じゃー何で開発してるんだ?
0477nobodyさん
垢版 |
2012/04/21(土) 18:16:03.67ID:???
EclipseはPHP苦手な人用に関数名教えてくれたり引数指定を教えてくれたり
シンタックスエラーがあれば教えてくれたり・・ だからなぁ

PHP上級者だったら使い慣れたシンプルなエディタで十分やろな
0478nobodyさん
垢版 |
2012/04/21(土) 18:21:11.11ID:???
>>477
Eclipseの使い方を知らないだけじゃないの?
(実は、初心者の為)
0479458
垢版 |
2012/04/21(土) 19:00:51.73ID:IaLOn3+I
早速3種類の方法を比較してみましたよ?
検査データの質にもよるだろうけれど、とりあえず 1000個の32文字のデータを用意した。
それらは9割が 0123456789abcdefABCDEF のみからなり、残り1割が それ以外のマルチバイト文字を含む。

1.preg_match('/[^0-9a-f]/iu',$str)
2.ctype_xdigit($str)
3.for($j=0,$jmax=mb_strlen($str,'UTF-8'),$b=true;$j<$jmax;$j++) $b&=!(mb_strpos($safestr,mb_substr($str,$j,1,'UTF-8'),0,'UTF-8')===false);

それぞれについて1000個のデータを100回まわした結果。
1→245.14[msec]
2→41.80[msec]
3→7953.70[msec]

ちなみに環境は
Pentium(R) Dual-Core CPU E5400 @ 2.70GHz
cache size : 2048 KB
CentOS release 5.5 (Final)
PHP Version 5.2.17, Zend Engine v2.2.0

想像以上に正規表現はやいな。
>>462さん >>470さん ありがとう。
0480458
垢版 |
2012/04/21(土) 19:09:07.83ID:IaLOn3+I
>>477
要は使いどころなんじゃね?客先やちょっとしたものはviで書いちゃうとかあるし。
実をいうとうちも エディタで書いている。Java は Eclipse つかってんだけど、
エディタだけでも別に困らないし。本当は Eclipse 入れたほうがべんりなんだろうな。
0481nobodyさん
垢版 |
2012/04/22(日) 15:42:12.09ID:???
Eclipseは習得までに時間かかったけど、
今はPEARとかの糞長いクラス名を手打ちするとか考えられんわ・・・

メソッドチェーンもコード補完してくれるし重宝しているよ。
0482nobodyさん
垢版 |
2012/04/23(月) 21:14:44.80ID:???
ネットワークにつながって無い環境で
imagickのモジュールをインストールするには
どうしたらいいんですかね
0483nobodyさん
垢版 |
2012/04/25(水) 19:05:18.03ID:???
>>482
あっさりしすぎじゃない?
何のOSでとかせめて書かないと・・・
0484nobodyさん
垢版 |
2012/04/25(水) 19:19:55.43ID:???
なるほど
OSに依存する問題だったか
0485nobodyさん
垢版 |
2012/04/29(日) 08:26:19.74ID:???
質問の意図や前提をくみ取れない糞質問
が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。
0486nobodyさん
垢版 |
2012/04/29(日) 12:17:53.10ID:???
>>481
メソッドチェーンは猿のやる行動なので、自嘲した方がいい
0487nobodyさん
垢版 |
2012/05/01(火) 04:09:05.90ID:k6EF6rma
自重なのか自嘲なのか、まぁどちらにしたって同じようなもんだが
0488nobodyさん
垢版 |
2012/05/02(水) 06:56:20.99ID:???
メソッドチェーンくらい使えよw
0489nobodyさん
垢版 |
2012/05/02(水) 07:23:25.00ID:???
自分が使えないからって、
メソッチェを猿扱い
0490nobodyさん
垢版 |
2012/05/20(日) 10:47:45.35ID:???
メソッドチェーンは片っ端からぶった斬りますよ
0491nobodyさん
垢版 |
2012/05/20(日) 11:23:41.27ID:???
俺の自慢のチェーンソーで
0492nobodyさん
垢版 |
2012/05/21(月) 09:50:23.70ID:???
メソッドチェーンってどこでエラーになったかわからなくない?
0493nobodyさん
垢版 |
2012/05/21(月) 09:55:50.44ID:???
IDEを使えばメソッドチェーンのどこからNULLかわかる
0494nobodyさん
垢版 |
2012/05/21(月) 16:20:20.84ID:???
メソッドからの戻り値で成否を判別するような実装してるからだろうw

例外と try catch 使おうぜ。
0495nobodyさん
垢版 |
2012/05/24(木) 21:38:18.39ID:???
なんか得体の知れないエラーが出てしまいます。
何が原因なのでしょうか?

[test.php]
<?php phpinfo(); ?>

#php test.php
→正常にPHPが実行されます。

しかし、ブラウザより

http://hogehoge.com/test.php

とやると

Internal Server Error
UID of script "/home/first_hoge/public_html/second_hoge/test.php" is smaller than min_uid
suPHP 0.7.1
0496nobodyさん
垢版 |
2012/05/24(木) 22:55:51.53ID:???
PHPじゃなくて、suPHPやらサーバ側の問題だな。

test.phpの所有者やパーミッションを確認してみれ。
0497nobodyさん
垢版 |
2012/05/24(木) 23:05:26.87ID:???
>>496
ありがとうございます。所有者を変更したらブラウザからアクセスできる様になりました。


0498nobodyさん
垢版 |
2012/05/25(金) 04:44:48.29ID:???
エラーメッセージを読んで字の如くじゃん
0499nobodyさん
垢版 |
2012/06/01(金) 01:56:51.83ID:sOx9VKNN
情報セキュリティスペシャリスト試験に、PHPが含まれなくなったのは、PHP勉強していた受験者にとっては
反則以外の何者でもない。

結局、PerlとJavaとC++しか出なかったわけだ。 PHPは昨今難易度あがりすぎだからな。
0500nobodyさん
垢版 |
2012/06/01(金) 05:38:12.83ID:???
PHPは糞言語だからしょうがない
0501nobodyさん
垢版 |
2012/06/02(土) 12:53:19.24ID:???
>PHPに最悪のバグ発覚!CGIモードで動かしてる奴はソース丸みえ!!ソースにパス埋めてる奴は死ぬぞ!

個人で持ちやすい庶民系レンタルサーバーってほとんどcgiだと思うけど
http://rental.off-soft.net/4166.html
これで鯖屋がモジュールにシフトしてくれるとありがたい。
0503nobodyさん
垢版 |
2012/06/02(土) 18:44:06.44ID:???
脆弱性の発覚なんかどんなプログラムにもあるわい。
ちゃんとバージョン上げてるやつには関係ない話。
0504nobodyさん
垢版 |
2012/06/02(土) 20:48:36.23ID:???
影響を与える範囲が広範囲に渡るんだから堅牢な作りにするのが当然なのに、
相変わらずその場しのぎの突貫工事だからこんなことになるんだろ
0505nobodyさん
垢版 |
2012/06/03(日) 03:33:52.69ID:???
PHPがどうこうより、WEBの公開ディレクトリにフロントコントローラ以外もおいてる人って・・・
0506nobodyさん
垢版 |
2012/06/09(土) 11:16:18.37ID:???
www.php.net にアクセスできなくね?俺だけ?
0507nobodyさん
垢版 |
2012/06/09(土) 12:14:40.30ID:???
そのうち直るだろ。
「オレだけ?」って疑問が湧いたら、
まずケータイからでも同じか確認すればいい。
0508nobodyさん
垢版 |
2012/06/24(日) 03:01:37.60ID:???
>>507
おれは506じゃないけど、ひとこと言わせて
なんでそんな面倒なことを要求するの?
あなたも確認してみればわかることじゃないの?
どうして自分は確かめるのをいやがるの?
0509uy
垢版 |
2012/06/24(日) 12:21:59.58ID:???
だから自分で検証してから書けよゴミカス
0510nobodyさん
垢版 |
2012/06/25(月) 13:23:56.13ID:???
そんなにツンツンしないで馴れ合おうぜ〜(^ε^)チュ
0511uy
垢版 |
2012/06/25(月) 14:27:15.18ID:???
ゴミ
0512nobodyさん
垢版 |
2012/09/15(土) 00:14:19.21ID:???
外は冷たいのにどうして俺の部屋だけこんなに暑いのだ?
0513nobodyさん
垢版 |
2012/09/16(日) 12:17:16.28ID:GVld0b1V
>> 505
> PHPがどうこうより、WEBの公開ディレクトリにフロントコントローラ以外もおいてる人って・・・

うちの会社が開発してるシステムには公開ディレクトリに、phpファイル全部置いてありますw
社長兼CTOにそれを指摘したら、
「htaccessでアクセスさせなければいいじゃん」
で終わり・・・。

糞CTOを論破するための、シンプル且つ論理的なセリフないですかね?w
0514nobodyさん
垢版 |
2012/09/16(日) 12:36:41.35ID:???
CLIで、root権限で動いているプログラムを
プログラムの中から
一般ユーザーに降格させたいんですが
どうしたらよいでしょうか
0515nobodyさん
垢版 |
2012/09/16(日) 13:08:49.52ID:???
>>513
君が理由も分からないまま人に言われたことを鵜呑みにしちゃってるのが悪いんでない?
0516nobodyさん
垢版 |
2012/09/16(日) 13:22:15.75ID:???
> 「htaccessでアクセスさせなければいいじゃん」
おれもそう思うんだけど。
0517nobodyさん
垢版 |
2012/09/16(日) 13:59:18.89ID:???
.htaccessで塞ぐぐらいなら最初から、別のディレクトリに置けよ。

設定ミスで.htaccessが無効化されたり、
ずさんな運営でゴミファイル(xxxx.php.bk)が生成されたり、
色々と問題は起こる。

「公開ディレクトリに置く理由」が無い。
0518nobodyさん
垢版 |
2012/09/16(日) 16:56:42.21ID:???
理由はインストール型パッケージの配布のしやすさかな。
もちろんユーザーが望めば非公開のディレクトリに置くこともできるわけで、
ちょっと別の話だなこれは。
0519nobodyさん
垢版 |
2012/09/16(日) 19:59:06.29ID:???
配布するレベルのものなら尚更、
非公開にすべきファイル(ライブラリやコンフィグ)は好きなディレクトリに設置出来るようにしておくべき・・・
0520nobodyさん
垢版 |
2012/09/16(日) 20:04:20.73ID:???
PHP自体配布に向いてない
0521nobodyさん
垢版 |
2012/09/16(日) 23:15:38.26ID:???
それは極論。
導入をし易いって意味ではPHPはベター。
0522nobodyさん
垢版 |
2012/09/17(月) 11:09:37.56ID:eA+HXvhq
上級者に聞きたい。
例えばcount.phpというのがあって
これはリファラをチェックして
同じリファラをカウントするコードなんだけど(要はランキングみたいなもん)
iframeやimgタグで<img src="http://hoge-hoge-hoge.com/count.php">とかやられたら
不正されるよね?これを上手く回避する方法ないかな?
0524nobodyさん
垢版 |
2012/09/17(月) 13:20:32.07ID:???
>>522
最終アクセスのIPを記録しておいて、連続同一IPは無視する
0525nobodyさん
垢版 |
2012/09/17(月) 14:10:01.60ID:???
>>523-524
レスありがと
けどそれだと相手サイトにimgタグ設置しておいて
普通に他人がアクセスした奴が時刻バラバラIPバラバラなら
全部カウントされてしまわない?

要するにAというサイトがあって
それにBサイトのcount.phpをimgタグで仕込ませておけば
Aサイトに検索で飛んで来た時刻・IPバラバラの
アクセスは全部imgタグを介してBのcount.phpとしてカウントされてしまうと思う。
0526nobodyさん
垢版 |
2012/09/17(月) 16:07:04.03ID:???
>>525
あーなるほど
iframeだと実質的に違いはクライアントサイズしかないから、
JavaScriptを使ってブラウザ間の差異に気をつけつつ判断するしかないんじゃね。
0527nobodyさん
垢版 |
2012/09/17(月) 16:16:23.18ID:???
リンク流入数とか、広告流入数を取りたいのかな?
どちらにせよcount.php側の処理を2重3重にしないと不正対策は難しい。
0528525
垢版 |
2012/09/17(月) 17:01:10.15ID:???
みんなレスありがと。う〜ん何か簡潔な解決策はないもんかな…

簡潔な方法というとアクセスが送られてくるサイトを
定期的に調べるスクリプト動かすとかしか思い浮かばない…
不正やってるimgタグとかiframeとかがないかどうかチェックみたいな。
(こちらのカウント処理用PHP(count.php)が埋め込まれてないかどうかの)

ただ相手もそんな簡単にバレるようなことはしないから
こちらのリファラとかIPとか調べてサイト主がアクセスしてきた可能性が高い場合は
不正コードを生成しないとかされてたらこのチェックはかなり難しいなぁ。

なんか良い方法ないのかなぁ…
0529nobodyさん
垢版 |
2012/09/17(月) 17:39:57.95ID:???
>>528
そこまで恐ろしい相手と戦うのかwww
確かにリファラをたどって相手のHTMLを取得してa以外の要素があれば弾くのはいいかもね。
こちらのIPだけに特別なHTMLを生成する懸念に対しては、相手のGoogleキャッシュを確認するとかでどう?
んでさらに心配ならJavaScriptによる表示サイズでフィルタするしかないのでは。
0530525
垢版 |
2012/09/17(月) 22:21:06.08ID:???
>>529
なるほどなるほど。キャッシュを調べる手があるね。
とにかくこれは地道に色々やるしかなさそうだなぁ。
がんがってみますね。レスありがとうございました!
0531nobodyさん
垢版 |
2012/09/22(土) 17:29:52.90ID:TSKoYwz3
上級者の方、ご教示お願いします。

for($i = 0; $i < 100; ++$i){
print '<a href="' . $url[$i] . '" target="_blank"><img src="img.png" width="100" height="100"></a>';
}

こうやってimgタグをaタグでリンクすると処理コストがかなり掛かるんです。
a単体にするとかなり速いです。なんででしょう?
あとimgを付けていても、href="hoge.com" みたいに直接URL記述したら速いです。
わけが分かりません… だれか助けて〜
0532531
垢版 |
2012/09/22(土) 17:35:12.57ID:???
html = '';
for($i = 0; $i < 100; ++$i){
html .= '<a href="' . $url[$i] . '" target="_blank"><img src="img.png" width="100" height="100"></a>';
}
print html;

こうやったら解決しました!どうもお騒がせしました!
0533nobodyさん
垢版 |
2012/09/22(土) 17:35:19.05ID:???
俺らが答えるまでもない
初心者スレにでも行けクズ
0534531
垢版 |
2012/09/22(土) 17:47:37.86ID:???
と思ったら気のせいだった…初心者スレ行ってきます!
0535531
垢版 |
2012/09/23(日) 14:23:48.23ID:???
他のPHPスレ言って質問したんですが
「PHPは糞言語」「消えろ」「速度を気にするやつがPHPなか使うな」
とか言われてまともな回答が来ませんでした…

だれか教えて下さい〜
0536nobodyさん
垢版 |
2012/09/23(日) 15:00:58.19ID:???
またお前か
繰り返すが俺らが答えるまでもない
少しは学習しろ
0537nobodyさん
垢版 |
2012/09/23(日) 15:11:40.91ID:???
>>535
内容も悪いし態度も悪いから当たり前
0538531
垢版 |
2012/09/23(日) 15:19:01.88ID:???
>>536-537
そんなこと言わないでお願いしますよm(__)m
他のスレ言っても全然答えてくれないんです。
やっぱ何か改善可能な原因があるんですかね?
0539nobodyさん
垢版 |
2012/09/23(日) 15:34:23.36ID:???
だから内容と態度
0540nobodyさん
垢版 |
2012/09/23(日) 18:24:03.40ID:???
上級者に口をきくなど100年早い
0541nobodyさん
垢版 |
2012/09/23(日) 18:46:09.69ID:???
>>531
マジレスすると、質問者のレベルを考慮すると、回答がすごくめんどくさい。
ここは上級者同士が集まって高尚(笑)な話をしたいスレのはず。
0543nobodyさん
垢版 |
2012/09/24(月) 03:12:11.32ID:???
ここと向こう?の登場人物が同じ可能性だってあるのにバカなやつ
0544nobodyさん
垢版 |
2012/10/02(火) 10:23:58.62ID:8AFfhzar
phpでprivateなクラスをテストしたい時って、ReflectionMethodを使うのが一般的なのでしょうか??誰か教えてください ToT
0545nobodyさん
垢版 |
2012/10/02(火) 17:25:09.51ID:???
うるせーぞクズ
てめーにコード組んでもらわなくても誰も困らないからさっさと失せろ
0546nobodyさん
垢版 |
2012/10/02(火) 19:14:26.52ID:???
>>544
初心者未満のゴミが俺ら上級者の手を煩わせないでくれたまえ
0547nobodyさん
垢版 |
2012/10/03(水) 14:44:06.74ID:???
foreach ($arr as &$value) { /* hoge */ }
unset($value)

foreachでリファレンスを利用したあとにunset()するけど
unsetしないで$valueを有効活用したことあるやついる?
0549nobodyさん
垢版 |
2012/10/04(木) 06:41:04.53ID:???
>>547
初心者レベルのクズが俺たち上級者に気安く話しかけるな
0550nobodyさん
垢版 |
2012/10/04(木) 16:02:45.99ID:???
なるほど・・・
上級者としては、foreach後の参照はむしろ使うべきではないということか。
ありがとうございました。
0551nobodyさん
垢版 |
2012/10/04(木) 17:53:53.08ID:???
foreach後の参照がどうこうより、
どんなロジック組んだら有効活用出来るのか考えてみると、
そのロジック自体無いな・・・って答えになる気がする。
レスを投稿する