【PHP】下らねぇ質問はID出して書き込みやがれ 105
質問者はまず
>>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等)・フレームワークは各該当スレへ
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
23.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
24. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
25. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
26. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
27. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
28. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
29.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
30. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
31.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
32. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
33. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
34. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
35. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
36. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 37. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
38. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
39. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
40. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
41. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
42. PHPからPOSTリクエストしたい
→19.を参照
43. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
44. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
45.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
46. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
47. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
48. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
49. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
50. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
51.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
52. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
53.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
54. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
55. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
56. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
57. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
58. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 59. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
60. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
61. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
62. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
63. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
64. PHPからPOSTリクエストしたい
→19.を参照
65. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
66. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
67.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
68. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
69. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
70. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
71. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
72. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
73.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
74. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
75.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
76. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
77. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
78. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
79. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
80. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 81. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
82. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
83. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
84. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
85. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
86. PHPからPOSTリクエストしたい
→19.を参照
87. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
88. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
89.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
90. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
91. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
92. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
93. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
94. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
95.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
96. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
97.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
98. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
99. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
100. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
迷惑行為で通報しよう
15 :
nobodyさん :2011/03/17(木) 07:18:44.93 ID:o69Kcvl0
このスレは荒らしが立てました。もしこのまま使用するなら
>>1 の以下の部分を
読み替えて使用しましょう。
◆質問する時の注意
× ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
○ ・ スレを上げて自分の質問を目立たせることもできます。(メール欄に何も記述しない。専ブラのsageチェックを外す)
○ ・ 回答者は、回答に関して荒らしが矛盾する書込をする事を見分け易くする為に自分のIDを表示させる事も有効です。(メール欄に何も記述しない。専ブラのsageチェックを外す)
26 :
nobodyさん :2011/03/17(木) 21:10:54.20 ID:NHA0B4eU
echo "ループ開始"; $i=0; while($i<100000) $i++; echo "ループ終了" これをコマンドラインから実行するとループ開始前に文字列を出力して、ループ終了したらまた文字列が出力されます。 実行するとcpu100%になりますが、cpu100%を抑える方法はありますでしょうか?
29 :
nobodyさん :2011/03/17(木) 22:45:46.04 ID:NHA0B4eU
>>27 やっぱりsleepしかありませんよね
ありがとうございます
>>28 やっぱりwhile($i<1)しかありませんよね
ありがとうございます
31 :
nobodyさん :2011/03/18(金) 02:33:58.37 ID:4tKm4uiv
TCPDFの解説サイトでお世話になっていたサイトがあったのですが、地震からつながりません。 www.monzen.orgというサイトなのですが、移動先とかミラーとか丸ごと保存してあるデータとかありませんか?
スレ違いかもしれませんが、 レンタルサーバーでよくある? 少なくともエックスサーバーにある機能なのですが、 php.iniをディレクトリに配置すると、 それが適用されます。 serversman@vpsを借りたので、 apacheのvirtualhostで同じようなことを実現したく、 調べてみましたが、実現方法がわかりませんでした。。 独自のモジュールなど使っているのでしょうか。 アドバイスを頂けると助かります。よろしくお願いいたします。
度々すみません。 php5.3だと.user.iniファイルで実現できると知りました。 php5.2で実現したいです。 引き続き自身でも調査検証いたします。
35 :
nobodyさん :2011/03/18(金) 11:48:20.19 ID:wRIfjxmY
特定の処理でNoticeが出たか出てないかをを変数に格納する方法ってありますか?
36 :
nobodyさん :2011/03/18(金) 12:25:46.19 ID:UYpkmgES
マニュアルの関数一覧の所に載ってない関数があるのは何故ですか? 関数一覧って全てを掲載しているわけじゃないってことでしょうか?
具体的に書けない理由がわからん
PHP 5.3.6されてますね
40 :
nobodyさん :2011/03/18(金) 14:26:06.33 ID:Hc0y2Tc8
WindowsでApache2.2使ってます PHP5.3.6からVC9しか提供されなくなったのでWinで使う方法を教えてください VC9でビルドされたApache2.2があればいいのですが見つかりませんでした
なに言ってんだ?
VC6とVC9の違いも知らないクズ回答者
で?
バカは黙ってろ
ほらほら、もっと真っ赤になってよ、コンパイラも使えないんでしょ
47 :
nobodyさん :2011/03/18(金) 18:08:29.07 ID:fDTTNbpj
123 -123 1123.45 -123.45 などのように 整数、もしくは小数を含む数値で 正も、負もありうるような値が来るときに それが数値であると判断するときに 正規表現を使う場合、 どの様に記述すれば良いのでしょうか $hoge= '-12.abc34' preg_match('/[^-]?\d+(\.\d+)?$/',$hoge); としてもtrueとなってしまいました。 識者の方、よろしくお願い致します。
is_numeric
>>47 正規表現の初歩の部分は勉強されてますか?
$hoge= '-12.aaa34'; var_dump(preg_match('/^-?\d+(\.\d+)?$/',$hoge));
$hoge= '-12.aaa34'; var_dump(preg_match('/^-?\d+?(\.\d+)?$/',$hoge));
+が通らないじゃんw
涙目乙w
55 :
47 :2011/03/18(金) 18:54:34.98 ID:fDTTNbpj
>>48 ありがとうございます。
参考にさせていただきます。
>>49 それを言われると自信がありません。
いつも必要に応じてググっています。
どこか参考になるサイトがあれば教えて頂けないでしょうか。
>>.50-52
ありがとうございます。
参考にさせていただきます。
56 :
nobodyさん :2011/03/18(金) 19:31:51.98 ID:1kOsEpMZ
YES → 【ヒットした?】 ─ YES → なら聞くなよイキロ / \ 【検索した?】 NO → なら、ねぇよ死ね \ NO → 死ね
+なんて質問に書いて無いじゃん
しつこっ
-12.abc34で [^-]?\d+(\.\d+)?$ だと c34がマッチ。 ^先頭にあれば良かっただけだね。
60 :
nobodyさん :2011/03/18(金) 20:01:15.66 ID:DcBm6Zyj
[+-]?(?:0|[1-9]\d*)
62 :
nobodyさん :2011/03/19(土) 11:13:56.47 ID:ML1lAEO2
【OS名】CentOS 5.5 【PHPのバージョン】5.2 【連携ソフトウェア】MySQL 【質問内容】 PHPでサーバーのポートが開いてるかどうかを確認したいのですが可能でしょうか? 可能な場合にどういった関数を使えばいいのか教えていただけないでしょうか。
63 :
nobodyさん :2011/03/19(土) 13:02:39.63 ID:gZevY3cx
××分後にメールを送信するPHPプログラムを教えて頂けないでしょうか? もし、可能ならformと連動されたいと考えています。 <? mail (メアド,件名,本文); ?>
64 :
nobodyさん :2011/03/19(土) 13:06:48.95 ID:ML1lAEO2
fsockで解決しました
>>63 sleep使うかcron
ポートスキャンとか不気味なので他所様にやる予定ならやめてください
>>62 > サーバーのポートが開いてるかどうかを確認したいのですが
「サーバーのポートが開いている」とは、どの様な状態を述べていますか?
67 :
nobodyさん :2011/03/19(土) 17:32:03.26 ID:ML1lAEO2
>>65 自分とこなので他人様にはしないですよ
>>66 ackが帰ってくる状態です
68 :
nobodyさん :2011/03/19(土) 23:35:32.37 ID:g30gbwpG
パーフェクトphpの6章のサンプルがうまく動きません 名前欄とコメント(mySQL使用)環境はzampp 1.7.2)です var_dumpで確認したら、フォームに名前欄のみ入力してみたらバリデーションと入力不備用の変数$errorsにエラーが格納されるはずが何も入力されず どういうことが考えられるかこれだけでわかりますか? 無視して進んじゃっていいんでしょうか 正誤表もないしソースを6章のはダウンロードできない(提供してない)ので困ってます
69 :
nobodyさん :2011/03/19(土) 23:40:04.65 ID:hauq32hx
そんなもん持ってねーよ
ここではサポート業務は負いかねます
71 :
nobodyさん :2011/03/20(日) 00:15:04.30 ID:fsL3dPzn
すみません技評のサポートページに行きます 新しい本だから持ってる人少ないのかな
72 :
nobodyさん :2011/03/20(日) 00:46:52.59 ID:4Ut5eVAZ
PHPが使える無料のサーバーってありませんか?
自宅サーバー
たくさんあります
ぎょうさんありまんがな
76 :
nobodyさん :2011/03/20(日) 11:24:36.54 ID:QRqyYTuN
本を見ながらphp5とsqliteについて勉強中です。DBの接続エラーについて教えてください。 >> Fatal error: Call to undefined method DB_Error::query() in C:\www\foo.php on line 11 というエラーが出ます。 ----- foo.php ----- 07 $db = DB::connect(DSN, false) or die('db connection failed.'); 08 if (DB::isError($db)) { 09 echo "DB接続エラー:" . DB::errorMessage($db); 10 } 11 $result = $db->query('SELECT * from product') or die('Query faild.');←ここでエラー ------------------- 9行目のエラーメッセージは >> DB接続エラー:no database selected です。 DB::connectのDSNは >> sqlite://dummy:@localhost//tmp/foo.db?mode=0644 です。 フォルダの構成に問題があるのでしょうか? c:\php5←php本体を置いている場所 c:\www←foo.phpを置いている場所 c:\tmp\←foo.dbを置いている場所
Pear::DBか?ずいぶん古いもん使ってんな 今はPearならMDB2 一般的にはPDOを使うもんなんだぜ? 悪いことは言わない その本を窓から捨ててPDOでの接続方法をお勉強しましょう
78 :
nobodyさん :2011/03/20(日) 11:41:57.16 ID:QRqyYTuN
>>77 基礎もまだできてないので(^^;
php5のマンモス本のエキスパートです。
一応終わらせてから先に行きたいので・・・。
79 :
nobodyさん :2011/03/20(日) 11:51:14.56 ID:QRqyYTuN
80 :
nobodyさん :2011/03/20(日) 12:21:59.77 ID:q0k2qzSg
PDOって何ですか? こんな質問駄目でしょうか 初心しゃです。
PHP Data Object PHPでデータベースを操作するAPI
82 :
nobodyさん :2011/03/20(日) 16:07:40.38 ID:FsqggCdG
指定したフォルダ内のファイルをランダムで requireするプログラムを教えて頂けませんか、先輩方お願いします。
83 :
nobodyさん :2011/03/20(日) 16:10:24.47 ID:idrOIQeC
>>82 ちょっとくらい自分で考えろ
丸投げすんな
84 :
nobodyさん :2011/03/20(日) 16:10:58.44 ID:FsqggCdG
指定したフォルダ内のファイルをランダムで requireするプログラムを教えて頂けませんか? mt_randとswitch〜caseを駆使してやっていましたが 数が増えすぎて、流石にシンドくなってきました。 先輩方お願いします。
85 :
nobodyさん :2011/03/20(日) 16:12:33.93 ID:FsqggCdG
>>83 すみません、自分で
>>82 を書いた後、罪悪感があったので
>>84 で書きなおしました。
仰るとおりです、すみません。
86 :
nobodyさん :2011/03/20(日) 16:14:23.32 ID:idrOIQeC
>>84 ヒント
A.scandir()
B.in_array()
C.array_rand()
globってreturn arrayなのか しらんかったわ
ありがとうございますは?
>>89 arrayじゃなかったら何だと思ってたんだ・・・?
ありがとうございます
93 :
84 :2011/03/20(日) 18:16:07.02 ID:FsqggCdG
>>86-88 さまへ
アドバイスありがとうございます。
フォルダ内のファイルを一覧で表示する方法が理解できました。
<?
foreach (glob("*.dat") as $filename) {
echo "$filename" . "<br>";}
?>
しかしながら、そのファイル一覧からランダムで1つだけ
表示される方法に苦心しております。
94 :
nobodyさん :2011/03/20(日) 18:34:01.14 ID:idrOIQeC
>>93 だからその苦心の結果を書けつってんだよカス
完全に丸投げかよ
自分で試したことしてみろ
くそわろた
ランダムで1つrequireとかそもそもプログラム的にどうなのよって感じ たぶん広告がいくつかあって それをechoしてるだけのファイルをランダムでrequireみたいな感じなんだろうけど
>>93 そこまでできてて・・・
手元に参考書の一冊でもないのか?
ないならないで、ググレば分かるレベルだよ('A`)
SMプレイみたいなQ&Aだなww
<? $list = glob( "*.dat" ); if ( is_array( $list ) ) { shuffle( $list ); foreach( $list as filename ) { var_dump( $filename ); } } ?>
>>99 × foreach( $list as $filename ) {
○ foreach( $list as filename ) {
ランダムで一個取り出したいっつってんのになんでシャッフルなんだよ
>>100 ( ゚,_・・゚)ブブブッ 逆だろ
<? $list = glob( "*.dat" ); if ( is_array( $list ) ) { shuffle( $list ); foreach( $list as $filename ) { var_dump( $filename ); break; /* これで1個だけ */ } } ?>
array_randって答えでてるのに どいつもこいつもレベルひきいな
公開したばっかりに始まった公開処刑みたいな
>>104 なんでループさせる必要があるんだよwww
109 :
84 :2011/03/20(日) 21:08:21.74 ID:FsqggCdG
皆さんのアドバイスでかなり目標まで近づきました。 あとは、一覧を取得するフィルダのパスを指定出来るように悩みたいと思います <?php //配列の初期化 $var = array(); //ディレクトリ・ハンドルをオープン $res_dir = opendir( '.' ); //ディレクトリ内のファイル名を1つずつを取得 while( $file_name = readdir( $res_dir ) ){ //取得したファイル名を配列に追加 array_push($var, $file_name); } //ディレクトリ・ハンドルをクローズ closedir( $res_dir ); //配列からランダムでファイル名を1つ取り出す $rand_keys = array_rand($var, 1); //取り出したファイルを表示 require "$var[$rand_keys]"; ?>
遠ざかってるな
open_dir( $_GET['path'] ) でok
112 :
84 :2011/03/20(日) 21:54:41.77 ID:FsqggCdG
今度こそ完成しました。 皆さんありがとうございました。 <?php //配列の初期化 $var = array(); //ディレクトリ・ハンドルをオープン $res_dir = opendir( フェルダ名 ); //ディレクトリ内のファイル名を1つずつを取得 while( $file_name = readdir( $res_dir ) ){ //取得したファイル名を配列に追加 array_push($var, $file_name); } //ディレクトリ・ハンドルをクローズ closedir( $res_dir ); //配列からランダムでファイル名を1つ取り出す $rand_keys = array_rand($var, 1); //取り出したファイルを表示 require "フェルダ名/"."$var[$rand_keys]"; ?>
113 :
84 :2011/03/20(日) 21:56:21.71 ID:FsqggCdG
フェルダ名・・・ 失礼
$dir = glob('*.dat'); echo $dir[mt_rand(0, count($dir) - 1)];
mt使う理由は?
質問者がもともと使ってたからじゃなくて?
mt使う方が軽いからね
みなさん、ありがとうございませんでした。
119 :
nobodyさん :2011/03/21(月) 21:34:16.27 ID:cxZfxrlH
phpでhtmlを出力してるんですけど、 キャッシュさせない設定(掲示板など)をするとき、 <meta http-equiv="Pragma" content="no-cache"> みたいなやつでいけますか? header("Cache-Control: no-cache, must-revalidate"); を書くのとどう違うのかよくわかりません 教えてください
上のは <meta http-equiv="Cache-Control" content="no-cache, must-revalidate"> と同等 また下のは header("Pragma: no-cache"); と同等 よって <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache, must-revalidate"> あるいは header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); ようは両者は別物 この辺はhtmlヘッダの話なのでPHPは関係ない ちなみに質問の最初の2行を見ると 掲示板をGETパラメータで操作するのではなく 静的なhtmlを吐くっていう意味と捉えられるので注意
121 :
120 :2011/03/22(火) 00:36:17.00 ID:???
わかると思うけど訂正 「上のは」って言ってるのは下のほうのことで 「また下のは」って言ってるのは上のほうのことね 逆だった
122 :
nobodyさん :2011/03/22(火) 06:28:24.63 ID:8oP+/2xe
Smartyに関する質問です。 aaaaa.php <?php require_once("*******/Smarty.class.php"); $smarty = new Smarty(); $smarty -> display("tmp_b/index.tpl"); $smarty -> assign("page","aaaaa"); ?> index.tpl {include file="tmp_b/header.tpl"} {include file="$page.tpl"} {include file="tmp_b/footer.tpl"} という風に書いてあります。 階層やパーミッションとは関係ないと思われます。 $pageの部分に各ページのHTMLが入るんですが、 そのHTMLの量が少ないと、ちゃんと表示されるんですが、 HTMLの量が多いと、そのpage部分全てが表示されなくなります。 何が原因なんでしょうか?教えてください。
マルチ注意
Smartyに関する質問です。 aaaaa.php <?php require_once("*******/Smarty.class.php"); $smarty = new Smarty(); $smarty -> display("tmp_b/index.tpl"); $smarty -> assign("page","aaaaa"); ?> index.tpl {include file="tmp_b/header.tpl"} {include file="$page.tpl"} {include file="tmp_b/footer.tpl"} という風に書いてあります。 階層やパーミッションとは関係ないと思われます。 $pageの部分に各ページのHTMLが入るんですが、 そのHTMLの量が少ないと、ちゃんと表示されるんですが、 HTMLの量が多いと、そのpage部分全てが表示されなくなります。 何が原因なんでしょうか?教えてください。
125 :
nobodyさん :2011/03/22(火) 22:12:28.54 ID:mmCJS+/m
imagecreatefromstringで読み込んだ画像の形式(JPGとか)を返してくれる関数ってありませんか? バイナリからいちいち確認するしかないですかね?
imagecreatefromstringで読み込んだ画像の形式(JPGとか)を返してくれる関数ってありませんか? バイナリからいちいち確認するしかないですかね?
127 :
nobodyさん :2011/03/23(水) 02:33:11.47 ID:yBezdspD
アップロードする画像の管理について質問です(mysqlとの絡んだ話になります) 写真をアップするとき、ファイルの形で保存して、その保存パス+ファイル名までの情報を DBに登録する方法があると思います。 例えば、 カラム構造> id | comment | fileType | path データ例 >123 | りんごです | jpg | /upfile/user1/gallery/xyz このとき、ファイル名(xyz)はどういう風に決めたら良いでしょうか? 乱数でも何でも良いのはわかるんですが、自分としてはカラムのID123をファイル名の 一部にでも使って決めたいんです その場合、クエリを2回に分けて、lastinsertidを使って入れるしかないでしょうか? 変にこだわりなんでしょうか。 画像ファイルのパスをDBに入れていく方法をとるとき、みなさんは乱数とかで名前決めてますか? ファイル名の定義は賢いやり方があるんでしょうか?
サロゲートキーとファイル名を対応させるのがにんともかんとも
>>127 クエリを二回に分ける意味が分からんが、普通にID名をタイムスタンプの頭につけた文字列にrenameしてから保存すればいいのでは。
>>120 <meta http-equiv="Pragma" content="no-cache">
header("Pragma: no-cache");
これは同等とも取れるし、まるで異なるともいえるよ。
>>119 の最初の2行を見て静的なHTMLを出力するように見えるかっていうと
そうでもないし、何を注意すればよいのか。
>>127 idがオートインクリメントなら、直前に登録したidを出力する関数があるはず。
mysql_insert_idだったかな。それ使えばクエリ一度のみ、一発でいける。
>>127 SHOW TABLE STATUS WHERE Name = 'table'
カラム Auto_increment が次の値
>>119 ブラウザによる。キャッシュするサーバーなんかはタグなんか見ないんじゃないかと。
いろんなブラウザでテストしてよしとするか、ダミーのパラメータつけるとか。
>>127 自分の好きなようにやればいいが、ファイル名にIDいれてそのファイル名をDBに保存するのは賢くない。
賢くない=馬鹿 ?
突然すみません。 簡単な検索エンジンを作ろうと思い、本のサンプルデータを改造しようと思ってデータを展開したところ、データベースへの接続がうまくいかなくなってしまったので質問させてください。 出ているエラーは次のとおりです。 Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:\xampp\htdocs\PHP_Samples\samples\chapter15\15-5\link.php on line 207 タワツウ・ィ・鬘シ このサンプルデータは外部ファイル(config.php)からデータベース名、ユーザー名、パスワードを取得しているらしく複雑です。 まず、cnfig.phpにて、 define("DBSV", "localhost"); define("DBNAME", "link"); define("DBUSER", "root"); // ユーザ名(要変更)※変更しました。 define("DBPASS", "secret"); // パスワード(要変更)※変更しました このように設定します。 次にlink.phpにて <?php require "config.php"; ?> でconfig.phpに接続したのち、 // ================================================= // ----- db接続 // ================================================= function db_conn() { $conn = mysql_connect(DBSV, DBNAME, DBPASS) or die(mysql_error()); mysql_select_db(DBNAME, $conn); return $conn; } このようにしてconfig.phpからデータベース名、ユーザー名、パスワードを取得しているようです。 そしてMySQLの方の設定でもlocalhost, root, secretの設定は行なっております。 ここでlink.phpにアクセスすると、上記のエラーが生じる状況です。まだ設定したりない部分があるのでしょうか? ちなみに「PHPによるWebアプリケーションスーパーサンプル第2版」の15章のリンク集の項を使っています。 長くなってしまいましたが、どうかよろしくお願いします。
あ、ちなみにエラーの「line 207」は $conn = mysql_connect(DBSV, DBNAME, DBPASS) or die(mysql_error()); この行を指しています。 連レスになってしまいすみません。
DBNAMEとDBUSERがごっちゃになってんじゃないの?
139 :
>>1嫁 :2011/03/23(水) 15:41:09.54 ID:???
ここはサポートじゃねえんだよ 検索エンジンを作るって検索システム構築の間違いだろ そんな複雑なアルゴリズム組めるようなやつが質問するとは思えんしな
>>138 レスありがとうございます!
すみません、上記のコードを貼り間違えておりました。
正しくは
>>138 さんの指摘通り、
// =================================================
// ----- db接続
// =================================================
function db_conn() {
$conn = mysql_connect(DBSV, DBUSER, DBPASS) or die(mysql_error());
mysql_select_db(DBNAME, $conn);
return $conn;
}
こうでした。本当に申し訳ありません。
DBの権限が無いだけなのでは
>>140 MySQLの設定(ユーザー追加、権限設定)はちゃんとやってあるの?
やり方は多分その本に書いてあると思うけど。
Access denied for user 'root'@'localhost' (using password: YES)
ってのは単純にそのユーザ名・パスワードで接続する権限が無いよ、って言ってるだけだからPHPの構文エラーじゃない
> このサンプルデータは外部ファイル(config.php)からデータベース名、ユーザー名、パスワードを取得しているらしく複雑です。 全然複雑ではありません。至極普通です。
>>141-142 ありがとうございます。どうやら権限の問題のようですが…どうすれば権限を設定できるのでしょうか?
新しくユーザーを登録するのか、特権から編集するのか…。まだ駆け出しなので詳しくはわからないので、ご教示いただけると助かるのですが…
>>133 すまん。
すまんが、知識人からみて解説を含めたレスをしてほしい。
俺は
>>120 が初心者とは思わないが、勘違いしている節があるように思える。
xamppは初心者が使うべきではないと、何度も言われているよ。 最初からIDE使ってると、なんかあったときに何も出来なくなるのと同じ
>>144 その本に書いてないのか?
mysqlクライアントにログインしてコマンドラインで操作設定してもよし
PHPMyAdmin使って設定するのもよし
これらの用語すらわからないなら、Mysqlの初心者本を見るかググってくれ
最初のはhttpヘッダーをどこで設定するかの違いに過ぎない ブラウザは同じヘッダーを受信するしやってることは全く同じ >これは同等とも取れるし、まるで異なるともいえるよ。 こんなツッコミじゃ何か言いたかっただけちゃうんかと初心者乙と思われても仕方ない ブラウザにキャッシュさせないなら意味は通じるけど 掲示板などをキャッシュさせないという言い方だとサーバ側の話と勘違いされる この場合毎回ログから静的html(キャッシュ)を生成してそこにアクセスするという方式ではなく ログを動的に読み込んで表示したいと捉えかねないってことかな まぁ全体をみてhttpヘッダーの話だなぁと分かるけどどのみちスレ違い
ID出さない質問者に熱くなる馬鹿ども
METAタグを記述すればHTTPヘッダが飛んでくるかのように書くからだめなんじゃん。
そういう書き方をしてるから、勘違いしている節があると思った。
ブラウザがどう解釈するかだろ httpヘッダの実装なんてブラウザ依存なんだから
>>149 rootのlocalhostの権限を設定してあるか確認してみてください。
変な文字は EUCの 接続エラー という文字が化けたものです。
155 :
>>136 :2011/03/24(木) 11:47:19.52 ID:7Ll3gOeT
>>154 ありがとうございます!
phpmyadminにて「ユーザ 'root'@'localhost'」のグローバル特権には全てチェックがついており、リソースの制限はすべて解除(ゼロ)、
ログイン情報は ユーザ名:テキストフィールドの値:root ホスト:ローカル:localhost パスワード:テキストフィールドの値:secret
このように設定されています。
これでlocalhostの権限は設定されていることになっていると思うのですが、何か不備などあるのでしょうか?
いつまで経っても解決せずすみません…
その設定がDBNAME=linkに対して有効な設定なのかどうか
158 :
>>136 :2011/03/24(木) 13:38:28.27 ID:???
>>156 'root'@'localhost' の特権を更新しました
REVOKE ALL PRIVILEGES ON `link` . * FROM 'root'@'localhost';
GRANT ALL PRIVILEGES ON `link` . * TO 'root'@'localhost' WITH GRANT OPTION ;
上記のようにphpmyadminにてデータベースに固有の特権を与えてみたのですが何も変化はありませんでした…
>>158 phpmyadminでログインしているユーザとパスワードで試してみたら?
rootには始めはパスワード設定されてないと思うけど secretをパスワードとして設定したの? それともphpmyadmin使ってないから判らんけど表示上secret(非表示)って意味?
161 :
>>136 :2011/03/24(木) 15:00:10.50 ID:???
みなさん本当にありがとうございます。
こんな簡単な問題もクリアできず情けないです。
>>158 ユーザroot、パスワードsecretというアカウントでいつもログインしています。
新しいデータベース、linkの権限をrootに追加しようとしているのですが、それもうまくいってないみたいです…
>>159 はい、secretをパスワードにしています。
162 :
nobodyさん :2011/03/25(金) 17:53:39.59 ID:Li7RFmgk
array(2) { ["count"]=> int(30) ["value"]=> array(7) { ["title"]=> string(4) "test" このtitleを取得するにはどうアクセスしたらいいのでしょうか?
$配列名["value"]["title"]
164 :
nobodyさん :2011/03/25(金) 18:09:30.15 ID:Li7RFmgk
目的は自サイトのページ量産です。 phpを利用して、TOPページの内容が変化するサイトを作りました。 このTOPページを、毎日 .html で保存をするにはどうしたらよいのでしょうか? 毎回別名で保存し、名前がかぶらないようにしたいです。 保存したいのは、phpのコードではなく、表示された結果のHTMLです。 お願いします。
>>165 スパムブログを作るんですね、わかります
うるせーてめーには関係ねーよ はい次
一番簡単なのはcronで一日一回回すようにする
$html = file_get_contents ( "
http://www.yahoo.co.jp " );
で、htmlを取得して
date()あたり使って絶対かぶらない名前にして保存する
169 :
165 :2011/03/25(金) 20:41:00.78 ID:???
自己解決した。
170 :
>>136 :2011/03/26(土) 00:43:28.34 ID:???
>>136 です。
XAMPPごと入れなおして再度試してみたらできました…
ありがとうござました!
初心者はxampp使うな
初心者も安心xampp大先生
なんかまずいの?
システム開発業者だってXAMPPですよ。 便利だもん。
それは初心者なのか?
海外サーバーを経由してネットする方法を詳細にしるした書籍もしくはサイトを教えてください 悪いことをするつもりはありませんがw wikileaksのハッカーに興味をもっております 彼らは、どうやってするのでしょうか?非常に興味があります。よろしくお願いします。すいません。マルチします。
華麗にスルー
>>176 私の書いた本とサイトで詳しく紹介しています。
よかったら見に来てください。
いやいや、○○○○○、○○○。○○○○だろw
PHPは時代遅れ わははっははっは
182 :
l :2011/03/26(土) 22:01:36.41 ID:1s9TWIqI
>>176 それすら見つけられない奴には教えても無駄
そういうのを見つけられる、見つけるのが楽しい奴じゃないとな
お前には素質がない
ここで聞くのは「見つける」ことに含まれると思うんだが
含まれない
見つけるってのは自力でやることをいうんだろ 他力本願なのは見つけるとは言わない
187 :
nobodyさん :2011/03/27(日) 12:46:30.86 ID:eVWvVwuN
WindowsでPHP5.3.6にうpグレードできずPHP5.3.5で止まってる素人さんってこのスレに多いですか?
俺はWindowsには入れてない素人さんです。
回答してる側はソースからビルドぐらい出来るはず 質問する側は知らんけど
190 :
nobodyさん :2011/03/27(日) 15:49:44.78 ID:g9B42EJL
PDOを使うとMySQLとPostgreSQLを意識せず同じコードで同じ事が出来るという認識でよいでしょうか?
>>190 細かいところで違和感は残るかもしれませんが基本的には同じだと考えて良いです。
>>190 基本的にはね
もちろん最初のデータベース接続の設定方法が異なるけど
あとはデータベース固有の定数なんかが用意されてたりするけど
そういう固有のものを使わなければ問題ない
193 :
nobodyさん :2011/03/27(日) 16:22:03.59 ID:qy9/iTdT
http://q.hatena.ne.jp/1301134507 > Facebookの友だち検索で、スカイプSkypeネームとSkypeのパスワードを入力して
> コンタクトリストを取得している機能があります。
> これはどのように実装しているか教えてください。
> (使用言語やapi,ライブラリなど)
> もちろん予想になると思いますが
誰かこの質問わかります?
回答があまりつかない。。。
>>191-192 ありがとうございます
同じコードになってしまったのでこれで大丈夫なのか不安になっていました
いいってことよ
197 :
nobodyさん :2011/03/27(日) 19:04:41.19 ID:qy9/iTdT
>>194 Windowsはdllインストールしたらいけるらしいけど、
Linux+PHPでも実装可能なの?
199 :
nobodyさん :2011/03/27(日) 19:24:29.97 ID:qy9/iTdT
>>198 ありがとうございます。
そうです。さくらインターネットでやる予定です。
これによると、LinuxはCかPythonでAPI叩けるということかな?
だとすると、CかPythonで作ったプログラムを、PHPから起動したらいけそうですね。
ちょっと詳しく読んでみます。
200 :
nobodyさん :2011/03/27(日) 22:11:46.25 ID:9+a3qRqA
$_ENVをhtaccessとかで設定できない? SetEnvしたら$_SERVERに入ってきた
は?
ひ!
$_SERVERに入ってちゃまずいのか? そういうもんとして受け入れるしかないだろ >$_SERVER >$HTTP_SERVER_VARS [非推奨] >$_SERVER -- $HTTP_SERVER_VARS [非推奨] ? サーバ情報および実行時の環境情報
古いサンプルファイルがEUC-JPで書かれているのですが、UTF-8で統一したいと思ったのですが、いまひとつ理解できなかったので質問させてください。 //データをSQL用に変換 function cnv_sqlstr($string) { // 文字コードを変換する $det_enc = mb_detect_encoding($string, "EUC-JP, SJIS"); if ($det_enc and $det_enc != ENCDB) { $string = mb_convert_encoding($string, ENCDB, $det_enc); } // バックスラッシュを付加する $string = addslashes($string); return $string; } //表示する文字コードに変換 function cnv_dispstr($string) { // 文字コードを変換する $det_enc = mb_detect_encoding($string, "EUC-JP, SJIS"); if ($det_enc and $det_enc != ENCDISP) { return mb_convert_encoding($string, ENCDISP, $det_enc); } else { return $string; } } ENCDBとENCDISPにUTF-8を代入すれば自動的にエンコードされるかな…と思って書き換えてみたのですが文字化けを起こしただけでした。 ちなみにENCDB、ENCDISPには最初どちらにも'EUC-JP'が定義されていました。 MySQL側はutf8_general_ciで照合しています。 どうかよろしくお願い致します。
理解できないのは人の話を聞かないからです スレタイから読みなおしてください
$_ENVと$_SERVERは使うな!!!!!!!!!!!!!!!!!!!!!!! getenvを使え!!!!!!!!!!!!!!!!!!!!
$_ENV+$_SERVERでおk
208 :
。 :2011/03/27(日) 23:12:44.21 ID:???
>>204 そのサンプルは古すぎて文字コード以外の問題が山盛りのように見えます。
使うのやめたほうがいいような
そもそも、UTF-8で統一するなら、変換する必要ないでしょう。
$_ENVと$_SERVERは使うなっ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
使うな使うな言うなら理由をつけろ無能が
理由を知らないほうが無能だろw
無能は理由なんか知らなくていいから使うな
またこのパターンか 馬鹿は答えなくていいよ
馬鹿は質問しなくていいよ
こんなの常識だけどXAMPPとか使ってる人にはわからないのかもね ggれば答えが見つかるのにその程度の行動もしないで理由を付けろとはおめでたいなw
環境依存だから、わからん奴は逃げとけって話だな。
つまりXAMPP最強ということか
補足もしないであとはググレとか言うなら最初から答えるなよ。
知らないならググレよ。
たまにはヤフれよ
ヤフーはなんか左側にスペースが出来たからいらない
日本人ならgooを使え
223 :
nobodyさん :2011/03/29(火) 16:26:26.63 ID:v6z2krre
【OS名】Linax 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL 【質問内容】 チャーハン1 チャーハン2 チャーハン定食1 チャーハン定食1デラックス こんな感じのデータを SELECT * FROM AAA WHERE menu LIKE 'チャーハン%' とすると、全部マッチしますよね。 それをチャーハン1とチャーハン2だけ引っ掛けたいんですけど どうすればいいですか? おねがいします。
データを変更 チャーハン1 チャーハン2スペシャル チャーハン定食1 チャーハン定食1デラックス チャーハン1とチャーハン2スペシャルを引っ掛けたい
227 :
nobodyさん :2011/03/29(火) 21:46:51.55 ID:R+6dPG5f
どんだけチャーハンが好きなんだよ。
チャーハンは嫌いです。でも焼き飯はもっと嫌いです。
229 :
nobodyさん :2011/03/30(水) 23:34:14.94 ID:wo0sOChz
MySQLのレコードを30万件ぐらい配列に代入して集計しようとしたところ メモリ不足でエラーになりました。 memory_limitの数値を増やすと解決しましたが、 今後レコードがどんどん増えていくと思い、どうすればいいか悩みます。 良き設計のアドバイスを教えてください。
230 :
nobodyさん :2011/03/30(水) 23:40:03.11 ID:OED8b/fD
$time = "2000年3月09日 14時02分01秒"; これの1時間36分35秒後の日時に直す方法を教えてください
>>230 $time = "2000年3月09日 14時02分01秒";
list($y, $m, $d, $h, $i, $s) = sscanf($time, "%d年%d月%d日 %d時%d分%d秒");
echo date("Y-m-d H:i:s", mktime($h + 1, $i + 36, $s + 35, $m, $d, $y));
>>232 このコードをforで回してみたら無限ループするのだがなんで?
$time = "2000年3月09日 14時02分01秒";
$date =DateTime::createFromFormat("Y年n月d日 H時i分s秒",$time);
$date->add(new DateInterval("PT1H36M35S"));
echo $date->format("Y-m-d H:i:s");
>>233 $i とか使ってるからじゃね?
>>234 >$i とか使ってるからじゃね?
正解!
Pear::DateとかZend_Dateとか使おうぜ… $date = new Date('2000/03/09 14:02:01'); $date->addSpan(Date_Span::setFromArray(1,36,35)); $date = new Zend_Date('2000/03/09 14:02:01', 'yyyy/MM/dd HH:mm:ss'); $date->add('1:36:35',Zend_Date::TIMES);
PECLは許容できるが外部APIとかイラネ
外部API・・・?Google Libraries APIでも使って計算するのか?
PEARは外部APIだろ 梱包されてたっけ?
それはただのライブラリだ
個々の関数群をAPIと言うんだが
ここはpreg_matchの出番だろ
243 :
nobodyさん :2011/03/31(木) 10:15:19.24 ID:Zox++tkq
標準機能とzend_dateを使う違いが何ですか?
244 :
nobodyさん :2011/03/31(木) 11:15:39.35 ID:h2409w8r
mysql_escape_stringって$sql対してやればいいのですか? $sql = ちょめちょめ mysql_query($sql);
>>244 そうです。これでOK。
$sql = "<a href='
http:// '>こんばんは</a>";
mysql_query($sql);
246 :
nobodyさん :2011/03/31(木) 19:51:40.19 ID:bNgmJBKg
247 :
nobodyさん :2011/03/31(木) 23:27:56.48 ID:DidIPsUA
返すHTML・XMLはPHPで動的に出力したリソース. それはRESTと言っていいのでしょうか。
248 :
nobodyさん :2011/03/31(木) 23:28:32.22 ID:DidIPsUA
サーバーからURLにアクセスするとHTMLまたはXMLを返す ものがRESTのようなのですが、 返すHTML・XMLはPHPで動的に出力したリソース. それはRESTと言っていいのでしょうか。
OK
墨汁
>>246 失礼しました。
$sql = "<a href='
http:// '>こんばんは</a>";
mysql_query($sql);
mysql_escape_string($sql);
queryの手前でないと意味ないだろw
こう?
$sql = "<a href='
http:// '>こんばんは</a>";
mysql_escape_string($sql);
mysql_query($sql);
254 :
nobodyさん :2011/04/01(金) 11:42:21.20 ID:lsqQ9UYG
そう
255 :
nobodyさん :2011/04/01(金) 11:58:37.40 ID:MzNzUG4D
データベースからデータを取得して表示するときはmysql_escape_stringとhtmlspecialcharsどっちを使うのでしょうか?
htmlspecialcharsは使うけれど、mysql_escape_stringは使わない
駄目でしょ。
>>253 $sql = mysql_escape_string($sql);
260 :
nobodyさん :2011/04/01(金) 15:59:54.40 ID:afTaUKmE
先生方教えてください $n = str_pad(chr(0), 1); $m = chr(0) . " "; 1行目と2行目の結果は同じかと思いきや異なりました。 理由を教えてください。
なぜ同じになると思ったの?
262 :
260 :2011/04/01(金) 17:08:30.71 ID:afTaUKmE
$n = str_pad("a", 1); $m = "a" . " "; が同じになるからです・・・! str_pad(chr(0), 〜); バイナリ操作を行う所で上記処理が出てきたのですが この動作がどうなっているのか理解したくとも 検索しても情報が見つからない状況です。
同じにならねー
264 :
260 :2011/04/01(金) 17:42:46.66 ID:afTaUKmE
あるぇ〜? さーせん出直してきます
265 :
nobodyさん :2011/04/01(金) 17:43:50.56 ID:mfU7bDo9
今日気づいたのですが、PHPでMySQLのSQLでUPDATEするとき、 $point = null; $sql = "UPDATE users SET point=point+" . $point; と言うように、$pointがNULLだとpointの数値が0になるんですね・・。 htmlspecialcharsとかmysql_escape_stringはやっていたのですが、 上記のようにNULLが入る場合、元のデータが0になるとは思いませんでした。 現状、$pointの箇所はfloor($point)としているのですが、 これで正しいのでしょうか?一応、元のデータが0になることはありませんが
>>265 $pointにnullを代入し、文字列に変換すると空文字列になる。
つまり
$sql = "UPDATE users SET point=point+" . $point;
は
$sql = "UPDATE users SET point=point+";
と同等。
MysqlがそのSQL文をどう解釈してpointを0にしたのかはわからんが。
floor($point)とすると、floorの引数は数値なのでPHPは$pointを数値に変換しようとする。
$pointはnullなので数値に変換すると0になるから、floor(0)を実行したのと一緒。
わざわざfloorなど関数をつかわなくても、(int)$point として整数にキャストするか、
($point + 0) として整数に自動変換させればいい。
null との 結合は null になるよ で、 not null設定ならデフォルトの値になる。 数値型なら 0。
関係なかった。ごめんな。
269 :
nobodyさん :2011/04/01(金) 19:39:42.27 ID:BDvvPYeQ
function put(str) { file_put_contentsでstrを書き込む } function get() { echo file_get_contents(読み込むファイル); } ファイルは1行1データ。 ファイルに書きこむときhtmlspecialcharsをやってから改行を<br>に置換します。 htmlspecialcharsはget()のところでも必要ですか?無駄ですよね?
何がしたいのかわからないけど そもそもfile_put_contentsで書き込むならhtmlspecialcharsは必要ないし getのとこで使うならhtmlspecialchars_decodeだろ
271 :
nobodyさん :2011/04/01(金) 19:56:39.02 ID:nS5vkIwg
このスレで誰が一番有名人であるかランキング付けようぜ 1〜10位までよろしく
nobodyさんじゃない?
nobadyさんじゃない?
nobadyさんだと思う。
今日はうそつきの日。
277 :
nobodyさん :2011/04/02(土) 19:06:14.59 ID:WGztucO0
1000ページ以上のページを管理する場合はどのフレームワークを利用したらよいでしょうか? コードサンプルを貯めておくだけのサイトなので日増しにページ数は増え続けます
フレームワーク関係あるんかいな CMSの勘違いなら板チだからWeb制作板にでも行ってくれ
落ち着け誰もCMSの話はしてないようだ
既存ページの管理にフレームワーク使うっておかしな話 アプリケーションを組み直すってわけじゃないだろうし
281 :
nobodyさん :2011/04/03(日) 00:20:09.13 ID:CqpmkeeN
コードサンプルの意味がわからんな。 単にHTMLが生成されるって意味じゃないだろうし。
フレームワークじゃなくてファイヤーワークスの間違いだろう flameもfireもどちらも火や炎という意味だから間違いやすいからな
ファイヤーフォックスかもしれんぞ
なんのこっちゃ
>>283 ←フレームワークとファイヤーフォックスを混同してるバカ発見w
糞つまらないのは本人の所為であって2chの所為ではありません
290 :
nobodyさん :2011/04/03(日) 12:03:14.15 ID:CEjM5iXG
ライブドアの天気RSSを読み込んでtitleの部分を出力したいのですが何も表示されません
どなたかご教示お願いします
$url = '
http://weather.livedoor.com/forecast/rss/earthquake.xml ';
$xml = new XMLReader();
$xml->open($url);
while ($xml->read()) {
if (XMLReader::ELEMENT == $xml->nodeType) {
if ('title' == $xml->localName) {
echo $xml->value. "\n";
}
}
}
>>4 ,
>>6 1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
なんでだぶってるの?
と思ったら荒らしか
ここのカス共にXMLReaderなんて使いこなせませんw
if ('title' == $xml->localName) { $xml->read(); echo $xml->value. "\n"; }
296 :
nobodyさん :2011/04/03(日) 15:24:06.21 ID:VZI/JFbc
RSSが更新されてたら取得するというのはどのように実装したらよいでしょうか? 技術的に無理でしょうか?
cronやアクセス来たごとに、チェックプログラムを起動。
RSS配信サーバ側がそういう風(プッシュ型)にしてなければリアルタイムでは無理だろう 迷惑にならない頻度でたまに更新があるか見に行く必要がある(1秒に1回とかは岡崎図書館になりかねないので1時間に1回とか)
岡崎図書館は1秒に1回だから逮捕されたわけじゃないぞ 1時間に1回でもサーバーがダウンしたら逮捕されるぞ!!
Last-Modifiedでいいじゃん
Last-Modifiedでも逮捕されるぞ!!
リクエストがheadなだけでやってることは同じです
全然違うだろw転送量とか意識したことないんだなw
岡崎図書館って転送量が問題になったの?
逮捕されるとかマジで?
307 :
nobodyさん :2011/04/03(日) 23:29:36.16 ID:K4LtsUMu
$ary = array("aaa", "bbb", "ccc"); echo "<ul>"; foreach ($ary as $v) { echo "<li>".$v."</li>"; } echo "</ul>"; もしforeachの中で$aryが空だと分かればulタグを出力しないで<p>空です</p>と出力するにはどうしたらよいでしょうか? $aryが空かどうかはforeachの中でしかチェックできない仕様のためどなたかご教示お願いいたします
308 :
nobodyさん :2011/04/03(日) 23:41:58.04 ID:ZIlKnwAq
if文で if($ary=null) { echo <p>空です</p>; } else{ foreach ($ary as $v) echo "<li>".$v."</li>"; }
309 :
nobodyさん :2011/04/03(日) 23:43:06.44 ID:K4LtsUMu
そのような事も考えたのですがforeachの中でしかチェックできない仕様なので。。。
空だとそもそもforeachの中に入らないと思うが
んなことない
>>309 空だとエラー出るからそもそもコードが間違ってるな
あとforeachの外いじれないのに外の<ul>制御しようってのが矛盾してるぞ
どうしてもやるならクライアントサイドで書き換えるって手になる
313 :
nobodyさん :2011/04/03(日) 23:50:44.04 ID:K4LtsUMu
解決しました
314 :
nobodyさん :2011/04/03(日) 23:51:23.36 ID:K4LtsUMu
すみません空というのは$ary = array()の事を伝えたかったのです
どんなふうに解決したのか教えてください 正直、信じられません
こんなの難しいレベルでもねえだろwwwwwwwwwwwwwwwwwwwwwww
317 :
nobodyさん :2011/04/03(日) 23:55:42.66 ID:K4LtsUMu
>>306 被害者が訴えさえすれば逮捕されることも有り得るということだな。
岡崎図書館の場合は結局不起訴(事実上の無罪)になったが、20日間も警察に拘束された事実は消えない。
第3者機関はシステムに問題があると指摘したが、結局システム会社も図書館長もシステムの不備は認めず仕舞い。
一旦振り上げた手はそう簡単に降ろせないわけだ。大人とはそういうもの。
320 :
nobodyさん :2011/04/04(月) 15:08:49.89 ID:eDunUa2Z
今ってデータベースはPDOだけ使えばいいですか?
PDOなんかいらない! MySQL関数で十分だ!!
322 :
nobodyさん :2011/04/04(月) 15:16:28.83 ID:uKnLpE6z
ありがとうございます PDOのがいいんですね これからPDOを使うことにします
323 :
nobodyさん :2011/04/04(月) 16:40:57.86 ID:1s3/8KTt
urlencode(日本語).jpg 見たいな感じでキャッシュつくって読んでみたら、 ブラウザによっては勝手にデコードされるんですけど。。。 何か良い手はありませんか?
何に対してよい手を探しているのか。 ファイル名変えたら?
>>324 デコードされないように追加変換する事にした。
ファイル名の変更は現実問題として無理なのでNGです。
ありがとう。
お前らわかってて質問してるだろwww
てことはファイル名を変更したんじゃないのか 解決したならいいが
328 :
nobodyさん :2011/04/04(月) 21:26:32.22 ID:9VudboYI
$im = imagegrabscreen(); header('Content-type: image/png'); imagepng($im); imagedestroy($im); これをWindows Vista+apache+PHP5.3.6で実行すると真っ黒な画像が表示されてしまいます サービスの設定で「デスクトップとの対話をサービスに許可も済んで、apacheの再起動もやりました 何が原因でしょうか?
下記の内容で困っています・・・。 サイトA IE→ログイン可能 Firefox→ログイン可能 Chrome→ログイン可能 サイトB IE→ログインできない Firefox→ログイン可能 Chrome→ログイン可能 という謎の現象が発生しております。 サイトAとサイトBのスクリプトは全く同じで、 Cookie周りが怪しいなと思っているのですが、 その場合、どこを見ればわかりやすいでしょうか
>>328 ホウ!こんな面白そうな関数があったのか!
331 :
nobodyさん :2011/04/04(月) 21:43:23.07 ID:8EkRwCFf
opensocialのmixiアプリ開発をしています。 phpの知識もフレームワークの知識もゼロで、手持ちの本を見ながらやってるのですが 完璧に行き詰ってしまって困っています。 javascriptを利用してサーバサイド側のcakePHPフレームワークを介してデータをやりとりするというところなのですが、 通信を開始してもまったく返答がないので何かしらのエラーがあるのは確実なんですが、cakePHPのデバッグ方法がわからず、 一体どこでエラーが起きているのかまったくわからない状態です。 何かエラーの原因を探る方法があればご教授ください。
332 :
nobodyさん :2011/04/04(月) 21:46:04.32 ID:9VudboYI
解決しました
>>331 cakePHPよりCodeIgniterがお勧め
cakePHPの教本よりもCodeIgniterの日本語マニュアルのほうが親切で分かり易い
cakePHPはもう今の時代にはコードが古いので乗換えをお勧めする
334 :
nobodyさん :2011/04/04(月) 21:53:00.10 ID:vvCt2F5b
<?php $cookie = setcookie("TestCookie", 1); var_dump($_COOKIE); var_dump($cookie); ?> 上記の実験をしてみると Firefoxでは int (1) bool (true) が返るのですが IEでは array (0) bool (true) と返ってきます。 IE自体のCookieは有効なのですが、 なんでCookie登録されないのでしょうか・・・。
フレームワークの変更は現実問題として無理なのでNGです。
337 :
nobodyさん :2011/04/04(月) 22:00:36.54 ID:vvCt2F5b
>>336 setcookieって$_COOKIEに入るものではないんですか?
setcookieはクライアントにHTTPヘッダーでクッキーを送信するもの $_COOKIEはクライアントがHTTPリクエストするときに送信してくるもの
だからそのページをリロードすればIEでも同じ結果になるんじゃない?
340 :
nobodyさん :2011/04/04(月) 22:09:22.69 ID:vvCt2F5b
>>339 何度もリロードしていますが、
一向にIEには値は入らないです・・・。
つーか、var_dump($_COOKIE); の結果が int (1) ってどうなのよ??
342 :
nobodyさん :2011/04/04(月) 22:10:37.83 ID:vvCt2F5b
>>341 すみません省略してしまいました。
実際には
array("TestCookie" => int(1))
です
じゃぁIEのセキュリティポリシーの問題じゃないの?
344 :
nobodyさん :2011/04/04(月) 22:15:34.84 ID:vvCt2F5b
>>343 ごめん、
>>329 でID出し忘れてたのか
サイトA
IE→ログイン可能
Firefox→ログイン可能
Chrome→ログイン可能
サイトB
IE→ログインできない
Firefox→ログイン可能
Chrome→ログイン可能
こんな感じで、別の同じスクリプトでは有効になっているので、
IEの設定ではなく、サーバ側の設定と見ています
サーバのCookieの設定でIEだけ無効になるようなものってありましたっけ
さくらのVPSに php 5.3.6+APC 3.16を入れて input type=fileで送信されたファイルをphpで受け取る際に、 APCとAjaxを利用して、プログレスバー的なものをしようとしています。 その際、ファイルが正常に入力された場合、想定通りの動きをすんですが、 ファイルを入力せず送信した場合 [firefox] index.php(POST先)と名前のついた 0kbのファイルをダウンロードしそうになる [IE7.0] ページが表示されない という挙動を示します。 action先を変えたり、action先のプログラムを差し替えたりすると再現せず、 またAPC_UPLOAD_PROGRESSをhiddenで埋め込むのをやめると、通常通りの挙動(ファイルが入力されていないこと表示) を示します。 Ajaxで表示に使用しているjsファイル、script類をすべて読み込まないよう 設定しても再現します。 エラーも何も出ず、このようなケースは初めてなので困っています。 何か原因として考えられることはあるでしょうか?
346 :
345 :2011/04/04(月) 22:23:52.98 ID:rHhHUBKG
すいませんsageてました。。
347 :
345 :2011/04/04(月) 22:26:59.30 ID:rHhHUBKG
追記: 送信側のフォームを表示するプログラムと、action先(受け側)のプログラムは同じプログラムで GETのmodeという値によって、動作が変化するようになっています。 挙動を確認したところ、空のindex.phpをダウンロードしようとする場合には print "test"; と頭に書いてみても、空のままです。
>>344 phpinfo見比べてみたら?
あとはパケットモニターしてサーバーから送られてくるメッセージを比較してみるとか
349 :
。 :2011/04/04(月) 22:32:16.62 ID:???
>>328 XPだが、その設定だけでこっちでは動いた。
春休みだからレベル低い回答者ばっかw いや回答者でもねえかw
お前が一番低レベルなんだよ
wつけてるの全部お前だろ?
>>304 とか
確かにレベル低いと思ったら春だったのか
で、
>>350 はレベルの高い回答者なの?
じゃぁ皆の質問を解決してあげたら?
>>333 ど素人なので教本通りに進める以外に方法がないです・・・(´・ω・`)
jQueryを利用して以下のようなコードを実行してcakePHPから返答が返ってこないです
$.post(アドレス, { データ:データ }, function(data, status){
・・・省略・・・
}, 'json');
アドレスは、
http://mobomoga.sakura.ne.jp/source/cakephp/app/accounts/save/です 実行されるfunctionは↓です
function save() {
$this->set("response", false);
}
とりあえず全ての要求に対して"response", falseを返すようにしてみたのですが
そもそもデータが戻ってきません。でも直接上記のアドレスにアクセスするとちゃんと"response",falseを返しているように見えます。
もう何が何やら、、、藁にも縋るような思いです。
どなたかデータが戻ってこない原因に心当たりがあれば教えていただけませんか。
355 :
nobodyさん :2011/04/04(月) 23:23:30.28 ID:vvCt2F5b
>>348 確認したところ、
サイトAではGETリクエスト時に
「Cookie: TestCookie・・・」を送信しているのに対し
サイトBではそのような表記はありませんでした。
>>354 おそらく、ページ見たらわかると思うけど
{"response":false}
じゃなく、
<html>
〜〜〜〜〜
{"response":false}
〜〜〜〜〜
</html>
まで返ってるからじゃない?
CakePHPわからんけど
>>355 やっぱりIEの設定じゃない?
Cookieを常に許可にしてみたら?
非推奨関数使いすぎのCakePHPなんて今すぐ窓から投げ捨てろ
なんとなくだけど、Aero無効、もしくはオーバーレイを無効にしてみたらどうだろうか。
うそー、Cakeってもうだめなのー なにならいいのー
360 :
nobodyさん :2011/04/04(月) 23:44:36.79 ID:vvCt2F5b
>>356 常に許可でも無理ぽいなー
ありがとう
ふと思ったんですが、これってドメイン関係あります?
DNSの設定で、本日ドメインに対してIP割り当てたので・・・。
なさそうかな・・・。
PHP5.2のサポートはもう終わったのにPHP5.3に正式対応してないフレームワークなんて古い制作会社ぐらい
>>354 それだとPHPがHTMLを返してるのが原因。
試しにJavaScriptのコールバック部分に、alert(data);って入れて試してみな。HTMLタグが表示されるはず。
それをJSONデータのみを返すようにする必要がある。
CakePHPわからないから解決策は答えられないけど、Ajax用の設定があったはず。
「CakePHP Ajax」とかでググったらそれっぽいのたくさん出てくると思うよ。
>>355 ,
>>362 ありがとうございます。
cakePHPではjson形式で返すように記述する部分が別にありまして、
そちらのファイルに<?php echo json_encode(array("response"=>$response)); ?>と記述しています。
前述したjQueryのpostのfunction内にalertを記述しても表示されないので、コールバック関数が呼ばれず
おそらくデータを取りに行ったまま文字通り何も返答しない状態になっているのかと思われます。
自分なりに考えたのですが、お二人の話から察するに、javaから送られたリクエストを受け取って「"response":false」というものを
セットすることはできているが、上記にある、JSON形式でjavaScriptに返答するファイルにセットされたものが渡されてないという感じっぽいですよね、、、。
となると、cakePHPの内部的な設定を間違えているのかなぁ・・・・。
ここで質問するのはお門違いだったかもしれませんね(´・ω・`)
>>363 そう、JSON返す処理自体は正しいんだけど、JSONデータの表示がHTMLテンプレートの中に組み込まれてる状態だから
JSON返すページのみHTMLテンプレートを使用しないように設定すればいいんだと思う
365 :
nobodyさん :2011/04/05(火) 01:20:59.01 ID:O9iT5e/s
Cookieの件ですが解決しました まさかサブドメインにアンダーバー(_)が入っているとIEで使えないとか・・・。 いい勉強になりました
ドメイン名にアンダーバーは使用禁止だから、セキュアな方向に進んだんだな。よいことだ。
質問するときにID出さない奴には要注意
368 :
nobodyさん :2011/04/05(火) 05:11:36.20 ID:/Jg2TDSU
PC用のページにアクセスしてきた携帯を携帯用のページに飛ばしたいと思っています。 ↓ momo.php?mode=age2 > momokeitai.php?mode=age2 momo.php?mode=age255 > momokeitai.php?mode=age255 のようにしたいです。 この辺の処理はどうしたらいいでしょうか? $UA = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/DoCoMo/",$UA)|| preg_match("/KDDI/",$UA)|| preg_match("/SoftBank/",$UA)|| preg_match("/Vodafone/",$UA)|| preg_match("/J-PHONE/",$UA) ){ } よろしくお願いします<m(__)m>
>>368 header("Location: momokeitai.php?mode=".$_GET['mode']);
.htaccessでしたほうがいい
371 :
nobodyさん :2011/04/05(火) 06:36:47.85 ID:/Jg2TDSU
$UA = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/DoCoMo/",$UA)||
preg_match("/KDDI/",$UA)||
preg_match("/SoftBank/",$UA)||
preg_match("/Vodafone/",$UA)||
preg_match("/J-PHONE/",$UA)
){
header("Location: momokeitai.php?mode=".$_GET['mode']);
}
これでやってみましたが
momokeitai.php?mode=
でIDの部分が空のまま転送されます。・゚・(ノД`)・゚・。
なんででしょう
>>370 .htaccessは負担が重いので使えません(´;ω;`)
372 :
nobodyさん :2011/04/05(火) 06:42:35.99 ID:/Jg2TDSU
$UA = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/DoCoMo/",$UA)|| preg_match("/KDDI/",$UA)|| preg_match("/SoftBank/",$UA)|| preg_match("/Vodafone/",$UA)|| preg_match("/J-PHONE/",$UA) ){ if(isset($_GET['id'])) { $id = $_GET['id']; } header("Location: momokeitai.php?mode=".$id); } これでできましたありがとうございます!
>>371 modeに何も入ってないとしか・・・
コードは間違ってないと思うよ
$_SERVERはやめましょう getenv('HTTP_USER_AGENT')と書きましょう
375 :
nobodyさん :2011/04/05(火) 10:18:51.89 ID:vfRDyz1b
>>375 public_htmlにhoge1 hoge2作れ
378 :
nobodyさん :2011/04/05(火) 10:26:45.43 ID:O9iT5e/s
>>378 読んだの?htaccessの話なんだけど
380 :
nobodyさん :2011/04/05(火) 10:29:21.42 ID:O9iT5e/s
>>379 ドキュメントルートにapplicationを設置した場合、
public_htmlとapplicationの階層崩れますよね
>>378 だからそうしたいならpublic_htmlにhtaccessでアクセス拒否して
/home/www/hoge/hoge1/public_htmlやらにhtaccessでアクセス許可すりゃいいだろ?
>>382 質問の意味が理解できていないようですね
384 :
nobodyさん :2011/04/05(火) 11:09:02.49 ID:O9iT5e/s
387 :
nobodyさん :2011/04/05(火) 12:06:53.84 ID:uZc7Aq85
変数がセットされている+その値が正しいかを調べる為に if (isset($var) && $var == 1) みたいな書き方をしているのですが、これって正しいですよね? 一応、エラーは出ませんが・・。
正しくないです
変数がセットされている+その値が正しいかを調べる為に if (unset($var) & $var = 1) みたいな書き方をしているのですが、これって正しいですよね? 一応、エラーは出ませんが・・。
正しいです
391 :
nobodyさん :2011/04/05(火) 14:20:25.76 ID:0O+W0/s0
質問です。よろしくお願いします。
$main はCSVより読み込んだテキスト(HTMLタグ付き)が配列で収納されています。
同様に $link にもcsvより読み込んだファイル名を収納しており、このファイル名でファイルを生成します。
・やりたいこと。
ファイルを複数生成し、テンプレートを読み込み、そのメイン記事となる部分にcsvで記載したテキストを表示させたい。
テンプレートファイル内の#include# にmein[] の中身を順に書き出したい
・やったこと
下記プログラム。
csv を配列に収納→ for で配列の数だけ回しながらファイル生成と記事の作成をしようとした。
・問題点
for の中にある $n が有効になっていない?
生成されるファイル名は 配列$linkの[0]から[7]の名前で生成されますが
記事の内容は全て $main[1] が書き出されています。
$main["$n"] の$n が変化していない印象がある。
ファイル一式をUPしました
http://www1.axfc.net/uploader/Sc/so/221739
392 :
391 :2011/04/05(火) 14:21:03.81 ID:0O+W0/s0
for($n = 0; $n < 8; $n++) { $filename = $link[$n].".html";//ファイル名の指定 $main_txt = $main["$n"]; if ( !file_exists ( $filename ) ) {//もしファイル名がなかったら touch($filename); // 新しくファイルを作成 chmod($filename,0666); //テンプレートファイルにある文字列を置換する $keys['#include#'] = $main_txt; $buff = strtr($buff, $keys); $fp = fopen( $filename,"r+"); // 読み書きモードでオープン flock($fp, LOCK_EX); // 書き込みロック fseek($fp, 0); // ポインタを先頭に戻す fputs($fp, $buff); // 書き込み fclose($fp); // ファイルを閉じる }//ファイルがある場合は処理しない } 改行制限のため分割 プログラム一部抜粋しました。
置換後にいくら置換しても変わらないから。
>>393 テンプレートファイルの中身は最初の中身のままです。
置換したものを別ファイル名で保存しているので問題ないと思うのですが。
別の指摘でしたらすいません、詳しく教えてください
いや、$buffの中身が
- $buff = strtr($buff, $keys); + $buff2 = strtr($buff, $keys); - fputs($fp, $buff); + fputs($fp, $buff2); ∧∧ ヽ(・ω・)/ \(.\ ノ 、ハ,,、  ̄
397 :
391 :2011/04/05(火) 15:54:56.13 ID:???
ありがとうございます。試してみます
398 :
nobodyさん :2011/04/05(火) 16:23:39.15 ID:9JKVBGzM
外部サイト(ローカルエリア)の画像ファイルの有無を調べたいのですが、 file_existsでは絶対パスが使用できないので困っています。 何かいい方法ありませんか?
399 :
nobodyさん :2011/04/05(火) 16:48:14.83 ID:RXGsg7Xb
$array = array("test" => "テスト"); $key = "test"; // A echo $array["$teset"]; // B echo $array[$test]; Bなんですけど変数に"や'で囲まなくてもいいのでしょうか? echo $array["'". $test. "'"];な感じに囲むものでしょうか?
401 :
nobodyさん :2011/04/05(火) 16:56:00.18 ID:9JKVBGzM
>>400 うおぉぉ、なぜ思いつかなかったんだ…
ありがとうございます
>>399 $key = "test" なんだから、
$array["test"] = $array[$key] でしょ
> echo $array[$test];
$test は定義されていない
"$key" は文字列の中で$keyが展開されて "test" と同じ
'$key' は展開されないのでそのまま「$key」という文字列になる
"'".$key."'" は "'"."test"."'" = "'test'"
複数のサーバー間で、1Gbytes程度のファイルの転送をしたいです。 file_get_contentsでファイル転送リストを取得、foreachでそれぞれ file_get_contentsでファイルを取得していますが、一定サイズ以上になるとうまくいきません。 ファイルすべてをメモリ上にプールすることなく、取得する方法はないでしょうか。
405 :
404 :2011/04/05(火) 17:02:46.43 ID:WgbWuRE+
404です。
404 File Not Found.
408 :
404 :2011/04/05(火) 17:14:06.76 ID:WgbWuRE+
>>407 WANでしか接続できないサーバーなので、
allow_url_fopenオプションを入れて、fopenで取得しローカルのファイルにfputする、っていう
ことでしょうか。メモリ上にプールされる気がします
memory_limit < file_sizeにすれば正常に取得されます
>>408 fread ですこしずつ読み込んでファイルに保存していけばいい
$handle = fopen("
http://www.example.com/ ", "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
$contents をファイルに書き出し
}
fclose($handle);
× $contents .= fread($handle, 8192); ○ $contents = fread($handle, 8192);
それでもメモリにキャッシュされちゃうか?
412 :
404 :2011/04/05(火) 17:33:17.39 ID:WgbWuRE+
>>409 ありがとうございます。
保存先をファイルポインタ終わりにおいて開き、whileの中でfputしていくようにすると
保存先ファイルのファイルサイズが順調に増え、memory_limit=256Mとしたときでも
980MBytesのファイルを保存できたことを確認しました。
リモートでも逐次読み込み、保存できたとは...ありがとうございました。
413 :
nobodyさん :2011/04/05(火) 17:53:14.48 ID:RXGsg7Xb
file_put_contentsでファイルに追記してるとき ファイルサイズが500MB超えると急激に書き込み速度が落ちるのは何故なんですか? 500MB - 1byteまではベンチ取ったけど速度は一定です PHPで規制されてるのですか?何故ですか?
>>413 memory_limitはどうなってる?
場合によってはOSレベルでメモリスワップが発生しているのかも知れない。
415 :
nobodyさん :2011/04/06(水) 01:21:13.22 ID:tGjaXihe
PEARのライブラリって何ですか?どうやったら使えますか? サイトに使いたいCGIを見つけたのですがライブラリが必要だと書いてあったので… htmlとcssの知識なら少しはあるのですが、PHPは殆どわかりません。
>>415 手頃な教科書から始めてみなよ
案外すぐ覚えられるし覚えて損はないよ
>>416 調べてわからなかったから質問しているのですが…
答える気が無いなら黙っててくれませんか?
正直そういう出し惜しみってかなりウザいんで。
調べてわからなかったら、教えて貰ってもわからないのは自明だ。 本人の能力の問題であって、知る術の問題ではない。 単に能力がないだけ。 素質がない。 いいか、みんな (゜д゜ ) (| y |) 才能がある奴が努力すると 才能 ( ゜д゜) 努力 \/| y |\/ 二つ合わさって天才となる ( ゜д゜) 天才 (\/\/ そして、いいか、みんな (゜д゜ ) (| y |) 無能な奴が努力すると 無能 ( ゜д゜) 努力 \/| y |\/ 二つ合わさって無力となる ( ゜д゜) 無力 (\/\/
いやならないだろ
質問スレなのにggrksは無いわ
421 :
nobodyさん :2011/04/06(水) 03:40:35.14 ID:Zyk6jd4E
PHP 5.2とpearのOAuth Packageを使用しています
twitter APIを利用した投稿後のレスポンスxmlに関してです
$response = $consumer->sendRequest('
http://api.twitter.com/1/statuses/update.xml ', array('status' => $tweet), 'POST');
($consumerはHTTP_OAuth_Consumerのインスタンス)
@ echo mb_convert_encoding($response->getBody(), 'EUC-JP', 'UTF-8');
$xml = new SimpleXMLElement($response->getBody());
A echo mb_convert_encoding($xml, 'EUC-JP', 'UTF-8');
B echo mb_convert_encoding($xml->status->text, 'EUC-JP', 'UTF-8');
@は表示されるのですが、AやBが表示されなくて困っています
422 :
421 :2011/04/06(水) 03:46:57.73 ID:Zyk6jd4E
追記ですが、投稿はできてます
>>421 手頃な教科書から始めてみなよ
案外すぐ覚えられるし覚えて損はないよ
> 、AやBが表示されなくて困っています 「表示されない」の意味が不明
425 :
421 :2011/04/06(水) 04:06:01.54 ID:Zyk6jd4E
投稿後帰ってくるxmlから投稿したテキストや、id等を抽出して出力しようと考えているのですが出力されません
試してないけど見た感じ、$xmlがXMLオブジェクトか配列になってるからだと思う print_rで確認してみな。
あらためて読んでみたけど @がechoで表示されるってことは$response->getBody()の戻り値は文字列ってことで それを次の行でSimpleXMLElementオブジェクトにしているので、 AとBはSimpleXMLElementオブジェクトになっているため、パースしないと文字列として出力することはできない ところで、$response->getBody()の結果は何が表示されてるの?文字列?XML? それがXMLならば、Aの前の行に以下を入れれば、Bが表示できる可能性がある。 $xml = simplexml_load_string($xml);
抽出が目的ならば、出力できないとか表示されないは関係ないね。 抽出はできているのかな? どうやって抽出できているかを確認しているのかな?
あらためて読んでみたけど、
>>425 でXMLが返ってくるって言ってたのか。
それならそのXMLをパースすればいいんだよ。パースっていうのは解析って意味ね。
たぶん、new SimpleXMLElement()を使うのはまだ難しいと思うから、
simplexml_load_string();とかsimplexml_load_file();を使ったほうがいいと思う。
ググって使い方を覚えとくといいよ。これは万能で覚えとけば何でもできるようになるから。
430 :
421 :2011/04/06(水) 04:49:16.84 ID:Zyk6jd4E
>>426-428 ありがとうございます。
>>426 の方のprint_rの出力結果を参考に、
echo mb_convert_encoding($xml->text, 'EUC-JP', 'UTF-8');
に変えたらとりあえず表示されるようにはなりました。出力結果を見たらなぜか親要素のstatusがなくなってました
>>417 PHP殆どわかりませんpearってなんですかとかアホ丸出し過ぎ
設置系は作者に聞けとしかいいようがないよな 作る人向けのスレだし門前払い食らうのは当たり前よ
433 :
421 :2011/04/06(水) 05:25:03.63 ID:Zyk6jd4E
>AとBはSimpleXMLElementオブジェクトになっているため、パースしないと文字列として出力することはできない
まさにそのとおりです。ありがとうございます。自分では
echo mb_convert_encoding($xml->status->text, 'EUC-JP', 'UTF-8');
でパースしているつもりだったのですが、違ったようでした
このページ
ttp://phpspot.net/php/man/php/function.simplexml-load-string.html の例1を例とすると
整形式XML文字列をオブジェクト化しても親要素documentは存在し、$xml->document->titleとなると勘違いしていました
精進します
435 :
nobodyさん :2011/04/06(水) 09:36:06.40 ID:jXnilcjz
なんで質問スレの奴らってちょっと教えてやれば済む事でも ググれとか言うんだろうな。ググってわかったら質問してないわ
ググり方すらわからん奴に教えても無駄だから 普通の人ならググればわかることだから
ググってないから分からない
ググれ以前の問題じゃね?
最低限質問する前にテンプレくらいは普通見るだろ
>>1 と
>>3 を読め
たまに荒れるけど、基本的に淡々と答えてくれる人の多いスレだと思うよ ちょろっと覗いただけで「なんで質問スレの奴らって云々」とか言ってまとめられるとか心外すぎ
ggりもしないで聞くのはマナー違反
ググってから質問しろというルールは無い
>>1 や
>>3 を読んでから質問しろというルールも無い
てか
>>1 とか読まないからルールなんて知らない
このスレのルールじゃなくてネットのルールだろzk
何?
>>1 を読むのってネットのルールなの?始めて聞いた。
はいはい。そこがネットのルールなのね
釣りだろ?それともリアル中学生か? ここまでひどいバカ滅多にいないぞ
春だしなぁ ついさっき家の前でムホォォォ ウホォォォとか叫びながら歩いてる基地外いたし、ほんとコワイわ
どうせググれって言われて顔真っ赤になった質問者が荒らしてるんだろ
質問です
echoってどうやって使うか教えてください
回答者を
>>442 に指名します
使い方がさっぱり分からないのでサンプル付きでよろしくおねがいします
451 :
450 :2011/04/06(水) 18:09:56.74 ID:???
自己解決しました
452 :
nobodyさん :2011/04/06(水) 19:20:05.62 ID:CfTvqrTN
http://jp.php.net/manual/ja/function.ob-gzhandler.php こちらの関数を使ってページを圧縮してみたところ、
IE8では圧縮されずFxでは圧縮されました。
前者では右クリ→プロパティ、後者では右クリ→ページの情報を表示で確認しました。
ChromeやOpera等他のブラウザも調べたかったのですが、
確認方法がわかりませんでしたが、IE以外は対応してると考えていいでしょうか?
2chのページも同じ感じでブラウザから表示して確認したところ、同様の結果になったので、
IEでは対応してないから無理ということなのかもしれませんが、
IEでもページ圧縮を有効にする方法がありませんでしょうか?
453 :
451 :2011/04/06(水) 19:21:08.45 ID:???
>>442 です
初心者なのでecohとか言われてもわかりません
ほかのひとに聞いてください
455 :
450 :2011/04/06(水) 19:28:07.46 ID:???
>>452 マニュアルのそのページ全部読んで試したかい?
Someone previously mentioned that MSIE doesn't cache gzipped content. This is false. He misread the source of information. In fact, IE will cache gzipped content no matter what. Here is the quote from the mailing list:
The reason the COMPRESSED responses are, in fact,
always getting cached no matter what "Vary:" field name
is present is just as I suspected... it is because MSIE
decides it MUST cache responses that arrive with
"Content-Encoding: gzip" because it MUST have a
disk ( cache ) file to work with in order to do the
decompression.
だそうだ。俺は試してないから知らんが。
457 :
452 :2011/04/06(水) 19:47:54.84 ID:CfTvqrTN
>>456 ごめんなさい。
翻訳通しましたが何を言ってるのかわからないです。
具体的なコードがあれば理解できるのですが。
ユーザエージェントには、
HTTP_ACCEPT_ENCODING gzip, deflate
とあるので、何らかの方法でなら可能だとは思うんですけど。
翻訳を通して分からないところは手動で翻訳していくといいよ。 英語とプログラムの勉強が同時にできる。
分からないことは 適当にそれらしき英文貼ってごまかすことはよくある しかしそれは全く的外れである
>>457 だからそのページの下の方ずっと読んだの?
サンプルコードも色々出てるじゃん。
Content-Encoding: gzip あたりがヒントになりそうだろ。
何度も言うけど試したわけじゃないから知らんよ。
知らんなら答えるなよw
知らないなら無理して答えなくて良いと思うぞ
教えてください。 LDAPでログイン認証等を行っているのですが、不具合があり困っています。 LDAP_BINDを何回かやっていると、接続できなくなります。 エラーの内容は49のLDAP_INVALID_CREDENTIALSです。 アパッチを終了させ、ネットワークアダプタを再起動させないと接続できなくなっていしまいます。 接続は以下のようになっています。 ブラウザhttp → 80 → ローカルPC(xampp1.7.3 apach) → 389 → AD(win2003) バインドできない間ですが、以下は動作しますのでネットワークの不具合ではないと思っています。 エクスプローラー → ネットワーク → Activedirectory検索 AD連携が不要になった時点、毎回リクエスト後にunbindも必ず行っています。 どなたか、考えうる情報をお願いします。
スレタイを声に出して読んでください
465 :
nobodyさん :2011/04/06(水) 21:59:19.02 ID:9SLSQWTQ
ID忘れていました!
>>444 ネットのルールがどうとかはどうでもよくて、このスレのルールではあるな
>>463 ソケットが全部TIME_WAITになってるってことはない?
468 :
463 :2011/04/06(水) 22:03:12.31 ID:9SLSQWTQ
age たまにドメインでパスワードなしの人がいますが、 LDAPの際にパスワードなしでもbindが成功していまいます。 環境が匿名bindでsearchできない(取得できない)仕様なので、 入力されたID・パスワードでbind後、自身をsearchして取得できたら認証OK としていますが、どう思いますか?
>>467 netstat してみましたが、問題ありませんでした><
>>468 どう思うかという質問ですが、それでいいと思う。
試したわけじゃないから知らんけど。
472 :
nobodyさん :2011/04/06(水) 23:17:29.22 ID:GwYx6Y2W
474 :
nobodyさん :2011/04/07(木) 01:19:22.15 ID:T+wF9gWR
http://sameha.net/tool/post/set.cgi このツールってどういう仕組みですか?
AU携帯でURLにアクセスするだけでPOST送信されます。
他のDoCoMo,Softbank,PCなどでは使えないみたいです。
POST送信するサイトがPC禁、Proxy禁にしてあるところでも
このツールで普通にPOST送信できてしまうので、
ソケットではないと思うのですが・・・
てか、ソケットだったらキャリア指定する必要ないですし。。。
というか自分の掲示板にも投稿できました。
リンクのファイル拡張子はcgiで使用されている言語はperlですけど
どうなってるか想像付く人居ますか?
私はPerlではなくPHPで作成したいです。
それとこれをされると普通に連投とかされてしまうので
対策方法も考え付く方居たらお願いします。
宣伝乙
>>471 せめて屁理屈ぐらいちゃんと言えるようになろうよ
>>472 ,
>>476 消えろと命令されても従う義務はありませんので消えません。
屁理屈ですか。では、そもそも
>>1 を読む義務が存在しないので、
>>1 に書かれているローカルルールは無効です。
2ch全体のルール(規則)であれば、2chの関係者が作成したものなので責任の所在が明確ですが、
このスレのルールを誰かが作ったとして、どこの誰かもわからんような奴が作ったルールなどに
従う義務はない。
自分でスレ建てて好きにルール作ってやればいいじゃん このスレでやる以上従うのは義務です
さすがに釣りだと思うけど、
>>478 みたいな池沼ってリアルでもたまにいるから怖い
ある意味、法律とかマニュアルとかが整備されすぎなんじゃないかって思う
ルールにのってないからやっても大丈夫とか、○○のルールには従う必要ないとか、常識で考えることもせず
まわりに合わせることができないだけなのに自分かこいいとか思ってる哀れな子増えすぎだよね
俺たち大人がこういう子をぶん殴ってこなかったのも悪いかも知れんね
481 :
nobodyさん :2011/04/07(木) 09:37:04.52 ID:UvKKIzH2
アクセスログを取りたいのですが、下記の02行目のように同一サーバー内からは
問題なくリファラを収集できているのですが、「
http:// ○○.com/referer.dat」など
外部ドメインへ書き込みをしようとするとエラーになってしまいます。
どのように記述すれば外部サーバー内のdatファイルに書き込みできるでしょうか?
//リファラを書き込むファイルを指定
$refererfile="referer.dat"; ←ここで困っています
//接続者のPC環境を取得
$agent = $_SERVER["HTTP_USER_AGENT"];
//接続者のリファラを取得
$referer = $_SERVER["HTTP_REFERER"];
//時間の取得
$wday=time();
$days=date("YmdHi",$wday);
//追記用でファイルを開く
$fp = @fopen($refererfile,"a+");
//ファイルを一時ロック
flock($fp,LOCK_EX);
//書き込み
fputs($fp, $days."|".$referer."|".$agent."\n");
//ロック終了
flock($fp,LOCK_UN);
fclose($fp);
スルー推奨
>>480 釣りではありません。真剣です。
そういう人もいることを考慮しなければならないということです。
ぶん殴ってもいいですが、傷害罪で訴えますよ。
うわぁ・・・
いてどうするんだろ。更新されてるから着たのに質問じゃないとか徒労なんだが
ルールでなければ何やってもいいと考えてるからリアルでも社会になじめてない奴なんだろう
489 :
nobodyさん :2011/04/07(木) 13:18:33.48 ID:kE4uZ6E8
A,B,Cの三つの変数の値の組み合わせをチェックするプログラムを作っています。 ループの中で $var[$A][$B][$C]の値の有無を確認して 値があればそれに沿った処理を行い 値がなければそれに沿った処理を行い、 $var[$A][$B][$C]に値を設定しています。 ループはテキストファイルを読み込んで 1行1行の値に対して上記の処理を行います。 テキストファイルの中には A,B,Cの値の組み合わせが入っているので、 上記のように3次元の配列にしたわけですが、 A,B,Cの文字列の値を結合して 1次元配列でしたほうが階層は深くならないなと 思ったのですが、どちらのほうが実装する上ではスマートなのでしょうか? 1次元配列のほうがパフォーマンスも良いように思えるのですが・・・
最近のサーバーならパフォーマンスは誤差だと思うけど、 俺ならABCを結合したキーにして1次元配列にする
長文読むの面倒くさいからコード出して パフォーマンスが悪いところあれば直してあげるから
>>489 値があれば、がどのレベルなのかによるんじゃないかな。
3次元すべてに対してissetしてるならもしかすると遅いかも。
パフォーマンスについて気にするのは、そこが遅いとわかった時だけでいいよ。
>>490 デリミタは何にするの?
>>492 桁数が決まってたらデリミタなんかいらないし、桁数決まってない数値だってなら数字以外ならなんでもいいべさ
494 :
489 :2011/04/07(木) 14:32:07.67 ID:kE4uZ6E8
>>490 >> 492
その後1次元配列で試してみたんですが、半分近く処理時間が短縮できました。
元々の3次元配列を使った場合のロジックにも問題があったので、
それも影響しているとは思うのですが。
ですので、1次元の配列でやってみたいと思います。
デリミタは私は「_」で行こうと思います。
これはA,B,Cに含まれない値になるので。
どうもありがとうございました。
MySqlに登録した画像を表示する為にはどうすればいいですか? 条件として、登録しているテキスト内に「//img1」の文字があれば画像に変換するんです。 1.$wk_text = htmlspecialchars($row['Text']); 2.$pat = '(//img1)'; 3.$rep = '<IMG SRC=./image/1-1.jpg WIDTH="120" HEIGHT="80"/>'; 4.$wk_text = ereg_replace($pat, $rep, $wk_text); これで表示は出来るんですが、3.の部分を固定したくないです。 画像だけ変数ってできます?
急いでるから至急回答お願いします。
499 :
nobodyさん :2011/04/07(木) 18:26:09.72 ID:HyNj3QLj
>>497 sageてたorz
因みに、
>>496 おれじゃないよーww
MySqlに登録した画像を表示する為にはどうすればいいですか?
条件として、登録しているテキスト内に「//img1」の文字があれば画像に変換するんです。
1.$wk_text = htmlspecialchars($row['Text']);
2.$pat = '(//img1)';
3.$rep = '<IMG SRC=./image/1-1.jpg WIDTH="120" HEIGHT="80"/>';
4.$wk_text = ereg_replace($pat, $rep, $wk_text);
これで表示は出来るんですが、3.の部分を固定したくないです。
画像だけ変数ってできます?
> これで表示は出来るんですが、3.の部分を固定したくないです。 > 画像だけ変数ってできます? の意味がいまいちわからん。もう少し詳しく
1-1.jpgを$row['Text']にしたいって意味なのかねえ。いや、まさかな。
「//img1」を「./image/1-1.jpg」に対応させたいみたいだな。 だけど変換ルールが分からんな。 どこまでが固定なのかもわからんし、数字で対応させるのかも 分からない。 あと、eregは非推奨になったから、特に問題がなければpregで。
503 :
499 :2011/04/07(木) 19:38:40.70 ID:HyNj3QLj
>>500 >>501 >>502 返信ありがとうございます。
$row['Text']内に、//img1-->画像1と言う文字列が入っています。
db側に 1-1.jpg を登録済み。
3.$rep = '<IMG SRC=./image/xxxx WIDTH="120" HEIGHT="80"/>';
ここのxxxx部分にdb側から1-1.jpgを持ってきたい。
xxxxの部分は可変で出来ないでしょうか?と言う内容です。
3.5. $rep = str_replace("1-1.jpg",$row["img"],$rep); 実際に使ってる変数にするとか、htmlspecialchars とか ENT_QUOTES とか ""で囲むとかは適宜やってほしい。
ん、予想が外れた。
どうも粘着質なすいとん使いがこのスレにいるみたいだ
>>503 まだよくわからないんだけどなぁ。
$row['Text']って変数名からするとDBから引っ張ってきたデータなんでしょ?
なら「1-1.jpg」という文字列も引っ張ってこれるわけだよね。
それをそのまま$repの中に埋め込めばいいんじゃないの?
$row['Text']に「//img1-->画像1」という文字列が入ってるの?
何で$patの中身をカッコで括ってるの?
関係ないけどhtmlspecialcharsは一番最後、出力の直前に行ったほうがいい。
508 :
499 :2011/04/07(木) 20:23:06.27 ID:HyNj3QLj
>>504 やってみたんですがちょっとわからないです。。
>>507 お二方、ありがとうです。
dbの中身が$row[xxx]に配列で入ってます。
KijiID:1
Text://img1 --> 画像ファイル1で添付
ImagePath1:1-1.jpg
因みに、//img1が文字列中にあった場合、(画像1)の変換は出来たですが、
この部分を1-1.jpgで画像を表示させる方法がわからないのです。
いま正規表現とか調べながらやってるんですが、画像で躓いてます。。
509 :
nobodyさん :2011/04/07(木) 21:17:10.50 ID:Iy8VBj9y
php5でlist使うとエラーになるんですけど mmcache関係?なんでしょうか? list($min, $max) = explode('-', $s, 2);
510 :
◆QkRJTXcpFI :2011/04/07(木) 21:56:05.70 ID:gsgwRBSD
年月日を記録してあるxmlを、phpから書き換えたいのですが、動作しなくて困っています。。 現在の年月日は 2011.4.7 で 書き換え後の年月日は 2100.9.9 にしたいです。 「index.html」と「memory.xml」が同じフォルダ内にあります。 ●memory.xmlの内容は以下のとおりです-------------------- <?xml version="1.0"?> <memory> <year>2011</year> <month>4</month> <day>7</day> </memory>
511 :
◆QkRJTXcpFI :2011/04/07(木) 21:56:23.35 ID:gsgwRBSD
●htmlに以下のphpコードを書きました-------------------- <?php $memoryFile = 'memory.xml'; if ( $xml = simplexml_load_file ( $memoryFile ) ) { function changeMemory ( $year, $month, $day ) { $xml -> year = $year; //年の書き換え $xml -> month = $month; //月の書き換え $xml -> day = $day; //日の書き換え $xml -> asXML ( $memoryFile ); //ファイルに書き出す } changeMemory ( 2100 , 9 , 9 ); } ?> どうも、以下の1文が作動してくれない気がします。。 $xml -> asXML($memoryFile); //ファイルに書き出す どなたか原因がわかる方いらっしゃいましたら、 なにとぞご教授よろしくお願いいたします。。
<?php $file = 'memory.xml'; if ($xml = simplexml_load_file($file)) { changeMemory(2100, 9, 9, $file, $xml); } function changeMemory ($year, $month, $day, $file, $xml) { $xml->year = $year; //年の書き換え $xml->month = $month; //月の書き換え $xml->day = $day; //日の書き換え $xml->asXML($file); //ファイルに書き出す }
513 :
512 :2011/04/07(木) 22:07:06.07 ID:???
こう書いたほうがスマートかな <?php $file = 'memory.xml'; changeMemory(2100, 9, 9, $file); function changeMemory ($year, $month, $day, $file) { if ($xml = simplexml_load_file($file)) return false; $xml->year = $year; //年の書き換え $xml->month = $month; //月の書き換え $xml->day = $day; //日の書き換え $xml->asXML($file); //ファイルに書き出す return true; }
>>508 これで一応いける。画像が複数とかになったら知らん。
いろんな人が訊いているのに、条件の詳細が書いてないもんな。
$row['Text'] = '//img1 --> 画像ファイル1で添付';
$row['ImagePath1'] = '1-1.jpg';
$wk_text = htmlspecialchars($row['Text']);
$rep = "<IMG SRC='./image/{$row['ImagePath1']}' WIDTH='120' HEIGHT='80'/>";
$wk_text = str_replace('//img1', $rep, $wk_text);
515 :
nobodyさん :2011/04/08(金) 00:24:25.10 ID:tO6Xjg0e
初歩的な質問で申し訳ないのですが、 $female3=${$CurrentArray}[3]."female"; $female3Count = $_GET[$female3]; GETで取得する変数名 => ここの部分 =>$_GET[ここ] を動的に指定しようとして上記の指定をしましたが、うまくいきません。 上記の場合で、female3に入っている名前のGETを取得するには、 female3Countはどのように指定すれば良いのでしょうか。。
>>515 通りすがりですが、
もっと全体像見せた方がいいんじゃない?
これだと回答されにくいと思う。
何をしたいのかまったく伝わってこないけど、俺の読解力が低いのか・・・? 元となるフォームのほうで、<input type="text" name="female[]">とでもしてんのかな
>>515 やりたいことはそれでできるはず
もしかしてすごく根本的なミスでは?
>$female3=${$CurrentArray}[3]."female";
$female3=$CurrentArray[3]."female";
>>517 フォームから送信されるなんてどこにも書いてないなのに
フォームとか言い出してるおまえはエスパー力が高すぎる
520 :
499 :2011/04/08(金) 09:40:26.44 ID:/87TPhf8
>>514 ありがとうございます。
自分でもどうやって質問するかがまとまってなくてごめんなさい。
でも、あれだけの内容でいろいろ教えてくれてありがとう。
このソースで問題無く表示おkでした。
これからは、いろいろ勉強して教える立場になりたいとおもいます。
521 :
nobodyさん :2011/04/08(金) 12:10:11.88 ID:MJksbvOe
静的ページを出すメジャーなCMSってPHPには無いのでしょうか?
MTでも使っておけよ
>>520 そこまでできればもう教える立場になってますよ
524 :
499 :2011/04/08(金) 15:25:27.62 ID:/87TPhf8
>>523 いえいえ、まだPHP始めて1週間たってないです。
加えて言うと、プログラムはコレが初めてです。
今は、わからない事あればググッて調べ、それでもわからなければ
ココで聞くみたいな感じですね。
>>524 いえいえもう十分ベテランです。
ここの質問もググって答えてあげればいいんです。
実はみんなそうやってるんですよ。
526 :
499 :2011/04/08(金) 16:12:06.13 ID:???
>>525 了解です!
自分でわかる範囲のものがあれば答えてみますね。
527 :
nobodyさん :2011/04/08(金) 16:16:10.23 ID:z4213poJ
cakePHPつかってます find()を使ってテーブルから指定したレコードの要素を取り出したいんですが find('all', array("test"=>"test"); で、ひとつもヒットしないはずなのに なぜか全てのレコードの要素がヒットしてしまいます なぜヒットしてしまうのか検討がつきません どなたか詳しい方いましたら教えていただけませんか。よろしくおねがいします
>>528 あ、すいません!書き忘れました。
実際にはfind('all', array("test"=>"test"));となっております。
一体なにが悪いのか。。。
>>529 array("test"=>"test") って引数は有効なの?
無効だから無視されて find('all') と同等になっちゃってんじゃないの?
cakePHP使ったことないから知らんけど
531 :
nobodyさん :2011/04/08(金) 17:46:41.59 ID:6kx7EUS0
これだと Notice Error undefined index function t1($s) { return isset($s); } function t2(&$s) { return isset($s); } こっちは動作します この書き方はあってますか?
>>530 引数をもう一度調べたところ、どうやら間違っていたようです。
find('all'...の使い方を碌に調べずにやっていたせいですね。
どうもありがとうございました!
534 :
nobodyさん :2011/04/08(金) 18:56:46.86 ID:gZ3pjAdf
ArrowOverrideの値をphpから参照するにはどうすればいいdふぇすか。 PHPから.htaccessを書いて、アクセスしてみるしかない?
536 :
nobodyさん :2011/04/08(金) 21:33:10.16 ID:6kx7EUS0
>>533 ありがとうございます。直しておきました。。
undefined indexは気にしなくていいんですね
537 :
nobodyさん :2011/04/08(金) 22:42:44.15 ID:TULfamPX
秀丸でPHPを書いてるんですが、これって恥ずかしい事なんでしょうか? CakePHPもダウンロードしてみましたが、掲示板を カスタマイズしている程度の私には不要な気がしました。 皆さんは、どんなソフトを使ってPHPを書いていますか?
秀丸でECCUBEコミュニティ版の開発に貢献してますが何か?
自分で貢献してるとか言っちゃう人ほど迷惑がられてる法則
545 :
nobodyさん :2011/04/08(金) 23:54:47.66 ID:zTYaWkKE
多重ログイン(同じアカウントで別ブラウザからもう一度ログインする) を防ぎたいと思っています。 ログイン時間をDBなどに保存してチェックをする方法以外に 何か良い方法はないでしょうか?
>>537 恥ずかしいとかwwww
馬鹿じゃないのかなぁ?
恥ずかしいって何?
能率が悪いコーディングしてるなって思われる事?ww
そんな事を言う事が恥ずかしいわww
>>547 UAとは?UserAccount?
>>DBなどに保存してチェックする方法以外に
日本語読めますか?意味わかります?
クッキーwwwwwwwwwwwwwww
>>545 「同じアカウント」での多重ログインを防ぐってことは、ログインIDやパスワードが存在するわけで、
つまりアカウントをDB等で管理してるわけだよね。
他のブラウザからの同一アカウントでのログインを防ぐためには、
現在ログイン中のブラウザにログイン中のフラグを持たせるためにクッキーを食わせておけばいい。
他のブラウザでアクセスしようとしたら、ログイン中フラグを持つクッキーが存在しないので
一度強制ログアウトさせてログイン画面へ誘導する。
その際に最初にログインしたブラウザに保存させたクッキーはシステム側で無効にしておく。
ってのが普通の多重ログイン防止処理なんだけど、やっぱりDB等での管理は要るでしょ。
>>547 じゃないけど、
>>547 がクッキーって書いてるのは別におかしくはない。
放射能でおかしくなっちゃったのか、かわいそうに…
552 :
545 :2011/04/09(土) 00:39:16.34 ID:lDu5zS4y
>>550 詳しくありがとうございます。
クッキーを食わせるのは想像が付くのですが、
例えば、ログアウトせずにブラウザを閉じた
ユーザーの場合はどうなるのでしょうか?
ログインの時はセッションで管理してるので
セッション+クッキー(まぁ、同じですが・・・)が正しい場合は続行で、
クッキーしかない場合は強制ログアウトとかでしょうか?
少し設計のイメージが沸きません・・・
俺の頭が悪いのか
>>550 は実現不可能なことを垂れ流してるようにしか読めん
>>552 あくまで一例だけど、DB使っていいなら、ユーザーマスターに日時項目を持たせて、
ログイン中はIFRAMEのREFRESHでもJavaScriptの非同期通信でもいいから
3分毎にその日時を現在日時に更新
ログイン時に、その日時+3分以上経過していなかったらはじく
554 :
545 :2011/04/09(土) 00:56:51.13 ID:lDu5zS4y
>>553 なるほど。そう言う手もあるんですね。
今はログイン時にログイン時間をDBに記録し、
別ブラウザからログインしようとした場合、
ログイン時間から30分経過してない場合はログインできないようにしてるんです。
ただ、この場合「うっかりブラウザを閉じてしまった」場合でも
30分待たなくてはいけないわけで、ユーザーからクレームが来ないかと心配です。
ログイン時の時間を記録するのではなく、ログインしている間の時間を
定期的に記録するという仕様は良いですね。ぜひ参考にさせていただきます。
555 :
nobodyさん :2011/04/09(土) 01:09:43.98 ID:9CNXe0e9
>>550 >>545 =
>>552 ではないが。
>>他のブラウザでアクセスしようとしたら、ログイン中フラグを持つクッキーが存在しないので
>>一度強制ログアウトさせてログイン画面へ誘導する。
@ あるユーザーがいます
A あるサイトがあり、あるサイトの管理画面を利用するにはログインが必要です。
B InternetExplorer でログインして管理画面で糞入力項目が多いところを”必死に入力”します。
C 誤ってFirefoxを立ち上げたら初期画面がそのサイトの管理画面でした。
D InternetExplorer側が強制ログアウトww
E ログアウトを知らないユーザーはFirefoxを「間違えた、邪魔」といって閉じます。
F InternetExplorerでサブミットクリック!!え!!必死になって入力したのに!!
>>552 時間しかないじゃん。
>>554 すでにその仕様でのクレームを心配すべきでしょ。
多重ログイン禁止ってのは、お前よりあとにログインしたブラウザがあるからお前強制ログアウトなって
処理するのもある。 目的はなに?
557 :
548 555 :2011/04/09(土) 01:12:49.48 ID:9CNXe0e9
開発、辞めたほうがいいよそんな事ここで質問する脳みそなら。 進めど茨の道しかない。
お前もな
>>552 結局DBを使ってよいならググればいくらでも解説は見つかると思うが。
多重ログイン セッション あたりの単語でどうぞ。
基本的には後半に書いてあるとおりでよい。
別のブラウザから同じアカウントでアクセスがあった場合は最初のブラウザのセッションを削除して
新たなセッションを開始すればいい。
注意するのは、最初のブラウザがログイン中は他のブラウザからのログインを不可にすることも可能ではあるが、
そうすると最初のブラウザが強制終了した場合など、ログインタイムアウトが過ぎるまで再起動したブラウザや他のブラウザから
一切ログインできなくなってしまうので不便なシステムとなってしまう。
560 :
545 :2011/04/09(土) 04:54:23.39 ID:lDu5zS4y
>>559 さんの投稿を見てからかれこれ3時間以上試しているのですが、
全く上手く行きません・・。他のブラウザで多重ログインできます。
ログイン用のプログラムは↓です。
// セッションを削除
if (isset($_COOKIE['PHPSESSID'])) {
setcookie('PHPSESSID', '', time() - 86400, '/');
}
//セッションを再構築
session_start();
setcookie('PHPSESSID', session_id(), time() + 86400, '/');
// 会員情報をセッションに入れると仮定
$_SESSION['MEMBER'] = $member;
// マイページへ
header('Location:mypage.php');
こんな感じで「最初のブラウザのセッションを削除」して
新たなセッションを開始すると思ったのですが、多重ログイン出来てしまいます。
なにか考え方が悪いんですかね?「PHP 多重ログイン セッション」などで
ググってもこれと言った説明ページが見つかりませんし・・・
> setcookie('PHPSESSID', session_id(), time() + 86400, '/'); session_id() で意図する値が得られていますか?
>>560 君、
>>554 でDB使うことにしたんじゃないの?
>>559 の本意は知らないけど、「最初(のユーザー)のセッションを削除する」ってのは、
後からログインしたユーザーを優先するって意味になるかと思うけど、まずその仕様でいいの?
んで、セッション情報ってサーバー上にファイルとして保存されてるのはわかってるかな?
本気でDB使わずセッションだけでやるなら、サーバー上のセッション情報を検索して
削除とかトリッキーなことになるけど、本気の本気?
おまいら一時的な記憶場所に使う変数名何にしてる? 変数交換とか付け足して最後に返すやつとか $tmp = $a[0]; $a[0] = $a[1]; $a[1] = $tmp; $buf = ""; foreach ($a as $value) { $buf.=$value; } $buf.="hoge"; return $buf; みたいな感じで$tmpとか$bufとか使ってるけど もっと一般的なもんない?
それが一般的だと思うが$bufはそこでは使わないか 交換なら$swap? 付け足しなら$cat?
$hensuu $ichiji $tenporari $tesuto あたりかな
>>563 おまいら一時的な記憶場所に使う変数名何にしてる?
質問ならば
>>1 を読み返して出直すと良いと思う。
572 :
nobodyさん :2011/04/09(土) 18:06:43.41 ID:LAXo4B+J
すみません、例外処理について聞きたいのですが 今、例外発生したらエラーコントローラに投げて例外情報に従った処理をするプログラムを書いています そこで、throw new Exception();で指定できるexceptionの引数って、配列は無理なんでしょうか? エラー発生時の状況を知らせたいので以下のようにやりたかったのですがエラーになりました $errMsg = array( 'errType'=>'token_error', 'uId'=>$uId, 'uType'=>$uType, 'file'=>__FILE__, 'line'=>__LINE__ ); throw new Exception($errMsg); マニュアルやエラーメッセージを見るとException([string $exception [, long $code ]])て書いてあるので 無理なのはわかるんですが、上記のようなエラーの詳細情報を投げたい時はセッションに情報を入れて エラー処理(エラーコントローラのスクリプト)でセッションを拾って解析&実行するしかないですか? 皆さんどうやっていますか? ご意見お願いします
継承して自分で作ればいいだろ
>>573 そっか、継承すればいいのか
ありがとうございました
×どうやれないいんでしょうか? ○どうやればいいんでしょうか?
継承するだけ
誰が何を敬称すればいいんでしょうか?
×敬称 ○継承
あなたがクラスを
581 :
572 :2011/04/09(土) 20:38:30.66 ID:LAXo4B+J
質問した572ですが、
>>575 は相手しないようお願いします
質問した575ですが、
>>581 は相手しないようお願いします
585 :
nobodyさん :2011/04/10(日) 10:06:16.88 ID:vY8CJ6sh
SQL検索結果のwhile繰り返しの中で、 空の配列変数に値を入れたいのです $ary = array(1 => "a" , 2 => "", 8 => "" , 9 => "b" , 10 => "") があるとして、 繰り返し一回目で$ary[2]に代入、二回目で$ary[8]に代入… という感じにしたいのです 毎回頭から空かどうか検索するのも効率悪そうですし、 なにかシンプルな方法があればご教授お願いします。
while (true) { }
誤爆
588 :
nobodyさん :2011/04/10(日) 10:50:55.33 ID:He2iWruv
simplexmlで、まとめて生データを書き出す方法ありますか? $xml->name ↑これだとnameタグの部分しか出ませんが、 $xmlに入ってる生データをそのままごっそり出したいんです。 file_get_contentsとかでそのままとってきて吐き出すのはだめです。 xmlオブジェクトを何回か読んであるところまでスキップしてから吐き出したいもので。 お願いします。
>>585 毎回頭から検索じゃなくて前回見つかったインデックス番号を変数に保存しておいて、
そのインデックス+1から空を検索するようにすればいい
てか、そもそもforeachで$aryを検索するなら、勝手にポインタ保存されてるっしょ
591 :
nobodyさん :2011/04/10(日) 11:12:43.46 ID:He2iWruv
PHP自動アップデートツールがあったらお前ら使いたいですか?
なんのために?
なんのためにって聞く奴はaptとかyumなんて使ったこと無いか手動でソース入れる奴だな Win環境で自動アップデートできるなら欲しい
なに自演? そういう意味での自動アップデートなら、既にyumがあるじゃん windowsならインストーラがあるだろ 定期的にチェックして勝手にアップデートしてくれる機能だったら、馬に食わせるくらいしか役に立たない
関数仕様が変わるのは不便
windowsだとインストーラ使うか?
>>595 欲しいって書いただけで自演認定するカス乙
でも自演は本当なんだろ?
>>592 あったらお前ら使いたいですか?
質問なら
>>1 を読み直して出直しですね。
自演認定する奴ってXAMPPはやめろ!とか$_SERVERはやめろ!とか言ってた荒らしと同一人物くさいですね。 荒れるから次の質問どうぞ。
敗北宣言乙
>>601 荒れるから次の質問どうぞ?
質問なら
>>1 を読み直して出直しですね。
粘着杉
粘着性杉花粉
粘着宣言乙
自演宣言乙
あれ?
609 :
nobodyさん :2011/04/10(日) 20:31:24.18 ID:7H7FFmtv
GDのimagestringを使って画像にコピーライトを載せてるんですが、 20KBくらいの画像が100KB越えになってしまい、古い携帯だと容量越えになってしまいます 容量小さくする方法ありますでしょうか? それか、他に軽く文字を上に乗せる方法などありましたらご教授ください。 宜しくお願いします。
imagejpgだったら品質を下げるとか。
>>610 回答有難う御座います。
画像のサイズを20KBから10KBに落としたら90KBくらいになりました
処理だけで+80KBくらい上乗せされちゃうのは仕方ないのでしょうか?
>>610 >>612 ありがとうございます。意味を穿き違えてました。
そのqualityを下げる処理をするために、
header('Content-Type: image/png');
imagepng($im);
を
header('Content-Type: image/jpeg');
imagejpeg($im);
として吐き出すようにしたら
それだけで90KBから14KBまで縮んでしまいました
png自体がそもそもの原因だったんでしょうか
>>613 imagepngの圧縮レベルのデフォルトがあまり高くないんじゃね?
マニュアルには
> 圧縮レベル。0 (圧縮しない) から 9 までの値です。
としか書いてないけど
imagejpegのほうは
> quality はオプションであり、0(品質は最低 ですが、ファイルはより小さい)から100(品質は最高ですが、
> ファイルは 最大)の範囲で指定します。デフォルトは IJG 品質値(75)です。
と書いてるからデフォルトである程度圧縮されてる
header('Content-Type: image/png');
imagepng($im, null, 9);
とかにしたらだいぶ小さくなるんじゃね?
616 :
nobodyさん :2011/04/10(日) 22:11:01.27 ID:2E3V6CAL
初心者ですみません。
コンソール画面でPHPを実行(またはcron)し、エラーが返って来た時のみ、特定のメールアドレスにメッセージを送るにはどのような処理を書けばよいのでしょうか?
例えば、次のコマンドをコンソール画面で叩いた場合
# /usr/local/bin/php /path/hogehoge.php
XML_Parser: Invalid character at XML input line 15
と返って来た場合、そのエラー内容を
[email protected] にメールを送ります。
直前のエラーを取得する関数を使ってメール関数を使う 全部標準関数です
>>617 >>616 はPHPスクリプトの外でエラーを取得してメールを送りたいんじゃないの?
もっとも、そのPHPスクリプトの中でエラーハンドラを設定すれば済むだろうけど
>>615 なるほどそういう原理なんですね
わかりやすく解説いただき感謝です
>>621 エラーレベルにもよるがエラーによっては直前のエラーを取得することはできない。
エラー内容書いてあんじゃん >XML_Parser: Invalid character at XML input line 15
「例えば」という文字が読めないようですね
次の質問受付中
いいよもう質問しなくて
>amachang 今粛々と民事刑事の方面で進めています。一応、すべて証拠として保存しなければいけないので、冗談でも今はこのスレに変なこと書き込まないでください。
>2011/01/28
http://hibari.2ch.net/test/read.cgi/prog/1291518728/ >1 :amachang撲滅振興協議会:2010/12/05(日) 12:12:08
> amachangが憎い・・・・amachangが許せない・・・・
> ククク・・・・クククククク・・・・・
> クックックックックックックッ・・・・・
> クー、クー、クー、クー、クー、クー・・・・・
>
> もう許せない。
> もはや沸き上がる滅意を抑えることが出来ない!!!
cronで実行されたものの標準出力および標準えらー出力の内容は、そのcronのownerに対してメールで送信されるよ
mailtoだっけ
何でそんなことをわざわざ言うの? 俺答え知ってるぜーって自慢したいの?
自演に構うな
自演には見えんが
しつこいよ
635 :
628 :2011/04/11(月) 18:11:57.93 ID:???
>>629 補足ありがとう。MAILTO変数のこと忘れてた。
突然すみません。 PHPの教科書という本を終えて、さらにwebプログラミングについて学びたいと考えているのですが、フレームワークやCGI等、具体的にどんなことを勉強すればいいのか見えてこず困っています…。 皆さんは駆け出しプログラマのとき、どのように知識を増やしていきましたか?聞かせていただけると嬉しいです。
PHPはwebプログラミングじゃないと思うぞ。 ネットワークに手軽にアクセス出来るスクリプト言語だろ。
簡単なことからやっていく
644 :
nobodyさん :2011/04/13(水) 00:47:25.03 ID:appmuAfb
php+mysqlで質問です。 |id|name|age| |1 |Aさん|10| |2 |Bさん|15| |3 |Cさん|13| (以下略) 上のようなテーブルで、idが1,4,7,11,21,35・・・のいずれかのレコードを抽出したいのですが、クエリは WHERE id = 1 OR id = 4 OR id = 11 OR ・・・ みたいにひたすらつなげて書くんでしょうか・・・何か短い書き方ありますか? あと、ORが大量にあると負荷が極端に増えたりしますか?
んん? 変数使えばいいのでは?
646 :
nobodyさん :2011/04/13(水) 06:02:07.82 ID:aY/2E/pl
php高速化するAPCをこのようにインストールしました。 $ tar zxf APC-3.0.17p2.tgz $ cd APC-3.0.17p2 $ phpize $ ./configure --enable-apc $ make $ su - # make install 思ったほどの性能ではなかったのでアンインストールをしたいと思って pecl uninstall APC rpm -ihv --test APC-3.1.7 yum remove php-pecl-apc yum remove apc といろいろ試したのですができません。 どうしたらでしょうか?OSはFEDORA14です。
IN
>>644 idが、インデックス対象のカラムであっても、OR使ったらインデックスが使われない。
って、PHPの質問じゃねぇじゃん。
>>644 SQL文のほうはIN句を使えば多少短く書ける
PHPのほうは配列にidを格納してimplodeで繋げればいい
>>646 PHPの質問じゃねーし、makeコマンドはソースからのコンパイルビルドであって
パッケージのインストールじゃねえ
make uninstallでビルドしたファイルを削除してくれるソフトもあるから試してみれば?
同じカラム(一つのインデックス)なら使うんじゃなかったっけ?
んなもんDBによる。 どっちにしろPHP関係ないし。
PHPをしようしているのでPHPに関係あります。
MySQLを5.5にしてPHPも5.3にしたんですが、phpMyAdminを起動すると、ライブラリとバージョンが違うから問題起きるかもって出てます。 これって無視していいんですかね? 具体的にはどんな問題が起きるんでしょうか?
>>646 >>649 もかいてるけど、make installでインストールされたものをすべて消せばいいよ。
--prefixでディレクトリ指定してれば楽だったんだけどね。
それと、rpm -ihv は、インストール用コマンドだよ。
>>644 そのidの一覧はどうやって取得してるの?DBから取得してるわけじゃないのかな
idは私の優秀な頭脳に記憶されております。
657 :
644 :2011/04/13(水) 22:36:22.96 ID:urwW+Tur
>>645 >>648 ありがとうございます調べてみます
>>655 idは別のテーブルにカンマ区切りで格納しています
|1|グループA|1,2,5,7,…|
|2|グループB|1,3,4,5,…|
|3|グループC|2,3,4,6,…|
みたいな感じです
658 :
644 :2011/04/13(水) 22:41:42.13 ID:???
>>647 すみません…mysqlのスレが見つからず
こちらなら分かる人がいるかなと思いまして
>>657 カンマ区切りで保持しているのが設計の誤り。
テーブルレイアウトを変更することができないなら、書かれていたように、長いSQLを発行する。
変更することができるなら、短いSQLを発行すれば、それよりもずいぶん速く結果を取得できるようになる。
続きはSQLスレあたりで。
661 :
660 :2011/04/13(水) 22:46:13.47 ID:???
MySQLスレは厨房やクズのたまり場と化してて機能してない
663 :
644 :2011/04/14(木) 00:24:00.71 ID:???
>>660 なんとなく正解がわかりました。ありがとうございます。
まだテスト段階だったので構造を直してチャレンジしてみます。
短ければ速いという問題でもなかろ
$result = mysql_query("SELECT * FROM Persons WHERE FirstName='Peter'"); ↑ Peterを変数に代入して入れたいんですけど、どうしたらいいですか?
666 :
nobodyさん :2011/04/14(木) 02:33:15.59 ID:jIcMQS2c
$omanko = 'peter'; $result = mysql_query("SELECT * FROM Persons WHERE FirstName= $omanko "); ↑でやっても駄目なんですよね...
667 :
nobodyさん :2011/04/14(木) 03:13:22.44 ID:nz/ViMIK
"select * from item where FirstName like '%"$omanko"%'"
omankoっていい歳した空気よめないオッサンか ひyな言葉ではしゃぐ中2のどちらかだろ
>>666 $omanko = 'peter';
$result = mysql_query("SELECT * FROM Persons
WHERE FirstName= '$omanko' ");
670 :
644 :2011/04/14(木) 08:25:43.46 ID:???
>>647 すみません…mysqlのスレが見つからず
こちらなら分かる人がいるかなと思いまして
sqlのクエリは勝手に最適化されるはず
>>666 の書き方だと文字列がそのまま出ちゃうからダメなんじゃないの
>>669 か
$result = mysql_query("SELECT * FROM Persons WHERE FirstName= '".$omanko."' ");
っていう形にする必要があると思うんだけどどうだろ
今時sqlをphpに埋め込んで書くのはないない
>>673 じゃ、今SQLを埋め込むのは何が主流なの?Perl?
ひまわりかな
ひまわりって何?新しい新幹線の名前?
$result = mysql_query("SELECT * FROM Persons WHERE FirstName='".mysql_escape_string($omanko)."'");
679 :
nobodyさん :2011/04/15(金) 09:30:39.97 ID:vqhPXrat
すみません $res =& $mdb2 -> exec($sql); の"=&"の意味が分かりません マニュアルの演算子を調べたのですが見付かりませんでした これはどういう意味でどういう使われ方をするのでしょうか? また、オライリーのPHP本には"&="が載っていますが、コレとは別の意味なのでしょうか?
681 :
nobodyさん :2011/04/15(金) 09:57:51.25 ID:vqhPXrat
>>680 代入と言うことは、普通の"="演算子と何も変わらないということでしょうか?
代入演算子という名前ということは参照でもないのかと思ってしまったのですが
また、逆に"&="は左を右に代入という事でよろしいですか?
$a = &$b これは参照渡し $a &= $b これはビット演算子で $a = $a & $b と等価。
684 :
nobodyさん :2011/04/15(金) 10:15:11.42 ID:vqhPXrat
ありがとうございました
=& が演算子みたいな書き方するなよ。誤解されるぞ
686 :
nobodyさん :2011/04/15(金) 16:50:58.33 ID:weEN1v7D
ob.log 1<>挨拶<><>2/9<>1 2<>挨拶<><>2/9<>0 3<>謝罪<><>2/22<>1 4<>挨拶<><>3/21<>0 5<>お礼<><>4/1<>1 こういう文字列から 1 2 3 4 5 これだけを抜き出して取得してファイルに書き出したいのですが 何かいい方法はないでしょうか
explodeか、正規表現かってとこ
>>687 explodeでどうやるんですか?
コードもしよろしければお願いします
<?php $str = <<<EOL 1<>挨拶<><>2/9<>1 2<>挨拶<><>2/9<>0 3<>謝罪<><>2/22<>1 4<>挨拶<><>3/21<>0 5<>お礼<><>4/1<>1 EOL; $lines = explode("\n", $str); foreach ($lines as $line) { $items[] = explode("<>", $line); } foreach ($items as $item) { $result .= $item[0] . "\n"; } file_put_contents('log.txt', $result);
<?php foreach(file("test.txt")as$l)$v[]=explode("<>",$l, 2);print_r($v);
ごめんこっちがいいや <?php foreach(file("test.txt")as$l)$v[]=current(explode("<>",$l, 2));print_r($v);
foreach(file("test.txt")as$l)$v[]=current(explode("<>",$l, 2)); file_put_contents("ob.log",implode("\n", $v));
$nums =array(); if (($lines = file("ob.log")) !== FALSE) foreach ($lines as $line) $nums[] = reset(explode("<>",$line)); print_r($nums);
>>686 cut -d\< -f1 ob.log > ob2.log
>>686 そういう用途にPHPは不向きです。Ajaxを使いましょう。
Ajax…?
>>692 $v[]=current(explode("<>",$l, 2));
$work = explode("<>",$l, 2);
$v[] = $work[0];
下のほうが速かった。
上の方がスマートなんだけどなぁ
おまえらすごいな
703 :
686 :2011/04/16(土) 00:21:27.07 ID: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 は私ではなく煽りの人みたいです
currentのどこがスマートだw
見た目の話やないの?
707 :
nobodyさん :2011/04/16(土) 11:47:01.53 ID:KaV2BHRg
画面A→画面B(正常に表示) の状態で、もう一度画面Aから画面Bにタブを開いてアクセスしたとします。 すると「一度ウィンドウを開いているのでアクセスできません」 みたいなエラーメッセージを出したいのですが、これってPHPだけで可能ですか? Cookieを使うことも考えたのですが、画面Aに戻った時、 Cookieを削除したらウィンドウを2つ以上開くことが出来るように思います。 画面AでCookieが切れるわけですから、更新ボタンを押した時とか。 ウィンドウ操作なのでjavascriptのような気もしますが、PHPで可能なら教えてください
そんな処理に労力を注ぐのは時間の無駄
709 :
nobodyさん :2011/04/16(土) 12:04:44.58 ID:KaV2BHRg
サーバに負担がかかるようなページがあって、 ウィンドウをいくつも開かれて攻撃されるのを防ぎたいのですが、 そういうのは無駄なんですかね?
>>707 > 一度ウィンドウを開いているのでアクセスできません
これは、画面Aから画面Bを開いたことを言われているのでしょうか?
画面を複数開くことを抑止したいのでしょうか?
画面Aから画面Bを開いた履歴に基づいて再度は開けないように抑止したいのでしょうか?
それとも画面Aから開ける画面Bは1画面に限定して同時に2画面のBを開けないように抑止したいのでしょうか?
できないことはない感じだけど、使い勝手が悪かったり 完全ではないとか。労が多いわりには実が少ない ということじゃない?
認証制のサイトでたまに見かけるけど確かに使い勝手は悪い
サーバーに負担のかかるページを改善するほうが先じゃないか?
714 :
nobodyさん :2011/04/16(土) 14:46:21.48 ID:KaV2BHRg
>>710 >これは、画面Aから画面Bを開いたことを言われているのでしょうか?
そうです。
>>713 それはやっていますが、とりあえず複数ウィンドウを防止したいんです。
PHP側で出来るのか、はたまた他の方法なのかよくわからなくて、
ある程度目星が付いたらググって調べようとは思うのですが・・・
715 :
nobodyさん :2011/04/16(土) 15:18:58.52 ID: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をどのような設定にすれば良いのかご教示頂きたい。 よろしくお願い致します。
>>715 display_errors = offになってるんじゃないの?
>>714 複数ウィンドウを防止するという発想の方を変えたほうがいい。
最初に画面Aから画面Bにタブを開いてアクセスした場合はどうする?
メインのウィンドウで画面Bに遷移できなくなっちゃうね。
そこに労力を割くより、多重アクセスがあっても問題ないようなシステムに
することの方が重要。
719 :
nobodyさん :2011/04/16(土) 18:29:02.93 ID:mJdJuPdX
セッションの解除はどうするの?
unset($_SESSION['test']);
kaijo($sesshon);
unsetでセッションの解除はやりませんよ
session_unsetもunsetもあまりかわらん
>>719 自分で調べなさい。
はい、次の患者さぁ〜ん!
しかしsession_destroyって結構荒い消し方するよな
消し方に荒いとかそんなのあるのか
ひとつずつ、消しますか?YES/NO と聞いてくれなくては紳士的とは言えますまい
session_destroyと書いてる以上、消す意思だろうし セッションファイルは1つだろうしなにを言ってるのかよくわからんが
俺ぐらいの達人になるとPHPでGUI作ってバイナリ配布できる形式にまで出来るんだけど君たちは?
俺はPHPでWindowsアプリ作って納品してるよ。先日は画像レタッチソフトを作った。 これぐらい普通でしょ
>>704 逆に、どうすればスマートに記述できますかね。
explode("<>",$l, 2)[0]
という記述ができる言語ならよかったんだけど
俺ぐらいになるとPHPで彼女作れますよ もてもてです
俺ぐらいの達人になるとメジャーなオープンソースの開発に携われるようになるよ んで、PHPがダメ言語だな厨にオープンソースでどんくらい稼げるか書類見せてやって黙らせてる 君らにはそんな実力ないから毎日頑張って勉強して欲しい もちろん勉強だけじゃ稼げないよ
当たり前のことしか書けないのか 素人丸出しだな
わかったから、次の質問どうぞ ほら、早く早く ハァハァ
俺は先日PHPでC言語のコンパイラを書いたけどな
>>741 すごい!
なんでそんなことしたんですか!
俺なんかマクロアセンブラ作ったけどな
744 :
nobodyさん :2011/04/18(月) 00:03:37.17 ID:nGStzrzk
>>716 さん
display_errors = Onでした
結局必要なerror_reportingのみを選択して解決しました。
具体的には
error_reporting = E_ERROR | E_PARSE
にしました。
お騒がせ致しました。ありがとうございました。
>>744 開発環境ならもっとエラーと警告を出すようにせい
それでも温い
>>744 大体
error_reporting = E_ALL
にしてsyntax errorが出なくなるわけないだろ?
だから元に戻せって言ってんのに
質問です。 Webからプロセスを再起動させようとし次のコードを記述したのですが失敗します。 exec("sudo /etc/init.d/プロセス名 restart" ,$s"); apacheには上記パスのsudo権限パス無しは設定済みです。 どこがおかしくて起動出来ないのでしょうか?
>>747 須藤さんの調子が悪いので伊藤さんで試してください
exec("command" ,$s"); 引用符の使い方と末尾の全角セミコロン
752 :
747 :2011/04/19(火) 08:26:15.63 ID:???
>>751 おはようございます。
すいません、上記のは記述ミスです。
exec("sudo /etc/init.d/プロセス名 restart" ,$s);
これですけど、起動しません。
よろしくお願いします。
753 :
nobodyさん :2011/04/19(火) 08:35:32.21 ID:W2zxScT8
754 :
nobodyさん :2011/04/19(火) 08:59:10.39 ID:L9R4T5O7
web一般の質問?です ログインを行うHPにて、 セッションタイマーが20分と Ajaxにてヘルスチェック(ログインしていることの通知)が3分ごとに 設定されている場合に、 ブラウザを開いたまま放置した場合。 20分立てばセッションタイムアウトになるのでしょうか。 それとも3分ごとにブラウザから情報が来ているため、 何分たってもセッションタイムアウトにならないのでしょうか。
>>754 タイムアウトしないと思う
ヘルスチェックってのが何をしてるか、もう少し詳しく書くけば
もっと適切な答えが期待できると思うよ。
どー考えてもスレチ 他人のシステムなんて予想はついても 調べない限り適切な答えなんて出ない
757 :
nobodyさん :2011/04/19(火) 12:36:41.94 ID:iclRm0oP
【PHP】5.1.2 set_error_handlerを使ってエラーが発生したときの処理を実装しようとしています。 set_error_handler('fncHoge'); とし、 function fncHoge($errno, $errstr, $errfile, $errline){ //エラーの制御 } と、記述しているのですが、 このfncHoge関数内で $errfile, $errlineの内容をログに書きこもうとすると 変数が定義されていませんみたいなエラーがでます。 マニュアル通りに書いたのに何でエラーが出るかわかりません。 なにか気をつけるポイントがあるのでしょうか?
>>757 set_error_handlerはエラーだけじゃなく変数が定義されてない等のワーニングでも呼び出される
fncHoge関数内で、たとえば
if($errno == 1 || $errno == 2 || $errno == 4)
とか自分が処理したいエラーレベルでふりわければいい
759 :
747 :2011/04/19(火) 14:34:31.31 ID:???
自己解決しました。
>>751 さん以外は役立たずのゴミどもでしたね。
ほんとご苦労様です。
>>759 スレのルールを守ってないお前が悪いらしいよ
よく知らんけど
761 :
747 :2011/04/19(火) 14:59:18.79 ID:ObrOm4D8
いやいや解決してないからw 偽物乙。お暇ですね。 本買ってきたから読んで勉強しなきゃ。 でもEXECについて詳しくのってないんだよなぁ。 シェルをキックさせた方が良いのかしら。
>>747 ,761
既に最初の質問の段階でIDを出していないことからスレ違い。
むしろこれだけレスを重ねていることから荒らし認定。
出直しておいで。
763 :
757 :2011/04/19(火) 15:49:58.74 ID:iclRm0oP
>>758 解決しました。
ありがとうございました。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
教えて君の極意 一. 努力を放棄すること 教えて君たるもの、努力をするなど以ての外である。 一. 情報を開示しないこと エラーなど必須の情報を知らせてはならない。 「いろいろやってみたけど動きません」が理想のセリフである。 一. 答える人間の事を考えないこと 教えて君は相手の事を考えるようでは失格というものだ。 教えて君グループは世界中に拠点を持っている。 日本の教えて君ブランドを汚してはならない。 日本の教えて君がなめられないように日々、自分で努力して調べないで人を使ってほしい。
766 :
762 :2011/04/19(火) 18:03:12.51 ID:fgmca1z+
>>765 解決しました。
ありがとうございました。
767 :
nobodyさん :2011/04/20(水) 20:57:28.37 ID:ftmBb0O8
preg_replace の第3引数で大きなデータを扱おうとすると、null が返るときがあります error_reporting = E_ALL | E_STRICT にしていますが、エラーメッセージは出ずに処理が続行されます どうして null が返るのでしょうか
>>767 > 第3引数で大きなデータ
どの程度に「大きくて」、どの程度に「大きくないか」を教えてください。
近頃のPHPは名前空間に対応しているのかい? Javaのpackageに相当する機能を使いたいのだが
772 :
nobodyさん :2011/04/21(木) 07:16:38.51 ID:XEGIAaxg
日本語文字列をu3042u3042u3042u3042のようにエンコードせずにそのままで json_encodeする方法はないでしょうか?
773 :
【東電 63.4 %】 忍法帖【Lv=6,xxxP】 :2011/04/21(木) 07:23:01.97 ID:GH5Vi5/t
>>770 見てきた。たしかに対応しているっぽいね。
しかし、後付しただけに随分と煩雑だ
Javaのpackageよりパターンが豊富でいろんなことができるようだが、
Javaのpackageとimportとの組み合わせと比べると気持ち悪いコードを書く輩が増えそうだな…
ソースコードが読みにくくなったら本末転倒だ
コーディング規約をいちいち定めないと面倒なことになりそうだな
JavaのCheckStyleに相当するコーディング規約チェックツールは、PHPにはあるかな?
ついでに、Javaのバグの温床になるコードを自動検出してくれるFindBugsちうチェックツールはPHPにはあるかな?
(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 エンコードされたデータでのみ動作します。
言葉尻を叩いても何も得られない。 言葉遣いが悪い奴は何も得られない。
変なのが粘着してきてるな
今PHP5.3への移行期だからガンガン使え
>>772 json_encodeのページの__json_encodeのエンコード部分を殺してつかうとか。
>>773 大抵ないとおもっていいよ。
ある場合も多いが、その質に過度な期待をされても困るので。
>>780 日本語(UTF8)だったら、自前でエンコードする必要ないんだろ?
783 :
nobodyさん :2011/04/21(木) 16:01:17.06 ID:XEGIAaxg
仕方がないので、日本語部分を"%TEXT%"などとしておいてjson_encodeして その後にstr_replaceで日本語と置換するという方法を使いました。 今回は小さいデータだからこれでもいいけど、もっと良い方法はないものか
UTF8で渡せば良いだけだろ。
>>783 それだと、バイナリデータになり制御コードが混じる場合があるんだろ。
786 :
nobodyさん :2011/04/21(木) 16:16:29.88 ID:XEGIAaxg
>>784 文字列もソースコードもUTF8なんだけど、勝手にエンコードされる。
>>786 エンコードしないとデータがバイナリになるんだよ。
jsonデコードしたら、文字列も自動でデコードされる。
格納方式にこだわるならばjsonを使うなよ。 そういうフォーマット。 バイナリデータを直接格納するにはそういうフォーマットつかえ。 メールデータをBASE64にするのと一緒。
789 :
nobodyさん :2011/04/21(木) 16:33:51.66 ID:XEGIAaxg
POST先のAPIにjsonで、UTF8で日本語そのまま渡さないといけないから仕方がない という事情なので質問しました。 多分そのAPIがおかしいんだと思う。デコードしてくれりゃいいのに。 どことは言わんけど日本で一番有名なSNS?
790 :
767 :2011/04/21(木) 16:42:28.91 ID: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 程度の文章
エンコードなしで任意の文字が渡せるとなると、jsonの区切り文字すらそのまま格納することになるが。
793 :
nobodyさん :2011/04/21(木) 18:50:24.50 ID:0idGxcNP
皆さんはPHPでエラーが発生してシステムが落っこったりしたときの 対処方法はどのようにされてますか? もしくはエラーが発生したときの検知の方法は何か一工夫されてますか? エラーが発生したときにログに書きこむようにして、 cronでログに何か書き込まれていないか確認するように しておくとか考えているんですが・・・如何なもんでしょ?
どこでエラーで止まるか不明だし。 止まる予定の所すべてで、おかしくなりそうなら情報をファイルへ書き出す仕組みを挿入するしかなくないか。 面倒だが。
メール送信やツイッター送信でも良くないか。 PHPが動いている(ローカルな)サーバーだけに出力を残すこともない。
>>793 基本はログを残すこと。
エラー時だけ残すのか、正常時も含めたトレースログを残すのかはシステムによる。
次にログを監視すること。
cronで監視してエラー時だけ通知するのか、生存確認の意味も含めて定期的に通知し続けるのかはシステムによる。
必要であれば外部からも定期的にアクセスして監視。
朝起きたら6万通のエラーメールが届いていたことがあるから
>>793 のやり方が良いと思うよ
ちなみになんで6万かっつーと、夜中にMySQLのDBが壊れやがってWebサイトにアクセスあるたびにDB接続エラーがえんえんとry
ばかす
799 :
nobodyさん :2011/04/21(木) 21:04:51.08 ID:LlCZE+TN
質問です date型で呼び出した数字 (date("Ymd",タイムスタンプ)が20111021とか) をそのままint型に変える事は出来るんでしょうか? 一度stringにしてintにしても、表示された数字ではなく、内部ポインタ変数っぽい別の数字が値になってしまいます 一度HTMLやデータベース等に文字として出力し、そこから受け取ればなんとかなりますが、出来ればPHPのみで型変換がしたいです
PHPにdate型なんてねーよ
>>799 var_dump( intval(date("Ymd")));
802 :
799 :2011/04/21(木) 22:43:20.01 ID:???
失礼しました date("YmdHis") で出して、それがINT範囲の上限を超えていたのが原因のようです。 floatval で浮動小数点型に直したら問題なく利用できました。
ところで何をしたかったんでしょう・・・ 文字列のままでいいじゃん
804 :
799 :2011/04/21(木) 23:10:12.47 ID:???
>>803 データベースにぶっこんだ後、比較演算子利用して指定データを取り出したりしたかったので
文字ではなく数字に変える必要がありました。
データベースにぶっこむって 文字列のままつっこめばいいのに。 データベースが文字列でも比較できるんだし、 データベースが数値型でも文字列で突っ込めばいい。
DBによるけど日付型でDBに登録して日付比較するのが基本だと思うが
仮にプレースホルダで型のチェックしてる時も PHPの場合はINTを指定してもINTでないから受け付けないというよりINTにキャストして渡してくれるしな
>>807 データベースの型をINTにしたため、PHPもそれに合わせて自動でINTにキャストした結果
「DATE(”YmdHis”)=(STR)201104222359」
↓ PHPでの自動処理
「(INT)2147483647 」 ← INTでの上限値
↓
「」
誤送信 下から続き ↓ PHPからデータベースに代入 「(INT)214748347」 となっていたようです。 次からは素直にデータベース側をDATETIMEに指定して利用します。
unixtime使えばいいのに日付を連結して数字として扱うとか意味がわからん あと内部ポインタ変数ってなんだったの?
そもそもDBで日付をINT型で保持しようとするのがあほなんだろ
812 :
nobodyさん :2011/04/22(金) 02:20:33.83 ID:b2miHkLW
phpを自在に使える漢になったら、彼女できるのか?
逆。彼女が出来なければPHPを自在に使えるようにはならない。
814 :
nobodyさん :2011/04/22(金) 04:28:37.95 ID:b2miHkLW
>>813 何だと!?なんてリア充向けがプログラミング言語なんだ
荒らすならID付で。これ常識ね。
816 :
793 :2011/04/22(金) 12:01:14.75 ID:???
皆様たくさんのご意見ありがとうございました。 ひとまずエラー時にログファイルに出力するようにして クーロンで定期的にファイルが更新されていないかを 確認し、更新されていたらメールで通知するようにします。 さすがに6万通もメールがきたら、 私の携帯だと、受信するだけで バッテリーが無くなりそうなので。 そして、それとは別に生存監視もしていこうと思います。
817 :
nobodyさん :2011/04/22(金) 14:09:45.37 ID:S4ofJDv4
【OS名】Linax 【PHPのバージョン】5.3 【質問内容】 $string = '1111-111111'; $search = '/[^0-9]/'; $replace = ''; if (preg_match($search, $string)) { $string = str_replace($search, $replace, $string); } こんな感じで'-'を置換したのですが、なぜか出来ません。 preg_match()では、マッチしているのに。。。 ちなみに'-'であったり'ー'する可能性があるので、 str_replace()を使ってます。 よろしくお願いします。
$string = '1111-111ー111'; $string = str_replace(array("-","ー"), $replace, $string);
819 :
817 :2011/04/22(金) 14:27:34.96 ID:???
>>818 なるほど。。。単純に可能性のある文字を
潰していった方がいいみたいですね。
了解しましたありがとう。
それ以前にstr_replaceは正規表現検索できないわけだが。
821 :
817 :2011/04/22(金) 14:32:47.92 ID:???
>>820 うわぁ
preg_replace()と勘違いしてた。。。
ありがとう。
フォームから送信された値の文字コードを検出する時に $encoding = mb_detect_encoding($_POST["name"],"UTF-8,SJIS,EUC-JP"); と言うようにしますが、$_POSTだけで文字コードを検出する方法は無いでしょうか?
823 :
822 :2011/04/22(金) 15:28:44.03 ID:vE00gD2v
すみません。sageてました。。。
>>822-823 最初に質問するときに sage をしている時点で疑念がわくんですよ。
残念だったね。出直してきなさい。
825 :
nobodyさん :2011/04/22(金) 18:09:47.75 ID:BuQXBTbw
連想配列のキー文字列を以下のように書き換えたいんですが、
どのような方法で処理するのがスマートでしょうか?
>>689-694 でいう、
>>689 のようなやり方しかわかりません
array(
'key1' => 'val1',
'key2' => 'val2',
'key3' => 'val3'
);
↓
array(
'prefix_key1' => 'val1',
'prefix_key2' => 'val2',
'prefix_key3' => 'val3'
);
>>822 $encoding = mb_detect_encoding($_POST["name"]);
array_combine使えば
828 :
nobodyさん :2011/04/22(金) 18:36:12.84 ID:BuQXBTbw
関数を調べて、array_walkというのを見つけました 値の方になら接頭辞をつけることができましたが、 キーの方に適用させる方法がわかりません function func(&$value, $key, $prefix) { $value = $prefix . $key; } array_walk($arr, 'func', 'prefix_'); print_r ($arr);
829 :
nobodyさん :2011/04/22(金) 19:07:50.98 ID:OjtKl6VG
simplehtmldom で<td>〜</td>内の文字列を取りたいのですが $td->plaintextで取り出すと td内ある <br /> や <a>が削除されてしまうのですが どのようにしたらいいでしょうか?
830 :
nobodyさん :2011/04/22(金) 19:14:56.34 ID:BuQXBTbw
831 :
nobodyさん :2011/04/22(金) 19:19:54.18 ID:OjtKl6VG
>>830 助かりました!! ありがとうございます
nobodyさんが神様に見えてきました・・
キーがだめなら入れ替えれば…値側がキーにしても問題ないもので重複しないとか制限があるけど。 $array =array_flip($array); array_walk($array, function(&$v,$k,$p){ $v=$p.$v; }, 'prefix_'); $array =array_flip($array); 普通にループで回して新しい配列作った方がいいのでは。
833 :
nobodyさん :2011/04/22(金) 19:35:35.15 ID:BuQXBTbw
>>832 素晴らしい回答どうもありがとうございました。
組み合わせ技はなかなか思いつかないので勉強になります。
ループのほうが良いよなぁ foreach ($a as $key => $value) { $b['prefix_'.$key] = $value; }
836 :
nobodyさん :2011/04/23(土) 02:03:10.97 ID:F1ksq7hw
<?php print "a"+(3+3); ?>でaが表示されす6だけ表示されるのは何故? a6って何で表示されないんですか?
数値型に変換されてるから
838 :
nobodyさん :2011/04/23(土) 02:48:54.94 ID:5IDERpwA
"a" . (3+3)
839 :
nobodyさん :2011/04/23(土) 02:59:13.26 ID:F1ksq7hw
今、AjaxをJavascript+PHPで勉強してるんですけど CGIはほとんど勉強してません。 CGIでできることはすべてPHPでできると考えていいですか?
840 :
nobodyさん :2011/04/23(土) 03:28:09.39 ID:5IDERpwA
CGI = perl ならphpでもできる というかウェブ系ならphpでおk
ageてました。。すみません
そんなことまで習ってたら一人前になるまで10年かかるぞ 公式マニュアルを読むかぐぐって5分で解決するレベル
外部サーバーにあるファイルのタイムスタンプを取得する関数ってありますか? filemtime的な PHP5.3
マルチ乙
ftp_mdtm
マルチ丙
file_get_contensでhttpsページにPOST送信した後のレスポンスからcookieを取得したいのですがどうしたらいいですか?
850 :
849 :2011/04/23(土) 22:06:32.15 ID:HKeSVDgr
ID忘れていました すみません
パス抜きですね
853 :
。 :2011/04/24(日) 00:22:34.71 ID:???
PHPからPOST と file_get_contentsのCookie取得 ってそのままググレ
stream_context_create
>>851-854 すみません、よくわかりませんでした。
もう少し具体的にお願いできないでしょうか。
856 :
nobodyさん :2011/04/24(日) 09:26:08.28 ID:EQCQhmqq
simple_html_domでhtmlからRSSを抜き出す方法を教えてください
head linkをいろいろ弄ってるのですができないです・・・
<?php
include('simple_html_dom.php');
$html = file_get_html('
http://blog.livedoor.jp/dqnplus/ ');
foreach($html->find('head link') as $e)
echo $e->outertext;
?>
857 :
nobodyさん :2011/04/24(日) 09:39:30.79 ID:EQCQhmqq
できました。 今後検索できた人用 p://www.syboos.jp/opensource/bookmark/detail/php-simplehtmldom.html お騒がせしました
>>851-854 すみません、よくわかりませんでした。
もう少し具体的にお願いできないでしょうか。
859 :
nobodyさん :2011/04/25(月) 11:55:06.60 ID:Im0lc7sD
mysqlのデータをtableで並べたいと思っています ↓の「データベースの中身」の部分を4列4行ずつで並べたいとのですが、 データベースの中身をすべて並べる方法がわかりません データベースに接続することはできるのですが、先頭の1つのデータで全部埋まったりしてしまいます どうしたらよいでしょうか echo "<table width=\"300\">"; $a = 4; for ($b = 0; $b < $a; $b++) { echo "<tr>"; $c = 4; for ($d = 0; $d < $c; $d++) { echo "データベースの中身"; } echo "</tr>"; } echo "</table>";
<td>がないからとかそんなオチはないよね
861 :
nobodyさん :2011/04/25(月) 12:02:12.70 ID:Im0lc7sD
>>860 すみません
今は「データベースの中身」になっていますが、実際はちゃんと<td>入れて書いてます
先頭の1つのデータで全部埋まったりしてるソース貼らなきゃ分かんないよ。
863 :
nobodyさん :2011/04/25(月) 12:19:44.39 ID:Im0lc7sD
echo <<< EOF <td width="150"> <p><a href="items.php?=$items[0]">$items[1]</a></p> </td> EOF; 「データベースの中身」の部分はこんな感じです データベースには接続できています htmlは <table width="300"><tr><td width="150"> <td width="150"> <p><a href="items.php?=1">AAA</a></p> </td><td width="150"> <p><a href="items.php?=1">AAA</a></p> </td><td width="150"> <p><a href="items.php?=1">AAA</a></p> </td><td width="150"> <p><a href="items.php?=1">AAA</a></p> </td><td width="150"> …… </td></tr></table> すみません これで大丈夫でしょうか?
クエリ発行したら、そんなかに全部配列として格納されてると思ってないよな?
言い方が悪かったですね。 $items = の ある行辺りを見せて。
866 :
nobodyさん :2011/04/25(月) 12:41:57.00 ID:Im0lc7sD
すみません、まちがって修正前の書き込んでしまいました
while (echo <<< EOF
<td width="150">
<p><a href="items.php?=$items[0]">$items[1]</a></p>
</td>
EOF;) {
echo <<< EOF
<td width="150">
<p><a href="items.php?=$items[0]">$items[1]</a></p>
</td>
EOF;
}
↑これだけだとデータベースの中身が表示されるのですが、
これを
>>859 のfor文で囲うと、先頭の1つのデータで全部埋まったりします
>>865 すみません、データベースに接続する文以外はこんな感じです
わかりずらくてすみません
867 :
nobodyさん :2011/04/25(月) 12:44:22.10 ID:Im0lc7sD
ごめんなさい、貼り付け間違えた… while ($items = mysql_fetch_array($result)) echo <<< EOF <td width="150"> <p><a href="items.php?=$items[0]">$items[1]</a></p> </td> EOF;
とりあえず落ち着いてちゃんとソース貼れよ 意味不明な感じになってるぞ
whileの場合はmysql_fetch_arrayが毎回先頭をシークさせて 結果を取得してるからそれで問題ない forの場合は貼ってないからなんとも言えない
>>862 の言うように、まったりしてるソースを貼るんだ!
871 :
nobodyさん :2011/04/25(月) 12:51:50.06 ID:Im0lc7sD
echo "<table width=\"300\">"; $a = 4; for ($b = 0; $b < $a; $b++) { echo "<tr>"; $c = 4; for ($d = 0; $d < $c; $d++) { while ($items = mysql_fetch_array($result)) { cho <<< EOF <td width="150"> <p><a href="items.php?=$items[0]">$items[1]</a></p> </td> EOF; } } echo "</tr>"; } echo "</table>"; すみません 今これで、データベースの中身は全部表示されていますが、 4列4行じゃなく1列に表示されます …いろいろやってみながら書き込んでるので貼り付けまちがったりすみませんでした
そのソースだと1行になるのは当たり前 while ($items = mysql_fetch_array($result)) { これは結果が取得できる限りループを続ける とりあえずの対応でいいならwhileを外してfor内で $items = mysql_fetch_array($result); だけでいい
873 :
nobodyさん :2011/04/25(月) 12:57:47.33 ID:Im0lc7sD
>>872 うわああああああああああああああ
やっとできました
ありがとうございます!
いろいろすみませんでした
とりあえず、whileを if に変えてみよう
そしてまたデータが無い行まで表示されてしまいます という質問が来るんだろうな・・・ 関数の動作ぐらい理解しろ
876 :
nobodyさん :2011/04/25(月) 13:00:45.66 ID:Im0lc7sD
あるC言語で書かれたバイナリを実行して、その結果を取得しないといけなくて、 バイナリと、そのバイナリが実行時に読み込む定義ファイルをサーバー(cent 5.5)に設置しました。 しかし、なぜかそのバイナリが定義ファイルを読んでくれません。 phpからは間違いなくその定義ファイルは読めます。 $module ='/パス/bin'; $param ='param'; $command =$module.' param='.$$param; $handle =popen( $command.' 2>&1', 'r' ); $input =fgets($handle); die ( strval( $input ) ); まじで悩んでます。 どなたか教えていただけないでしょうか?
↑の877です。 ソースが間違えてました。 $module ='/パス/bin'; $param ='param'; $command =$module.' param='.$param; $handle =popen( $command.' 2>&1', 'r' ); $input =fgets($handle); die ( strval( $input ) ); "定義ファイルが読み込めませんでした"という趣旨の文字列が帰ってきます。 しかし、shellで直打ちするきちんと実行できます。 どんなヒントでも結構です。 よろしくおねがいします。
apacheと仮定してapacheユーザーで そのコマンドは実行できるの?
>>875 ここら辺って最初の頃はみんな詰まるとこだし
くだ質としてはいい
>>878 まずはselinuxオフとかパーミッション見直しとか
882 :
nobodyさん :2011/04/25(月) 14:06:43.88 ID:e+Ev3uZ8
変数$bbbに格納されている文字列"aaa"を、変数として利用することはできませんか? $aaa = "あ"; $bbb = "aaa"; echo $+$bbb // 文字列aaaを変数名として呼び出したい
878です。
返信ありがとうございます。
sudo -u apache ./bin param=123
正しい値が返ってきます。
selinuxはoffにしています。
パーミッションも問題ないはずです。(755)
"定義ファイルが読み込めません"という値が返ってくる事で./binは実行されている事に間違いはないと思うのですが、
なぜ定義ファイルが読み込めないのか・・・。
>>883 絶対パスで指定しています。
885 :
nobodyさん :2011/04/25(月) 14:25:37.63 ID:e+Ev3uZ8
出来ました!ありがとうございます 差し支えなければこちらご教示お願いいたします 変数$nameの中の文字列"atest"を元に、オブジェクトを作成したいのですが、うまくいきません $name = "atest"; require "Atest.php"; $atest = new $name(); print_r($atest); class Atest { function check(){} }
>>884 shellで直打ちのとき、違うディレクトリから実行しても問題ない?
>>885 $atest = new $name;
>>886 エラーになりました。
なるほど、定義ファイルは./を探すようになっている為、実行時のカレントパスから見えないわけですね・・・・。
助かりました!!!!
ありがとうございました。
888 :
nobodyさん :2011/04/25(月) 14:59:48.76 ID:e+Ev3uZ8
文字列がおかしかったみたいで885ので大丈夫でした $name ="atewt"ってなってました 手打ちで書いてたのですが2ちゃんにレスしたほうが合ってました
889 :
nobodyさん :2011/04/25(月) 16:43:28.30 ID:Wf6pzALu
便乗して質問させて頂きます オブジェクトを作成するするときに、文字列+変数で作成する方法をご教示お願いいたします require "test.php"; $name = "bbb"; $obj = new "aaa".$name(); class aaabbb{}
$name = "bbb"; $name2 = "aaa".$name; $obj = new $name2();
891 :
nobodyさん :2011/04/25(月) 17:44:52.37 ID:Wf6pzALu
求めている動作としては文字列+変数で作成したいのですが、文字列+変数=変数にする以外に方法はないということでしょうか?
892 :
nobodyさん :2011/04/25(月) 17:57:00.99 ID:EkAUsCib
【OS名】FreeBSD 6.2 【PHPのバージョン】5.1.4 【質問内容】 コマンドラインで実行しています。 実行鯖環境には2つのIPアドレスが存在。AとB(エイリアス)です。 file_get_contentsを使用してCへアクセスするとAからのアクセスとなります。 Bからのアクセスにすることは可能でしょうか? サーバ設定でAとB(エイリアス)を入替えるというのはごめんなさい。
>>891 $name = "bbb";
$abbb = "aaabbb";
$obj = new ${"a".$name}();
895 :
sage :2011/04/25(月) 20:14:00.38 ID:EkAUsCib
>>894 偽装したいわけでは。。。ないです。
接続先が特定のIP(1つ)しかアクセス許可していない。
接続元が複数のIPエイリアスを所持している。
という条件のため特定のこの特定のIPエイリアスからの接続指定がしたいです。
アクセス許可されていないIPでアクセスしようとするのが間違ってるのでは?
ルーターの設定をどうにかしてください
898 :
nobodyさん :2011/04/25(月) 20:50:22.74 ID:2fHI6GSc
fopenでログを開いてwhileで1行ずつ検査し、 一致すればbreakするプログラムを作っています。 100万行の処理を終えるのに、数秒かかるのですが、 while以上に速く検査処理をする方法って無いでしょうか?
DB使う
>>898 並列処理するハックがある
PHP マルチタクスでぐぐってみるとよろしい
901 :
900 :2011/04/25(月) 21:20:15.53 ID:???
ごめん酔っ払ってた PHP マルチスレッドね マルチタクスってなんだ・・・
902 :
nobodyさん :2011/04/25(月) 21:28:47.35 ID:K7Gq3Lks
【OS】CentOS5.5
【PHP】 5.2.10
【質問内容】
PHP Simple HTML DOM Parser(
http://simplehtmldom.sourceforge.net/ )を利用して情報の収集ツールを作成しています。
住所を取得したいのですが、2つめのboxは住所をすっ飛ばして電話番号を取得してしまいます。うまく住所を取得するにはどうすれば良いでしょうか?
つづきます
903 :
nobodyさん :2011/04/25(月) 21:44:18.29 ID:6yvRLmog
ID変えてるのは他の場所自演するためか?w
905 :
nobodyさん :2011/04/25(月) 21:52:48.03 ID:2fHI6GSc
質問者はまず
>>1 を良く読むこと(必須!)
◆質問する時の注意
・スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
892です。
>>907 ありがとうございます!!
proxy用意しないと駄目かと思っていたので助かりました!!
909 :
nobodyさん :2011/04/26(火) 10:38:21.62 ID:x6qrhHZE
>>907 これやると相手のサイトには192.168.0.100ってIPがのこるの?
>>909 質問を良く読め、自分が使うIPアドレスだ
912 :
nobodyさん :2011/04/26(火) 10:52:50.86 ID:x6qrhHZE
という事は荒らしたいサイトにそのコードでアクセスしたらばれないってことか
こうして無知な912はタイーホされるのであった
>>912 何が「という事は」だよw
ネットの仕組みを勉強してこい
かわいいなw
916 :
nobodyさん :2011/04/27(水) 10:22:11.73 ID:cN0DYx7u
PHP_SELFは危険と聞きました。これは何故ですか?
危険と聞いたならググればいいのではないですか?
ググるのは危険だと思うのでここで聞いています
>>916 外部からの入力で値が変わる事、
それを想定していない糞なコードがある事、
この2点が揃って初めて危険と言える
聞いたことの解を求めるために再び聞くって連鎖を繰り返すオヴァカさんはプログラム向いてないからさっさと諦めてよ
入力値を表示させるのは危険だけど、こいつもそうなのを忘れがちってこと。
>>920-921 二人とも何を言ってるのかよくわかりません。
日本語が不自由な方々でしょうか。
923 :
nobodyさん :2011/04/27(水) 17:27:46.13 ID:1DO68SdU
PHP5.1を使っています。 ブラウザからアクセスがあったときに PHPで書かれたバッチファイルをexecで実行しようとすると Unable to forkとエラーが出てしまいます。 バッチファイルは、別のテキストファイルを読み込もうとしているのですが、 このテキストファイルの権限は777にして/home/hoge/下に 置いてあります。 このテキストファイルのオーナーがhogeだと上記エラーは出ないのですが、 他のユーザがオーナー(例えばfuga)だとエラーが出てしまいます。 また、同じコマンドをcronからapacheユーザで実行すると 上記エラーはでません。 権限が777でもファイルのオーナーが異なることによって 上記エラーが出る場合は、どこに原因があるのでしょうか? また、同じコマンドをcronから実行しても エラーがでない理由がわかりませんでした。 ご教授をお願いいたします。
ご教示
ご享受
>PHPで書かれたバッチファイル バッチファイルをPHPを使って書き出すというわけだな
>>923 /home/hoge/ ディレクトリのパーミッションを確認。
テキストファイルのオーナーをfugaにするというのは、/home/hoge/ 配下のままオーナーをfugaにするのか、
それとも/home/fuga/ 以下に設置した場合なのか。
Unable to fork は子プロセス起動エラーなのでブラウザからアクセスした場合にexecできなかったことを示す。
cronでそのPHPのバッチファイル?を直接実行したのならforkエラーは出ない。
928 :
923 :2011/04/27(水) 19:50:18.85 ID:1DO68SdU
>>924 >>925 すみません。
お恥ずかしい。。。
>>926 バッチファイルをPHPで記述しています。
で、そのバッチファイルが/home/hoge/下にある
テキストファイルを読み込んでいます。
>>927 > /home/hoge/ 配下のままオーナーをfugaにするのか、
こちらになります。
不思議なことに同じ状況で何度かブラウザからアクセスしてバッチの起動を試すと
Unable to forkが出ずにexecもしっかり実行されていることもあります。
レン鯖とか?プロセス数制限されてたりとか?
931 :
923 :2011/04/27(水) 20:08:44.45 ID:1DO68SdU
レンタルサーバではないので、プロセス数に関しては 制限を設定した覚えはないので、初期値のまんまだと思います。 プロセス数の制限はどの辺を確認すればよろしいのか教えて頂けますか? すみません。。。
ちゃんと実行できる場合があるということは、権限の問題じゃないわけだな。
>>932 ファイルのオーナがhogeだとエラーは1度もでないのですが、
fugaだと必ずエラーが出て、何度か同じ状況で試すと
エラーがでないことがあるという状況なんです。
ですので権限が関係あるのか無いのか
いまいちピンとこない状況です。。。
ちなみにブラウザでアクセスしたときに
呼ばれるPHPと、そのPHPから呼ばれる
バッチファイルのPHPのオーナーは
fugaで、/home/fuga/配下にファイルがあります。
934 :
923 :2011/04/28(木) 08:35:07.94 ID:zJffplQy
すみません。IDをだし忘れました。
hogeとかhugaとか分からん 要点を極限まで絞って質問してくれ
とりあえずパーミッション777にしてみろ
>>933 問題となっている事項を再整理してから質問してください。
再度の質問をする際には、
>>1 を読み返してください。
938 :
923 :2011/04/28(木) 10:28:28.42 ID:zJffplQy
改めてまとめてみました。 【OS名】CentOS 【PHPのバージョン】5.1 【連携ソフトウェア】MySQL ブラウザからアクセスがあったら /home/fuga/aa.phpがapache上で実行され このプログラムから /home/fuga/batch.php をexecで実行します。 /home/fuga/batch.php は /home/hoge/aa.txt を読み込むのですが、 /home/hoge/aa.txtのオーナーが fugaだとexec実行時に「Unable to fork」とエラーが表示されます。 ただ、同じ状況で何度か試してみると、 稀にエラーが出ずに実行されることがあります。 apcheユーザのクーロンから/home/fuga/batch.php を実行すると上記エラーは1度も出ませんでした。 /home/hoge/aa.txtのオーナーが hogeの場合でもそういったエラーは1度もでませんでした。 /home/hoge/aa.txtはパーミッションを常に777にした状態でも 上記のような現象が出てしまいます。 原因が掴めず途方にくれております。よろしくお願いします。
>>938 exec の部分を可能な限り晒してくれ
includeで動くようにして逃げれば? 重くなるだけだし。
941 :
923 :2011/04/28(木) 11:40:12.72 ID:zJffplQy
>>939 execは以下のような感じで記述しています。
よろしくお願いします。
exec('/usr/bin/php /home/fuga/batch.php arg1 arg2 >> /tmp/fuga.log 2>&1 &');
>>940 バッチを外部起動にしているのは、
バッチ処理が動いている間にクライアントを待ち状態にしないためになります。
includeにしちゃうと、バッチが終了するまで、
クライアントを待たせちゃうような気もするのですが、
そのことを「重くなる」と表現されているのでしょうか?
>>938 exec() を popen() で置き換えて何のエラーが返ってくるか調べてみたら?
どっちも同じコードを使ってプロセスを起動しているから
943 :
nobodyさん :2011/04/28(木) 12:22:05.15 ID:5jyOsFLH
whileでファイルを1行ずつ回した時に、 長い行があり、 allowed memory size of〜と出ますが、 このエラー出ても後続の行を処理する方法はないですか?
944 :
nobodyさん :2011/04/28(木) 12:35:40.26 ID:3JBHsj5i
memory_limitを増やす
945 :
nobodyさん :2011/04/28(木) 12:36:58.15 ID:zoh8QsmK
しかないですよね・・・orz 結構お客さんに無茶ブリされてますわ
それはコードが貧弱なだけで無茶ブリとは言わない freadやfseekで改行位置探ればいいだけ
一行の長さが不明なのに一行ごとに読み込むとかアフォですか 一行が1TBとかあったら大抵のシステムでエラーでるわw
948 :
nobodyさん :2011/04/28(木) 13:52:55.86 ID:zoh8QsmK
>>947 その1TBを読み込んでくれと言われてる状態
>>948 具体的に質問にしたら誰かいいアイディア出してくれるかもよ
メモリの上限まで読み込めんで、処理した後破棄すれば?
処理内容によるけどバイト単位でできないのか
>>948 だから少しずつ読めばいいだろうが
while内でどんな処理をしたいのか知らんけど、
ファイル読み込みルーチンのアルゴリズムくらい自分で工夫しろよ
>>948 メモリに入りきらない長い行があるファイルって何さ?
whileで行ごとに処理とか言ったら、テキストっぽいけど……
テキストなら、一行で1TBもあるとか、
改行コード指定を間違ってるとしか
954 :
923 :2011/04/28(木) 15:39:04.83 ID:zJffplQy
>>942 poepnを使ってエラーを再現してみたところ、
Cannot allocate memory
と表示されていました。
PHPのmemory_limitは512Mになっていたので
いったん無制限にしたところ、エラーがでなくなりました。
ただ、topコマンドで見る限り、
そもそも/usr/bin/php /home/fuga/batch.phpは
せいぜい数十MBしかメモリを消費しないので、
なんでメモリのエラーがでたのかが不明なのと、
オーナーがfugaに変わると、エラーが出ていたのかが
わかりません。
その上再度PHPのmemory_limitを512MBにしても
エラーを再現できなくなってしまいました。
Cannot allocate memoryっていうのも初めて見たので
memory_limitをいじることが正しかったのかといったところも
不安ではあります。
考えてるのと別の理由でエラーが出てるんじゃないの? 偶然memory_limitを変更したらエラーが出なくなったため、それが原因と思い込んでるとか。 オーナー変更云々もそう。
957 :
923 :2011/04/28(木) 16:23:23.51 ID:zJffplQy
>>955 そうですよね。
自分でも別のところに原因があるんじゃないかと
思いつつも、全く原因に思い当たる節が無いので
困っているところです。。。
今日はphp.iniの設定を変えたことで
apacheの再起動をしているんですが、
そのあたりも関係しているのかとか
考えているところです。
958 :
1/2 :2011/04/28(木) 16:27:36.11 ID:6tXmcG0P
<?php
$category = $_REQUEST["category"];
$no = $_REQUEST["no"];
?>
<html>
<head>
<title>sample02</title>
</head>
<body>
<?php
if($category == 1){
print "あなたはカテゴリー${category}にいます。<br>";
if($no == 1){
print "あなたはNO.${no}番のいいちこを選びました";
}
}
if($category == 2){
print "あなたはカテゴリー${category}にいます。<br>";
if($no == 2){
print "あなたはNO.${no}番の大五郎を選びました";
}
}
?>
<p><a href="parameter2.html">戻る</a></p>
</body>
</html>
(こちらを借りさせていただいてます)
ttp://plog.pya.jp/program/php/lesson09/sample02.html
959 :
2/2 :2011/04/28(木) 16:31:40.00 ID:6tXmcG0P
>>958 のプログラムではカテゴリが2つありますが、
カテゴリを増やしたいときに
if($category == 3){
print "あなたはカテゴリー${category}にいます。<br>";
……
とまた繰り返して書かずにすむ方法はありますか
うまく言えませんがお願いします
960 :
nobodyさん :2011/04/28(木) 16:38:18.85 ID:6tXmcG0P
>>959 です
++と繰り返し文でできる気がしました
今やってきますのでできなかったらまた来ます
すみませんでした
961 :
nobodyさん :2011/04/28(木) 17:19:54.77 ID:6tXmcG0P
つまずいたので戻ってきました $rs = mysql_query("select * from main where category_id = [あああ] order by count desc",$con); 「main」テーブルの中の「category_id」フィールドが1(,2,3…)のものだけ表示したいと思ってます [あああ]の部分は++とか使えないと思うんですけど、どうしたらいいでしょうか 説明が下手ですみません
between 1 and 3 PHP関係ないけどね
963 :
nobodyさん :2011/04/28(木) 17:29:07.52 ID:6tXmcG0P
>>962 ありがとうございます!
またがんばってきます
1の時に1、2の時に2出したいのかな それならただ単に$categoryを文字列につなげればいいだけだが
965 :
923 :2011/04/28(木) 18:56:59.50 ID:zJffplQy
php.iniの設定を変えたり元に戻したりで apacheの再起動を行ってから エラーが再現できなくなりました。 それ以外の設定ファイルは何も触っていないので apacheの再起動が関係しているのかな・・・と 勝手に思っているのですが、 そろそろお手上げになりそうです。。 ダメもとでも構いませんので 確認しておいたほうがいい所があれば 教えて頂けないでしょうか。
/var/logの中身
967 :
nobodyさん :2011/04/28(木) 22:03:15.85 ID:cPVEaxyS
Webプログラムでなくサーバの設定の問題なのかもしれませんが、お願いします。 SNSサイトでログイン認証を行う場合に、ログイン画面だけはhttps、ログイン後はhttpというサイトがあったのですが、 これはどのような仕掛けで行っているのでしょうか。 認証画面に飛ばすサンプルはぐぐれば見つかりますが、その時に特に「httpsに飛ばせ!」のような記述は見当たりません。 どのようにして(誰が?)、このページはhttp、こっちのページはhttps、という選別(?)をしているのでしょうか。
その動きって今警告でないっけ。 httpsからhttpに移動しようとしてるけどいいのか?みたいな。
970 :
nobodyさん :2011/04/29(金) 00:12:47.61 ID:84jXJbM/
カウンターを作るときファイルに書き込むときはファイルロックをする アクセスログを記録するときはファイルロックはしない 前者はロックしないと壊れる 後者は追記していくので壊れることは無い こういう認識でいいでしょうか?
ファイル名変更でカウントするのかなりいいよ ロックする必要もない
それも正確になるかは微妙 名前取得と書き換えの間に次のプロセスで名前取得が起きた場合とか
ログも壊れるよ ログを書くスレッドを一個用意すればいいよ
>>968-
>>969 おお即レスありがとう。
やっぱり知ってれば単純な設定なんですね・・書くまでもないってことかぁ。
そろそろ次スレの時間か
ログイン時だけhttpsはセキュリティ的にアウトなんじゃなかったっけ? そのせいでgithubとかが全てhttpsになるように変えたと思うんだけど・・・
>>977 そんなものはシステム次第
ログイン情報さえ守れれば良いなら、ログイン時だけでいい
セッションキーが漏れるからログイン時だけじゃダメ
次スレ立てとくか
981 :
980 :2011/04/29(金) 16:11:44.99 ID:???
たてれんかった だれかたのむ
やなこった
ファイル名変更でカウントするのかなりいいよ ロックする必要もない
DBの権限が無いだけなのでは
$_SERVERに入ってちゃまずいのか? そういうもんとして受け入れるしかないだろ
それはただのライブラリだ
なぜ同じになると思ったの?
ありがとうございます PDOのがいいんですね これからPDOを使うことにします
こういう無意味な荒らしする奴の心情がわからないわ そして連投規制(笑)
読んで
デコードされないように追加変換する事にした。 ファイル名の変更は現実問題として無理なのでNGです。
そうでもない。
コンテナかね
非推奨関数使いすぎだボケ
なんとなくだけど、Aero無効、もしくはオーバーレイを無効にしてみたらどうだろうか。
それだとPHPがHTML返しているのが原因。
ドメイン変えてみたら?
誰か新スレ立ててけろ
立てれんかった。誰かよろ。
Cookieの件ですが解決しました まさかサブドメインにアンダーバー(_)が入っているとIEで使えないとか・・・。 いい勉強になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。