トップページphp
1001コメント265KB

【PHP】下らねぇ質問はID出して書き込みやがれ 123

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/09/25(火) 23:39:55.21ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
PHP】下らねぇ質問はID出して書き込みやがれ 122
http://kohada.2ch.net/test/read.cgi/php/1344963135/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
0452nobodyさん2012/10/18(木) 02:15:35.05ID:???
>>451
レスありがとうございます。
ReflectionParameterクラスがかなり近い感じですが、
型を取得するメソッドが見当たらないみたいです。。。
04534502012/10/18(木) 02:18:39.47ID:???
いや、
ReflectionParameter::getClass()
↑こいつで行けるみたいですね。
ありがとうございました。
0454nobodyさん2012/10/18(木) 05:04:51.03ID:Vg/ocySG
教えてください。
下記のような文字列を持った変数があり、

$a = '<h1><?php echo "Hello"; ?></h1>';

こいつのphp部分を展開して「<h1>hello</h1>」という文字列にしたいです。
一旦外部ファイルに変数を書き出してincludeするとphp部分が展開されるのですが、
いちいち外部ファイルに書き出さないで展開できる方法ありますか?

file_put_contents( 'test.txt', $a);
ob_start();
include 'test.txt';
$a = ob_get_clean(); //展開されてる
0455nobodyさん2012/10/18(木) 06:00:37.70ID:???
方法はあるがやり方忘れた
確かメモリで展開するような方法
0456nobodyさん2012/10/18(木) 06:31:59.37ID:Vg/ocySG
>>455
早朝からありがとうございます。
ヒントもらって調べて、こんなやり方がありました。がincludeできません。

$fp = fopen('php://memory', 'r+');
fwrite($fp, $a);
fclose($fp);
include('php://memory'); // ダメ
include $fp; //ダメ

このストリームっていうものを初めて触ったんですが、
たしかにメモリ上に一時ファイルはできてるっぽいんですが、
どうやってincludeすればいいんでしょうか?
0457nobodyさん2012/10/18(木) 06:56:23.32ID:Vg/ocySG
うおー、できました。

ob_start();
include "data://text/plain;base64,".base64_encode($a);
$a = ob_get_clean();
0458nobodyさん2012/10/18(木) 07:02:19.16ID:Kix8858B
えっ
http://php.net/manual/ja/function.eval.php
0459nobodyさん2012/10/18(木) 09:57:52.63ID:???
よくよく調べたら別にbase64かまさなくてもいけました。

>>458
phpタグがあるとevalできないです。
0460nobodyさん2012/10/18(木) 10:06:27.16ID:???
>>459
$a = '<h1><?php print "Hello"; ?></h1>';
print preg_replace_callback('/<\?php(.*?)\?>/',function($r){ ob_start(); eval($r[1]); $ret=ob_get_contents();ob_end_clean();return $ret; },$a);
0461nobodyさん2012/10/18(木) 14:05:49.40ID:???
冗談抜きで頭悪い奴しかいないな
クズすぎる
0462nobodyさん2012/10/18(木) 16:53:07.56ID:T12STdKl
.htaccessの記述でインクルードパスを追加しています
php_value include_path "path1:path2"

ウェブアクセスではこれで済みますが、コマンドラインからテストするようなときのため
スクリプト中にset_include_path()で追加するコードを追加したいんですが
そうするとウェブアクセス時には重複してパスが追加されてしまいます。
追加済みであることを区別する方法はないでしょうか。

例えばperlで.htaccessに記述しようとする場合なら、PERL5LIBという環境変数にセットするので
これを見ることで判定できます。
なにかそういう方法があればと思ってるんですが・・
0463nobodyさん2012/10/18(木) 16:59:12.05ID:wQYl1awA
phpで、認証ページからログイン、flashを使った写真表示のページを作成しています
元のリンク先からページを開いた際に、うまく表示されるときと表示されない時があり、
それも不定期にその現象がでます(何も表示されない時は真っ白)
error_reportingで全てのエラー表示を設定し、サーバーのアクセスログやエラーログも
チェックしているのですが、何も表示されず・・・
他に原因を探るのにチェックすべき点などはありますでしょうか?
なお、認証は失敗するとセッションを削除して強制的にログアウトさせています
表示されないときも引き続きリンク先をクリックしていると表示されるようになるので
認証は引き続き行われていると思うのですが
0464nobodyさん2012/10/18(木) 17:07:28.84ID:T12STdKl
>>463
画面が真っ白っていうのは、えてしてdisplay_errorsが無効になってるからだよ。
php.iniを編集するかini_set()かで有効にすれば
なんらかのエラーメッセージが画面上に表示されるんじゃないかな
0465nobodyさん2012/10/18(木) 17:32:56.49ID:???
設定変えないとエラーすら分からない基地害言語乙
0466nobodyさん2012/10/18(木) 17:36:34.39ID:wQYl1awA
>>464
レスありがとうございます
display_errorsはOnでした

