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

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

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

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0696nobodyさん2011/04/15(金) 20:12:11.01ID:???
Ajax…?
0697nobodyさん2011/04/15(金) 20:29:44.96ID:???
>>695
Ajaxアンチ乙
0698nobodyさん2011/04/15(金) 20:54:18.48ID:???
>>692
すげえwwww
0699nobodyさん2011/04/15(金) 21:02:15.42ID:???
>>689-694
久々にいい流れだった
0700nobodyさん2011/04/15(金) 22:23:02.88ID:???
>>695-697
久々にいい流れだった
0701nobodyさん2011/04/15(金) 23:38:57.08ID:???
>>692
$v[]=current(explode("<>",$l, 2));

$work = explode("<>",$l, 2);
$v[] = $work[0];

下のほうが速かった。
上の方がスマートなんだけどなぁ
0702nobodyさん2011/04/15(金) 23:50:42.17ID:???
おまえらすごいな
07036862011/04/16(土) 00:21:27.07ID:MW7RyDow
>>692,701さんの
foreach(file("ob.log")as$l)$v[]=current(explode("<>",$l, 2));
file_put_contents("test.txt",implode("\n", $v));
で成功しました。
>>689-693の皆さんもありがとうございました。

ちなみに>>688は私ではなく煽りの人みたいです
0704nobodyさん2011/04/16(土) 01:04:39.03ID:???
currentのどこがスマートだw
0705nobodyさん2011/04/16(土) 02:03:05.26ID:???
見た目の話やないの?
0706nobodyさん2011/04/16(土) 10:53:26.97ID:???
さすがに>>689のコードはねえよ
0707nobodyさん2011/04/16(土) 11:47:01.53ID:KaV2BHRg
画面A→画面B(正常に表示)

の状態で、もう一度画面Aから画面Bにタブを開いてアクセスしたとします。
すると「一度ウィンドウを開いているのでアクセスできません」
みたいなエラーメッセージを出したいのですが、これってPHPだけで可能ですか?

Cookieを使うことも考えたのですが、画面Aに戻った時、
Cookieを削除したらウィンドウを2つ以上開くことが出来るように思います。
画面AでCookieが切れるわけですから、更新ボタンを押した時とか。

ウィンドウ操作なのでjavascriptのような気もしますが、PHPで可能なら教えてください
0708nobodyさん2011/04/16(土) 11:55:33.38ID:???
そんな処理に労力を注ぐのは時間の無駄
0709nobodyさん2011/04/16(土) 12:04:44.58ID:KaV2BHRg
サーバに負担がかかるようなページがあって、
ウィンドウをいくつも開かれて攻撃されるのを防ぎたいのですが、
そういうのは無駄なんですかね?
0710nobodyさん2011/04/16(土) 13:21:19.97ID:???
>>707 > 一度ウィンドウを開いているのでアクセスできません

これは、画面Aから画面Bを開いたことを言われているのでしょうか?
画面を複数開くことを抑止したいのでしょうか?
画面Aから画面Bを開いた履歴に基づいて再度は開けないように抑止したいのでしょうか?
それとも画面Aから開ける画面Bは1画面に限定して同時に2画面のBを開けないように抑止したいのでしょうか?
0711nobodyさん2011/04/16(土) 13:23:22.04ID:???
できないことはない感じだけど、使い勝手が悪かったり
完全ではないとか。労が多いわりには実が少ない
ということじゃない?
0712nobodyさん2011/04/16(土) 13:44:01.00ID:???
認証制のサイトでたまに見かけるけど確かに使い勝手は悪い
0713nobodyさん2011/04/16(土) 14:41:29.33ID:???
サーバーに負担のかかるページを改善するほうが先じゃないか?
0714nobodyさん2011/04/16(土) 14:46:21.48ID:KaV2BHRg
>>710
>これは、画面Aから画面Bを開いたことを言われているのでしょうか?
そうです。