glob("*.jpg")でディレクトリ内のファイル名を取得してflashで読み込んでいて
自分なりに検証してましたが、どうも大量の写真があるページにその現象がでるようで
ページを分けて一度に読み込む写真の枚数を減らしたところ、表示が確実にできるようになりました

大量の読み込みによって、表示ができなくなるのはどういった理由でしょうか?
メモリ関連なのかなと思ったりもするのですが、よくわからず・・・
0467nobodyさん2012/10/18(木) 17:49:14.40ID:???
>>462
get_include_path()でチェックは?
それか、set_include_path()で「追加」ではなく必要なパスを「設定」するとか
.htaccessは削除してプログラムだけで設定すれば?
0468nobodyさん2012/10/18(木) 17:52:52.65ID:???
>>466
HTTPの応答はどうなってる?
コード、ヘッダ、ボディ
0469nobodyさん2012/10/18(木) 21:11:54.20ID:???
PHPって糞言語だと思うけど
>>466みたいなクズがさらに評判を下げてるんだな
0470nobodyさん2012/10/18(木) 22:59:45.41ID:???
巣に帰れカス
0471nobodyさん2012/10/19(金) 02:41:50.91ID:???
ゴミ言語流行らせてit業界に迷惑かけるなカス
0472nobodyさん2012/10/19(金) 02:57:50.01ID:???
俺は悪くねえし
0473nobodyさん2012/10/19(金) 04:27:46.05ID:???
迷惑なのはお前の存在
0474 忍法帖【Lv=3,xxxP】(1+0:8) 2012/10/19(金) 07:30:32.21ID:???
0475nobodyさん2012/10/20(土) 14:21:14.34ID:ZMpEOeTK
PHP 5.4です。
SQL(今はSQLite3、将来的にMySQL)で条件に合致する全件数とそのうちのa〜b件目のデータを表示したいです。
この場合、SQL側には合致するもの全件のデータを出力させてPHP側で数えつつ該当するデータを表示させるか、
一度SQLにCOUNTさせて全件数を取得し、再度a〜b件目のみデータを出力させPHP側で何もせずそのまま表示するか、
レコード数等で一概に言えないと思いますが、パフォーマンスやデータの安全性の観点からどちらにすべきでしょうか?
0476nobodyさん2012/10/20(土) 15:10:28.16ID:???
>>475
考えるまでもないし、おそらくご自分でも分かっているのでしょう。
0477nobodyさん2012/10/20(土) 15:15:08.05ID:???
>>475
勉強のためにどちらも試してみることをお勧めします
0478nobodyさん2012/10/20(土) 16:04:06.31ID:???
638:デフォルトの名無しさん :2012/10/20(土) 15:59:33.91
PHPとRubyはほぼ出始めから産廃
0479nobodyさん2012/10/20(土) 17:13:52.30ID:mvm6LY/H
お問い合わせとか資料請求とかのフォームの場合でも
CSRF対策はするべきでしょうか?

「ログインや商品注文の時だけで良い」という意見や
「全てのフォームで対策するべき」という意見もあり、
どちらの方が一般的なのか悩んでいます。

出来れば余計なコードは省きたいため、ご意見下さい
0480nobodyさん2012/10/20(土) 17:32:38.70ID:???
>>479
前者の意見ってどこに書いてあったの?
0481nobodyさん2012/10/20(土) 18:00:00.23ID:???
自動で投げ込まれて困るところすべてやるべき
0482nobodyさん2012/10/20(土) 19:07:58.65ID:mvm6LY/H
>>480
「CSRF対策」でググった時にそういう意見もありました。

>>481
極論を言えば全て困るのですが、
正直、携帯用のフォーム対応を考えると
少々面倒だったり、セッションハイジャックの方が気になったりして、
「そこまでするべきか?」と疑問に思います。
0483nobodyさん2012/10/20(土) 19:24:47.82ID:???
じゃあテメーの好きにすればいいだろゴミ
0484nobodyさん2012/10/20(土) 19:26:03.28ID:IirBV06M
キャッシュ保存するフォルダって保存するファイル数、どれくらいまでに抑えた方が良いんでしょうか?
多すぎると、処理速度落ちると思うのですが・・・
0485nobodyさん2012/10/20(土) 19:32:16.65ID:???
今回の遠隔操作に便乗して