>>713
それはやっていますが、とりあえず複数ウィンドウを防止したいんです。
PHP側で出来るのか、はたまた他の方法なのかよくわからなくて、
ある程度目星が付いたらググって調べようとは思うのですが・・・
0715nobodyさん2011/04/16(土) 15:18:58.52ID:Bn3j3K6j
【OS名】MacOSX
【PHPのバージョン】5.3.6
【連携ソフトウェア】
【質問内容】
php.ini error_reportingについて
PEAR MDB2,Authを使用したところ
trict Standards: やStrict Standards: がいっぱい出てきた。
それでgoogle大先生に聞いたところ
php.iniのerror_reportingを
error_reporting = E_ALL | E_STRICT
から
error_reporting = E_ALL
に変更すれば問題ないとの教えがあり、変更した。
ところが変更したところ
fatal errorやsyntax errorまで表示されなくなってしまった。
それは困るので何とか表示できるようにしたい。
error_reportingをどのような設定にすれば良いのかご教示頂きたい。
よろしくお願い致します。
0716nobodyさん2011/04/16(土) 16:21:28.81ID:???
>>715
display_errors = offになってるんじゃないの?
0717nobodyさん2011/04/16(土) 16:39:22.59ID:???
>>714
複数ウィンドウを防止するという発想の方を変えたほうがいい。
最初に画面Aから画面Bにタブを開いてアクセスした場合はどうする?
メインのウィンドウで画面Bに遷移できなくなっちゃうね。

そこに労力を割くより、多重アクセスがあっても問題ないようなシステムに
することの方が重要。
0718nobodyさん2011/04/16(土) 16:41:41.43ID:???
>>715
元に戻す
0719nobodyさん2011/04/16(土) 18:29:02.93ID:mJdJuPdX
セッションの解除はどうするの?
0720nobodyさん2011/04/16(土) 19:52:07.39ID:???
unset($_SESSION['test']);
0721nobodyさん2011/04/16(土) 21:01:36.91ID:???
kaijo($sesshon);
0722nobodyさん2011/04/16(土) 23:31:50.34ID:???
unsetでセッションの解除はやりませんよ
0723nobodyさん2011/04/16(土) 23:39:14.45ID:???
session_unsetもunsetもあまりかわらん
0724nobodyさん2011/04/16(土) 23:59:14.71ID:???
>>719

自分で調べなさい。

はい、次の患者さぁ〜ん!
0725nobodyさん2011/04/17(日) 02:18:00.13ID:???
>>719
kaijo($sesshon);
0726nobodyさん2011/04/17(日) 03:52:06.74ID:???
>>724
患者はテメェだボケ〜!
0727nobodyさん2011/04/17(日) 09:09:49.80ID:???
しかしsession_destroyって結構荒い消し方するよな
0728nobodyさん2011/04/17(日) 09:17:54.25ID:???
消し方に荒いとかそんなのあるのか
0729nobodyさん2011/04/17(日) 12:07:08.72ID:???
ひとつずつ、消しますか?YES/NO と聞いてくれなくては紳士的とは言えますまい
0730nobodyさん2011/04/17(日) 12:10:05.87ID:???
session_destroyと書いてる以上、消す意思だろうし
セッションファイルは1つだろうしなにを言ってるのかよくわからんが
0731nobodyさん2011/04/17(日) 12:31:15.22ID:???
俺ぐらいの達人になるとPHPでGUI作ってバイナリ配布できる形式にまで出来るんだけど君たちは?
0732nobodyさん2011/04/17(日) 12:37:31.26ID:???
>>1
0733nobodyさん2011/04/17(日) 12:42:22.75ID:???
俺はPHPでWindowsアプリ作って納品してるよ。先日は画像レタッチソフトを作った。
これぐらい普通でしょ
0734nobodyさん2011/04/17(日) 12:57:48.07ID:???
>>704
逆に、どうすればスマートに記述できますかね。
explode("<>",$l, 2)[0]
という記述ができる言語ならよかったんだけど
0735nobodyさん2011/04/17(日) 14:28:47.08ID:???
>>734
スマートの定義は?
あと>>1
0736nobodyさん2011/04/17(日) 15:43:22.65ID:???
>>735
> スマートの定義は?
質問なら>>1を読んで出直しな
0737nobodyさん2011/04/17(日) 15:54:23.99ID:???
俺ぐらいになるとPHPで彼女作れますよ
もてもてです
0738nobodyさん2011/04/17(日) 15:57:07.53ID:???
俺ぐらいの達人になるとメジャーなオープンソースの開発に携われるようになるよ
んで、PHPがダメ言語だな厨にオープンソースでどんくらい稼げるか書類見せてやって黙らせてる
君らにはそんな実力ないから毎日頑張って勉強して欲しい
もちろん勉強だけじゃ稼げないよ
0739nobodyさん2011/04/17(日) 16:06:44.40ID:???
当たり前のことしか書けないのか
素人丸出しだな
0740nobodyさん2011/04/17(日) 16:10:15.29ID:???
わかったから、次の質問どうぞ

ほら、早く早く