CSRFで勝手に市の意見フォームに殺人予告投稿されて
犯罪予告冤罪食わされた事件が新聞に載ってたから
対策するに越したことはない

//新聞にCSRFってマンマ書いてあって吹いた
0486nobodyさん2012/10/20(土) 19:37:43.63ID:???
>>482
URL教えて
0487nobodyさん2012/10/20(土) 19:44:57.98ID:ZMpEOeTK
>>476-477
そうですね。
せっかく目の前にPHPがあって数万件のレコードを作るのだって簡単ですし
0488nobodyさん2012/10/20(土) 21:09:13.28ID:???
>>482
セキュリティ気にする奴がPHP使ってる時点でおかしい
まともな奴ならセキュリティを考えた時点でPHPは選択肢から外す
0489nobodyさん2012/10/20(土) 21:10:24.06ID:???
preg_replaceでうまく変換されないんですけど、文字コードって関係ありますか?
ちなみにutf-8です。
オプションのuをつけるとエラーでるので原因不明です。

たとえば「あいうえお」って文字を消そうとして

第一引数に"/あいうえお/"、第二引数に''
ってしても消えません
0490nobodyさん2012/10/20(土) 21:15:45.83ID:???
ちなみにstr_replaceでも消えません。。
0491nobodyさん2012/10/20(土) 21:21:16.74ID:???
文字コードって関係あります
\xXXで書くと確実
0492nobodyさん2012/10/20(土) 21:32:11.85ID:???
>>491
ありがとうございます。
\xが必要ってことですか?

あいうえおの場合だと

\xあいうえおって書けばいいんでしょうか?
0493nobodyさん2012/10/20(土) 21:39:40.25ID:???
utf-8のあいうえお
"\xE3\x81\x82"
"\xE3\x81\x84"
"\xE3\x81\x86"
"\xE3\x81\x88"
"\xE3\x81\x8A"
0494nobodyさん2012/10/20(土) 21:42:03.36ID:???
えー!
じゃあ対象文字が16進数で何かを調べなきゃいけないってことですか?
ちょっと待ってくださいよ
0495nobodyさん2012/10/20(土) 22:21:38.48ID:???
>>484
OSのファイルシステム依存です
当然どんなOSでも数が多いと遅くなります。
0496nobodyさん2012/10/20(土) 22:23:41.17ID:???
IDでてねーやつに、バカなレスして荒らすのは止めてくれませんか。
0497nobodyさん2012/10/20(土) 23:20:44.78ID:???
どうせPerl厨が荒らしてんだろ
0498nobodyさん2012/10/21(日) 17:41:30.34ID:???
PHP技術者認定試験 part1
http://ikura.2ch.net/test/read.cgi/lic/1348281475/
0499nobodyさん2012/10/22(月) 00:20:45.74ID:+0fUS7Jz
preg_replaceについて

$str = 'あああabcいいい';
$str = preg_replace('/(.+?)([a-zA-Z])(.+?)/i',"\1変換\3",$str);
上記のような置き換えで
パターンの結果?(言葉が見つかりません)を取得するのに置き換えのところで「\1」や「\3」などを使うと思うのですが、
これをたとえば
preg_replace('/(.+?)([a-zA-Z])(.+?)/i',"\1"._func("\2")."\3",$str);
というように独自関数の引数に使いたいのですが
function _func($str)
{
echo $str;
}
として引数を見てみると「\2」と表示されてしまいます。
この場合どうすればよろしいですか?
0500nobodyさん2012/10/22(月) 00:43:50.64ID:???
>>499
Perl使え
道具は選ばないと作業効率も完成度も酷いことになるぞ
上手い奴なら道具は選ばなくてもそれなりのものを作れるが
中級者以下は道具の影響をモロに受ける
0501nobodyさん2012/10/22(月) 00:44:28.78ID:???
>>499
$str ='あああabcいいい';
$str= preg_replace('/(.+?)([a-zA-Z])(.+?)/e',"'$1'._func('$2').'$3'",$str);
print $str;
function _func($str)
{
return "*$str*";
}
0502nobodyさん2012/10/22(月) 01:37:10.20ID:???
>>500
中級者以下乙w
0503nobodyさん2012/10/22(月) 07:22:01.03ID:???
pregはPerl互換を謳っておきながら、
使いにくい糞だな
正規表現リテラルくらい導入しとけよ
0504nobodyさん2012/10/22(月) 09:46:03.73ID:pw1US0yc
セキュリティ考えたらphp使うなっていうけど、
じゃあ実際なにつかえばいいの? 冗談抜きで
0505nobodyさん2012/10/22(月) 09:52:27.41ID:???
PHPフレームワークを使えばいい
0506nobodyさん2012/10/22(月) 11:07:11.10ID:???
正規表現リテラルは欲しいところだな
0507nobodyさん2012/10/22(月) 12:26:38.25ID:???
パーサがまた遅くなるな
0508nobodyさん2012/10/22(月) 13:47:22.92ID:???
>>504
セキュリティ考えたらphp使うな、なんて言われてない
言ってるのはPerl厨だけ
0509nobodyさん2012/10/23(火) 01:03:51.62ID:???
そう思い込むのは勝手だけどそれでお前の鯖がハッカー踏み台になって他を攻撃したら迷惑がら公開すんなよ
WWWから隔絶されたネットワーク内だけでやれ
0510nobodyさん2012/10/23(火) 01:20:38.24ID:sqK5MN/v
 
0511nobodyさん2012/10/23(火) 09:29:11.64ID:???
>>509
こいつなにいってんだ?
ハッキング対策はプログラム以前のソフトウェア、ハードウェア単位でやるもんだろ
php叩きたいがために自分の無知を晒してんな
0512nobodyさん2012/10/23(火) 10:31:41.29ID:???
WWWって言いたかっただけだろうきっと
0513nobodyさん2012/10/23(火) 10:49:38.21ID:???
迷惑がら
0514nobodyさん2012/10/23(火) 10:54:08.22ID:???
そう思い込むのは勝手だけどそれでお前の鯖がハッカーの踏み台になったら迷惑だからイントラでやれよ

これが正しい
0515nobodyさん2012/10/23(火) 10:55:55.09ID:???
そもそもなんで自鯖の話になってんだか
0516nobodyさん2012/10/23(火) 11:17:50.92ID:???
「perl使ってるからボク安心♪」、そう思いたいんだろう
0517nobodyさん2012/10/23(火) 11:46:03.17ID:???
なんで鯖の話が出てくるんだ
それに食べ物を踏むなんてバチが当たるぞ
0518nobodyさん2012/10/23(火) 11:58:33.41ID:???
おなかすいた
0519nobodyさん2012/10/23(火) 13:37:02.06ID:???
>>509
そういう、根拠のない書き込みは迷惑がらやめろ
0520nobodyさん2012/10/23(火) 14:20:13.95ID:???
迷惑がらって何
0521nobodyさん2012/10/23(火) 16:18:45.95ID:FndRAY7p
はいはーい、しつも〜ん!

横浜市のウェブサイトに殺人予告した事件の話だけど、あれCSRF対策してなかったってことでしょ?
どこの業者が作ったのか知ってる人いるぅ?
もしかしてphp使ってたの〜?
0522nobodyさん2012/10/23(火) 16:36:49.16ID:???
横浜市のHPの意見フォーム開いて
フォームのaction先のURLの拡張子見ればよろし
0523nobodyさん2012/10/23(火) 16:38:54.00ID:???
ぶっちゃけCSRF対策なんてrecapture使うか、外部リクエスト閉じるだけで充分だよな
0524nobodyさん2012/10/23(火) 16:49:50.59ID:???
市のHPにreCAPTCHAあったらキモいわ
>>522
postmail.cgiでした
0525nobodyさん2012/10/23(火) 16:57:08.14ID:???
CGIってことはperlですね
PHPは普通CGIでは使わないし
rubyやpythonの可能性も低いし
0526nobodyさん2012/10/23(火) 16:57:52.93ID:???
reCAPTUREぐらい問題ないだろ
デザインだってほぼ自由だし(憤慨)
0527nobodyさん2012/10/23(火) 17:14:28.90ID:???
どうせKENTで拾ったpostmail.cgiだろw
0528nobodyさん2012/10/23(火) 19:54:52.40ID:???
perlだと何か問題が?
0529nobodyさん2012/10/23(火) 20:07:23.23ID:BhC6UlCs
あるクラスに更新日付や作成日付やデータなどを持たせてて、このインスタンスが1000個くらいあるんですが、
これを作成日付順に並べ替えたいです。

でも作成日付は年月日までしかデータが無いので重複してしまいます。
なので、

array[作成日付] = new DATA(引数,・・・);

っていう連想配列のキーを作成日付にしてasortでソートしようと思っても
重複する部分は上書きされてしまうので思うようにいきません。