ハァハァ
0741nobodyさん2011/04/17(日) 18:24:08.55ID:???
俺は先日PHPでC言語のコンパイラを書いたけどな
0742nobodyさん2011/04/17(日) 20:04:24.73ID:???
>>741
すごい!
なんでそんなことしたんですか!
0743nobodyさん2011/04/17(日) 21:51:29.07ID:???
俺なんかマクロアセンブラ作ったけどな
0744nobodyさん2011/04/18(月) 00:03:37.17ID:nGStzrzk
>>716さん
display_errors = Onでした
結局必要なerror_reportingのみを選択して解決しました。
具体的には
error_reporting = E_ERROR | E_PARSE
にしました。
お騒がせ致しました。ありがとうございました。
0745nobodyさん2011/04/18(月) 00:15:07.90ID:???
>>744
開発環境ならもっとエラーと警告を出すようにせい
それでも温い
0746nobodyさん2011/04/18(月) 00:37:38.67ID:???
>>744
大体
error_reporting = E_ALL
にしてsyntax errorが出なくなるわけないだろ?
だから元に戻せって言ってんのに
0747nobodyさん2011/04/19(火) 01:58:34.81ID:???
質問です。

Webからプロセスを再起動させようとし次のコードを記述したのですが失敗します。

exec("sudo /etc/init.d/プロセス名 restart" ,$s");

apacheには上記パスのsudo権限パス無しは設定済みです。
どこがおかしくて起動出来ないのでしょうか?
0748nobodyさん2011/04/19(火) 02:04:48.05ID:???
if (!has_read(>>747, >>1)) {
die(>>747);
}
0749nobodyさん2011/04/19(火) 02:28:50.50ID:???
if(DQN(>>748))Ajax(>>1);
0750nobodyさん2011/04/19(火) 04:31:30.29ID:???
>>747
須藤さんの調子が悪いので伊藤さんで試してください
0751nobodyさん2011/04/19(火) 07:17:39.70ID:???
exec("command" ,$s");

引用符の使い方と末尾の全角セミコロン
07527472011/04/19(火) 08:26:15.63ID:???
>>751
おはようございます。

すいません、上記のは記述ミスです。

exec("sudo /etc/init.d/プロセス名 restart" ,$s);

これですけど、起動しません。
よろしくお願いします。
0753nobodyさん2011/04/19(火) 08:35:32.21ID:W2zxScT8
これだけIDだせと言っているのに、いまだにIDを出さない
>>747....
>>747....
>>747....
馬鹿なの?
0754nobodyさん2011/04/19(火) 08:59:10.39ID:L9R4T5O7
web一般の質問?です
ログインを行うHPにて、
セッションタイマーが20分と
Ajaxにてヘルスチェック(ログインしていることの通知)が3分ごとに
設定されている場合に、
ブラウザを開いたまま放置した場合。
20分立てばセッションタイムアウトになるのでしょうか。
それとも3分ごとにブラウザから情報が来ているため、
何分たってもセッションタイムアウトにならないのでしょうか。
0755nobodyさん2011/04/19(火) 10:25:09.97ID:???
>>754
タイムアウトしないと思う
ヘルスチェックってのが何をしてるか、もう少し詳しく書くけば
もっと適切な答えが期待できると思うよ。
0756nobodyさん2011/04/19(火) 10:36:05.49ID:???
どー考えてもスレチ
他人のシステムなんて予想はついても
調べない限り適切な答えなんて出ない
0757nobodyさん2011/04/19(火) 12:36:41.94ID:iclRm0oP
【PHP】5.1.2

set_error_handlerを使ってエラーが発生したときの処理を実装しようとしています。

set_error_handler('fncHoge');
とし、
function fncHoge($errno, $errstr, $errfile, $errline){
//エラーの制御
}

と、記述しているのですが、
このfncHoge関数内で
$errfile, $errlineの内容をログに書きこもうとすると
変数が定義されていませんみたいなエラーがでます。

マニュアル通りに書いたのに何でエラーが出るかわかりません。

なにか気をつけるポイントがあるのでしょうか?
0758nobodyさん2011/04/19(火) 14:07:34.68ID:???
>>757
set_error_handlerはエラーだけじゃなく変数が定義されてない等のワーニングでも呼び出される
fncHoge関数内で、たとえば
if($errno == 1 || $errno == 2 || $errno == 4)
とか自分が処理したいエラーレベルでふりわければいい
07597472011/04/19(火) 14:34:31.31ID:???
自己解決しました。

>>751さん以外は役立たずのゴミどもでしたね。

ほんとご苦労様です。
0760nobodyさん2011/04/19(火) 14:38:31.33ID:???
>>759
スレのルールを守ってないお前が悪いらしいよ
よく知らんけど
07617472011/04/19(火) 14:59:18.79ID:ObrOm4D8
いやいや解決してないからw
偽物乙。お暇ですね。


本買ってきたから読んで勉強しなきゃ。
でもEXECについて詳しくのってないんだよなぁ。

シェルをキックさせた方が良いのかしら。
0762nobodyさん2011/04/19(火) 15:43:11.72ID:???
>>747,761

既に最初の質問の段階でIDを出していないことからスレ違い。

むしろこれだけレスを重ねていることから荒らし認定。

出直しておいで。
07637572011/04/19(火) 15:49:58.74ID:iclRm0oP
>>758
解決しました。
ありがとうございました。

0764nobodyさん2011/04/19(火) 15:55:17.04ID:???
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
0765nobodyさん2011/04/19(火) 17:31:23.47ID:???
教えて君の極意
一. 努力を放棄すること
  教えて君たるもの、努力をするなど以ての外である。
一. 情報を開示しないこと
  エラーなど必須の情報を知らせてはならない。
  「いろいろやってみたけど動きません」が理想のセリフである。
一. 答える人間の事を考えないこと
  教えて君は相手の事を考えるようでは失格というものだ。
  教えて君グループは世界中に拠点を持っている。
  日本の教えて君ブランドを汚してはならない。

日本の教えて君がなめられないように日々、自分で努力して調べないで人を使ってほしい。
07667622011/04/19(火) 18:03:12.51ID:fgmca1z+
>>765
解決しました。
ありがとうございました。
0767nobodyさん2011/04/20(水) 20:57:28.37ID:ftmBb0O8
preg_replace の第3引数で大きなデータを扱おうとすると、null が返るときがあります
error_reporting = E_ALL | E_STRICT にしていますが、エラーメッセージは出ずに処理が続行されます
どうして null が返るのでしょうか
0768nobodyさん2011/04/20(水) 21:02:48.30ID:???
>>767

> 第3引数で大きなデータ

どの程度に「大きくて」、どの程度に「大きくないか」を教えてください。
0769nobodyさん2011/04/20(水) 22:23:38.66ID:???
近頃のPHPは名前空間に対応しているのかい?
Javaのpackageに相当する機能を使いたいのだが
0770nobodyさん2011/04/20(水) 23:06:29.33ID:???
>>769
5.3以降なら可能
0771nobodyさん2011/04/21(木) 01:24:10.47ID:???
>>768
質問は>>1を読んでからにしろ
0772nobodyさん2011/04/21(木) 07:16:38.51ID:XEGIAaxg
日本語文字列をu3042u3042u3042u3042のようにエンコードせずにそのままで
json_encodeする方法はないでしょうか?
0773 【東電 63.4 %】 忍法帖【Lv=6,xxxP】 2011/04/21(木) 07:23:01.97ID:GH5Vi5/t
>>770
見てきた。たしかに対応しているっぽいね。
しかし、後付しただけに随分と煩雑だ
Javaのpackageよりパターンが豊富でいろんなことができるようだが、
Javaのpackageとimportとの組み合わせと比べると気持ち悪いコードを書く輩が増えそうだな…
ソースコードが読みにくくなったら本末転倒だ
コーディング規約をいちいち定めないと面倒なことになりそうだな


JavaのCheckStyleに相当するコーディング規約チェックツールは、PHPにはあるかな?

ついでに、Javaのバグの温床になるコードを自動検出してくれるFindBugsちうチェックツールはPHPにはあるかな?
0774nobodyさん2011/04/21(木) 07:30:09.90ID:???
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode ? 値を JSON 形式にして返す
説明
string json_encode ( mixed $value [, int $options ] )
value を JSON 形式にした文字列を返します。
パラメータ
value
エンコードする値。 resource 型以外の任意の型を指定できます。
この関数は、UTF-8 エンコードされたデータでのみ動作します。
0775nobodyさん2011/04/21(木) 07:39:44.75ID:???
>>773
あるかな?ではなく
ありますか?だろ
0776nobodyさん2011/04/21(木) 07:43:42.04ID:???
言葉尻を叩いても何も得られない。
言葉遣いが悪い奴は何も得られない。
0777nobodyさん2011/04/21(木) 09:04:24.29ID:???
変なのが粘着してきてるな
0778nobodyさん2011/04/21(木) 10:19:24.70ID:???
>>777
質問は>>1を読んでからにしろ
0779nobodyさん2011/04/21(木) 10:29:46.86ID:???
今PHP5.3への移行期だからガンガン使え
0780◆oDupeixhZv52 2011/04/21(木) 11:51:47.10ID:???
>>772
json_encodeのページの__json_encodeのエンコード部分を殺してつかうとか。
0781nobodyさん2011/04/21(木) 12:15:36.49ID:???
>>773
大抵ないとおもっていいよ。
ある場合も多いが、その質に過度な期待をされても困るので。
0782nobodyさん2011/04/21(木) 15:48:21.53ID:???
>>780
日本語(UTF8)だったら、自前でエンコードする必要ないんだろ?
0783nobodyさん2011/04/21(木) 16:01:17.06ID:XEGIAaxg
仕方がないので、日本語部分を"%TEXT%"などとしておいてjson_encodeして
その後にstr_replaceで日本語と置換するという方法を使いました。
今回は小さいデータだからこれでもいいけど、もっと良い方法はないものか
0784nobodyさん2011/04/21(木) 16:11:03.09ID:???
UTF8で渡せば良いだけだろ。
0785nobodyさん2011/04/21(木) 16:12:11.03ID:???
>>783
それだと、バイナリデータになり制御コードが混じる場合があるんだろ。
0786nobodyさん2011/04/21(木) 16:16:29.88ID:XEGIAaxg
>>784
文字列もソースコードもUTF8なんだけど、勝手にエンコードされる。
0787nobodyさん2011/04/21(木) 16:23:59.84ID:???
>>786
エンコードしないとデータがバイナリになるんだよ。
jsonデコードしたら、文字列も自動でデコードされる。
0788nobodyさん2011/04/21(木) 16:25:59.90ID:???
格納方式にこだわるならばjsonを使うなよ。
そういうフォーマット。
バイナリデータを直接格納するにはそういうフォーマットつかえ。
メールデータをBASE64にするのと一緒。
0789nobodyさん2011/04/21(木) 16:33:51.66ID:XEGIAaxg
POST先のAPIにjsonで、UTF8で日本語そのまま渡さないといけないから仕方がない
という事情なので質問しました。
多分そのAPIがおかしいんだと思う。デコードしてくれりゃいいのに。
どことは言わんけど日本で一番有名なSNS?
07907672011/04/21(木) 16:42:28.91ID:Ljywmxzd
>>768
失礼致しました

DOMDocument::loadHTML で正常に読み込めるようにするため
不完全な HTML から、重複する id のうち最後のものだけを残そうとしています

$example = preg_replace('/(id=".+?")(.+?)\\1/s', '\\2\\1', $example);
上のような記述をしていますが、対象データが大きいと null が返る場合があります

現在は検索で id をリストアップしてから削除処理していますが
preg_replace ではどうして失敗するのでしょうか

【成功】
<title id="foo"></title>
<p id="bar">テスト1</p>
<p id="bar">テスト2</p>
以降 60KB 程度の文章

【成功】
<title id="foo"></title>
<p id="foo">テスト1</p>
<p id="bar">テスト2</p>
以降 70KB 程度の文章

【エラー】
<title id="foo"></title>
<p id="bar">テスト1</p>
<p id="bar">テスト2</p>
以降 70KB 程度の文章
0791nobodyさん2011/04/21(木) 16:42:32.00ID:???
エンコードなしで任意の文字が渡せるとなると、jsonの区切り文字すらそのまま格納することになるが。
0792nobodyさん2011/04/21(木) 18:31:02.76ID:???
>>789
ユー自作しちゃいなよ
http://ideone.com/nevGC
RFCは流し読みしかしてないから間違いがあるかも知れんが
0793nobodyさん2011/04/21(木) 18:50:24.50ID:0idGxcNP
皆さんはPHPでエラーが発生してシステムが落っこったりしたときの
対処方法はどのようにされてますか?

もしくはエラーが発生したときの検知の方法は何か一工夫されてますか?

エラーが発生したときにログに書きこむようにして、
cronでログに何か書き込まれていないか確認するように
しておくとか考えているんですが・・・如何なもんでしょ?
0794nobodyさん2011/04/21(木) 19:07:09.39ID:???
どこでエラーで止まるか不明だし。
止まる予定の所すべてで、おかしくなりそうなら情報をファイルへ書き出す仕組みを挿入するしかなくないか。
面倒だが。
0795nobodyさん2011/04/21(木) 19:09:10.88ID:???
メール送信やツイッター送信でも良くないか。
PHPが動いている(ローカルな)サーバーだけに出力を残すこともない。
■ このスレッドは過去ログ倉庫に格納されています