どうにかして作成日付順にソートする方法ないでしょうか?
0530nobodyさん2012/10/23(火) 20:23:08.09ID:???
メモリ上でなくSqliteでやる。
0531nobodyさん2012/10/23(火) 20:25:56.13ID:VHjaAdVt
>>529
キーに日付を使うのを止めて、usortで、比較関数でインスタンスの日付を比較させるか
array[作成日付] [] = new DATA(引数,・・・); あたりでやるかどっちか。
0532nobodyさん2012/10/23(火) 20:46:44.65ID:H8aWMiOD
phpでの変数はそのファイル内でのみ有効なのでしょうか?
例えば、1.phpでいくつか変数に代入したあと、プログラムを実行し、
2.phpで再びその変数を参照することはできますか?
0533nobodyさん2012/10/23(火) 21:04:45.05ID:BhC6UlCs
>>530
一度DBでぶっこんでからSQLの処理でソートするってことですか
諸事情で最初は古いやつから番号を割り振りってDBに登録したいのでやめときます

>>531
うーんusortの使い方がよくわからん。。。
二つ目の方法もよくわからんなぁw

もうちょっと考えて見ます。。
0534nobodyさん2012/10/23(火) 21:19:26.90ID:???
同じ日付のを区別できるように仮のIDを振れ
0535nobodyさん2012/10/23(火) 21:39:27.66ID:BhC6UlCs
できました!

usortの意味がようやくわかって出来ました!
言われたとおりクラスに作成日付返す関数作って、usortで使う比較関数内で呼び出して比較してソートできました。

それにしても公式のusortの説明文糞すぎですね
あれじゃ誰もわからんわ
俺が書き直したいくらい

>>534
めんどいのでそれはまた今度で

ありがとうございました!
0536nobodyさん2012/10/24(水) 00:16:49.55ID:???
書き直したらいい
苦労した人が一番、どう書き換えるべきかよく分かる
0537nobodyさん2012/10/24(水) 02:23:47.49ID:3GfLE8ok
FreeBSD9にPHP5.4.6をインストールしたところ
日本語が文字化けします。
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
などで5.2の時は問題無かったんですが、これはどこをいじれば直せるのでしょうか?
0538nobodyさん2012/10/24(水) 03:06:23.47ID:3GfLE8ok
済みません、質問を変更します
文字化けはどうにかなったのですが、一番最後の文末に
文字化けしたゴミ(改行コード?)がくっつきます。
一般に公開されているPHPスクリプトなのですが、これはphp.iniの設定で解決出来ますでしょうか?
0539nobodyさん2012/10/24(水) 06:44:33.94ID:???
ゴミの文字コードを特定しろ
0540nobodyさん2012/10/24(水) 07:16:13.33ID:???
usortの説明そんなに糞か?
ユーザ定義関数で比較してくれますよってだけのシンプルなソート関数だと思うが
0541nobodyさん2012/10/24(水) 13:26:55.38ID:???
>>540
同意
例1まで読めば大体理解できるだろ
0542nobodyさん2012/10/24(水) 13:29:47.27ID:???
いや糞だって
初心者には$aと$bの引数が何を表してるのかさっぱりわからん
まったく説明ないし
0543nobodyさん2012/10/24(水) 13:32:56.25ID:???
それにソートもどういう順番で並び替えられるか説明がない
終わってる
0544nobodyさん2012/10/24(水) 13:59:38.65ID:3GfLE8ok
>>539
「php>」で閉じているその後ろ、EOFに当たる部分で
改行も文字の一つも入っていないのに表示されます。
<?php
echo "あいうえお";
?>
これだけでも、こうなってしまいます
ttp://nagamochi.info/src/up119773.jpg
0545nobodyさん2012/10/24(水) 14:17:01.86ID:???
UTF-8のBOM有りで保存してんじゃね?
0546nobodyさん2012/10/24(水) 15:06:37.33ID:???
ソースの表示で文字そのものが出るだろ
0547nobodyさん2012/10/24(水) 15:07:47.66ID:???
UTF-16扱いになってる気が
0548nobodyさん2012/10/24(水) 17:55:12.79ID:3GfLE8ok
BOMって先頭に付くものですよね?
ソースを表示してもあるのは「あいうえお」と文字化けした何かだけです
ブラウザのエンコードの種類に何を指定しても文字化けしたままです
そもそも何も無いのに何が化けてるのか・・・PHP5.2の時は何も無かったのですが
0549nobodyさん2012/10/24(水) 17:59:16.36ID:???
文字化けした何かのコードはいくつなんだよw
0550nobodyさん2012/10/24(水) 18:00:05.24ID:???
たとえば文字数とバイト数の扱いがとっちらかってて、とかはないの?
0551nobodyさん2012/10/24(水) 18:15:49.78ID:???
コードの値も割り出せないクズは放っておけよw
■ このスレッドは過去ログ倉庫に格納されています