【PHP】下らねぇ質問はID出して書き込みやがれ 113
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 112
http://hibari.2ch.net/test/read.cgi/php/1320005469/ ◆質問用テンプレ
【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に保存?
→ 好きにしてください
6 :
nobodyさん :2011/11/29(火) 21:15:16.97 ID:LGqBs4Ty
バロンのエクストラハイバックか 机が普通だと違和感あるねw
9 :
nobodyさん :2011/11/30(水) 10:17:38.58 ID:gvpuZTLB
PHPファイルの中のコメントを全て削除したいのですが、上手い方法が思いつきません 全体を読み込んで、正規表現にて除去とかは分かるのですが、コメントの場合分けが難しいです 例えば、//とか/* */とか 今回は特に気にしませんが、/* */はDocblock コメントの場合は除くとか //に関しては文字列中の//は対象としないとか どのようにすればいいのでしょうか? 正規表現の指定法または、参考になるサイト、ライブラリなどもしご存知でしたらアドバイスいただけないでしょうか?
11 :
nobodyさん :2011/11/30(水) 10:33:04.34 ID:gvpuZTLB
windows7です ちょっとしたバッチ処理をphpで書いているのですが そのphpのフルパスに日本語が入っていても正常に動かないのでしょうか 例えば"C:\ソ" にutf-8で"test.php"を作って その中身が <?php error_log("あいうえお",3,"errorLog.txt"); ?> の場合でも、「Could not open input file: C:\ソ\test.php」というエラーが出ます。 典型的なダメ文字の症状ですけど。 $p="errorLog.txt"; $p=realpath($p); $p=mb_convert_encoding($p,"SJIS-win","utf-8"); error_log("あいうえお",3,$p); で絶対パスを取って、sjis-winに変換しても変化なしでした。
13 :
nobodyさん :2011/11/30(水) 19:52:05.02 ID:kRVuJcbm
すみません ものすごく初歩的な質問なのですが CSVファイルから、特定の文字列が存在する行のみhtmlに書き込むには どのようにすればいいのでしょうか?
初歩的っていうか丸投げですねとっても まずどうやってみたのかのコードを出してください
>>13 ものすごく初歩的ですので、PHPを使う必要はないと思います。
以下のコマンドでどうでしょうか
grep 特定の文字列 > 出力ファイル.html
ごめんなさい grep 特定の文字列 CSVファイル.csv > 出力ファイル.html の間違いでした。
>>12 PHPが対応するまでムリです。
>>13 echo join("<br />", preg_grep("/pattern/", file("example.csv")));
>>14 >>15 >>16 >>17 非常に親切な返答をありがとうございます
grepナニソレのレベルなので
まずは自分で調べてみます
お粗末な質問で失礼いたしまた。
>>17 エスパー乙
でも、joinつかうならimplodeで。
20 :
nobodyさん :2011/11/30(水) 22:51:41.16 ID:CyKoUyyW
>>20 wの制限は500まで(1000といれても500の画像が返ってくる)
元画像の比率を保ってるのでhは無意味(いらんパラメータ)
・元画像が500*600でw<500の時元画像を縮小して表示している
・レスポンスが遅すぎることから毎回画像を生成している可能性は高い(キャッシュしてる可能性は低い)
>>20 <img width="50" height="60">でいいんじゃない?
23 :
nobodyさん :2011/11/30(水) 23:55:56.82 ID:CyKoUyyW
>>21 >・レスポンスが遅すぎることから毎回画像を生成している可能性は高い(キャッシュしてる可能性は低い)
最初は遅いんですが、もう1度同じサイズをリクエストするとすぐ返ってきません?
>>20 で予想したように、1度生成したサイズは保存してるんじゃないかなぁと思ってるんですが・・・
24 :
nobodyさん :2011/11/30(水) 23:58:48.04 ID:CyKoUyyW
>>22 それだと、元画像分のサイズを全ての画像が読み込まれるので
通信量がものすごいことになりそうです
利用者側からしてもかなり遅くなるかと
>>24 光回線が当たり前の時代にそんなの微々たる問題
昔の2chみたいにCPUより通信量ネックという事情もあるかもしれない。 縮小とキャッシュのとこは、自分で答えが出てるんだからそうすればいいだけ。
>>25 携帯のこととか考えると必ずしもそうとは言えない
だがよく考えて見てほしい あの狭い画面でPCと同じ画像のページを開くことは考えにくいということを。 普通にリサイズして別途用意するなり したほうが早いんじゃないかと。 3キャリアの端末もまだまだ大石蔵之介…
>最初は遅いんですが、もう1度同じサイズをリクエストするとすぐ返ってきません? そらブラウザがキャッシュしてるだけだろjk サーバ側じゃキャッシュされてないよどうみても
30 :
nobodyさん :2011/12/01(木) 01:27:59.24 ID:yrVuSQr5
phpファイルを読み込んで出力するのはrequireだと思うんですが、 phpファイルの部分的に(functionなどでわけられていないもの)使いたい場合どうしたらいいでしょうか? file関数で配列にいれて、必要な部分だけechoしたら、phpとして動作せずそのままhtmlに吐き出してしまってうまくいきませんでした
32 :
nobodyさん :2011/12/01(木) 01:46:04.10 ID:xxc60IvZ
>>28 必要な画像サイズを洗い出して
その種類分用意するのもありですね
zozoのような方法がメンテの面などでも一番フレキシブルに対応できるので良いんですが・・・
>>29 ブラウザのキャッシュを忘れていました・・!
ただこの時間にリクエストすると待ち時間無しですぐ生成されますね
34 :
nobodyさん :2011/12/01(木) 10:56:09.73 ID:a+GODL7E
【OS名】Win7 32-bit 【PHPのバージョン】5.3.8 【連携ソフトウェア】特になし 【質問内容】 NetBeans IDEというのをダウンロードして入れてみました。 各言語版がありますが、英語版だとショートカットの 操作がやりやすいなどの利点はありますか?
36 :
nobodyさん :2011/12/01(木) 11:10:40.00 ID:a+GODL7E
37 :
nobodyさん :2011/12/01(木) 17:48:01.42 ID:JnuQSJ9i
ある配列で、A,B,C,D,EがA,B,E,C,Dとかに変わったとき 今、なにがどこの位置に入ったかを知りたいんですが どうにかして、知る方法ってありますか? foreachで頭からまわしても、違う場所は取れるけど A,B,C,D,E → A,B,D,E,CとCを一番下に持ってきたときに Cが一番下に行ったと判断ができません。 ドラッグ&ドロップで要素をもってきてこの間に入れるみたいなイメージしていただくと わかりやすいですでしょうか? A,B,C,D,E → E,A,B,C,D(Eを一番上にもってきた、Aの上にもってきた) A,B,C,D,E → A,C,D,B,E(BをDとEの間に入れた) よろしくお願いします。
>>37 単にどれが何番目に入ってるか知るだけなら、はじめに
array("A"=>1,"B"=>2,"C"=>3,"D"=>4,"E"=>5) とか基準配列を作って
変化後の配列の中身をforeachで調べればいい。
結果としてどういうデータが欲しいんだろう?期待する結果データ例が欲しいね。
39 :
nobodyさん :2011/12/01(木) 18:15:02.96 ID:JnuQSJ9i
>>38 ありがとうございます。
基準配列と、実行後配列はもってるんですよね。
結果データとしては、この配列の値がココに移動したよってのを
スクリプト内で知りたいんですよ。
iGoogleとかMyYahooとかのでのモジュールをD&Dしたりできますよね。
結果を取得してデータをインサートしてるんですが
その移動の解析用に、どこの位置にあったものがどの位置にいったかをしりたいんですよね。
この説明わかりづらいですかね?w
移動したものだけがほしくって、その操作によって位置をずらされたものはほしくないってことだろうか
>>39 具体例を書けって言ってるのに。
例えばCが三番目から最後に移動したら C => "3-5" みたいなデータが欲しいってこと?
42 :
nobodyさん :2011/12/01(木) 18:38:18.50 ID:JnuQSJ9i
>>40 なんどもすいませんw
そうですね。ズレたものが、どの位置に入ったかってだけですが、
ずらされたもの全ても、必要っちゃ必要かもしれません。
そこは、チョット仕様見直します。
今のところの結果としては()内が結果の配列イメージです。
実際はいろんな値が組み合わさっているので、少し違いますが、純粋に直すとこんな感じです。
A,B,C,D,E → E,A,B,C,D(null,E,A)
A,B,C,D,E → A,C,D,B,E(B,E,D)
A,B,C,D,E → B,C,D,E,A(E,A,null)
みたいな感じですかね。
一応、歴は長いんですが、全然閃かなくって・・・
バイトで外注請けおったものなんで、周りに聞きづらくw
もし、スレチでしたら、違う所で聞くようにします。
>>42 考えすぎなのでは。
From:A,B,C,D,E → To:A,B,D,E,C としたら、
何が:最初から見て行って違うところのFromの文字
どこに:上の文字のTo内の位置
カッコ内の配列の意味は分かりませんので無視しました。
44 :
nobodyさん :2011/12/01(木) 18:50:25.39 ID:JnuQSJ9i
>>43 確かに考えすぎかもしれませんww
昼過ぎから頭パンク状態ですw
何が動いたかってのが、分からないんですよ。
現状、前と結果の配列だけしか返ってきてないので、
Cが動いたんだけど、その位置調べたら的なことができません。。
そこは、設計ミスか。。。w
>>42 結果の配列がよく分かんないけど、移動したデータとその前後かな?
という前提で、入れ替え操作はJSでやってるとして、
入れ替えたタイミングでJSで前後取得してAjaxで送ればいいんじゃないの。
ただやっぱり値そのものと別に順番の数値データを記録したほうがいいと思うけど。
46 :
45 :2011/12/01(木) 18:53:30.92 ID:???
リロードしてなかった。言いたいことは43とだいたい同じです。
47 :
nobodyさん :2011/12/01(木) 18:54:47.74 ID:JnuQSJ9i
>>45 そうですね。移動したデータとその前後です。
ちょっと事情があって、JSの実装が現状できない状態なんですよ。。。スイマセン。
サーバーサイドだけでなんとかできないかなと悩んでいるんです。
48 :
nobodyさん :2011/12/01(木) 18:56:41.74 ID:JnuQSJ9i
チョット整理します。
>>43 のは、下記の様なEが上に動いた場合、ひっかかってしまうのかなと。
A,B,C,D,E → E,A,B,C,D(null,E,A)
ん。。いいけるか?・・・
みんな配列の意味がわからんといっているのに。 その配列が、ほしいものを表現しているはずで、それの意味がわからない限り、ほしいものを理解できないんよ。 ちなみに歴どのくらいですか。
>>49 (移動後の前のデータ,移動したデータ,移動後の後ろのデータ)
nullは先頭か末尾 でしょ。
順番数値を記録したほうがいいと思うけどねぇ。
51 :
nobodyさん :2011/12/01(木) 19:08:34.14 ID:JnuQSJ9i
>>49 配列の意味は、
>>45 さんの言った通り、移動したデータとその前後です
A,B,C,D,Eがあったとして
先頭にEを移動した場合は、 null , E , A
BとCの間にEを移動した場合は、 B,E,C
Aを一番後ろに持ってきた場合は、E,A,nullという感じです。
歴はサイト作り始めてからだと、10年くらいですかね。
主にC,C++,perl,phpで作ってます。
52 :
nobodyさん :2011/12/01(木) 19:14:29.96 ID:c0/6kWvj
データソース取得したデータをスケジュールカレンダーみたいに表示するには どのようなプログラミング方法が考えられるでしょうか。 データソースを繰り返させて、そのなかでifで 何月の時は、こう 何もなかったら、 こう とさせるのが、ベターなかんじですか ? データソース 1月, ほげほげ 1月, なんちゃら 2月, あらあら 3月, おらおら 3月, きゃんきゃん 3月, にゃんにゃん 5月, ぱっぱら 表示 ↓ 1月 ほげほげ祭り なんちゃら祭り 2月 あらあら祭り 3月 おらおら祭り きゃんきゃん祭り にゃんにゃん祭り 4月 無し 5月 ぱっぱら祭り
53 :
nobodyさん :2011/12/01(木) 19:39:23.19 ID:JnuQSJ9i
やっぱり、JSで動かしたやつの値を入れてもらったほうがいいですかね。 明日にでもチョット相談もしてみます。
>>48 動いたのがAなのかEなのかチェックできれば終わりだね。
方法はいろいろあるけど、貴方が判断してる方法でやればいいだけ。
55 :
nobodyさん :2011/12/01(木) 19:52:00.67 ID:iRQfyLtk
すいません、他のスレに誤爆してました。 OSはcentos5.5 apache2モジュールphp5 nobody権限なんですが、sell_exec()からmysqlを実行したいのです。 セキュリティに問題なく実現する方法はないでしょうか。
56 :
nobodyさん :2011/12/01(木) 19:52:25.19 ID:JnuQSJ9i
>>54 配列同士を比べて、どれがどの位置に入ったかって判断するのは
多分可能なんでしょうけど、すごいめんどくさそうですしねw
久しぶりに頭フル回転しました。。。ありがとうございます。
>>51 > A,B,C,D,E → A,C,D,B,E(B,E,D)
は、
A,B,C,D,E → A,C,D,B,E(D,B,E)
だったってことか。
読み取れなくてごめんな
>>56 もしかしてなんだけど、1個しか動かない前提なの?
>>56 ABCEDの場合はEとDのどちらが動いたと判定するの?
読んでないが{元の位置、内容}の配列でいいだろ。
61 :
nobodyさん :2011/12/01(木) 21:09:17.83 ID:Uf/kHM0d
>>58 えっと、D&DでJSからのAPIが投げられるので基本ひとつしか動かないです。
まとめても出来なく無いですけど、実装してないですね。
でも、まとめてもありかもw
>>59 あ、なるほど。。。
ABCEDだと、確かにどっちが動いたか判断できないですね。。。orz
だめかwwwwww
トドメをありがとうございます!ww
1個しか動かないんなら、どれが動いたかをhiddenにもっておけばいいような。 どこにってのも、動いた先の前要素(または後要素)のいずれかを持っておけばよいような。 ってやれば結果配列を持つ必要なくね?
あと、どれが動いたのかを知る必要性が今のところ見当たらなくて。 操作履歴みたいなのを保存したいのか、状態の変化を保存したいのかで変わってくるんだけども。
64 :
nobodyさん :2011/12/01(木) 22:02:39.65 ID:Uf/kHM0d
>>62 ,63
いや、hiddenとかHTMLをいじれる状況じゃなかったので
配列2つの比較で、出来るかなぁと思って相談してみたのですが、
>>59 でトドメになっただけです。
HTMLをいじれるなら、簡単なことなんで。
複雑なものなので、短絡化して相談しただけです。
APIもいじれない状況なのね。 なんかしんどそうだけどがんばってw
66 :
nobodyさん :2011/12/02(金) 00:17:56.21 ID:+5TRrPlW
日本語、改行、タブ文字の混ざった文章を日本語を維持しつつ、一行に変換&復元したいです。 具体的に言うと、json_encode()の様に \→\\、改行→\n、タブ→\t ・・と変換して与えられた文字を1行のテキストに変換したいです。 json_encode()でいいかと思ったのですが、json_encode()だと日本語が\u3042 の様に変換されてしまいます \→\\、改行→\n、タブ→\t の変換だけなら自力でやればいいかと思って $b=str_replace("\\\\",'\\\\',$a); $b=str_replace("\n",'\n',$b); の様な処理を書いてみたのですが、どうも上手く変換&復元が出来ません。 特に\\nを復元する時、\\→\を先にやると\\n→\n→改行 となってしまい \n→改行を先にやると、\\n→\改行 となってしまい 期待している\\n→\nという復元が出来ません。 json_encode()で日本語を\u3042のように変換させない手段、又は\\n→\nが出来る処理。 手段は問いませんので 日本語、改行、タブ文字の混ざった文章を日本語を維持しつつ、一行のテキストに変換&復元する方法を教えて下さい。
>>66 \\nは\\とnなんだから \という文字とnになるのであってそれは 改行ではないよ?
諦めてbase64やjsonやURLエンコード使っとけ。 PHPで希望の変換かけばコストが掛かかってしまう。 それができると既存エンコードよりどの位いいんだよ。
"\\\\"でexplodeして、それぞれの要素でで\n,\tの変換後、"\\"でimplode
2バイト目が5C等になりうることによる問題 Shift_JISでは、「ソ」「噂」など一部の字の2バイト目に、5C16(Shift_JISでは¥記号、ASCIIなどではバックスラッシュ)を使用している。 Shift_JIS - Wikipedia
74 :
52 :2011/12/02(金) 08:05:15.26 ID:sTn2jPiz
PHP覚えたら就職できますか? 44才魔法使いです
>>76 魔法が使えるなら、どこでも就職できると思うんですが
>>52 年間行事の表示方法なんて、PHPと関係ないだろ。好きな様に表示しろよ。
80 :
nobodyさん :2011/12/03(土) 09:45:28.38 ID:FACCXriu
55ですが、どう足掻いてもセキュリティ上無理っぽいのでwebのphp(nobody)では登録ファイル書くだけにして、予め予約しておくcronでチェックしてdb登録することにしました。
>>80 Mysqlは頻繁に起動したり止めたりするものではないだろうけど
sudo とかでできないの?
82 :
nobodyさん :2011/12/03(土) 15:33:03.81 ID:50KGadHw
/** clean a string from the diacritics function _cleanString($string) { $diac = /* A */ chr(192).chr(193).chr(194).chr(195).chr(196).chr(197). /* a */ chr(224).chr(225).chr(226).chr(227).chr(228).chr(229). /* O */ chr(210).chr(211).chr(212).chr(213).chr(214).chr(216). /* o */ chr(242).chr(243).chr(244).chr(245).chr(246).chr(248). /* E */ chr(200).chr(201).chr(202).chr(203). /* e */ chr(232).chr(233).chr(234).chr(235). /* Cc */ chr(199).chr(231). /* I */ chr(204).chr(205).chr(206).chr(207). /* i */ chr(236).chr(237).chr(238).chr(239). /* U */ chr(217).chr(218).chr(219).chr(220). /* u */ chr(249).chr(250).chr(251).chr(252). /* yNn */ chr(255).chr(209).chr(241); return strtolower(strtr($string, $diac, 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn')); } } というのが外国のライブラリの中にあったのですが、何をやっているのか意味が分かりません 最後のAAA〜は何を意味しているのでしょうか?
83 :
66 :2011/12/03(土) 17:05:05.70 ID:???
>>67-71 どうにも難しいみたいですね。
\を\自体と\xの2パターンあるのが難しい理由みたいです。
結局、最初にAAの様なキーを作って
改行→AA1、タブ→AA2・・としました。
もちろん、最初に変換対象の文字にAAは無い事を調べた上で。
全パターンのキーがあってキーの作成が出来なかったら破綻しますけど・・・
>>82 $string 内にあるアクセント付きアルファベット($diac) を
アクセントの無いアルファベット('AAAAAA〜')に strtr して、strtolower してる
85 :
nobodyさん :2011/12/03(土) 17:30:37.82 ID:UqIE+ehV
=& ってどういう意味ですか?
86 :
nobodyさん :2011/12/03(土) 18:18:59.34 ID:50KGadHw
>>84 これは自分たちのような日本語を使う場合でも必要な処理でしょうか?
外国だから必要なのかなと思いまして
見たことがなかったので
87 :
nobodyさん :2011/12/03(土) 21:52:27.47 ID:AR407ZHO
phpをfastcgiのように、常に起動させる為のコマンドオプションとか 知っていらっしゃる方がいたら教えてほしいです。
88 :
nobodyさん :2011/12/03(土) 21:59:06.19 ID:zvnHXPsG
1024サイズのモニタで作成したHPは27インチワイドとかの モニタではどのように表示されるのでしょうか?
90 :
66 :2011/12/03(土) 23:53:42.79 ID:???
ファイルロックに関してです。 2つのプロセスを走らせて、プロセスAで $fp=fopen("A.txt","r+"); flock($fp,LOCK_SH); ftruncate($fp,0);//←ここでファイルサイズが0になる fseek($fp,0); fwrite($fp,"あいうえお"); fclose($fp); と言う処理をusleep(200000);で0.2秒sleepさせながら実行し もう片方のプロセスBは $fp=fopen("A.txt","r+"); fgets($fp); fclose($fp); という普通のファイル読取処理を0.1秒間隔で実行し、fopenが成功したか、fgetsが成功したかを順次表示させています clearstatcacheは毎回しています。 プロセスAだけであればあいうえおという文章が書き込まれるのですが プロセスBを同時に走らせるとプロセスAのfwriteで0が返ってきて書き込みに失敗し、ファイルサイズが0になってしまいます。 この原因も知りたいのですが、ファイルロックについて詳しく知りたいです。 LOCK_SH、LOCK_EXそれぞれの場合、そのロックを行い 別プロセスでfopen、fgets、fclose、filesizeの様なファイルに関係有る処理を行った場合、どうなるのが仕様なのでしょうか。 ロックされているファイルに対してプロセスBでfopenを行った場合、プロセスAでロックが解除されるまでプロセスBは待機されるのかと思ったのですが そうはなりませんでした。
名前欄は特に関係ないです
93 :
nobodyさん :2011/12/04(日) 00:59:35.07 ID:zQYW8hqE
PHPで数式を扱いたいのですが、教えて下さい 例えば、簡単な例で言えば高校数学の組み合わせで出てくるコンビネーション(C)等を表すPHP関数はマニュアルを見てもないようです 他にも、Σや微分・積分など(まぁ、微分・積分は自分は必要はないですが) これらのような方程式などを扱うためのライブラリとか、アルゴリズムの載ったサイトとかありましたら教えていただきたいのですが ある数式をPHPで・・・と思ったのですが、その最初の数式の方程式の所で分からなくなりまして
Cなんか、自分で作っても一瞬でしょうに。 ここで聞くなら、その数式を書かなきゃ。
>>94 同意
必要ななのか、CやらPやらの作り方を書くだけでも答えてくれるかもよ
96 :
nobodyさん :2011/12/04(日) 01:48:20.62 ID:zQYW8hqE
>>94 まぁ、コンビネーションなどは確かにすぐではありますが、数式の例がパッと浮かびませんでして上記のようなものを適当に書いてみました
すみません
自分のやりたい数式は統計、分析系でしてΣ、条件付確率を多用します
一からそういった数式のアルゴリズムを学習して、何度の高いものに挑戦しようかと思いまして
ライブラリに関しましても、そのまま利用するよりも中身をハックしようと考えていました
単純ベイズとか、ピアソンの相関係数とかやってみたいと思っています
>>92 なるほど、flockはflockにのみ影響を与えるのか。
つかめてきました。ありがとう
>>96 PHPよりCのほうがいろいろ揃ってる気がする
ぺろぺろ
101 :
nobodyさん :2011/12/04(日) 03:05:45.07 ID:UvLgiAdt
【OS名】CentOS 【PHPのバージョン】5.2 Digest認証をしてるディレクトリ内にあるPHPスクリプトから、 同じディレクトリ内のページにfile_get_contentsすると失敗する。 file_get_contentsで認証できませんか?
102 :
nobodyさん :2011/12/04(日) 11:16:41.58 ID:ZwuGc3Sg
【OS名】Linux系(詳細不明) 【PHPのバージョン】5.3.5 【連携ソフトウェア】MySQL 【質問内容】 海外サーバ(ローカルタイムは米国西海岸)を使っていて、 MySQLに時刻データ(日本時間)を保存するとき、どの方法がスマートですか? データ更新時刻を保存します。 1. CURRENT_TIMESTAMPで西海岸時間を保存して、表示で日本時間を作る 2. time()でUNIX時間をINTで保存して、表示で日本時間をつくる 3. 日本時間を作ってDATETIME形式で保存 4. その他 今は3で日本時間を作ってDATETIME形式で保存するように書いてみたのですが、 UNIX時間の方が処理しやすいことが多いかと思います。 DATETIME形式だとSELECTすればそのまま読めるので便利なのは間違いないですが。 皆さんはどのようにしていますか?
104 :
nobodyさん :2011/12/04(日) 14:00:18.40 ID:uNIlr6eZ
switch文についてですが、 case 1: 処理 case 1: case 2: 処理 break; ・・・ の処理で、下の処理を先にしなければならないとき、 case 1: case 2: 処理 case 1: 処理 break; ・・・ にすると、case2は最後まで条件文をたどることになりますよね? 回避策としては、 case 1: case 2: 処理 case 2: break; case 1: 処理 break; ・・・ ぐらいしか思い浮かばないのですが、冗長な気もします。 何か良いアドバイスをください。
106 :
nobodyさん :2011/12/04(日) 14:26:45.63 ID:ZwuGc3Sg
>>103 MySQLに接続のたびにタイムゾーンを変更する必要があるので、
変更をし忘れると時刻の整合性がとれず、えらいことになるので
それは避けたいところです。
107 :
nobodyさん :2011/12/04(日) 15:25:26.81 ID:DlY6x1ss
JSONPみたいだから 先頭の「listhandler(」と末尾の「)」を削ってからjson_decode()に渡してみては?
109 :
nobodyさん :2011/12/04(日) 16:16:27.90 ID:DlY6x1ss
110 :
nobodyさん :2011/12/04(日) 16:20:58.73 ID:f63/zsl+
PDOでの接続に日本語を含むパスは使えませんか。 オープンできないんですが。Windowsです。
111 :
nobodyさん :2011/12/04(日) 16:24:32.79 ID:f63/zsl+
>>102 TIMESTAMPもDATEも現地時間で保存なんかしない
タイムゾーンを設定するのはクライアント側の仕事
接続する度に SET time_zone = '+9:00'; なり発行しなさい
114 :
104 :2011/12/04(日) 17:17:45.05 ID:???
PHPだけの話じゃないので他で聞いてきます スレ汚しすみません
>>114 いや、ここでもいいんだけど、何がしたいかがわからん
各処理に処理A、処理Bとか書いてないからわけわからんね
ほんと読解力ないな。 case 1: 処理A 処理B break; case 2: 処理A break; を無理やりフォールスルーで何とかしたいって話だろ。 アドバイスとしては「やめてください」。
やめてくださいで終わりだけどさ。 部下がこれどうしますって言ってきたらやめろで終わりだけどさ。
処理をfunction化するか、switch文を分割するか、が妥当な方法だと思うけど
既存のコードをあまり変えたくないなら
>>104 でもいいんでないの
相手にされてなくてワロタ
123 :
nobodyさん :2011/12/05(月) 04:13:37.79 ID:PhZ7RtX8
クラスに存在しないメソッドを呼び出された時の処理ですが、$this->obj->{$name}の引数を決め打ちにしてます。 これをエレガントにする方法ってありますか? function __call( $name, $arguments ) { if( method_exists( $this->obj, $name ) ){ return $this->obj->{$name}( @$arguments[0], @$arguments[1], @$arguments[2], @$arguments[3], @$arguments[4]); }else{ parent::__call( $name, $arguments ); } }
>>123 呼び出すときにそのobjがどんなメソッドと引数を持っているか
推測しないといけない設計はあまり好まず…そこは素直にクラス作りんしゃいに一票。
125 :
nobodyさん :2011/12/05(月) 05:52:43.56 ID:Df4UWWf4
質問です。 ネット上のオセロの対戦サイトっぽいの作ろうと思っています。 そこで、通信のやり方が分かりません。 不特定多数の人がそのサイトにログインするまではいいのですが、対戦は1対1なので、 対戦が始まったらその二人の間でのみ通信が行われないといけないのですが、 そのような通信は一体どうやればいいのでしょうか? オセロのプログラム、描画はJavaScriptで書いています。
対戦が始まってもサーバーのphp介さないとできないよ
127 :
nobodyさん :2011/12/05(月) 06:08:30.42 ID:4I6BeXxu
PDOプリペアドステートメントについて質問です。 ソートに使用するorder byやdescやascを、 バインドしてもうまく働きません。 $sort_by = "hoge"; //実際は外部から取る値 $is_desc = true; //外部から指定 $stmt=$dbh->prepare("select * from t where 1 order by :sort :which"); $stmt->bindValue(":sort", $sort_by); if ($is_desc) { $stmt->bindValue(":which", "desc"); } else { $stmt->bindValue(":which", "asc"); } $stmt->execute(); これは内部で select * from t where 1 order by hoge desc ではなく、 select * from t where 1 order by "hoge" "desc" となってるからなのは分かるのですが、 こういうケースの場合はどうしたらいいのでしょうか? よろしくお願いします。
>>126 はい、そこで、PHPで、どうやって対局者二人にだけ通信処理を行うようにするのか
知りたいのです。
対戦中の2人が数秒置きにリクエストを送ってサーバに問い合わせる サーバは送られてきたクッキーとセッションを照合しながら二人を追う 現在のゲームの進行状況をクライアント(2人)に返す 返した結果によってクライアント画面に反映する この繰り返し 片方側からのリクエストが途絶えて 片方からのリクエストを3回連続で受け取った場合 もう片方はゲームを途中でやめた判定する いわゆるポーリングという技法 実装が簡単だがよりリアルタイムに近づけるにはインターバルを1秒未満にしなくてはならず ゲーム中はF5アタックをしてるようなものなのでレンタルサーバではやってはいけない
>>129 成る程、分かりやすいです。
送られてくるクッキーとセッションで送信者が識別できるのなら実現できそうです。
やっぱりいろいろと問題もあって、難しそうですね。
レンタルサーバーでもやり方次第でなんとかなると思ったので、いろいろ試して
みようと思います。
とにかく簡単なプロトタイプを作って動かすまではやってみます。
131 :
127 :2011/12/05(月) 07:25:44.75 ID:4I6BeXxu
order by句を指定せずソートをプログラム側で行うか、 プリペアドステートメントは使わず、PDO::query()+PDO::quote()で行うしかないんでしょうか? なんかベストな解決方法を知っていたらお願いします。
>>123 call_user_func_array(array($this->obj, $name), $arguments);
>>131 ORDER BY句は自力で組み立てて
そっから PDO#prepare() に渡す
ちなみにバインドできるのはリテラル値だけ
134 :
nobodyさん :2011/12/05(月) 16:17:45.57 ID:uI9LFaIu
質問させてください! まずはソースを貼ります。 $_query = "select F.seq_user, U.seq, COUNT(F.seq_user) AS total FROM tbFavorites AS F LEFT JOIN tbUser AS U ON F.seq_user = U.seq group by F.seq_user order by total desc limit 25"; if ($result = $mysqli->query($_query)) { if ($result->num_rows > 0) { $userranking = array(); while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $userranking[] = $row; } $result->close(); } } for($i=0;$i<25; $i++){ $_query = "select COUNT(F.seq_user) AS total FROM tbFavorites2 AS F WHERE F.seq_user = ".$userranking[$i]['seq']." limit 1"; if ($result = $mysqli->query($_query)) { if ($result->num_rows > 0) { $row = $result->fetch_array(MYSQLI_ASSOC); $userranking[$i]['total']= $userranking[$i]['total'] + $row['total']; $result->close(); } } } $smarty->assign('userranking', $userranking);
135 :
nobodyさん :2011/12/05(月) 16:24:09.16 ID:uI9LFaIu
134のソースの解説です。 tbFavorites(商品ジャンルA)、tbFavorites2(商品ジャンルB)はユーザが二つの種類の商品をお気に入り に登録するためのtableです。 今どのユーザがたくさんお気に入り登録したかをランキング形式で出そうとしています。 しかし134のソースではジャンルAでまずランキング上位25人を出してしまっています。 本当ならジャンルAとジャンルBの合計値を出したあとに上位25人を出したいのですが うまいやり方が思いつきません。どなたかお知恵をお貸しください。
合計値で25件とれるSQLにするか、 全件とって自分でがんばるかどっちか
137 :
nobodyさん :2011/12/05(月) 16:56:30.82 ID:uI9LFaIu
合計値で25件とれるSQLを作りたいのですが うまくいきません。JOINとUNIONで試してみたのですが 全然期待通りの値にならないのです。。。
UNIONしたやつをGROUP BYでどう? テーブル構造は? DB板のが答え速そうだな
>>134 UNIONでできなかったってのが、UNION ALLでダメだったのかどうかにもよるけど。
select count(seq_user) as total from (
select seq_user from tbFavorites
union all
select seq_user from tbFavorites2
)
group by seq_user
order by total desc limit 25
あと、tbUserと結合する意味がなさそう。
って、ユーザ情報出したいからか。ごめんごめん。
141 :
nobodyさん :2011/12/05(月) 19:07:21.50 ID:wb46KamG
phpで外部リソースを取得する関数って セキュリティ的に問題ないんですか?負荷も掛かるだろうし。
スクレイピング全般に対する懸念?
踏み台にされんように注意はせんとね
144 :
nobodyさん :2011/12/05(月) 21:48:37.75 ID:FlRxYHcs
PHPってR言語対応のモジュールとかライブラリ、関数とかありますでしょうか? マニュアル見たところ無いようなのですが statsは全然まとめられていないながらも、あるようですが
たまに¥マークがついてるコードみるけど ¥マークはどういう時に使うのでしょうか? 例 class Model_Crud extends \Model implements \Iterator
志村〜
150 :
nobodyさん :2011/12/06(火) 12:02:11.48 ID:bGnivCFj
質問させてください 携帯で、あるページにアクセスした時、その携帯のメーラーを立ち上げることってできるでしょうか? どうやったらいいでしょうか PHP5を使っています
151 :
nobodyさん :2011/12/06(火) 12:02:28.57 ID:OdBx5Qxg
>>138 ,139
ありがとうございます。おかげさまでできました。
お礼が遅くなりました><
原因はgroup byがちゃんと使えてませんでした。
>>150 メアド踏めばそうなるけど、そういうことじゃなくて?
mailtoストームみたいなことやりたいんじゃね
154 :
150 :2011/12/06(火) 13:09:11.32 ID:bGnivCFj
>>152 レスどうもです。そういうことではないんですよ
1)リンクを踏む
2)ページAに遷移してDB処理、終わったらページBにリダイレクト
3)ページBに移動したら自動的にメーラーが立ち上がる
というのをイメージしています
ページBにリダイレクトしなくても、ページAでのDB処理が終わったあとに
何らかの方法でメーラ起動できればそれでいいんですが…
header関数とかの問題かなと思ったんですが、ヒントが見つからない状況です
155 :
150 :2011/12/06(火) 13:10:07.14 ID:bGnivCFj
やったことないけど、メアドに302するとどうなんの
って同じことがかかれてたw
普通にリンクなりボタンなりをクリックさせた方がいいんじゃないの? メーラーが勝手に開くのは怖いしウザい
気持ち悪がられて客を逃す 避けるべき実装
161 :
nobodyさん :2011/12/06(火) 14:12:49.28 ID:16sWocHt
>>159 メーラーが勝手に開くリンクからメール送ったことってほとんどないな。
162 :
150 :2011/12/06(火) 14:19:00.41 ID:bGnivCFj
>>156 こんな簡単なんですか
すみませんでした、試してみます。ありがとうございました
>>159-161 ご意見どうもです
説明不足でしたが
>>154 の「1)リンクを踏む」のリンクに「メールを送る」と書くつもりです
多分大丈夫かと…
ありがとうございました
>>161 携帯だと空メ登録よくあるからいいんでないの
>>162 gmail しか使ってなかったり linux のクライアントだとメーラー設定してなかったり
あるのでテキスト直書きで、テキスト@hoge.com 件名は○○○で送ってください
とか併記しておいて欲しいと思う吉宗であった…
165 :
nobodyさん :2011/12/06(火) 20:56:46.07 ID:16sWocHt
フォームにデータを入力すると画面が切り替わるようなサイトで、 URLはhoge.phpのまま変わらないというのがありますが、 これはPOSTメソッドで同じURLにPOSTして、ifなどで条件分岐して 表示を変えているんでしょうか? この手法は一般的ですか? トークンによるCSRF対策も問題なく動作しますか?
167 :
nobodyさん :2011/12/06(火) 21:00:57.91 ID:16sWocHt
>>166 ありがとうございました。
cart1.php
↓
cart2.php
↓
cart3.php
とか書いていたのですが、ダサイので書き直します。
168 :
nobodyさん :2011/12/06(火) 22:44:11.20 ID:QHQ8UGsv
【OS名】CentOS 【PHPのバージョン】5.3 お世話になります。セッションについて勉強中です。 [A]というサイト上にあるログイン用のプログラムで session_name(セッション名); セッション名を設定した上でセッション利用 cookieにはランダム文字列のセッションIDが記録されます。 このあと、全く別サーバー・別ドメイン上にあるPHPで echo $_COOKIE["セッション名"]; と書いてアクセスすると [A]サイトのセッションID(ランダム文字列)が丸見えになっています。 1.悪意のある人が$_COOKIE["セッション名"];でセッションIDを抜き出す 2.偽装した上ですぐさま[A]サイトにアクセス 3.ログイン状態 となってしまうのではと想像しているのですが 何か良い対策は無いでしょうか? セッションに対する自分の認識自体が間違っていたら面目ございません。
>>168 セッション名とセッションのキーを混同してないか
>>168 BサイトにAサイトのクッキーを差し出すUAがいるってことか
>>168 とりあえず、青木ヶ原かどこかへ行った方が良い
ここでは君のような池沼は扱っていない
そうなってませんで終わりだろが。
173 :
nobodyさん :2011/12/07(水) 16:15:10.80 ID:wyHjvonw
ブラウザを閉じたらセッションは終了すると聞きました。 その場合、端末側のcookieは自動的に削除されますか? 端末側から一定時間操作をしないとセッションが終了しましたと 表示されるサイトがありますが、これはどのようなコードを 書いているのでしょうか? セッションスタート時に、その時刻をセッション変数に記録する 次のセッションスタート時に、前回記録した時刻と現在時刻を比較して 一定以上経過していると、ログインページに案内する こういう仕組みでいいのでしょうか。 それともsession.gc_maxlifetimeをいじればいいのでしょうか。
ブラウザを閉じたらセッションが終了するわけではありません。閉じようがずっと続くようにも出来ます。 セッションは、時間で消され たり します。 session.gc_maxlifetime などが関係ありそうです。 また、それとは別にセッション時間を記録するのも、それでなにをしようと自由です。 そのときは、セッションを自分で消さなくちゃいけません。
175 :
nobodyさん :2011/12/07(水) 16:40:10.05 ID:wyHjvonw
>>174 >閉じようがずっと続くようにも出来ます。
逆に、ブラウザを閉じたらセッション終了するにはどうすればいいでしょうか。
>>175 ブラウザを閉じたことをサーバ側が知ることはできません
177 :
173 :2011/12/07(水) 16:49:16.54 ID:wyHjvonw
>>176 ということは、
セッションが開始されると端末側にcookieができる(許可する場合)
サーバ側はそのcookieでセッションが継続していると判断する
ブラウザを閉じても、cookieがあって、セッションの有効期間中なら
セッションは継続される
ということですか?
別件ですが、セッションIDをURLに埋め込む場合、
どのようなセキュリティ対策が必要ですか?
1. http→httpsに移行するときにセッションIDを変更する
2. セッションIDが無効なときは、トップに転送
を考えていますが、セッションIDが無効かどうかはどのように判断できますか?
cookieでセッションが継続していると判断するというのが若干違うのかなぁ。 セッションを継続したり保持してるのはサーバーで cookieに入れるのはその名前というかキーだな。 cookieがあったとしても セッションがあるかどうかは別。
>>177 そのセッションIDつきのURLをほかの人が使ったときに、セッションの乗っ取りができないようにする対策が必要です
180 :
173 :2011/12/07(水) 17:16:59.06 ID:wyHjvonw
>>178-179 ありがとうございます。
たとえば、
アリスがセッション 111 をスタート
セッション111は失効または手続完了でdestroyされる
あとで、アリスまたはボブがセッション111をスタートしても、
前回の続きを表示せず、別の正当なセッションID 123 を発行する。
チャーリーが存在しないセッション 222 を指定したときは、
そのIDを無効として受け付けず、代わりに正当なセッションID 234 を
発行する。
このようなことができればいいと思っています。
182 :
173 :2011/12/07(水) 17:21:57.43 ID:wyHjvonw
>>181 セッション111がガーベージコレクトされていなければ、
サーバ側にまだ情報は残っているので、セッション111を
指定すれば取り出すことはできないですか?
そういう意味で最初から存在しないものと区別したつもりだったのですが。
session_destroy()してあれば、サーバーのハッキングでもされない限り見えんでしょ。
184 :
173 :2011/12/07(水) 17:39:38.10 ID:wyHjvonw
>>183 session_destory()はそういう仕様なのですね。
終了せず、放置されて有効期間が経過したときはどうでしょうか。
セッションの有効期間は15-25分程度を考えています。
そっちはガーベージコレクトの話になるのかな。時間後必ず消えるわけじゃないとか、 削除タイミング。 検索して調べてね。
186 :
173 :2011/12/07(水) 18:03:23.50 ID:wyHjvonw
>>185 ありがとうございます。大体つかめてきました。
削除の確率を上げればいいんですね。
のっとられることの対策が見えない
188 :
173 :2011/12/07(水) 18:32:35.12 ID:wyHjvonw
乗っ取られる対策は、トークンでのCSRF対策で兼ねられると思いますが どうでしょう。 商品を選ぶ→httpsに移動→配達先を入れる→確認→完了 という構成で、お金はオンライン決済ではなく代引きなどで もらうので、少なくともhttpでの乗っ取りはさほど深刻ではないと 考えています。
189 :
nobodyさん :2011/12/07(水) 18:39:22.08 ID:WEP6SmbY
クッキーは偽造できると思う。
よくわからん。 乗っ取った人が、商品を選ぶ→httpsに移動→配達先を入れる→確認→完了 ってやってもさほど深刻ではないということ?
192 :
173 :2011/12/08(木) 01:57:01.85 ID:XeoPGUCw
>>191 ありがとうございます。
作ろうとしてるサイトでは、たぶん乗っ取るメリットがないので
あまり気にしていないのですが、最初のセッション開始時に
IPとUAを記録して、重要なステップの前にマッチするのはどうでしょう?
>>190 注文した人の情報が他人にわかると深刻ですが、
商品を選んでる段階ならもし乗っ取られても問題ないかと。
httpsに移動して配達先を入力してもらうところで
セッションIDを変更する処理を入れようと思いますが。
>>192 SESSION['IP']とかにIPを入れるんだったら
ま、毎回マッチさせてもいいんじゃない?それくらいなら
>>192 商品を選んでる段階ではログインしてないってことかな。
195 :
173 :2011/12/08(木) 05:29:47.98 ID:XeoPGUCw
>>194 はい。会員登録やログインのシステムは作りません。
商品を選ぶ→httpsに移動→送り先を入れる→注文完了
これだけです。
>>193 そうですね。
CSRF対策は考えようと思っています。
196 :
nobodyさん :2011/12/08(木) 11:58:55.42 ID:+gCf/58v
変数の定義で var $title = ''; と varがあるのと $title = ''; と varがないんと 何が違うんですか?
198 :
nobodyさん :2011/12/08(木) 21:45:37.59 ID:DX40whZT
PHPって微分・積分って出きるのでしょうか? 見たことがないのですが もし出来ないならば、代わりにどのような言語を使用すればいいのでしょうか?
200 :
nobodyさん :2011/12/08(木) 22:34:16.63 ID:WqXOej+6
そんなんPHPでやる必要があるのかよ。 どんな用途だ? 計算時間など考慮して近似式に展開しておけば良いだろ。 厳密に必要だったら数値計算のライブラリやツール使う。
今Pythonを必要があって学習してるんだけど、これゴミ言語だな 癖が強すぎる・・・ JavaScriptも癖はあるが、それでも他言語と感覚は近い いかにPHPが素直で分かりやすい、扱いやすい言語かが分かる
横から失礼するけど、
>>201 の言ってる意味が分からない
微分、積分をfor()でループ?
想像が出来ないんだけど、具体的にどんな風にやるの?
f(x)をf'(x)にするとかどうなるんだろ・・・
2乗が書けないので変な書き方するけど、
f(x)=x2+3x+5の場合
f'(x)=2x+3
・・・う〜ん、俺には分からん
205 :
nobodyさん :2011/12/09(金) 01:24:09.48 ID:CtDS5H65
数式処理は困難でも数値計算だったらループなどでできるだろ。
クライアント側からWebサービスを利用する際、Form等からデータを送るときにはPOSTメソッドを使いますが、 Webサービスからデータを取得するときにも、GETではなくPOSTメソッドを使うような実装は一般的でしょうか? GETメソッドとの使い分けが知りたいです。
getするときはGET postするときはPOST
getだけで取れるほうがありがたい人はいると思う。
twitter developersについて質問したいのですが、それらしいスレが見当たりません。
ダメ元で【Twitter 初心者&質問スレ Part.10】に書きましたが、
プログラム寄りの話になるので、やはり返答がありませんでしたのでこちらへ移動しました。
質問内容は下記です。
お手数ですが、最適なスレへの誘導お願いいたします。
twitter developers(
ttps://dev.twitter.com/ )にログインしたのですが、
どこからログアウトすればいいのかわかりません。
ググってもどこでログアウトするかといった話題はありませんでした。
ログアウトはどこをたどっていけばいいのでしょうか?
質問するときはメール欄のsageを削除 質問に答えるときはメール欄にsageを入力
個別サイトの使い方をなぜこのスレで・・・ しかもどこに質問すればいいのか答えろって・・・ こういうときこそツイッターでつぶやけばいいと思うよ またはヤフー!知恵袋へ
212 :
173 :2011/12/09(金) 15:40:51.03 ID:TzYxXuZs
会員登録やログインのシステムはがなく、
商品を選ぶ→httpsに移動→送り先を入れる→注文完了
こういうサイトで、セッション固定化攻撃に対するセキュリティ向上の
ために一度だけセッションIDを変更しようとおもいます。
そのタイミングは、httpsに移動した直後が適当でしょうか?
いくつかのブログを読むと
http://hoge.jp/?PHPSESSID=fuga というURLにアクセスすれば、セッションIDがfugaとしてアクセスできるため
セッション固定化攻撃にぜい弱だと書いてありますが、
これは今のPHP5.3.xでもその仕様ですか?
>>212 対策はされていないので自分で面倒見ないといけない
タイミングはパスワード入力を要求される操作の直後にやると良い
ログインや個人情報にアクセスする時等
214 :
173 :2011/12/09(金) 16:30:00.88 ID:TzYxXuZs
>>213 じゃあ個人情報の入力の直前がいいですね。
ありがとうございました。
215 :
nobodyさん :2011/12/09(金) 20:44:50.78 ID:wAnNw8aS
_()ってどういう関数なんですか? ググりようがないです
217 :
nobodyさん :2011/12/09(金) 20:54:52.90 ID:8IpyhOyC
array(13) { [0]=> string(9) "北海道" [2]=> string(9) "群馬県" [4]=> string(9) "栃木県" [6]=> string(9) "福島県" [7]=> string(9) "山梨県" [8]=> string(9) "東京都" [10]=> string(9) "福岡県" [11]=> string(9) "大阪府" [17]=> string(9) "新潟県" [18]=> string(9) "長野県" [31]=> string(9) "福井県" [36]=> string(9) "兵庫県" [37]=> string(9) "石川県" } こんな感じの配列で 配列の若い番号順に都道府県の上から(北海道から)の順にしたいんですがいい方法ありますか? 並べ替える配列はランダムで1〜50都道府県入れる予定です
>>217 並べ替える配列に神奈川県があったらどうするの?
221 :
nobodyさん :2011/12/10(土) 02:15:15.70 ID:AgP8NyH3
/([0-9]+)(?![-\d])/ 正規表現が死ぬほど苦手でこれの意味が・・・。 0-9の1回以上の連続まではわかるんですが、?![-\d]の部分が・・・。
>>222 ありがとうございます
!が本や入門サイトに書いてなかったんで助かりました
224 :
nobodyさん :2011/12/10(土) 03:40:07.81 ID:AgP8NyH3
すみません、それともう一つ[-\d]の部分なんですが 0-9とかならやったのですが、これは一体
難しく考えず何のひねりもない '-'と[0-9]が続いたらって意味じゃねーの?
\dは0-9と同じ
>>222 「先読み明言」ってなんだよ「明言」ってw
用語も正しく覚えてない奴が偉そうにするなw
[0-9]と\dに書き分けている目的は?
見た目
文字クラス
ハイフン数字が来る前の数字ってこと?
232 :
nobodyさん :2011/12/10(土) 17:52:27.36 ID:TfT/FNf0
【OS名】Debian 5.0.9 【PHPのバージョン】5.3.5 【連携ソフトウェア】MySQL 【質問内容】 セッション変数でショッピングカートを作りました(途中まで)。 注文が確定したら最後にMySQLのDBに入れようと思ったのですが、 それまでの入力数量のチェックなどでhiddenで数字を渡したり (利用者に余計な情報を与えることになる)いろんな変数を 操作する必要を考えると、最初からDBに入れて操作し、 最後に確定フラグを立てるなどした方が楽だと思いました。 これについて意見があればお願いします。
お好きなようにして問題ありません。 ただ、セッション使ってるなら hidden使う必要を感じないのですが。
234 :
nobodyさん :2011/12/10(土) 21:16:22.90 ID:feHM4jBp
【 PHP のバージョン】5.3 【質問内容】 Apache の mod_rewrite ってありますよね。 あれと PHP で振り分けるのとでは、どちらが速いのでしょうか。 .htaccess って遅いイメージがあって だったら PHP で振り分けたらどうだろうかと思い、質問しました。 また、速度以外の回答「 XX は XX なので XX の方がいい 」とかでも構いません。
コンパイル済みモジュールのほうが早く動作するに決まってる
237 :
232 :2011/12/11(日) 01:47:05.86 ID:RMtDV+6U
>>233 遅くなりましたがありがとうございました。
ひとまずDBに入れるようにしてみました。
238 :
nobodyさん :2011/12/11(日) 16:23:44.02 ID:fKRObUfn
宣伝しなくとも、良サイトなら勝手に人くるから。
晒しはヲチ板でどうぞ
241 :
nobodyさん :2011/12/11(日) 19:42:59.08 ID:b3WuJveF
ファイルから特定文字列Aと、特定文字列Bにはさまれた文字列を抽出する、 は可能でしょうか? 可能ならどんなやり方でやればいいのか教えて下さい。 あるいは、どんな文字列でググればいいのか教えて下さい。
正規表現
243 :
nobodyさん :2011/12/11(日) 19:48:06.24 ID:b3WuJveF
file_get_contentsって言って欲しかったんか?
245 :
nobodyさん :2011/12/11(日) 19:56:31.05 ID:b3WuJveF
つか、マッチした文字列の取得ではなく、マッチした文字列2つに挟まれた文字列の取得なんですよね。
正規表現でググれ
正規表現でできるよ
正規表現を知らないってことは初めは鬼門だと思う わけわからん記号がいっぱい出てくるけどめげずに頑張れや
うん
今回の場合も正規表現を持ち出す必要はないわけだが
251 :
nobodyさん :2011/12/11(日) 20:03:19.03 ID:b3WuJveF
ちなみに、
>>245 はpreg_match()関数で可能でしょうか?
252 :
nobodyさん :2011/12/11(日) 20:04:06.31 ID:b3WuJveF
見通し悪くなるからpreg_match使っとけ
254 :
nobodyさん :2011/12/11(日) 20:18:53.06 ID:b3WuJveF
<html> <head> <title>preg_match2.php</title> </head> <body> <?php $str = "WEB means a server system using world wide web technology."; //検索される文字列 $str1= "means"; //キーワードその1 $str2= "using"; //キーワードその2 preg_match(〜〜〜〜, $arr_str ); // キーワード1、2に挟まれた文字列を$arr_strに格納 print $arr_str[0]; // キーワード1、2に挟まれた文字列を出力 ?> </body> </html> こんな感じで書いてみました。 どなたか、〜〜〜〜の部分を考えてやって下さい、お願いします!
やはり○投げだったか
256 :
nobodyさん :2011/12/11(日) 20:34:15.99 ID:b3WuJveF
しかし、私の持っている、PHP5リファレンス&逆引きユーザー便利帳には、preg_match()なんて関数は書いてないんだけどw
>>254 変数の文字列を正規表現に組み込むならpreg_quoteを使うといい
>>256 それはその本に書いてないだけ
ぐぐれば日本語の公式ドキュメントが見つかるぞ
259 :
nobodyさん :2011/12/11(日) 20:47:40.32 ID:b3WuJveF
>>257 つか、変数をつかわないで、キーワードは文字列そのまんまでもかまいません。
260 :
nobodyさん :2011/12/11(日) 20:51:49.65 ID:RMtDV+6U
一つのフォームに複数のsubmitボタンをつけて、
それぞれ違った処理をしたいです。
ボタンはせいぜい2-3個、最大で10個くらいです。
一度に押せるボタンはそのうちの一つだけです。
http://q.hatena.ne.jp/1172020099 ここを見るとforeachで押されたボタンのnameを取りだして
処理するのが最もいいと思いましたが、これでいいですか?
$str = "WEB means a server system using world wide web technology."; //検索される文字列 $str1= "means"; //キーワードその1 $str2= "using"; //キーワードその2 // 正規表現あり $delim = '/'; $pattern = sprintf("%s(?:%s)(.*?)(?:%s)%s", $delim, preg_quote($str1, $delim), preg_quote($str2, $delim), $delim); preg_match($pattern, $str, $arr_str ); $match_str = $arr_str[1]; print $match_str . "\n"; // 正規表現なし $match_str = ''; if (($str_work = strstr($str, $str1)) !== false) { $str_work = substr($str_work, strlen($str1)); if (($i = strpos($str_work, $str2)) !== false) { $match_str = substr($str_work, 0, $i); } } print $match_str . "\n";
// 正規表現なし(2) $match_str = ''; $s = strpos($str, $str1); $e = strpos($str, $str2); if ($s !== false && $e !== false && $s < $e) { $match_str = substr($str, $s + strlen($str1), $e - $s - strlen($str1)); } print $match_str . "\n";
>>260 方法は、いくつか考えられる
1) それぞれのフォーム先を変える
<form method="post action="a.php">
<button type="submit">Submit</button>
</form>
<form method="post action="b.php">
<button type="submit">Submit</button>
</form>
2) 押されたボタンの値で分岐させる
<form method="post" action="c.php">
<button value="a" type="submit" name="foo">Submit A</button>
<button value="b" type="submit" name="foo">Submit B</button>
</form>
<?php
switch ($_POST['foo']) {
case 'a':
// 処理
break;
case 'b':
// 処理
break;
}
参考程度に
265 :
nobodyさん :2011/12/11(日) 21:09:33.25 ID:RMtDV+6U
>>260 こんなのができました。
疑問なのは、配列が一つしかないのが明らかな時は
foreach以外に使えるものはないですか?
foreach ($_POST as $key => $value)
;
if (substr($key, 0, 3) == "del") {
echo "削除" . substr($key, 3, 3);
}
266 :
nobodyさん :2011/12/11(日) 21:22:29.92 ID:b3WuJveF
>>261-262 おー、すばらしい。 3つともエラーなしでした。
感謝、感謝です。 今から勉強させてもらおうと思います。
// 正規表現なし(3) $match_str = ''; $s = strpos($str, $str1); if ($s !== false) { if (($e = strpos($str, $str2, $s)) !== false) { $match_str = substr($str, $s + strlen($str1), $e - $s - strlen($str1)); } } print $match_str . "\n"; 2よりはこっちのがいいか。でも正規表現を使うべきかどうかの判断は俺にはできん
268 :
nobodyさん :2011/12/11(日) 21:38:44.26 ID:b3WuJveF
269 :
nobodyさん :2011/12/12(月) 00:38:08.99 ID:M66zaH+0
つーか、本当に恐縮なんですが、↓の
キーワードその1には、<a href="
を、
キーワードその2には、" title="前ページへ戻る">
を、入れたいのですが
どうしたら、いいでしょうか?
率直に入れるとエラーになってしまいます。
>>261 > $str = "WEB means a server system using world wide web technology."; //検索される文字列
> $str1= "means"; //キーワードその1
> $str2= "using"; //キーワードその2
>
> // 正規表現あり
> $delim = '/';
> $pattern = sprintf("%s(?:%s)(.*?)(?:%s)%s", $delim, preg_quote($str1, $delim), preg_quote($str2, $delim), $delim);
> preg_match($pattern, $str, $arr_str );
> $match_str = $arr_str[1];
> print $match_str . "\n";
っつーかエスケープしろよ
271 :
260 :2011/12/12(月) 00:43:37.56 ID:g5bZDfgQ
>>264 遅くなりました。ありがとうございます。
<buttonを使うのは思いつきませんでした。
ありがとうございました。
272 :
nobodyさん :2011/12/12(月) 00:52:47.14 ID:M66zaH+0
274 :
nobodyさん :2011/12/12(月) 01:10:05.39 ID:M66zaH+0
>>273 レスありがとうございます。
$str1= "<a href="; //キーワードその1
は、通るのですが、
$str2= "" title="前ページへ戻る"; //キーワードその2
で、
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs〜〜〜
と、エラーになります。
>>269 それは正規表現じゃなくてDOM操作でやれ
277 :
nobodyさん :2011/12/12(月) 01:37:12.34 ID:M66zaH+0
278 :
nobodyさん :2011/12/12(月) 01:47:41.82 ID:M66zaH+0
>>276 たしかに、urlぶっこ抜き作業をやっているんだけど、で、その『DOM』というのは検索しておぼろげながらも知ってるんだけど、
あんまり、手を広げたくないんですw
279 :
nobodyさん :2011/12/12(月) 01:53:29.26 ID:M66zaH+0
こんどは、 > $match_str = $arr_str[1]; の行で、 Notice: Undefined offset: 1 in C:\xampp\htdocs のエラーが出るんですよね。
>>277 正規表現以前の話だからな。
>>279 はマッチしなかったんだろ。
てか言葉遣いわるすぎねぇ?
正規表現じゃないほうならそんなエラーも出ないだろ
282 :
nobodyさん :2011/12/12(月) 01:57:31.50 ID:M66zaH+0
>てか言葉遣いわるすぎねぇ? 失礼しました。
php公式のロゴがクリスマス仕様になってる
2008年からの使い回しなのは画像名見ればわかるだろ?
もっと前からやってそうな印象があるけど、そんなもんか。
286 :
nobodyさん :2011/12/12(月) 03:24:07.78 ID:M66zaH+0
つか、正規表現で質問した者ですが、教えてもらったものは、漢字がからむとダメになる、ってあります?
287 :
nobodyさん :2011/12/12(月) 03:28:58.48 ID:M66zaH+0
武田先生のブログだとちゃんと抜けるんですよねw
ところが、キーワードに漢字がからむとダメみたい。
<?php
// ★★★★★欲しいブログのアドレスをここに書き込む。★★★★★★
$url="
http://takedanet.com/2007/02/1_6fc8.html ";
// htmlの全読み込み
$nikki = file_get_contents($url);
$str1= "<a href=\""; //キーワードその1
$str2= "\">«"; //キーワードその2
$delim = '/';
$pattern = sprintf("%s(?:%s)(.*?)(?:%s)%s", $delim, preg_quote($str1, $delim), preg_quote($str2, $delim), $delim);
preg_match($pattern, $nikki, $arr_str );
$match_str = $arr_str[1];
print $match_str . "\n";
// ↓↓ データファイル名を決める。
$fp = fopen("nikki.html","a");
fputs($fp,$nikki);
// ソケットを閉じる
fclose ($fp);
288 :
nobodyさん :2011/12/12(月) 03:38:33.55 ID:g5bZDfgQ
つか、原因の切り分けができるようになってから出直せばよくない?
>>288 テンプレートエンジンとかフレームワークを。
>>288 そのコードに不満がなければそれでいいとおもうが。
292 :
nobodyさん :2011/12/12(月) 03:49:53.41 ID:g5bZDfgQ
>>290 ありがとうございます。調べてみます。
>>291 SELECT * FROM hoge;
を実行してなにも考えずに<table>から吐いてくれるとうれしいです。
できればカラム名もつけて。
MySQL接続時に -H オプションをつければいいようですが、
PHPから接続するときには対応してないようです。
正規表現の内容についてはもう終わってるだろ
296 :
nobodyさん :2011/12/12(月) 04:13:08.26 ID:g5bZDfgQ
>>294 foreach($row)とかでフィールド名を取り出せばいけますね。
一般に見せるページはちゃんとフィールド名を入れて
作ってるのですが、管理画面は作るのが面倒でw
297 :
nobodyさん :2011/12/12(月) 05:40:08.27 ID:M66zaH+0
30KBぐらいのhtmlファイルをmb_split()を使い、ざっくり2つに別けることは可能でしょうか?
298 :
nobodyさん :2011/12/12(月) 06:05:55.81 ID:NHIpwqKq
可能
可能じゃありません
300 :
nobodyさん :2011/12/12(月) 06:31:39.54 ID:M66zaH+0
つまり、mb_split()は行単位で作業するのか? 行を超えて作業するのか?って質問なんだけど。 file_get_contents()で取り込んだデータをざっくり2分割したいんですよね。
301 :
nobodyさん :2011/12/12(月) 06:44:12.15 ID:M66zaH+0
ms_strlen
303 :
nobodyさん :2011/12/12(月) 07:04:30.12 ID:M66zaH+0
俺のやり方が悪いのか、そもそも出来ないことをやろうとしてるのか、どっちかわからない、というのがつらいです〜
305 :
nobodyさん :2011/12/12(月) 10:48:58.06 ID:NA15lax7
XPにapacheとPHPの安定最新版を入れたのですがPDO driversがno valueになってしまい sqliteが使えません。これはどうしてでしょうか? [PHP_PDO_SQLITE] extension=php_pdo_sqlite.dll
306 :
305 :2011/12/12(月) 11:39:02.23 ID:???
自己解決 自分がしょぼいプログラマだったらどんな処理をするか考えて対処したら動くようになったw
307 :
305 :2011/12/12(月) 14:10:47.40 ID:???
おれも自己解決したわ
308 :
nobodyさん :2011/12/12(月) 17:06:36.09 ID:15hpQrXG
質問です
PHP5.3.8の環境で、某ライブラリを利用していたらE_DEPRECATEDという見慣れないエラーが出力されました
それで、ググったら
http://php.net/manual/ja/migration53.deprecated.php 「PHP 5.3.x で推奨されない機能」というページを見つけ
そこに以下のように書いてありました
推奨されない機能
new の返り値を参照で代入すること
呼び出し時の参照渡し
ライブラリのエラー対象行には
$obj = & new $class_name($param);
と書いてあります
これがまさに推奨されない機能にあたるってことでしょうか。どちらかに該当したのでしょうか。別の問題でしょうか?
「new の返り値を参照で代入すること/呼び出し時の参照渡し」の両方とも具体的にどういうのかわかりません
具体的にどういうものなのか、すみませんが教えてください
= & これは参照で代入してる。 なので、 > $obj = & new $class_name($param); これは、newの返り値を参照で代入してる。
310 :
308 :2011/12/12(月) 17:34:33.61 ID:???
>>309 ありがとうございました
自分はこれ使ったことなかったんで今まで無縁だったんですね
効果など調べてみます、ありがとう
311 :
nobodyさん :2011/12/12(月) 21:05:50.74 ID:M66zaH+0
313 :
nobodyさん :2011/12/12(月) 21:48:07.51 ID:M66zaH+0
>>312 おー、ありがとうございます。よくわからないけど、適当にsを付けたら改行を挟んで拾えるようになりました。
ありがとうございました。
314 :
nobodyさん :2011/12/12(月) 22:03:56.84 ID:1pnkY9E6
みなさん、PHPでのHTMLのパーサーってどんなの使ってます? 利用したいんですが、オススメ等ありましたら、宜しくおねがいします。
316 :
nobodyさん :2011/12/12(月) 23:11:06.87 ID:v66Vpq3K
まずXMLがどういうものか理解した方が良いかも
痛いニュースw
319 :
nobodyさん :2011/12/12(月) 23:42:34.98 ID:v66Vpq3K
ちなみに $rss->channel->title; だと値を取得できます。 でもxpath にすると駄目なようです。 simplexml_load_file の第二引数が必要な気がしているのですが、何を入れればいいのか分からないです。
ほしい、近い! $rss->channel->title;であるならばxpath()の中に何を入れますか?
321 :
nobodyさん :2011/12/13(火) 00:21:07.48 ID:l7M8JeoW
しつもんです 携帯のメールを解析/添付ファイルをアップロードなどするために便利な道具として PearのMail_mimeDecode と Qdmail_receiverがあると思いますが、どっちがおすすめですか? お勧めする・使ってる理由があったら教えてもらえると嬉しいです もしくは、これ以外にも便利なツールあるでしょうか? また、上記とは別に、 携帯メールでの日記投稿/写真アップロードなどした後(postfixからのパイプ処理で)、 そのメールのデータは不要になるので、添付ファイルごと該当ファイルを削除したいです (メールボックスの形式はMaildirです) どうやったらこの処理は実現できるんでしょうか? どなたか教えてください。よろしくお願いします
322 :
nobodyさん :2011/12/13(火) 00:47:25.54 ID:p0PBCRmH
その形式はしらないけど、一通一ファイルだったらそのまま削除すれば良い。 そうでなかったら変換すれば良い。
>>321 それぞれ検索して何が出来るかもう一度読むといいかも。
受信メールの処理のサンプルとか含めて。
まず、メールをPOPかなんかでとりに行くのか、 パイプで処理するだけなのか。
そのとき、添付ファイルはどうやって取得するのか調べればすぐ分かるから。
それら全部はここには書ききれない。
>>322 ,323
夜中にありがとうございました
もう少し頭整理して調べてみます。それでわからなかったらまた聞かせてください
325 :
nobodyさん :2011/12/13(火) 01:10:31.75 ID:u1iPfY/A
PHPUnitがうまく動いてくれない…助けて testHOGEメソッドが認識されなくて LK(0 tests, 0 assersion)になる。 public function testHOGE() { $this->assertTrue(false); } こんな感じだよね? 構文崩すとエラーになるのでファイル自体は認識されている模様 windows7 XAMPP2.5 PHPUnit3.5.14(xamppに最初から入っていたみたい)
326 :
325 :2011/12/13(火) 01:11:36.30 ID:u1iPfY/A
PHP5.3.8です
327 :
nobodyさん :2011/12/13(火) 07:07:05.94 ID:7NxNFZMg
curlでRAWデータをPOSTするにはどうしたらいいんでしょうか? curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "<xml>25kb分"); これでやるとローカルでは問題ないんですが共有サーバーだと90MBとかの異常なメモリ割り当てが発生して エラーになってしまいます。(本来は array('key' => 'value') 形式で指定するので間違った使い方なのかも) 試しに curl_setopt($ch, CURLOPT_POSTFIELDS, array('key' => "25kb分の文字列")); としたところ送信はできますが、相手が要求するフォーマットがxmlでkey=value形式ではないのです。 この問題はHTTP/Request.phpのaddRawPostData()を用いて送信し解決できましたが 後学のためcurlでPOSTする方法教えてもらえないでしょうか
328 :
nobodyさん :2011/12/13(火) 11:58:47.97 ID:55RnZhjc
Windowsでlocalファイルにアクセスするときにurlエンコードすると エンコード後のパスにアクセスしてしまいます。 サーバーはいつデコード処理をしてるんでしょうか。 Windowsではurlエンコードは使えませんか。
私は日本人ではないのでコードを掲載してください
330 :
328 :2011/12/13(火) 12:13:37.74 ID:55RnZhjc
これを実行すると、C:/アニメ.txtの中身は0なんです。後半では書き換えられないです。別パスにアクセスします。 $path="C:/アニメ.txt"; file_put_contents($path, "0"); $path="C:/" . urlencode("アニメ.txt"); file_put_contents($path, "1"); $path=urlencode("C:/アニメ.txt"); file_put_contents($path, "2"); $path= "file:///" . urlencode("C:/アニメ.txt"); file_put_contents($path, "3"); return;
file_put_contents(urldecode($path), "4"); とかじゃだめなんか?
それ一行で書いただけじゃん
えーと file_put_contents はURLエンコードされたファイル名を受け付けるとか その先にあるファイル名を扱う関数群がURLエンコードを受け付けるとか OSがURLエンコードを受け付けるとか、どっかに書いてあったのか?
334 :
nobodyさん :2011/12/13(火) 15:41:29.01 ID:1bAeIiq3
質問させてください。centOS5.6とPHP5.3.8使ってます 特定のディレクトリにユニークな名前のファイルを作りたいと思って以下のようにしました $image_dir = "/var/www/user_file/"; $path = tempnam($image_dir, ''); が、実際には/var/www/user_file/xxxxxみたいなファイルはできず、/tmp/xxxxxというファイルが代わりにできてしまいます tempnam()の仕様を読んだところ「対象のディレクトリがないときはシステムの一時ファイル領域にファイルを作る」と ありますが、$image_dirのディレクトリは存在しています。 で、さらに調べたら、ls -la /tmp/xxxxx の結果が 0600 nobody:nobodyになってました (このスクリプトは携帯メールの添付ファイル保存が目的で、postfixからのパイプ処理で動いています また、ls -la /var/www/user_file/ の結果は 0775 apache:apacheです) 質問 ・このnobodyユーザ扱いのせいで$image_dirにファイルを作れないと考えて間違いないですか? ・どうやったら、当初の目的のディレクトリ$image_dirにファイルを作れるでしょうか? $image_dirの権限を0777 にする以外の方法でお願いします たとえばtempnam()の実行時にapacheユーザとしてファイルを作れたら良いはずですが、 そんなこと可能でしょうか
7x7にしないでどうやってディレクトリを作れるの?wwwwwwwwwwwwwwwww
suidビットつけた実行ファイル用意してそいつに作らせるとか わかってない奴が安易にやると穴が開くからお勧めできんが あとはディレクトリのオーナーをnobodyに
337 :
nobodyさん :2011/12/13(火) 16:18:40.01 ID:M1gnknNt
>>325 すみませんが、私にはわかりませんので、ほかの人に聞いてください
338 :
nobodyさん :2011/12/13(火) 16:30:18.18 ID:M1gnknNt
>>327 curlとPOSTでググるとよいと思います。
includeで指定したファイルの内容を呼び出す方法はわかったのですが 編集が楽なので1ファイルの1行ごとに内容をまとめて、そのファイルの行ごとの内容を呼び出したいです。 例 test.phpの156行目を出力する このようなことは可能でしょうか?
340 :
339 :2011/12/13(火) 17:31:39.90 ID:TW5GIlZo
申し訳ないID表示忘れてました。
>>339 test.phpがテキストデータなら可能
おまえはMVCを学ぶべき段階にきていると思うよ
何かフレームワークを使って作れ
落ちたら落ちたで仕方ないのでは? 需要ないんだろうしさ
343 :
339 :2011/12/13(火) 17:55:16.26 ID:TW5GIlZo
>>341 テキストデータのtest.txtで問題ないです。
MVC、フレームワークはよくわからないので、
<?php include("test.txt"); ?>
になにか加えて簡易的にできる方法を教えてもらえれば助かります
>>339 改行コードで分割して、156行目のデータを出力
実行したいならeval、だけど、なんか変だと思うよそれ
345 :
nobodyさん :2011/12/13(火) 18:38:07.02 ID:XO4P9E+z
echo $name ."<br>\n"; これが正しいらしいのですが、 echo $name ."<br>"; これでもエラーになりません。 \n これっていったい何なんでしょうか?
>>343 フレームワークうんぬんは無視しとけ
// メモリが問題にならないなら
$test = file('test.txt');
echo $test[155];
// 問題になるなら
$test = fopen('test.txt', 'r');
for ($i = 0; $i < 155 && fgets($test) !== false; $i++) { }
echo fgets($test);
そもそもそういう用途はフレームワークでモデル使うべき
呼び出したいって言ってるし、echoじゃなくてevalじゃないんか どっちにしろおかしいけど
>>345 ブラウザで、そのページのソース見てみるといい
Ajax使え君に正規表現使うな君、お次はフレームワーク使え君か 相変わらず芸がないな
php でフォームを作るとき バリデーションやら、これでよろしいですか?画面やら DBにインサートやら正直キレそうなんですけど これらを、簡単に制作することはできないんですか?
354 :
353 :2011/12/13(火) 19:22:20.94 ID:B3orhDGR
ID出し忘れました
HTML5
358 :
nobodyさん :2011/12/13(火) 19:49:02.86 ID:vJKh4WOZ
359 :
339 :2011/12/13(火) 19:52:15.17 ID:TW5GIlZo
360 :
nobodyさん :2011/12/13(火) 20:06:35.36 ID:Y6ZWV3Gc
configureでオプションつけなくても 後からphp.iniでモジュールを読み込んで利用することはできますか?
>>352 定期的に○○君とか呼んでるお前がきめえよ
どっちも芸がない どっちもきめえ よって引き分けノーゲーム
364 :
nobodyさん :2011/12/13(火) 22:15:19.17 ID:M1gnknNt
>>353 それが簡単にできるようになったらプログラマの仕事が無くなるだろ?
Windowsのファイル名に使えない文字。 \/:*?"<>| Windowsのパスに使えない文字。 *?"<>| Windowsのパスに使える記号。 \/:!#$%&'()+,-.;=@[]^_`{}~ WindowsのAscii文字のパスにヒットする正規表現。 [0-9A-Za-z\\\/:!#\$%&'\(\)\+,\-\.;=@\[\]\^_`\{\}~]+
なんだその正規表現は ユニコード表記でかけよ
ユニコード表記とは?
368 :
345 :2011/12/13(火) 23:20:32.52 ID:XO4P9E+z
>>351 本当ですね、\nがあると、ソースが改行してますw
じゃ、ソースを改行するため、クライアントさまにソースを見ていただくために、\nを入れるんですか?
370 :
nobodyさん :2011/12/14(水) 00:12:48.87 ID:hH9P1H+w
>>368 クライアントだけじゃなく自分がHTMLをチェックするときも改行があったほうが見やすいだろ?
逆に敢えて改行を入れない場合もあるから好きにすればいい
371 :
345 :2011/12/14(水) 00:33:43.94 ID:QUjeWNXA
>>370 なるほど、どうもです。
あと、↓の、echo $name ."<br>\n";を表示するときに、実験的に一時的に文字に赤色を付けたいのですが、
どうするの一番お手軽でしょうか?
<?php
$i = 0;
$title = "kyonun";
while( $i <= 10 ){
$count = $i;
$number = str_pad($count, 4, "0", STR_PAD_LEFT);
$name = $number . $title.".html";
echo $name ."<br>\n";
$i++;
}
?>
372 :
345 :2011/12/14(水) 00:36:45.53 ID:QUjeWNXA
赤色を付けたいではなく、表示文字を黒ではなく赤にしたい、です。
echo '<p style="red">'. $name. '</p>', PHP_EOL;
374 :
345 :2011/12/14(水) 01:21:09.79 ID:QUjeWNXA
>>373 すみません、↓でやってみたけど黒いまんまです。
<?php
$i = 0; //ファイルの連番用
$title = "kyonun";
while( $i <= 10 ){
$count = $i;
$number = str_pad($count, 4, "0", STR_PAD_LEFT);
$name = $number . $title.".html";
// echo $name ."<br>\n";
$i++;
echo '<p style="red">'. $name. '</p>', PHP_EOL;
}
?>
日本語を正しく分割できるmb_explodeができた。 print_r( explode( "\\" , "すう\\あすあxソ\\ソ\\ソソxx") ); print_r( mb_explode( "\\" , "すう\\あすあxソ\\ソ\\ソソxx") ); return; function mb_explode( $delimiter , $string , $encode=NULL ) { if(!is_array($delimiter)) $delimiter = array($delimiter); if($encode===NULL) $encode = mb_detect_encoding( $string , "ASCII, UTF-8, SJIS-win, eucJP-win, JIS, UTF-16LE, UTF-16BE", TRUE); $array = array( mb_convert_encoding( $string , "UTF-16LE", $encode ) ); foreach( $delimiter as $delim ) { $delim = mb_convert_encoding( $delim , "UTF-16LE", $encode ); for( $n=0; $n<count($array); $n++ ) { $subarr = explode( $delim , $array[$n] ); if(count($subarr)===1) continue; array_splice($array, $n, 1, $subarr ); $n+=count($subarr)-1; }} foreach( $array as &$val ) $val = mb_convert_encoding( $val , $encode, "UTF-16LE"); return $array; }
次はもっと計算量を考えましょうね
377 :
nobodyさん :2011/12/14(水) 04:29:37.65 ID:hH9P1H+w
>>374 <p style="red"> じゃなくて <p style="color:red"> だな。
>>373 も間違ってるが、あんたもPHPだけじゃなくCSSも勉強したほうがいい。
378 :
345 :2011/12/14(水) 05:13:46.41 ID:QUjeWNXA
>>377 おお、ありがとうございます。うまく行きました。
しかし、これって改行が2つも入るんですよね。1つにならないでしょうか?
あと、あと、最後のPHP_EOLって何でしょうか? デリっても表示は変わりません。
echo '<p style="color:red">'. $name. '</p>', PHP_EOL;
改行を意味する定数。ようは\nと一緒。 だが改行コードはOSによって違うので、 OSによって適切な改行コードにしてくれる。 ぶっちゃけ\nでいい
381 :
345 :2011/12/14(水) 05:57:46.02 ID:QUjeWNXA
>>379 どうもです。
つーか、エディターはWZ6を使ってるんですけど、
文字コードをシフトJISからutf-8に変えて無意識で保存して、10分ぐらい苦労したコードを飛ばしちゃいましたw
文字コードは何がなんだかさっぱりわからんのですがどうしたらいいんですかね?
htmlファイルを自動で生成するphpを作ってうまく動いたんだけど、
ファイル名の日本語部分がめちゃくちゃ文字化けするから、
文字コードをシフトJISからutf-8に変えてみたんですよねw
そしたらソースがメチャクチャになっちゃったw
文字コードにはどういう心がけで接したらいいのかまったくわからないです〜
382 :
345 :2011/12/14(水) 06:10:58.72 ID:QUjeWNXA
ネット上から日本語文字列をゲットして、それをIEに表示させると文字化けしないのに、 それを、htmlファイルの名前にしてhtmlファイルを出力すると名前が文字化けするんですよね。
383 :
345 :2011/12/14(水) 06:29:46.30 ID:QUjeWNXA
そもそも、WZ6の使い方からしてあまりよくわかんないんですw
384 :
345 :2011/12/14(水) 06:32:49.69 ID:QUjeWNXA
つーか、phpはファイル名が日本語.phpだと使えないじゃないですか、それと同じ理屈なのかな?
一人暴走するのは迷惑なんで ちょっとは自分で調べて頑張れよ
386 :
nobodyさん :2011/12/14(水) 08:35:53.33 ID:hH9P1H+w
>>381 utf-8で保存したならutf-8で開けば問題ないはず。
ファイル名を管理するのはOSのファイルシステムなのでファイル内の文字コードとは関係ない。
OSやウェブサーバー等の環境によっては日本語ファイル名はトラブルの原因になるので
詳しいことがわからないなら日本語ファイル名は避けるのが基本。
WZの使い方は自分で調べること。
このスレ以前の問題の自分で勉強しないksがいるようだな
つーかw
389 :
nobodyさん :2011/12/14(水) 17:00:13.28 ID:36qjf2FU
すみません。質問させてください。 if ($result = $mysqli->query("SELECT * FROM tbUser WHERE seq = ".$_SESSION['seq'])) { if ($result->num_rows > 0) { $row = $result->fetch_array(MYSQLI_ASSOC); $result->close(); $decoded = json_decode($row['profile']); $smarty->assign('gender', $decoded->gender); $smarty->assign('locale', $decoded->locale); $smarty->assign('img', $decoded->img); $smarty->assign('bio', $decoded->bio); こんな感じの書き方で(途中ですが)apachiのエラーログに下のようなエラーが出ます Undefined property: stdClass::$gender どのように修正したら良いのでしょうか? よろしくお願いします。
property_exists
>>390 ありがとうございます。
if(property_exists('decoded','gender')){
$smarty->assign('gender', $decoded->gender);
}
issetと同じように上のようにしたらその部分を読まなくなってしましました。
property_existsの引数の書き方が悪いのでしょうか?
>>392 >>1 ◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
394 :
389 :2011/12/14(水) 18:10:43.40 ID:36qjf2FU
すみません。 392は自分です。よろしくお願いします。
395 :
345 :2011/12/14(水) 18:55:32.05 ID:QUjeWNXA
自分は345ですが、 <?php $name = "2ちゃんねらー.html"; // ファイル名を作る echo '<p style="color:green">'. $name. '</p>', PHP_EOL; // ファイル名表示 $fp = fopen($name,"a"); // ファイルを作る。 fclose ($fp); // ソケットを閉じる ?> を実行すると、 鐚???<????????????.html、が表示され、 ・偵■繧・s縺ュ繧峨・.html、というファイルが生成されます。 日本語でも文字化けさせないソースを作るにはどうしたらいいのでしょうか? よろしくお願いします。 環境は、winXP、IE8.06001、PHP Version 5.3.8です。
396 :
345 :2011/12/14(水) 18:59:13.15 ID:QUjeWNXA
あと、 MySQL サーバのバージョン: 5.5.16 Web サーバ Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 phpMyAdmin バージョン情報: 3.4.5 です。
397 :
345 :2011/12/14(水) 19:05:18.41 ID:QUjeWNXA
>>386 ありがとうございます。
あと、
info.phpに
mbstring
Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation disabled
とあるのですが、これと文字化けは関係ありますか?
Windowsのファイル名はShift_JISで扱わないといけない mb_convert_encoding
最近のは、内部でエスケープしちゃってるので、ダメ文字入りのファイルでどうやっても困ることがあったはず。 使わない方がいいんだが。
400 :
345 :2011/12/14(水) 19:59:10.69 ID:QUjeWNXA
>>398-399 レスありがとうございます。
つか、どうもIE8のソースの文字コードはECUです。
で、ECUの文字列をコピペして、UTF-8のファイルに貼り付けると、どうなっちゃうんですかね?w
401 :
345 :2011/12/14(水) 20:02:35.46 ID:QUjeWNXA
あと、
>>395 のソースは、
>>398 さんの言われるように、Shift_JISで保存したら、
表示も、ファイルも日本語で作れました。
402 :
nobodyさん :2011/12/14(水) 20:36:40.65 ID:17jEiayv
phpのsession時間はどこで指定するのですか? 管理単位はなんですか?IPですか?
っつーかw
405 :
345 :2011/12/14(水) 21:01:41.08 ID:QUjeWNXA
つーか、mb_convert_encoding($arr_str[1], "SJIS","EUC"); をソースの流れの色々なところに 置くと、色々かわりますねw 表示は文字化けですが、ファイルの方は日本語表示出来ました、ありがとうございました。
つーかPHPってめんどくさいっすね
407 :
345 :2011/12/14(水) 21:30:24.42 ID:QUjeWNXA
file_get_contents()関数で、
$url="
http://kohada.2ch.net/test/read.cgi/php/1322564127/ ";
file_get_contents($url);
みたいな方法で、順番に、ネットのページをダウンロードしています。
ところが、このやり方だとすぐタイムアウトするのか、
10ページぐらいでfile_get_contents()がエラーを吐きます。
この用途に使える、file_get_contents()より緻密な設定が出来る関数はないでしょうか?
タイムアウトしてんの?
409 :
345 :2011/12/14(水) 21:47:23.87 ID:QUjeWNXA
>>408 Fatal error: Maximum execution time of 30 seconds exceeded in
すみません、phpのループの設定だった。
410 :
345 :2011/12/14(水) 21:48:32.82 ID:QUjeWNXA
411 :
nobodyさん :2011/12/14(水) 22:06:44.80 ID:Ur9qSeou
何かの個数を表すとき何て名前にしてますか? number_of_comments だとちょっと長いかな
>>411 $comment_count かなあ
$comments でもいい気がしたけど、これだとコメントが詰まった配列みたいだし
よく使う変数なら短くしたい $come_count とかさ
意識はしてないけど、「$変数の対象_変数の用途や型」って書き方してる
まあ、数えるものが限定されているなら $count でもいいかな
>>407 まず何のエラーか調べなさい
ヒント:$http_response_header
415 :
345 :2011/12/15(木) 02:24:51.02 ID:nOE9twus
>>414 どうもです。 あれはphpのループの設定で解決しました。
つか、文字列から↓の記号を排除する関数、ってどこかにないでしょうか?
↓の記号が出てきたら、空白に置き換えるでも、削除するだけでも、どんなんでもかまいません。
Windowsのファイル名に使えない文字。
\/:*?"<>|
preg_replace
417 :
345 :2011/12/15(木) 02:51:10.82 ID:nOE9twus
418 :
345 :2011/12/15(木) 06:29:31.80 ID:nOE9twus
>>276 ってことは、PHPで検索エンジンを作ろうとした場合、DOMを使うといい、ってことなのでしょうか?
419 :
345 :2011/12/15(木) 06:33:42.81 ID:nOE9twus
$title = ereg_replace("/","・",$title); と書くと、 Deprecated: Function ereg_replace() is deprecated in C:\xampp\htdocs〜〜 が出るのですが、正しくはどうすべきでしょうか?
420 :
345 :2011/12/15(木) 07:13:00.67 ID:nOE9twus
しかし、こういうプログラミングは、うまく動けば天にも上る気持ちになるけど、 動かないと絶望のどん底に落ち込むから、トータルでは健康に悪いんじゃないですかね?w
421 :
345 :2011/12/15(木) 07:16:20.70 ID:nOE9twus
しかし、サイトを作ろうとすると、 html、css、php、ジャバスクリプトをマスターしなければならないんだけど、 こんなの1人だけでやってる人いるんですかね?
いい加減にしろ
もう、専用スレでも立ててくれ。 君だけのスレじゃないから
おはよぉ〜 PHPプログラマ〜のお姉さんだよぉ〜 今日はどんな質問が残ってるのかな?
425 :
nobodyさん :2011/12/15(木) 12:46:01.86 ID:Ddg6IIc7
お姉さん・・・ふぅ〜
427 :
nobodyさん :2011/12/15(木) 16:19:29.00 ID:uDMRC9vi
>>421 さらにいうなら
html
css
php
Java script
action script
sql
perl
apache
smarty
覚えることが多すぎるのがWEB
たいへんだけど、むしろそこが楽しい
429 :
nobodyさん :2011/12/15(木) 16:40:26.23 ID:BuhzkLXW
楽しいけど、むしろそこがたいへんだ
430 :
nobodyさん :2011/12/15(木) 16:55:14.47 ID:IwZ5fbUN
<form method="post" action="<?php $_SERVER['PHP_SELF'];?>"> <?php echo "<input type='submit' name='del[9294]' value='削除'>"; echo "</form>"; echo "<br>"; if($_POST){ echo "<pre>"; print_r($_POST); echo "</pre>"; echo "<br>"; echo $_POST['del[9294]']; } ?> 出力結果 Array ( [del] => Array ( [9294] => 削除 ) ) Notice: Undefined index: del[9294] $_POST['del[9294]']で取り出すのかと思ってたら多次元配列になるとか聞いてないよー
ラジオボタンというものがあってだな
×ラジオボタン ○チェックボックス
>>431-432 用途次第で、buttonもcheckboxもradioもhiddenもありうるだろう。
取得値が多次元配列になるのは同じ。
仕様です
435 :
nobodyさん :2011/12/15(木) 18:18:27.02 ID:8PBzw4Kx
\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f 形式(ユニコード?)をデコードする方法を教えて下さい!
$str = "\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f"; print json_decode("\"$str\""); utf8以外ならその後変換して
437 :
nobodyさん :2011/12/15(木) 19:56:58.41 ID:3eA/ytGy
バックグラウンド処理について質問です。php5.3.8です 今、webアプリで3つのSNSのapiに文章をポストする仕組みを作ってるんですが フォームの送信ボタンを押した後、apiへのアクセスと投稿部分は時間がかかるため exec()でバックグラウンド処理させました。が、それでも時間がかかりすぎる気がします 時間の捕捉方法は以下の通りです $session->starttime = date("Y-m-d H:m:s"); funcImageUpload(~~~);//写真アップロード funcQuery(~~~);//DBクエリ exec(~~~);//apiへの投稿 $session->endtime = date("Y-m-d H:m:s"); この状況で処理時間が ○テキストのみ投稿 ・exec();をコメントアウト:1秒 ・exec();を実行:3秒 ○テキストと写真を投稿 ・exec();をコメントアウト:3秒 ・exec();を実行:9秒 いくら3つもapiにアクセスしてるからって3秒とか9秒は時間かかり過ぎじゃないでしょうか? バックグラウンド処理=一瞬で済むものだと思ってたのですが違うんでしょうか exec();自体初めて利用した処理なのでおかしい点があるとしてもわかりません 初心者にありがちな穴などあるんでしょうか? または、高速化する方法を教えてもらえると嬉しいです すみませんがアドバイスお願いします
exec(~~~); の詳細を。 標準出力を nullかなんかにリダイレクトして & つけてる? windows だったら execじゃダメ
439 :
nobodyさん :2011/12/15(木) 20:09:19.52 ID:TSU9Et/j
PHP のクラスについて質問です。 以下のように宣言した変数をさらにクラスメンバの宣言(?)で使いたいのですが、 'bar' => $piyo の部分がエラーになります。 class Hoge { public $piyo = 'piyo'; public $foo = array( 'bar' => $piyo // 'bar' => $this->piyo これもダメです。 } } 上記のように値を使い回したい場合どうすればいいでしょうか?
>>437 ノンブロックで行うとして、処理が成功したかどうかをしる方法はあるの?
442 :
nobodyさん :2011/12/15(木) 21:12:38.85 ID:3eA/ytGy
>>438 ありがとうございます
exec("/usr/bin/php {$execFile} {$params_exec} {$twitter_userToken} {$twitter_userTokenSecret} >/dev/null 2>&1");
{$execFile} 実行ファイル
{$twitter_userToken} パラメータ1
{$twitter_userTokenSecret} パラメータ2
という感じです
間違ってるんでしょうか?
>>441 すみません、恥ずかしいんですがノンブロックとはなんでしょう?
apiへの処理の成功の可否は、エラーコードをDBに登録するようにしてあります
443 :
nobodyさん :2011/12/15(木) 21:14:07.20 ID:8PBzw4Kx
$obj->{'value'}; ↑このプロパティを { } で囲むのはどんな意味があるんですか?この記法に名前はありますか?
444 :
nobodyさん :2011/12/15(木) 21:14:34.92 ID:8PBzw4Kx
>>442 >>438 のいうとおり、&がついてないからだね。
ノンブロック(ノンブロッキング)ってのは、
何かの処理を行ったとき、その処理によってメインの処理がブロックされる/されない の意味で使われるよ。
同期/非同期みたいな。
>>445 >/dev/null 2>&1"); を > /dev/null &"); に変更したら上手くいきました!
ノンブロックって言葉も勉強になりました、ありがとうございました
447 :
nobodyさん :2011/12/15(木) 22:03:39.25 ID:QbiaPFTg
URLの一番最後 member/register?codeのregisterってなんですか? フォルダではないようなのですが
>>446 標準エラー出力は捨てないことにしたの?
>>447 ファイルだろうな
それ以外の可能性もあるけど、PHP と関係ないな
>>448 俺も思ったけど、話が PHP から逸れるからさ
>>446 は、標準エラー捨てるなら >/dev/null 2>&1 & と書きな
450 :
447 :2011/12/15(木) 22:25:59.73 ID:QbiaPFTg
>>449 すみません。apacheのrewriteruleの設定によるものでした。
おっしゃるとおりPHPに関係ないです
451 :
446 :2011/12/15(木) 23:22:53.45 ID:???
>>448 ,449
標準エラーってのは実行したスクリプトがエラー起こした時のエラーの返り値ですよね?
いらないから >/dev/null 2>&1 & が正しいわけですね
ちょっとまだよくわかってないことが多いみたいです、も少し勉強してみます。ありがとうございました
452 :
nobodyさん :2011/12/16(金) 00:10:18.82 ID:6sQrAgQt
settei.txt 5 1 <?php $file = fopen("./settei.txt","r"); if ($file) { while (!feof($file)) { $strBuf = fgets($file,1024); $i++; if ($i == 1){ $a = $strBuf / 100; } else { $b = $strBuf; } } fclose($file); } else { die("open-err"); } echo $a."<br>".$b; ?> 出力結果0.05 $bが表示されません。なぜでしょうか。教えてください
454 :
nobodyさん :2011/12/16(金) 01:15:32.83 ID:6sQrAgQt
>>453 >>452 をコピペしたけど0.05は表示されるけど<br>も出力されてる。「1」は表示されません。
PHP Version 5.2.6-1
「1」はtrueと解釈されてるとか
>>454 settei.txtがなんかおかしいんでは?
457 :
452 :2011/12/16(金) 01:29:04.38 ID:6sQrAgQt
多分原因が分かりました。テキストエディタemacs23を使っているのですけど、settei.txtで3行目を 作らなかったのに上書き保存するとemacsのカーソルが3行目に移動できるようになってしまいます。 3行目ができた?ということなのかな?
459 :
452 :2011/12/16(金) 01:53:56.17 ID:6sQrAgQt
>>458 上書きでsettei.txtの3行目が出現したとすると$iが3になってsettei.txtの3行目の空文字?で
$bが代入されるので表示されないと思う。
ので、この書き方はせず、行を1行ずず読み込んで配列にして配列のキー0は$aに、キー1は$bにと
したほうがいいとおもいました。
461 :
452 :2011/12/16(金) 02:12:35.46 ID:6sQrAgQt
寝るので明日考えます。ありがとうございました。
いいってことよ
>>427 このsmartyはつっこんでいいのか?
使うこともあるだろ
完全にsmartyは仲間はずれだろ 他は言語で、一個だけテンプレートエンジンって
apacheは言語なのか html css sqlあたりはプログラム言語ではないわけだが ただ知ってる単語を列挙しただけって見ればわかるでしょう
domとecmascriptも入れておくれよ
正規表現で、u(UTF-8)とm(マルチライン)は使わない方がいい。 理由は、UTF-8でないと認識されると検索がストップする、文頭、文末の認識が確実でない。 UTF-8の文書であってもu(UTF-8)を付けずにバイナリデータとして検索はできる。
それならu付けるのは良いってことじゃね
470 :
nobodyさん :2011/12/16(金) 07:08:39.26 ID:8Mabj+H2
巨大な配列どうしの共通部分を短時間で求める方法はありますか。 個数は数万個〜数十万個とかです。 バイナリデータとしてディスクに格納されているケースもあります。
>>470 配列がディスクに格納されているとか意味不明
そこでHadoopですよ
オーバーロード使えなくてイラっとしたから書き込みますね
PHPとあんまり関係ないかもしれませんが ユーザー同士のメッセージのやり取りを 最新20件くらい表示するだけで、保存先はファイルにしようかなと考えています。 DBだとレコード数がすごくなりそうなんで、ユーザーが増えたら読み込みが大変になるかなと。 で、ログ解析やバックアップ用にDBにも入れようかなと。 Cache_Liteを使って、ファイルとして利用しようかなと思っているのですが このやり方以外にいい方法ってありますか? よろしくです
477 :
476 :2011/12/16(金) 19:06:17.04 ID:h9+fuNNV
あ、ID出してなかった
余裕で数千万件とかいく感じ?
479 :
476 :2011/12/16(金) 19:48:10.33 ID:h9+fuNNV
会員数が現状数万人いるんですが、長い目で見てそうしようかなって感じです
480 :
nobodyさん :2011/12/16(金) 19:59:45.62 ID:jjdr3xuV
こんなディレクトリ構造が一番。キャッシュライトでさえアクセス多ければ負荷が増える。 日付/ID/レベル1のGZファイル
481 :
nobodyさん :2011/12/16(金) 20:05:50.06 ID:jjdr3xuV
2ch掲示板なんかも、"板/スレ"でそのままファイルとして記録してるだろ。 データベース使うと照合やロックに手間・負荷が掛かる。 一ファイルごとなら他のファイルまでアクセス待ちなど起こらない。
変更や削除が超めんどくさいけどな。 それしないなら、まあ良いんじゃね?
483 :
476 :2011/12/16(金) 20:56:25.74 ID:h9+fuNNV
すいません。説明不足でした。
メッセージ書き込みと同時に、ファイルとDBと両方に入れようかなと思ってます。
AからBへのメッセージ書き込みがあった場合
→Aの送信ファイルへ書き込み
→Bの受信ファイルへ書き込み
→DBへINSERT(ファイルが壊れた時のバックアップ用)
なので基本、メッセージの読み込みはファイルのみです。
ファイルへの書き込み時に、Cache_Liteを使おうかなという感じでした。
ま、ただ単にいろいろ機能があって、楽かなと思ったので。
>>480 >日付/ID/レベル1のGZファイル
こんな感じのディレクトリ構造は、Cache_LiteでもOptionで実装できるんで
2階層くらいにしようかなと思ってます。
fileを作成・更新を普通に作ったほうがいいですか?
数万人のカキコをDB無しで管理するのか 漢だね
SELECT 送信者,受信者,時間 FROM カキコログ WHERE 送信者=A LIMIT 20 ORDER BY 時間 みたいな感じで出力したほうが管理楽そう
>>484 設計が大変だけどできてしまえば管理はむしろ楽じゃないか?
オレだった あれこれ言ってる間で両方作っちゃうけどな テスターはVIPの有志にやってもらう
488 :
nobodyさん :2011/12/16(金) 21:20:35.61 ID:iBDY3MbI
phpからMySQLのgrant文って発行できない? $sql = "grant all privileges on test_db.* to test_user@'localhost' identified by 'test_pass'"; $ret = mysql_db_query("localhost",$sql); こんな感じにしてみたけど Unknown database 'localhost' ってエラーになってしまう。
>>484 検索したり検索結果をソートしたりするにはDBはいいけど。
たとえば動画や画像はデータベースに入れないだろ。
なんでもDBにいれればいいわけではない。
>>481 テーブルロックするわけじゃあるまいし。
ファイルアクセスならアクセス待ちが起こらないってのもへんな話。
まぁ、会員が数万人なら、長い目で見ても10億件くらいでテストすればいいんじゃないか?
んで、DBとファイルとどっちがよいかを検討すればよい。
俺ならDB
>>490 グーグルマップもDBにいれてしまってゴメンナサイゴメンナサイ
検索、ソートに関与しない(バイナリ)データまで入れる必要がない。 ファイルへのパスやURLだけ追加しとけば十分。
494 :
nobodyさん :2011/12/16(金) 22:16:17.15 ID:iBDY3MbI
>>489 そういうことか。
$ret = mysql_db_query("localhost",$sql);
↓
$ret = mysql_db_query("mysql",$sql);
で出来ました。
マジ感謝です。
495 :
476 :2011/12/16(金) 22:21:39.60 ID:h9+fuNNV
なんか質問以外の話になってきたので、クローズさせていただきます ありがとうございました。
お前のスレじゃない。勝手にクローズとか宣言するな
497 :
nobodyさん :2011/12/17(土) 01:25:40.44 ID:bKvSYMrD
正規表現の質問です。 文末から逆順で正規表現の検索はできますか?
サーチ系のポジション設定で負数Nを指定したら0〜strlen-Nの範囲になるが、 preg_matchだとstrlen-N〜strlenになる。
それがどうした
502 :
nobodyさん :2011/12/17(土) 16:11:17.20 ID:bPlXPOXm
配列Aと配列Bをマージする時に、重複する値は除外するという関数はありますか? つまり、以下を1つの関数で行えますか?(キーは保持しなくてよいです) $arr_c = array_merge( $arr_a, $arr_b ); $arr_c = array_unique( $arr_c );
遅くて困ってるわけじゃないならそれで
504 :
nobodyさん :2011/12/17(土) 16:49:55.12 ID:bPlXPOXm
それで行こうかと思ったら、タイムアウトしました。 10万くらいの配列が元で、1万ぐらいの配列からarray_diffしたら止まりました。 そもそも無茶だったかな?
505 :
nobodyさん :2011/12/17(土) 16:54:38.98 ID:sPFPpSkQ
SSLでアクセスした場合$_SERVER["REMOTE_ADDR"]がサーバーのIPになってしまうのですが 他にクライアントIPを取得する方法はありますか?
>>504 キーを捨てていいとのことなので、ハッシュのキーにしてしまうのではだめかな
508 :
nobodyさん :2011/12/17(土) 17:23:45.16 ID:sPFPpSkQ
>>507 SSLとphpはcoreserver (xrea)に設置してます
検索したところサーバーのIPになるのは正常みたいですが・・
509 :
nobodyさん :2011/12/17(土) 19:36:32.56 ID:A5TEnh+5
log4phpで "Undefined index: log4php.threshold"とでます
そうですか
つまりlog4phpで "Undefined index: log4php.threshold"と出るんですね?
>>509 貴重な情報提供ありがとうございます
これで世界のプログラマは救われるまずです
513 :
nobodyさん :2011/12/17(土) 23:50:37.11 ID:D3Nl9AMj
原因と解決方法を聞いているのですが。
なんの原因と解決方法? それ書かなきゃ分かんないよ。
>>514 log4phpで
"Undefined index: log4php.threshold"とでます
原因と解決方法を聞いているのですが。
517 :
505 :2011/12/18(日) 05:09:47.88 ID:KlBUbzzu
どなたかお願いしますm(__)m
518 :
nobodyさん :2011/12/18(日) 06:27:11.95 ID:r5XCNL9M
>>506 アイデアありがとうございます!
つまり、キーと値を入れ替えるといったことでしょうか?
519 :
nobodyさん :2011/12/18(日) 08:55:46.14 ID:TZzNKfzx
foreach ($all->page->item as $item) { とforeachの中で変数に$allの中身を展開していて、 中身のほとんどはひとつの変数にひとつのデータが入ってるんですが、 ひとつだけ$item->categoryは中身が配列なんです こういう場合、 $category = $item->category; では配列の先頭のひとつしか取り出せないのですが、 うまいことやり方はないでしょうか 【PHPのバージョン】5.3
まず、入れ子にしてみます foreach ($all->page->item as $item) { if (is_array($item)){ foreach ($item as $valeu) { $echo $valeu; } } } 次に「動けこのポンコツマシン」と叫びながらenterキーを押します
521 :
nobodyさん :2011/12/18(日) 10:03:02.25 ID:3BlI9Ok7
【OS名】windows7 【PHPのバージョン】5.2.0 【質問内容】 サイトを参考にしながらtwitterのbotを作っているのですが、 Notice: Trying to get property of non-object というエラーが出て困っています。 該当箇所は $timeline = $Bot->Get_TL("home_timeline",$since_id,50); で、Get_TL関数は function Get_TL($type,$sid = null,$count = 30){ $opt = array(); $opt['count'] = $count; if($sid){$opt['since_id'] = $sid;} $req = $this->Request("statuses/".$type.".json","GET",$opt); // JSON形式の方がちょっと扱いやすい if($req){ if($req->Code != "200"){die("Error: ".$req->Code);} $result = str_replace(":NULL,",':"NULL",',$req->Body); } else {die('Get_TL(): $req is NULL');} $result = json_decode($result); if($result->error){die($result->error);} return array_reverse($result); } こんなかんじです。 エラー内容を調べたところNULLの扱いが良くないみたいなんですが、どういうふうに直せばいいか検討が付きません ご教授願います
522 :
nobodyさん :2011/12/18(日) 10:07:55.46 ID:TZzNKfzx
>>521 echo "ガッ";
>>522 スクリプトがちゃんと動いたら 「よーし いい子だ」 のセリフも忘れないようにしましょう
>>521 $Botにインスタンスがちゃんと入ってない
525 :
nobodyさん :2011/12/18(日) 11:58:40.87 ID:3BlI9Ok7
>>523 巧妙なぬるぽしてましたか私…\(^o^)/
>>524 えーっと、
class Twitter_Bot{}
の中に先ほどのGet_TL関数がはいっていて、
$Bot = new Twitter_Bot($user,$consumer_key,$consumer_secret,$oauth_token,$oauth_token_secret);
と宣言してるんですが、これではダメでしょうか…?
というかこういうことじゃなかったらすいません
526 :
nobodyさん :2011/12/18(日) 12:00:59.32 ID:3BlI9Ok7
>>524 すいません追記です。
function Twitter_Bot($usr,$consumer_key,$consumer_secret,$oauth_token,$oauth_token_secret){
$this->user = $usr;
$this->TO = new TwitterOAuth($consumer_key,$consumer_secret,$oauth_token,$oauth_token_secret);
$this->times = array_sum(explode(" ",microtime()));
}
もいれてます。
>>526 コード全部とエラーメッセージをあげたほうが早いかも
529 :
nobodyさん :2011/12/18(日) 12:32:55.35 ID:3BlI9Ok7
>>527 かなり長いのでちょっと無理です…。
もっと勉強して出直します
>>528 日立市になにが起きてるんでしょうか…
日立市ワロタ 職員がきっと作ったんだな
委託したWEB屋が納期優先でフレームワークやライブラリ使って納品 ↓ phpがバージョンアップとかセキュリティホール発見とか ↓ フレームワークの開発者が行方不明で対応しない OR WEB屋が行方不明で対応できない ↓ 他のWEB屋に発注 ↓ なんとか動いてる状態 ネットバブルの遺産であり 仕事のタネ
533 :
nobodyさん :2011/12/18(日) 21:02:41.90 ID:WFHhC1hO
すみません、質問させてください cURL等にてFlashコンテンツ(動画とか音声とか)を取得したいと思うのですが、可能なのでしょうか? 対象のHTMLソースを確認してもアドレスなど指定方法が分かりません 画像なんかのように簡単にはいかないと思いますが、どのようにすればいいのでしょうか?
っ F12
ブラウザが取得できるんだから可能でしょ
536 :
nobodyさん :2011/12/18(日) 21:15:53.47 ID:WFHhC1hO
PHP関係なくね
PHPと関係ない プログラムとも関係ない 取得手順の自動化部分だけなら関係ある
ちょっと覗かせてもらったけど、Craving ExplorerってまさかJavaScriptで各動画取得してたの?
>>536 ../../common/swf/streaming.swf
って普通に書いてるけどだめなの?
542 :
nobodyさん :2011/12/19(月) 06:04:43.36 ID:qDZa6/Q1
PHP本体が入っているディスクをhome1 PHPのスクリプトが入っているディスクをhome2とした場合に home1にPHPとスクリプト両方が入っている時よりも遅くなったりします? 例えば /home1/bin/php /home1/www/index.php /home2/www/index.php こんな感じの状態でのindex.phpの処理速度はどうなんでしょうか? PCで言うCドライブとDドライブの状態です。
同じところにいるほうが遅くなる可能性はある けど、PHP本体は大抵メモリに乗っかりっぱなしになると思う。あ、php.soとかならね。
544 :
nobodyさん :2011/12/19(月) 06:48:32.81 ID:kmf6/4Wj
$_SERVERの値を取得するgetなんとかって関数ありませんでしたっけ?
ありますよ
546 :
nobodyさん :2011/12/19(月) 08:17:46.50 ID:qDZa6/Q1
>>543 なるほど。
ってことは、そんなにかわらないって感じですかね?
>>546 多分君の場合はほとんど変わらないから気にしなくておk
548 :
nobodyさん :2011/12/19(月) 08:29:50.39 ID:qDZa6/Q1
>>547 APCつかったら変わらないとかのレベルの話?w
反応するな馬鹿
私は一切反応していませんがスレが醜くなって困っています 誰か何とかしてください
>>552 $str = preg_replace("/(^["大阪弁"]+)$/","",$str);
554 :
nobodyさん :2011/12/19(月) 17:36:25.70 ID:yf0vv6CT
【OS名】XAMPP 【PHPのバージョン】5.3 【連携ソフトウェア】ming
【質問内容】 すみません。質問をさせて下さい。
下の二つの処理が返す $buffer の中身が、同じものなのかどうか知りたいのです。
1.一つ目の処理 -------------------------------------------
$fp = fopen('
http://localhost/test.gif ', 'rb');
$buffer = '';
while (!feof($fp)) { $buffer .= fread($fp, 10000); }
fclose($fp);
2.二つ目の処理 -------------------------------------------
$fp = fopen('
http://localhost/test.php ', 'rb');
$buffer = '';
while (!feof($fp)) { $buffer .= fread($fp, 10000); }
fclose($fp);
test.php ----
<?php
Header("Content-Type: image/gif");
fopen('./test.gif', 'rb'); // <--
http://localhost/test.gifと同じもの fpassthru($fn);
------------------------------------------------------------
ダンプしたりgettypeしてみたりしたのですが、同じ文字列にしか見えませんでした。
文字列としては一致しているのですが、ming に上記の $buffer を渡すと
上側の処理では画像が表示されて、下側の処理では画像が表示されませんでした。
数日悩んでいるのですが答えが導き出せず困っております。
よろしくお願い致します。
OSがXAMPPて
556 :
nobodyさん :2011/12/19(月) 17:52:05.05 ID:yf0vv6CT
すみません。本番環境はCentOSなのですが、 とりあえず今はXAMPPでテストしているところなのです。
開発と本番で環境違うとか、笑えるね。www
>>554 気のせいなんじゃないかなぁ。
>>557 そうかい?
常に本番環境と同じものを開発用に用意できるなら、うらやましいとは思うが、場所に困りそうだなぁとも思う。
みんな よく聞いてくれ xamppはOSではありません
別のとこに問題があるように思えるが、 とりあえずファイルに落としてdiff取ってみては
diffつーかバイナリならcmpか
>>554 echo var_dump($buffer);
で
処理1だと string(54) "GIF89a???????!?, ???????FZh3+;"
処理2だと string(358) " "
と表示される
564 :
nobodyさん :2011/12/19(月) 19:32:13.23 ID:yf0vv6CT
>>561 はい。挑戦してみます。
>>563 私の環境では var_dumpしても同じサイズものが表示されました。
良く見たらソースをコピーするときにファイルポインタの部分を
書き忘れていたのでそのせいかも知れません。
すみません。
皆さまありがとうございました。
もう少し自分で調査してみます。
565 :
nobodyさん :2011/12/19(月) 20:06:50.44 ID:ePa6iLqx
エラーレベルをE_ALL にしていた場合、 未定義の変数を使うとエラーというか、警告が出ますが、 なぜ未定義の変数を使うことは推奨されないのですか?
>>565 プログラムってのは最初にメモリー上に変数やら定数やらの領域を確保してから作業を始めるものだから
言語を開発する時はそういう順番で処理するように作ると処理が速い
phpも最初はそうだったんでない?
「5.xxでつくったそのコードは前のバージョンだと動かない可能性がありますよ」ってことじゃないのかな
速度の問題でなく、ユーザーが間違えた変数を使わないようにさせるためだろ。 スペルミスだったり、既にあると勘違いした変数を使用したり。 定義済、初期化済みの変数以外は警告出す設定ならそういったミスが判明する。
そーゆーもんだと思って使えばいいんじゃないの あんまりくだらない事で悩むと頭がハゲるです
C言語などのコンパイラ言語では大抵、未定義だとエラー。
>>569 最初はPHPのラフさにイライラしたけど、今はCのカッチリさにイライラするようになっちまったな
file読み込みが一番安定してるか。PHP4ではfileは遅かった記憶あるがexplodeと速度差はでない。 $path = "パスです。"; $kaisu=20; $timer=new timer; for($n=0;$n<$kaisu;$n++) $lineA = file( $path,FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES ); unset($timer); $timer=new timer; for($n=0;$n<$kaisu;$n++) $lineB = explode("\n",file_get_contents($path)); unset($timer); $timer=new timer; for($n=0;$n<$kaisu;$n++) $lineC = preg_split("/[\r\n]+/", file_get_contents($path) ); unset($timer); var_dump( $lineA[0] ); var_dump( $lineB[0] ); var_dump( $lineC[0] ); class timer { protected $time, $global; function __construct() { $this->global = $this->time = microtime(true); } function __destruct() { $this->pr_sub("GlobalTime",$this->global); } function reset() { $this->time = microtime(true); } function pr() { $this->pr_sub("ProcessingTime",$this->time); $this->reset(); } function pr_sub($text,&$t) { echo "$text ".sprintf("%.5f\n", microtime(true)-$t); } }
むしろこの流れでexplodeと速度差がないのが気になるわ。ほんとに?
windowsで0x5C問題でアクセス不可能なファイルのサイズを取得する方法。 function filesize_ex( $path ) { $size=@filesize($path); if($size!==FALSE) return $size; $str = <<<TEXT @SET FNAME="$path" @CALL :sizeoutput %FNAME% @GOTO :EOF :sizeoutput @ECHO %~z1 @EXIT /B TEXT; file_put_contents("tmp.bat",$str); $output=exec("tmp.bat"); unlink("tmp.bat"); return intval($output); }
>>573 でファイルが存在しない場合にFALSEを返すようにした。
function filesize_ex( $path ) {
$size=@filesize($path);
if($size!==FALSE) return $size;
$str = <<<TEXT
@SET FNAME="$path"
@CALL :sizeoutput %FNAME%
@GOTO :EOF
:sizeoutput
@ECHO %~z1
@EXIT /B
TEXT;
file_put_contents("tmp.bat",$str);
$output=exec("tmp.bat");
unlink("tmp.bat");
if(stripos($output, "ECHO")!==FALSE) return FALSE;
return intval($output);
}
575 :
nobodyさん :2011/12/20(火) 11:11:49.92 ID:wrUI7SmP
$_SERVERを取得するgetなんとかって関数があったと思うのですが、関数名を覚えている方いらっしゃいませんか?
>>544 ,575
> $_SERVER を取得する
取得したいのは、$_SERVER そのもの?それとも中身?
$_SERVER は、スーパーグローバルだから get 何たらで取得したりしないよ
getenvのことか?
ディレクトリ区切りと、名前含まれる「\」を区別できないのはいつ頃に決着するんだよ? Windowsで動かしている限り、どう設定しても回避出来ないだろ。
>>577 答えてるしwww
暗黙の了解でスルーしてたんじゃねーの?
日本語でおk
PHPは昔、フォームからのデータを$_POST['name']ではなく$nameに直接入る 仕様になっていた。初期化しないと致命傷になりかねないのでその名残では ないだろうか。 どちらにしろ初期化する癖をつけておかないと予想外の動作をして困る時が あるので初期化する習慣をつけておいた方が良い。
>>578 マルチバイトであること、というか、エンコードさえわかっていれば問題は起こらないんだけどね。
>>579 ん?
>>581 今でもその設定はできるよ
583 :
nobodyさん :2011/12/20(火) 16:53:53.67 ID:XCA10mib
現在の時間を取得して、現在から1時間後の 時間を表示させたいのですが、どのように行なったら良いのでしょうか。 プログラムは以下の通りです。 実行結果は、[Array]のみ表示されてしまいます。 <?php $today[] = date("His", strtotime("+1 hour")); print($today); ?>
[]が不要
または print_r($today); にする
587 :
nobodyさん :2011/12/20(火) 20:08:12.93 ID:6+E46BaC
質問です XSSのテストをしようとテキストボックスに <script type="text/script">alert("XSS");</script> と打ち込んでボタンを押してもアラートがポップされないのですがどうすればポップできるようになりますか? ちなみに「<b>XSS</b>」と打ち込むと太字で表示されます。またPOSTをGETにしても駄目でした <div> <form method="POST" action=""> <input type="text" name="ex" value="初期値"> <input type="submit" value="決定"> </form> <?php echo @$_POST['ex']; ?> </div>
>>583 <?php
$mojiretsu1 = "His";
$mojiretsu2 = "+1 hour";
$kansuu1 = "date";
$kansuu2 = "strtotime";
$kotae = "today";
${$kotae} = $kansuu1($mojiretsu1, $kansuu2($mojiretsu2));
echo $today;
?>
>>587 <?php
echo @$_POST['ex'];
?>
↓
<?php
if (get_magic_quotes_gpc()) {
echo stripslashes($_POST['ex']);
}
?>
でどうだろか
>>587 <script type="text/javascript">alert("XSS");</script>
あるいは
echo get_magic_quotes_gpc() ? stripslashes($_POST['ex']) : $_POST['ex'];
>>589 それだとget_magic_quotes_gpcがfalseのときどうなる?
>>591 これでいいですか?
<?php
if (get_magic_quotes_gpc()) {
echo stripslashes($_POST['ex']);
}else{
where(1){
echo '<script type="text/javascript">alert("nullpo");</script>';
}
}
?>
初心者で申し訳ないんですが、XMLをPHPで操作する方法を勉強しています。 XMLファイル <books> <book> <title>Great American Novel</title> <characters> <character> <name>Cliff</name> <desc>really great guy</desc> </character> ・・・・・略 PHPファイル <?php $xmltree=simplexml_load_file('C:\xampp\htdocs\Book.xml'); print($xmltree->books->book->title); ?> と書いても何も表示されないのですが、titleを画面に表示するにはこれは間違ってるのでしょうか?
>>597 $xmltree -> book -> title;
うぎゃあああああああああ SQLと混ざったあああああああああ
>>596 のwhereはwh
wh おちつけよw
601 :
587 :2011/12/20(火) 22:24:55.51 ID:???
>>589-590 ありがとう get_magic_quotes_gpc()の戻り値は0でした。
クロームを使っていたので、思いつきで他のブラウザで
<script type="text/javascript">alert("XSS");</script>を試してみたら表示できました。
主要ブラウザでどう表示するか試して見ました。Oが付いてるものがXSS成功?(アラート表示される)
IE8
O <script>alert("xss")</script>
O <script type="text/javascript">alert("XSS");</script>
firefox8.0.1
O <script>alert("xss")</script>
O <script type="text/javascript">alert("XSS");</script>
google chrome16.0.912.63m
X <script>alert("xss")</script>
X <script type="text/javascript">alert("XSS");</script>
opera11.60
O <script>alert("xss")</script>
O <script type="text/javascript">alert("XSS");</script>
safari5.1.1
X <script>alert("xss")</script>
X <script type="text/javascript">alert("XSS");</script>
<script type="text/script">alert("XSS");</script>はIEは未確認、その他の全ブラウザでXSS失敗(?)
アラート表示されないのは対策されてるのかただ単に表示しないだけでスクリプトは実行されてのかどっちなんだろう・・・
きっと気のせい
というのも、勝手にそんな制御されても困るので。
>>601 type="text/script" は、スペルミスだろうけど
例えば type="text/plain" で中身が JavaScript で記述されていようが実行されないよ
>>601 chromeはXSSフィルターの機能だろう
safariは知らんけど同じWebKitだし同様のフィルタじゃないか
607 :
nobodyさん :2011/12/21(水) 01:38:19.70 ID:qTS3sZTQ
多くのphpの本でメールの送信方法がSMTP認証なしでの メールの送信しかのってなく、SMTP認証のやり方が載ってません。 とりあえず、sendメールまね〜るでSMTP認証してメール送ってますが、 SMTP認証はphpでプログラムを組むことは可能なのでしょうか?
SMTP認証 PHP でググれ
609 :
2011新作展示 :2011/12/21(水) 03:42:08.03 ID:1rxM0kaK
610 :
nobodyさん :2011/12/21(水) 04:42:12.37 ID:y0QY6y1k
Windowsでis_dirやopendirでエラーの戻り値返らずにPHP本体が落ちるパス見つけた。 ファイルアクセス関係は、DOSの出力をとっていくのが確実だな。 速度は落ちるだろうが。
DOS??
>>612 こんなの。dir/Aでファイル一覧をとってくる。PHPのopendirで落ちる所も回避出来た。
date_default_timezone_set('Asia/Tokyo');
dir_search( "C:" );return;
function dir_search( $path ) {
$hd = opendirEX( $path ); if(!$hd) return;
do {
$file = readdirEX($hd); if(!$file) break;
$fn = "$path/" . $file['name'];
if (!$file['size']) { dir_search($fn); continue; }//sizeがfalseならディレクトリ
echo "$fn\n"; }while (1); }
function readdirEX( &$hd ) {
$n = $hd['pos'];
if($n >= count($hd['list'])) return false;
$hd['pos']++;
return $hd['list'][$n]; }
function closedirEX( &$hd ) { unset($hd); }
function opendirEX( $path ) {
exec("dir/A \"$path\"", $arr);
if(count($arr)<6) return false;
unset($item); $item['pos']=0; $item['list']=array();
foreach($arr as &$gyo) {
$cnt = preg_match('@([0-9]{4})/([0-9]+)/([0-9]+) +([0-9]+):([0-9]+) +([^ \n]+) +(.+)@',$gyo, $t);
if( $cnt==0 || $t[7]==='.' || $t[7]==='..' ) continue;
$item['list'] []= array(
'name' => $t[7],
'size' => $t[6]=="<DIR>" ? NULL : intval(str_replace(",", "", $t[6] )),
'time' => mktime($t[4], $t[5], 0, $t[2], $t[3], $t[1] ));}
return $item; }
>>578 PHP作ってるやつが真面目にやればすぐ終わる。 W付きのAPI使えばいいだけ。
つまり、やつらが必要に感じないので進まないw
615 :
nobodyさん :2011/12/21(水) 11:52:46.07 ID:g7BGW0l8
まじめに質問してるのに、くだらない回答するってなんなの? スレタイと違うじゃん
>>615 スレタイにそんなことは書いてありません。
617 :
nobodyさん :2011/12/21(水) 16:25:08.36 ID:k71K4aR8
すいません、OBJ思考のポリモーフィズムがよくわかせん。 メソッドA メソッドB メソッドC とか、複数メソッドつくらず メソッドAのみで、メソッドBもCもDでもやろうとしていたことを 処理できちゃうようにしようみたいな感じですか?
>>617 ちがいます。 全部書く必要があります。
ポリモーフィズムとは ↓
DVDとかMP3プレイヤとかニコニコ動画とかの再生ボタンや静止ボタンって おんなじマークがついてて おんなじように動くけど 内部の処理はそれぞれ違うじゃん つまりそーゆーことだろ
つまり??そーゆーこと???
「ボタン」という抽象的なモノには、ボタン表面の「記号」(文字だったり、図形や画像だったり)があって さらに「押す」といった、ボタン共通の動作がある。 しかし個々のボタンにはそれぞれ異なる記号が表記されており、押した時にはそれぞれ異なる動作をする。 ってこと?
CDプレイヤーでもブルーレイ再生機でもDVD再生機でも、(|>)みたいなボタンを押せば、ともかく再生をするってこと (|>)再生 ( || )一時停止 (□)停止 (○)記録 という共通インターフェイスは、そのままインターフェイスと呼ばれる。 この場合だと、再生機器インターフェイスを実装した機械の場合は、再生ボタンもあるはずだし、停止ボタンもあるはずで、 それらは同じ記号がついているはずとみなして操作できる。 さらには、それらはその機器に応じた動作をしてくれることを期待できる。 ということ。
>>622 それはそれで、あってる。
なんのボタンかわからないけど、押すことが出来るし、何らかの動作をすることを期待できる。(何もしないという動作を含め)
ブルーレイ再生機とDVD再生機では、再生ボタンはそれぞれの装置に付いているので ボタンの記号は同じでも、同一のボタンではなく別々のボタンということになる。 ポリモーフィズムの説明としては不適当である。
627 :
nobodyさん :2011/12/22(木) 10:21:06.85 ID:KERJi57s
$a、$b、$c・・・$zまでが全て同じ値かを調べるにはどうしたらよいでしょうか ループで$a==$b、$a==$c、$a==$ 一行のif文で判定するのは無理でしょうか? if($a==$b==$c==$d・・)で通ると思っていたのですが、ダメでした。 $a==$bがtrue|falseになって(true|false)==$cになってダメなのか。
if($a === $a & $b &・・・)
($a === $b && $a === $c && ・・・
>>628 $aと$aの比較結果(true)と $b , $c の値を ビット積とってどーすんねん
>>626 マルチディスクのプレイヤーの再生ボタンが
ブルーレイを見てる時は ブルーレイ上の再生ボタンとして機能するし
CDを聞くときは CDプレイヤーの再生ボタンとして機能するし
それらをもう一度おすと 停止ボタンとして機能するし
ようは、プレイヤーに
プルーレイヤー用、CD聞くとき用、DVD見るとき用と
3つも4つも再生ボタンや停止ボタンをゴテゴテつけるのではなく
ボタンで動く詳細な動作は違うけど、やろうとしてることは共通してるんだから
一個のボタンでええやん
みたいな感じとおもっていいのかな。
「ユーザー登録時に平文パスをメールで送るのは暗号化してない証拠を知らせてるのと同じだからNG」というのを見ました。 では暗号化する前に平文パスをメールで送り、暗号化してDBに入れるのはセキュリティ的にOKなのでしょうか? そこまでして平文パスをメールで送る理由は無いのですが、忘れるユーザーも多いので載せたほうが親切かなと思いました。 それでもユーザーがパスワードを忘れた場合、再発行という形になりますが。
そりゃダメだろ。 サイト側でもパスワードの調べ方が存在しないのが良い。
パスワードを忘れた場合、登録してあるメールアドレスにパスワード変更用URLを送信して変更して貰う。
635 :
633 :2011/12/22(木) 16:25:26.57 ID:???
ああ、path じゃなくて pass ね
1976年以前には、暗号と言えば共通鍵暗号であった。 これは、暗号化と復号に同じ共通の鍵を使うものである。 共通鍵暗号には、鍵の配送に問題があった。 共通鍵暗号を用いた通信のおおまかな流れは次のようになる。 受信者は、あらかじめ送信者に対して密かに共通鍵 C を渡しておく。 送信者は C を使ってメッセージを暗号化し、受信者に向かって送信する。 受信者は、C を使って暗号文を復号し、メッセージを読む。 上の過程において、傍受者が共通鍵Cを傍受してしまっていた場合、 この共通鍵を用いた送信者、受信者間の暗号通信は意味を持たないことになる。 すなわち、送信者はCを用いて、メッセージを暗号化するが、 このメッセージを傍受した傍受者は、入手していたCによって暗号文を復号し、メッセージを読むことができる。 これは、共通鍵暗号方式が、暗号化と復号に共通の鍵を用いることにより発生してくる問題である。 これに対して公開鍵暗号は、鍵の配送が容易になる。 つまり :受信者は自分の公開鍵(暗号化のための鍵)P を全世界に公開する。 受信者に対して暗号通信をしたい者(送信者)は、公開鍵 P を使ってメッセージを暗号化してから送信する。 受信者は、公開鍵 P と対になる秘密鍵S を密かに持っている。 この S を使って受信内容を復号し、送信者からのメッセージを読む。 傍受者は、公開鍵 P は知っているが、秘密鍵 S は受信者だけが知っている情報であるので分からない。 P から S を割り出すことは(計算時間的に)極めて難しい。そのため、暗号文を復号することはおよそできない。 暗号化のための鍵と、復号のための鍵を別の非対称のものにすることによって、鍵の配送の問題を解決したのである。 公開鍵暗号 - Wikipedia
637 :
631 :2011/12/22(木) 16:33:27.08 ID:???
>>632 >>それでもユーザーがパスワードを忘れた場合、再発行という形になりますが。
間違えました、再設定です。
ハッシュ化するので、サイト側でも調べられないようにしています。
>>633 ユーザー登録時にメールなどで、「あなたのパスワードはaiueo123です」と送る場合に、
平文パスで保存しているんじゃないかと思われるかもしれないけど、送るにはどうすればいいかな?という感じです。
>>634 なるほど、よくある「パスワードを忘れた場合」は運営のやり取りが面倒ですが、それなら自動でできますね。
いろいろ検索してみた所、平文パスをメールで送る自体嫌悪する方が多いみたいですね。
ありがとうございました。
復号する必要はないし、暗号化した文字を送る必要すらない、 当然鍵の種類を教えることもない。
>>629 > if($a === $a & $b &・・・)
if($a === ($a & $b &・・・))
というネタをやりたかったのかな、と。
>>637 メールは暗号化通信されないからね。
はがきにパスワード書いて送ってると思えばいいよ。誰かがそれを見るかもしれないし、運よく見られずに済むかもしれない。
643 :
nobodyさん :2011/12/22(木) 19:24:05.87 ID:3/vjFxSm
>>643 かなり素人地味た案件だな
つか必要スキルにPHPの文字すらないぞ
645 :
nobodyさん :2011/12/22(木) 19:41:20.54 ID:3/vjFxSm
PHPを触れる方で実務経験5年以上って書いてあるよ。 おれほんとweb系に入らなければよかった。 でもパチと小売りとITと外食だとITしか選べなかったし。 まあ東京経済大学だからFランだからしょうがないけど ITなんかやるもんじゃねえよ。 できないとなんでできないのと言われ、わからないといえず、 自分で壊したくせに翌日なにもしていないのに 壊れたとかいう馬鹿ばかり
質問の意味がよく分かりません。
>>645 よくわからないけど、その案件を出してるとこに勤めてる人でおk?
>>645 ごく普通の求人だと思うけど何が不満なのかな?
見ず知らずの個人にこれ以上の物を求めても仕方ないだろ。
報酬だって「予算と納期についてはダミーです」って書いてあるんだし案件次第だろ。
だめなのはPHPじゃなくてFラン人材じゃねぇかw
>>648 >報酬だって「予算と納期についてはダミーです」って書いてあるんだし案件次第だろ。
穿った見方をすれば、10万の予算から、さらに値切ろうとする様に見える。
もしくは「10万でハードとソフトの両方揃えて。んでお釣はキミの取り分ね。」とか。
>>623 違う。それはただのオブジェクト指向の説明
>>651 オブジェクト指向のどの性質の説明なの?
JavaのJAXBをPHPでやろうとしたら、どんな方法がありますか?
せめてどういうものかの説明をしてほしいなぁ。
serializeとか?
Javaと互換はないが、シリアライズ関数はある。
実務経験なしでPHPの案件とってみたことありますが何か? わりと普通にできますた。 納期とか料金計算は出来なかったからデスマな上に格安だったけどな。 デザイナーあがりが未経験で業務としてプログラムやるもんじゃないわ。
>>655-656 XML schema 読み込んで必要なクラスを生成するのは自力でやるしかないんですかね。
Javaみたいにツールでさくっと作れると楽なんですが。
どうもでした。
クラスじゃなくてオブジェクトの保存じゃないの?
>>658 どんな機能がほしいのかを書かないと、望む回答が来ないということを実感できましたかね。
普通の人ならそれができて楽なんですが、そうじゃないと難しくて困ります。
無知は黙ってろよww
>>661 ほんとだよな。
そもそもPHPでそれをやりたいってのが視野狭窄だしな。
663 :
nobodyさん :2011/12/23(金) 10:58:00.07 ID:mgrgzcyP
質問というか相談なんですけど WEB、ソフト開発系の仕事って、ROMソフトとか紙広告と違って アップデートという手段があるゆえに 「これは、アップデートの時なおせばいいだろう」 「これ以上のデバッグは、バグ報告があったときでいいだろう」 と、多くの 妥協、後回しをしてしまい、製作してて自己嫌悪になる時があります。 そして、ここで完成という定義が曖昧故に、細切れにクオリティをあげていって いつまでたっても終わらない感があるし達成感もじわじわ来る感じです。 実際 youtube や Facebook にでさえ永遠にここで完成という時はこないでしょう。 それゆえに求められる、自分が納得出来るクオリティがよく分からなくなって どうしたら、自分も顧客も満足できるものが作れるのかを見失ってきます。 これは、顧客側の立場になっても出てて、例えばゲーム機や、スマホを購入して ソフトウェア的に納得のいくクオリティではなかったとしても、どこか "次回アップデートに期待" "今は使いものにならないけど将来的によくなるだろう" という、満足感の中途半端、妥協が起こってしまいます。 この、動的な製品であるゆえの 妥協と品質の調整を みなさんはどの様にしているのでしょうか?
>>663 これ以上付け加える物が無くなった時でなく、これ以上取り去る物が無くなった時が完成だ - アントワーヌ・ド・サン=テグジュペリ
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.
人生全てのことがそーだよ。時間は有限です。 ご自分のお好きなように。 仕事なら会社の方針通りに。
進化を止める事は死を意味する 故に完成はしない 神は永遠に幾何学する
667 :
nobodyさん :2011/12/23(金) 14:35:31.06 ID:BdR4Wp0Z
iPhoneとかスマートフォンのHPは専用に作らないと駄目なの? PC版のPHPとかのHPは表示できないの?
できるよ。でもまず検証機用意したほうがいいね。まあスレチだが
表示できるが あいつらマウスオーバーの概念がないからな
>>663 ・リリース時期が決まってる場合
その時期までに盛り込める機能を決める。それらが正しく動作するようにする。
・リリース時期が決まっていない場合
どんな機能を盛り込むかを決める。それらが正しく動作するようにする。
○バグが残っていたけど、アップデートが簡単な時代で助かった
×アップデートすぐできるから、レアパターンのテストはほどほどでいいか
671 :
nobodyさん :2011/12/23(金) 17:19:25.11 ID:mgrgzcyP
回答くれた方々有難うございます。
>>670 だろう制作 じゃなく
かもしれない制作 をしていくことが大切ですね。
バグの内容にもよるけどね。
673 :
nobodyさん :2011/12/23(金) 20:07:52.81 ID:2gGcHf86
1つのページに4つの検索フォームがあって <form action="a.php" method="GET"> A検索<input type="text" name="a" value=""> <input type="submit" value="検索"> </form> <form action="b.php" method="GET"> B検索<input type="text" name="i" value=""> <input type="submit" value="検索""> </form> <form action="c.php" method="GET"> C検索<input type="text" name="u" value=""> <input type="submit" value="検索""> </form> <form action="d.php" method="GET"> D検索<input type="text" name="e" value=""> <input type="submit" value="検索""> </form> どの検索押しても 一番上のform actionのa.phpのページに飛んでしまいます どうすればいいのでしょうか?
全部a.phpで処理すればおk
再現不可能
DOMがずれてんじゃないだろうか
<?php ?> はわかるけど <? ?> これって何ですか?
html中に、phpを呼び出し(ヘッダーやフッター)ページを作りました。 ローカルには、XAMPPをインストールし、ちゃんと表示されています。 サーバーにアップしたところ、html中に書いたphpは表示されず 〇〇.phpを開くとポップアップが開き、ダウンロードするようになってしまいます。 .htaccessに、AddType application/x-httpd-php .php .php4 .php3 .phtml .html .htm と書き込んでみても同じ症状です。(サーバーはphp可だけど、phpが動いてない感じ) 一体、どこを見直せばいいんでしょうか? もうやだーローカルだけでも死にそうだったのに・・・
681 :
nobodyさん :2011/12/24(土) 00:05:24.34 ID:/u/HCfJ5
<?php ?> はわかるけど <? ?> これって何ですか?
683 :
nobodyさん :2011/12/24(土) 00:16:13.20 ID:+Ie7FHwG
>>680 てんぱってた、すまん679です。宜しくお願いします
サーバーの仕様 cpanel
Apacheバージョン / Apache version2.2.21
PHP version/5.3.8
共用サーバ? だったら余計なことせずに置くだけで動くんじゃないの もしくはPHPを置いていいディレクトリが決められてるとか .htaccessを一旦削除して phpinfo()だけindex.phpとかに書いて見てみることをおすすめ
687 :
nobodyさん :2011/12/24(土) 00:31:51.43 ID:+Ie7FHwG
679です
>>686 回答ありがとうございます。
共用サーバーです。私も置くだけで・・・と思ったので
試しにhtmlとphpファイルを置いてみたらプログラム表示されず
phpファイルはDLになるといった具合でした。仕方なく.htaccess見直しつつ現在に至る・・・と。
phpinfo試してみます!
あれが705になってなかったとかだろ
んでどーだったんだphpinfo()は
690 :
nobodyさん :2011/12/24(土) 01:02:18.60 ID:sEYOj4i4
セッションファイルに値保存しまくってんですが、 (600バイトから1000バイト位) これってどう思いますか? 負荷かかりますかね。
691 :
nobodyさん :2011/12/24(土) 01:58:19.66 ID:+Ie7FHwG
679です phpinfo()、htmlファイルとphpファイルの両方に書いてみましたが・・・ 相変わらずhtmlには何も表示されず、phpはダウンロードページになってしまいます。 パーミッションも755ですがダメでした。うーん
>>691 ブラウザのキャッシュを消すか再起動してみれ
>>691 ブラウザのキャッシュを消すか再起動してみれ
695 :
nobodyさん :2011/12/24(土) 02:16:19.77 ID:+Ie7FHwG
>>694 ありがとう!やってみたけどダメでした。
サーバーに問い合わせした方がいいのかな?
サーバ業者どこよ 晒したほうが早いぞ マニュアルになんか書いてあるんじゃねーの? PHP使いたければcgi-binにphp.ini置いてねとか ファイルは○○がエイリアスになってるからそこに設置してねとか
>>691 一応、確認するけどPHPが使えるサーバで
phpinfo() は、<?php phpinfo(); って書いてるよね?
698 :
nobodyさん :2011/12/24(土) 03:13:29.94 ID:+Ie7FHwG
>>696 アクアです
>>679 <?php phpinfo();?>コピペしてきたので合ってると思うっす
>>698 そのサーバってここか?よくある質問に似たようなのがあったぞ
ttp://aquasrv.com/faq.php >phpを設置しましたが、真っ白になります。
>php内部のエラーの場合、ウェブサイト上に表示されるようになっております。
>よって、suEXEC関連のエラーが考えられますので、エラーログをご参照ください。
>>698 ,699
つまり、1行目に #!/usr/bin/php か #!/usr/bin/php-cgi を書く必要があるんじゃね?
701 :
nobodyさん :2011/12/24(土) 03:58:56.26 ID:+Ie7FHwG
>>699 >>700 やっときたー!!ありがとうございます。
#!/usr/bin/php-cgiで表示できるようになりました。
夜遅くまですまんかった・・・自分では解決できなかったので、本当に助かりました。
自分では解決できないったってサーバーの公式サイトも確認してないんじゃ話しにならんな。
>>690 どう思いますかと聞かれても何を入れてるのか言ってないし
問題がでてないのなら問題ないとしか答えようがないさ
704 :
nobodyさん :2011/12/24(土) 09:40:20.39 ID:bpXnWUyZ
関数ってある程度覚えてます? つづりとか、引数に何入れるのかとか 全然覚えれなくて、 いちいち関数辞書やマニュアルを 参照してしまいます。
>>704 そんなくだらんこと気にしてる暇があったら勉強すれ
>>704 使っていれば覚える。
別にまる暗記する必要はない。必要なときに必要なのだけ覚えればいい。
あとは、自動補完機能があるエディタ使うとか。
こんなのあったなってレベルでいいから関数は一応網羅しておいたほうがいいな なんとなく期待通りに動かせて覚えた気になってるのが一番マズイ 10行書いて実現してたものが1行で済む事が多々ある
名前や引数よりはどんな機能の関数があったか覚えておくほうがいいな
>>707 phptかでも
ソース短い方が良いの?
仕事でやってる場合はそうなるのかな。
行数多いほうがいっぱいお金もらえるよ^^
712 :
nobodyさん :2011/12/24(土) 21:33:18.97 ID:uAYQVJ+H
質問です
<?php header('Location: mailto:
[email protected] '); ?>
ってやるとメーラーが起動するのですが、ブラウザの画面は真っ白になっています
(viewの設定などやってないので、これだけだと当然ですが)
メーラを起動させ、かつ、任意の画面を表示させたいと思っています
どうしたらいいでしょうか
<?php
header('Location: mailto:
[email protected] ');
header('Location:
http://google.com ');
?>
試しに、上記のようにしてみましたが、今度はメーラが立ち上がりませんでした
header('Location: mailto:
[email protected] ');の後にviewの読み込みや表示をするとなると、
該当ページでリロードする度にメーラが立ち上がりそうでそれは避けたいのですが
他に方法あるでしょうか
シリアライズって、テキストで記録してるから効率わるいよな。 速度も容量も。
なにが言いたいのかわからん 誰か翻訳してくれ
キョウビそもそもメーラーを開かせるのがナンセンス ウェブメールだけでメーラーの設定すらしてない人はいっぱいいるぞ
バイナリシリアライズつかってみた。速度的には標準と大差ない。あえてつかうメリットはなさげ。
php-msgpack
http://code.google.com/p/php-msgpack/ <?php
$serializefnc = array( array( "msgpack_pack", "msgpack_unpack"), array( "serialize", "unserialize") );
$data = array( "url"=>"
http://www.google.co.jp/ ", "msg"=>"Google検索エンジン", "num"=>10 );
$kaisu = 500000;
foreach ( $serializefnc as $fnc ) {
echo "$fnc[0] ";
$t = microtime(true);
for($n=0; $n<$kaisu; $n++) $pack = $fnc[0]($data);
$t=microtime(true) - $t; printf("pack:%.3fsec. ",$t);
$t = microtime(true);
for($n=0; $n<$kaisu; $n++) $unpack = $fnc[1]($pack);
$t=microtime(true) - $t; printf("pack:%.3fsec.\n",$t);
if($data != $unpack) echo "decode err\n";
}
コピーだけの関数と比較しても大差でない。もとからserialize、unserializeが速いようだ。
<?php
$kaisu = 1000000;
$serializefnc = array(
array( "copyfnc", "copyfnc"),
array( "msgpack_pack", "msgpack_unpack"),
array( "serialize", "unserialize") );
$data = array( "url"=>"
http://www.google.co.jp/ ", "msg"=>"Google検索エンジン", "num"=>10 );
foreach ( $serializefnc as $fnc ) {
echo "$fnc[0] ";
$t = microtime(true);
for($n=0; $n<$kaisu; $n++) $pack = $fnc[0]($data);
$t=microtime(true) - $t; printf("pack:%.3fsec. ",$t);
$t = microtime(true);
for($n=0; $n<$kaisu; $n++) $unpack = $fnc[1]($pack);
$t=microtime(true) - $t; printf("unpack:%.3fsec.\n",$t);
if($data != $unpack) echo "decode err\n";
}
function copyfnc(&$data) {return $data;}
?>
なんで参照にしてるの?
>>720 コピーが2度発生するだろ。引数は参照でもコピーできる。
<?php
$b = "bbb";
$a = copyfnc0($b);
echo "a=$a b=$b\n";
$a = copyfnc1($b);
echo "a=$a b=$b\n";
$a = "aaa";
echo "a=$a b=$b\n";
return;
function copyfnc0($x) { return $x; }
function copyfnc1(&$x) { return $x; }
?>
ものすごく些細なことだけど文字列はシングルクォートで囲ったほうが効率的にいいんじゃね ダブルクォートだと変数展開するような余計な動作が加わるわけで ベンチマークしたことないから差が出るかわからんけど だだし'hoge' . "\n"とかはソース的にアレなので"hoge\n"でいいと思う
>>714 何を言わんとしているのかおれにもわからんけどserializeはなんらかの事情で文字列としてデータを扱いたい時に使うものだろ
例えば、ウェブサイトのトップページは1日1回の更新だからアクセスの都度DBに問い合わせるのは効率が悪い
なのでDBから取得したデータは暫くファイルにキャッシュしておこうとか、そういう場面
結果として相当効率が良い
つまり使い方次第
現在のWebアプリケーションシステムではデータ通信にはXMLベースのデータを採用することが多い。
時代の趨勢としてXMLをデータ通信の基本フォーマットとして採用する流れにある。
しかしながら、バイナリフォーマットにもまた利点がある。
たとえばXMLベースのデータとバイナリフォーマットベースのデータを比較した場合、数値情報の表現に差が表れる。
XMLベースフォーマットでは数値を文字列として表現するが、バイナリフォーマットであればビットサイズのまま表現できる。
XMLベースではデータのみならずその構造も表現するため、データ以上にサイズが大きくなる傾向にある。
つまり、総合的に見てバイナリフォーマットベースの方が通信に必要になるデータ量を抑えることができる可能性がある。
すべての問題を解決できるわけではないが、JSONをベースにしてさらにバイナリデータを組み込み、
データ量の削除を狙うという発想のもと取り組まれたプロジェクトがBinary JSON、すなわち"BISON"だ。
JavaScriptやPHPを使って同コンセプトが実装できるかどうかというチャレンジという意味合いも持っている。
【レポート】バイナリフォーマット"BISON" - 概念実証が発表に | エンタープライズ | マイナビニュース
http://news.mynavi.jp/articles/2007/02/20/bison/index.html
>>722 いま思いつくかぎりの書き方
echo "hoge\n"; // 普通
$br = "\n";
echo 'hoge' . $br; // 変数に入れちゃう
echo "hoge${br}"; // 変数に入れる意味ないな
echo 'hoge' . PHP_EOL; // こんなのもある
echo 'hoge
'; // ちゃんと改行されるよ
>>714 効率の問題じゃない受け渡しの容易さの問題
727 :
nobodyさん :2011/12/25(日) 12:01:38.32 ID:c11fbtEa
prepareを使ってsqlを実行する場合は sqlに渡す文字列が$_GETと$_POSTの場合 サニタイズする必要はありますか?
728 :
nobodyさん :2011/12/25(日) 12:15:43.15 ID:MyTDaANd
有ります
WebアプリってぶっさいくなUIしか使えないんでしょうか? 初心者ですがよくわからなくて。
730 :
nobodyさん :2011/12/25(日) 12:23:08.31 ID:c11fbtEa
prepareに文字列を渡せばprepareで文字列を処理してくれると思うんですが 何故サニタイズが必要なんですか?
GET POSTはユーザ側ブラウザで実行されるから
732 :
nobodyさん :2011/12/25(日) 12:37:21.89 ID:c11fbtEa
すいませんやっぱり質問取り消します
サニタイズとか久しぶりに聞いたな
エスケープって意味ならプレースホルダでおk サニタイズって言うとアプリにもよるだろうし範囲が明確じゃないからなんとも言えない
736 :
nobodyさん :2011/12/25(日) 14:35:48.63 ID:KXLlum02
クリスマスに一緒に過ごす女がいないのは オレがphpを極めていないからなんですか?
737 :
nobodyさん :2011/12/25(日) 15:59:26.20 ID:z/wLYyV7
いいえ、イケメンでなくなおかつお金がないからです。 さあ、これをphpで表してみろ
738 :
nobodyさん :2011/12/25(日) 16:09:07.06 ID:KXLlum02
<?php print "いいえ、イケメンでなくなおかつお金がないからです。"; ?>
>>721 serializeは二度発生せんのか?
バージョンよっては勝手に参照に変更してたりするし。 しかし明示的に参照の引数にしたって良いだろ。 serializeの定義は値渡しだろうけど、これも配列やクラスなどくると参照かもしれない。
>>741 うーん?
$foo = "aaa";
$bar = $foo;
このとき、$barと$fooが同じ場所を参照しないバージョンの例をひとつ挙げてもらえるか?
>>741 じゃないけど、それ完全にコピーじゃん
参照するわけないし
745 :
nobodyさん :2011/12/25(日) 22:14:21.63 ID:S0RLrYDm
質問です 親クラスを定義するとき、abstractで定義された抽象メソッドにfinalも定義してしまうと 子クラスで上書きすることもできず、parentで参照することもできず、 詰んでしまうという理解でいいのでしょうか?
>>745 なぜ聞く前に試さない
$ php -r "abstract class A { final abstract public function x(); }"
PHP Fatal error: Cannot use the final modifier on an abstract class member in Command line code on line 1
747 :
nobodyさん :2011/12/25(日) 22:43:44.11 ID:S0RLrYDm
>>745 すみません、自分では試してfinalとabstractを
いっしょに定義することは詰んでしまうので無意味なことのように思ったのですが、
もしかすると自分には分からなかっただけで
何か使い道があるのかと思って質問させていただきました
748 :
nobodyさん :2011/12/25(日) 22:44:14.67 ID:S0RLrYDm
>>747 矛盾が起きるからエラーが出る訳で、深く考えすぎだ
abstract=お前実装しろよ
final=お前いじるなよ
parentで参照できないのはprivate
751 :
nobodyさん :2011/12/26(月) 00:23:55.30 ID:D998BOvR
大規模システムに向くFWは何ですか?
753 :
nobodyさん :2011/12/26(月) 00:24:24.71 ID:quzjxib5
配列$arrに値があるか調べる方法は何ですか?
755 :
nobodyさん :2011/12/26(月) 01:06:15.77 ID:quzjxib5
いいってことよ
if使うんだろから if($arr) でもいいんじゃね
758 :
nobodyさん :2011/12/26(月) 01:54:00.55 ID:quzjxib5
Javascript+phpのAjaxで作る画像うpローターが、 ver1.00が2011年11月25日で、ver1.06が12月26日で 完成に近づいてます。製作者だけが使える画像全消去のボタンが バルスです。
>>759 みたいなNG報告って内容が気になってしょうがないのかね。
762 :
nobodyさん :2011/12/26(月) 08:54:35.32 ID:D998BOvR
>>752 Yii と Zend どっちがベター?
フレームワークとか使うなよ。 ソフトウェアのやつは速度低下の原因。 標準のバイナリ関数を直に呼ぶのが最速。 PECLとかはは移植性に乏しいがフレームワークのソフト使うましだな。
時間短縮の初心者むけだ。資源の少ないときにC++よりアセンブラやC言語を使うのと同じ。根本命令を直に使うのが最速。 ソフトウェアフレームワーク - Wikipedia システム構築に必須な標準的かつ低レベルの詳細を設計者やプログラマが検討する時間を省き、 要求仕様の実現に多くの時間を割けるようにし、ソフトウェア開発を容易にすることを目指している。 批判としては、フレームワークはコードを肥大化させるという主張もある。 フレームワークの使い方を学ぶ時間がかかるという主張もある。 ただし一度フレームワークを学べば、同じフレームワークであれば、次のプロジェクトからはより素早く完璧な応用が可能となる。 フレームワークは、特定のフレームワーク・ベンダーや、特定のバージョンに依存(ロックイン)されるリスクがあるとの主張もある。 いずれにしても、適切なフレームワークの選定は特に重要である。 開発途中で、選択したフレームワークが開発要件を満たさないと判明した場合や、そのフレームワークの開発・提供が打ち切られた場合などは、 開発途中で別のフレームワークに移行して(場合によっては基本設計から)再開発する必要が発生するためである。
766 :
nobodyさん :2011/12/26(月) 12:09:34.32 ID:e0HWMKFl
データ1,データ2,データ3 とカンマをデリミタとして 分割してるんですが、データに 1,000円等、カンマ入り文字がはいっていると 挙動がおかしくなります。 データのカンマをエスケープする方法って 何かないでしょうか
1,000は格納時1000にする。
768 :
nobodyさん :2011/12/26(月) 12:28:04.00 ID:e0HWMKFl
>>767 回答ありがとうございます。
カンマ入りのデータが必ずしも金額というわけではないので
"9,11のテロ" とかでも誤動作しちゃうんです。
>>764 それら全部を読み込むと思ってるわけではないんでしょ
>>768 判断できる何かがあれば判断を行い、なければどうしようもない
3桁区切りのルールに沿っていて、かつ前か後ろに単位記号があるやつ、とかね
ああ、言いたいことがわかった。 ちゃんとCSVを読めばその誤動作は起きないし、カンマをエスケープする必要はない
今それができないなら、ちゃんとしたCSVを作成するようにするか、TSVに逃げるかがいいかと。
タブ
0x00〜0x20くらいで出現しない文字を区切りに使えよ。
似たような問題で、SQLiteは直にバイナリの値を格納できないの? エスケープ、エンコードの負荷が掛かるので直に入れたい。 連想記憶の変わりにデータベースを使おうとしたんだけど。メモリ食うケースで。
778 :
nobodyさん :2011/12/26(月) 22:15:17.16 ID:D998BOvR
>>764 2.6とか軽いじゃん
.NETなんて何GBあると思ってんだ?
Yiiはイィー
開発を複数人でやるならフレームワークは使うべき 他人が書いた手続き型のソースなんてデバッグに時間がかかってしょうがない 誰が書いてもある程度一定の形で書くことができることにメリットがある これはセキュリティの面でも重要 開発が一人なら軽い自分用フレームワークを自分で書くといい 実際ZendやCakeに用意された豊富な機能は使い切れないから必要最低限を自分で実装するのがおすすめ デカイオブジェクトをゴロゴロ転がして無駄にメモリを食うことも無くなる
PHP自体がすでに豊富にそろってるフレームワークだろ。 制作に何日もかかる部分は、完成品のソースを使うのがいいけど、 フレームワークを使うのが前提なのは無駄。
山本さん宣伝乙
フレームワークは関数の使い方のサンプルして使えるかもな。
>サンプルして使えるかもな。 ?
フレームワークのコードを参考にしてプログラムする。
788 :
nobodyさん :2011/12/27(火) 12:25:28.24 ID:AB1LeUCm
phpマニュアルを読むと The foreach construct〜って載ってましたforeachってコンストラクタ なんですか?関数と思ってました。
url張れよバカ
790 :
nobodyさん :2011/12/27(火) 12:32:13.90 ID:AB1LeUCm
タダの英文じゃねーか。 foreach構文
>>788 関数じゃないよ。無論コンストラクタでもないけど。
ってかおまいら平日の昼間に2chかよ、オレもだけどwww
無職だから
神聖ニートは冬厨を名のるなんてアウトオブ眼中なんだなw
797 :
nobodyさん :2011/12/27(火) 13:01:15.72 ID:AB1LeUCm
NGっと
800 :
nobodyさん :2011/12/27(火) 18:05:17.01 ID:taC6CWfJ
PHPがfastcgiで動いているかモジュールで動いているかで処理を振り分けたいのですが取得する方法ありませんか?
手動で判別しろ。どっかに書いてあったり設定できるだろ。
802 :
nobodyさん :2011/12/27(火) 18:24:18.63 ID:taC6CWfJ
手動でやるならここで質問しねえよw
Server API
php_sapi_name()
806 :
nobodyさん :2011/12/27(火) 19:30:00.66 ID:Yl0eO9gq
接続元のPCのコンピュータ名を取得するのは、 どうすればいいのでしょう
不特定な接続元から取りたいなら教えません
連想配列を出力しようとして <?php echo $foo["bar"]; ?> としたらCannot use object of type stdClass as array in ** というエラーが出て、 ググったとおり <?php echo $foo->bar; ?> とすると上手く表示されます。 この2つに違いはないと思ってたのですが、内部で何か処理が異なるのでしょうか?
809 :
808 :2011/12/27(火) 20:42:10.70 ID:V+bLwFWD
すみません、下げてしまいました。
811 :
nobodyさん :2011/12/27(火) 21:01:19.72 ID:V+bLwFWD
>>810 出力しようとする元データがオブジェクトとして格納されているということですね。
もうちょっと勉強してみます。
<?php
while(list($key,$value) = each($foo)) {
echo $key."->".$value."<br>\n";
}
?>
で問題無く全部出力されていたので、
配列として出せば良いものだと思ってました。
>>811 もう少し平たく言えば、$fooは連想配列じゃないってこと
さらに言うと配列とオブジェクトは別物
オブジェクトを配列にキャストすれば$foo["bar"]でアクセスできるけど、罠がある
さて年末だし今年こそはフレームワーク学習するか Cakeはどん詰まり感があるし LithiumはMongoDBが謎だし やっぱSymfonyしかないか
818 :
nobodyさん :2011/12/28(水) 03:04:21.64 ID:SRE3gfoW
アクセスカウンターの質問。 アクセスする度にカウントするのが一番簡単につくれますが、 実用的なカウンターってIPで一日1回カウントとかの仕様なのでしょうか?
>>818 アクセスカウンターの回答。
それは使う人の要件次第。
アクセスカウンターw すっげ懐かしい響きw
>>818 今はそんなことせずに、せいぜい連続アクセスをはじくぐらいにして、ページビューという名前にするかも。
まじめに分析したいならログを保持しておいて、そこから改めて。
リロードするたびに100ぐらい増えるようにしておくと流行ってるサイトのように見えて実用的
おまえ頭いいな
100で固定するとすぐバレるから、 アクセスする都度、ランダムに1〜50加算するカウンタを付けたことがあるけど やっぱりすぐバレたw
バレないように1ずつ増えるカウンタ作ればいいんじゃね?
おまえ頭いいな
827 :
nobodyさん :2011/12/28(水) 09:02:21.05 ID:SRE3gfoW
なるほど、ならクッキーを使って、連続アクセスを防いで、 「ページビュー数」って名前にしてしまえばいいのですね。 これで、見かけ上流行ってるwebサイトに見えるってことですか。 クッキーを有効にしてないと連続アクセスは防げませんが。
828 :
nobodyさん :2011/12/28(水) 09:05:23.88 ID:SRE3gfoW
あ、クッキーを有効の場合にのみカウントすれば解決ですね。 これでページビュー数のphpプログラムが完成。
一回しか訪問しない人はカウントしないということですね。
で、PHP関係なくね
それって、ページビュー数じゃなくユニークユーザー数じゃね?
832 :
nobodyさん :2011/12/28(水) 10:23:14.32 ID:xSVq2vEm
知恵袋の常連PHP回答者って何で揃いも揃って上から目線な奴ばっかりなんですか?
スレ違いの質問に答えるなよ。
835 :
nobodyさん :2011/12/28(水) 10:58:37.15 ID:cHFSG35P
質問させてください。PHP5.3を使っています exec();を使ってhoge.phpを実行していて、hoge.phpの中で require "objClass.class.php"; $obj = new objClass(); $obj->doIt(); という処理をしてるのですが理解できない挙動をします objClass.class.phpの中で以下のようになっているのですが class objClass{ public $this->var = 0; function doIt(){ if($this->_var ==0){ $this->_var ++; } } } $this->_varの値が何度execを実行しても1より増えません なぜでしょうか? exec();を利用して実行されるクラスではコンストラクタや変数の初期化が毎回行われないということですか? if()の条件式を見る限りでは、前回実行された$this->_varが保持されてしまってるのかなとしか解釈できないですが なぜそうなるのか理解できないです
>>835 おまえな・・・・
class A{
public $var = 0;
}
$a = new A();
$a->var++;
var_dump($a->var);
>>836 0の時しかインクリメントしないロジックになっているのもそうだけど
そもそもexecを複数回叩いたら別プロセスでしょ?
どこから突っ込めばいいやら。 1、exec();を利用して実行されるクラス? 2、コンストラクタ?どこ? 3、public $this->var = 0; ? 4, $this->_var ?
>>835 > if($this -> _var == 0){
> $this -> _var++;
> }
> 1より増えません
…コードを見直したり組み直したりしないのか
スレでやたらとexecを使うのを見かけるが、そんなに使うもの?
何かで使った覚えがあるな phpからperl使ってimagemagickを叩いたときかな
eclipseの使い方教えて
846 :
nobodyさん :2011/12/28(水) 15:39:12.41 ID:ykuOHvra
PHPの力でかわいくてやさしくて頭よくて若干ツンデレな彼女の作り方を 教えてください!
オレオレフレームワークのことですね わかります
>>846 <?php
function heyKanojyo() {
for($i = 0;$i < 1; $ore++) {
echo 'hey';
}
}
for($i = 0;$i < 1; $ore++) {
heyKanojyo();
}
?>
おすすめ
849 :
nobodyさん :2011/12/28(水) 16:47:56.43 ID:Yn7F8uVq
Windowsで特定の文字を含むフォルダを開こうとするとエラーがでることがあるのですが何とかならないでしょうか。 例 (コードの文字コードはutf8です) opendir(mb_convert_encoding('十', 'SJIS', 'UTF-8')); Warning: opendir(十,十) [function.opendir]: 指定されたファイルが見つかりません。
「エラーがでることがある」 ということはエラーが出ないこともあるのでしょうか 興味深い現象ですね
Warningってエラーだったのか。知らなかった。
古い情報見てると思うんだけど 環境に依存する文字使うときは euc-jpは使うなeucJP-winを使え sjisは使うなsjis-winを使え
今header()を使うと"headers already sent"になるかどうかを 判定することってできますか?
855 :
nobodyさん :2011/12/28(水) 17:23:03.84 ID:Yn7F8uVq
sjis-winでやってみたのですがやはりダメでした PHPのバージョンは5.3.5 XAMPPを使っています
>>849 どうにもなりません。 仕組みの説明は面倒だけど、PHP自体が対応してません。
>>856 いい加減なことを言うな。ソースを示せ。
いきなりopendirするんじゃなくて、その文字列ダンプしてみろよ
860 :
nobodyさん :2011/12/28(水) 17:46:47.27 ID:Yn7F8uVq
一時的にフォルダの名前を別のものに変更することでとりあえず解決することにしました。 皆さんご意見ありがとうございました。
>>858 PHPのファイルアクセス関連のソースみれば分かるじゃん。 Wつきじゃないので、APIの期待してんのは sjis まずこの時点で SJISに無い文字へのアクセスはダメでしょ?
その上、5C気にしてくれてないので、ファイルに5Cあるだけのならともかく フォルダ名だとどーにもならん。
862 :
nobodyさん :2011/12/28(水) 18:57:07.46 ID:sBHKqYMi
引き継いだ案件がSmartyを使用していたのですが、 これの質問や疑問を友人に聞いたり検索したりすると 「今どきSmartyって・・・('A`)」 って反応が沢山出てきます。 今だとテンプレートエンジンやらは何を使うのが主流なんでしょう?
失われた技術 ”古代兵器Smarty” …まだ動いている奴がいるとは
smartyかtwingどっちか。 smartyに拒否反応する人は「テンプレートエンジンはPHPを利用してます」とかいう人たちだと思う。 この辺はメリットとデメリットを天秤にかけて相談して決めるべき。
今時もなにもテンプレートエンジンならおもっくそデファクトスタンダードだろ それ言うならいまどきPHPって・・・って話
867 :
nobodyさん :2011/12/28(水) 22:35:58.92 ID:mO20XWmE
クラス定数とstaticなメンバ変数はほとんど意味は同じで インスタンスから参照できるかやアクセス制限修飾子の部分が違うだけと 考えていいのでしょうか?
>>868 すみません、どういう部分が違ってくるのでしょうか?
871 :
>>868 :2011/12/28(水) 23:17:04.39 ID:mO20XWmE
すみません、失念しておりました どちらも静的で、定数の場合は値を変化させることができず、 staticはインスタンスから使えないので値を保持できないので 次回参照するときはまた初期化したときの値になって・・・ と思ったのですが今実験しているとstaticでもself::$aなどとすることで インスタンスを作らずにクラスを使うときでも値を保持してその値を 次回の参照でも使うことができるようでした ありがとうございました
つーか、PECLにsmarty取り込んでネイティブクラスにしてくれねーかな 速度アップするし
その提案はありえない
まぁZendがいるからなぁ せめて.soで使えるようにしてくれたら幸せになれるんだけどなー
smartyつかってないが、静的生成なんだろ? WPとMTだったらMTだろ。 そしたらsmartyを速めても描写・応答速度は変わらない。
何言ってるのこの人 何時の時代から来たのか知らないけど使ってからものを言おうか まずはそれからだ
テンプレートとCMS比較とかひさびさにワロタわ
display_startup_errorsって具体的にどんなエラーを出すのでしょうか? syntax errorは表示されないようですが。
880 :
nobodyさん :2011/12/29(木) 14:32:08.29 ID:0hMYqXPq
キモイのはるなボケ ロリコンニコ厨は巣にこもってろ
Uncaught exception 'Exception' with message 'String could not be parsed as XML' このエラーの対処法がググッてもでてこないんだけど わかる人いる?
Fatal errorだけ見てコードを推測するとか 本来スパコンが必要ですが たぶんURLエンコードが絡んでいると 私のゴーストがささやいてるぜ
$url=取得したURL(拡張子は .xml じゃない普通のURL) $xmltree=new SimpleXMLElement($url); foreach($xmlree->xml as $item){ echo $item; } ?>
foreach($xmlree->xml as $item){ $item = urlencode($item); echo $item; } なんてのはどーだろか
たぶんパースできないナニカが入ってる 変な名前空間指定とかありそう
ためしに これやったらどうなる $xml = simplexml_load_string( preg_replace('/\s+xmlns=".*?"/usi', '', file_get_contents($url)) ); var_dump($xml);
変数名からしてAjaxでプルダウンメニューみたいな感じか
ああ、自前のXMLか だとしたら無難なXML書けとしか
>>888 で思い浮かんだけど、まさかXMLの中にHTMLが入ってるとかないよな
<item>
<img src="**">
</item>
とか
マジレスすると引数が足りない
>>887 やってみたらエラーでないで通ったわ
当然だけどXMLの中身がばっと表示される
ちなみにXMLは自前じゃなくてアマゾンから引っ張ってきたやつ
$xmltrees=simplexml_load_file($url);
$xmltree=$xmlrees->(画像ファイル);
?>
<img src="<?php echo $xmltree; ?>">
これだとちゃんとエラーも出ないで欲しい画像が表示されるけど、一つだけになっちゃうから
SimpleXMLElementで配列としてやりたいけど、こっちだとFatal errorがでる
var_dumpの中身みたらちゃんと配列で扱えるみたいだった
PHP初心者な上に、PHPで扱うXMLの本が探してもないから勉強したいにもできてない
クレクレ厨で申し訳ない
893 :
101 :2011/12/29(木) 21:47:01.98 ID:???
おいさっさと俺の質問にも答えろや
CENTOSは誰も使ってないんじゃね
>>892 あれでできたか、頑張れ
本なんかいらん、オンラインのマニュアルを理解する努力続けろ
情報量的にはマニュアルで事足りる
>>887 の$xmlを
$xml = json_decode(json_encoode($xml), true);
ってやってみ
>>894 それな
file_get_contentsがグローバルなURL参照できないんだろ?
前にあったな
CURLでwgetみたいなの自分で書いたほうがいいぞ
>>101 か今まで耐えたから今回は甘やかしてやる、コレ使え
function wget($url, $timeout = 30) {
$h = curl_init();
curl_setopt($h, CURLOPT_URL, $url);
curl_setopt($h, CURLOPT_HEADER, false);
curl_setopt($h, CURLOPT_RETURNTRANSFER, true);
curl_setopt($h, CURLOPT_TIMEOUT, $timeout);
$result = curl_exec($h);
curl_close($h);
return $result;
}
>>893 phpをロダにうpして管理者ログインパスをfile_get_contentsで読み取り 好きなパスにreplaceするやつか
攻撃可能なサーバ狙えよ
タイプミスいっぱいあった >$xml = json_decode(json_encoode($xml), true); $xml = json_decode(json_encode($xml), true);
>>101 グローバルなアドレスじゃなかったか
じゃあ
>>896 じゃないわ
認証情報付加できるけどマニュアルにあるから自分で探してね
PHPmailer
http://phpmailer.sourceforge.net/ という由緒あるメールツールを使っていたら遭遇した現象。
上記のサイトからPHP5対応版をdlして解凍して鯖にアップ。
早速PHPmailerを使ってみたがメール送信時にエラー発生。
なにやら「phpmailer.inc.phpの271行目で定義されてない変数を・・・」云々とメッセージが表示されている。
早速該当行を見てみて唖然・・・
$header[] = sprintf("Content-Transfer-Encoding: %s\n", $this->$Encoding);
「$this->$Encoding」を「$this->Encoding」に直したところエラーが直ってなおのこと唖然・・・
誰か俺に「悪い夢でも見てたんじゃない?」って言ってくれ('A`;)・・・
903 :
nobodyさん :2011/12/29(木) 22:50:15.08 ID:cp4YgQdu
904 :
nobodyさん :2011/12/29(木) 22:50:45.76 ID:cp4YgQdu
おっと失礼(;^ω^)
>>902 スマソ(´・ω・`)
おはよぉ〜 PHPプログラマ〜のお姉さんだよぉ〜 今日はどんな質問が残ってるのかな?
909 :
nobodyさん :2011/12/30(金) 14:12:24.28 ID:4Y2/Ei64
header("Cache-Control: no-cache, must-revalidate"); があるのとないのでどうのように挙動が違うのですか? 簡単に挙動の違いが分かるサンプルプログラムを教えてください。
911 :
nobodyさん :2011/12/30(金) 15:10:57.46 ID:mheFH9Jr
$_POST['e_site'] ↑の e_site に $line[0] を付け足したいのですが、 $_POST['e_site_$line[0]'] $_POST['e_site_'.$line[0]] どちらもダメみたいでした どうしたらいいでしょうか
>>912 おっぱい括弧って何だ?と思ったが、} のことか。貧乳だな
914 :
nobodyさん :2011/12/30(金) 15:38:49.30 ID:mheFH9Jr
おっぱい括弧を使うやり方はわかりませんでしたが、↓でできるようになりました $ef_site = "e_site_".$line[0]; $eee = $_POST[$ef_site]; ありがとうございました! もしすっごくヒマでしたらおっぱい括弧のやり方教えてください
916 :
911 :2011/12/30(金) 15:57:41.54 ID:mheFH9Jr
>$_POST['e_site_$line[0]'] oh... $_POST["e_site_$line[0]"] これならまだいけてたのにな シングルクォートとダブルクォートの違いを知っとくと幸せになれるぞ
質問です 外部のperlプログラムを呼び出すためにshell_execを使って、hoge.plを呼び出したいと考えています。 hoge.plにはphp内の変数である $text = "Eagle-eyed viewers spot a curious change in the state media's version of this scene." を引数として渡したいと考えています。 そこで shell_exec('(パス略)perl.exe hoge.pl "$text"'); と入力したのですが、$textの変数展開が行われず "$text"という文字列がそのまま入力された結果が帰って来ました。(パスに誤りはないはずです) 他にも\"$text\"などエスケープを試してみたのですが、うまくいきません。 上手いこと変数展開されたものを投げてあげたいのですが、どのように表記すれば良いのでしょうか。 宜しくお願いします。
919 :
918 :2011/12/30(金) 18:18:18.55 ID:GroHiEZW
ぐっ、すみません
>>918 です
ブラウザのメール欄がデフォルトでsageだったばっかりに…
>>918 やぁ、このスレにきたか
ダブルで囲んでるけど、さらにその周りをシングルで囲んでるから
変数展開されない
たとえば '(パス略)perl.exe hoge.pl '.$text.とかしたり、
"(パス略)perl.exe hoge.pl $text"としたらどう?
まーた文字列の結合かよ おまえらちゃんとクォートを覚えろ
マニュアルすら読まないってどういう神経してるんだろう
>>918 シングルクォーテーションとダブルクォーテーションの違いはPHPの初歩です
この違いはググればすぐ分かります
924 :
918 :2011/12/30(金) 19:08:52.15 ID:GroHiEZW
本当にすみません、結合で解決しました もっとスマートな方法があるのかも知れませんが思いつかないのでこのままで。 $con = '(パス略)\perl.exe read.pl '; $con .='"'; $con .=$text; $con .='"'; shell_exec($con); ありがとうございました
∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄  ̄
まー解決したんならいいよ 次
次の患者さん どーぞー
なんでこのくらいのことが思い浮かばないのか不思議でしょうがない "perl.exe hoge.pl '{$text}'" クォートを理解してないってだけですげーアホなことするって見本だな
929 :
nobodyさん :2011/12/31(土) 10:12:09.16 ID:+csIGQbn
今構築中のサイトにPayPal決済の導入を考えています。 今のところサイトで自前のアカウントを作成するか、OpenIDを使うかなども決まっていません。 決済を除けばアカウントが必要な機能はありません。 決済タイプは月額課金です。 ・OpenIDとPayPalを使って、あるOpenIDが月額課金を行なっているかどうかをPayPalから取得する事が可能か? ・サイトからセッションIDを伴ってPayPalのサイトにリダイレクトしてPayPal側でログインして、 そのセッションIDのユーザーが月額課金を行なっているかを返してもらう事が可能か? つまりOpenIDを利用する必要があるか、PayPalだけで解決可能かが分からないでいます。 どんなサイトを見れば分かるか、どんなキーワードで検索すればいいかだけでも教えてもらえると助かります。
設計の根本が明後日の方向むいてる気がするんだけど 要約すると ---- PayPalで月額課金したいけど、PayPalに問い合わせてその人が課金しているかどうかを返して欲しい ---- で合ってる? だとしたらPayPalが課金管理なんてしてくれないんじゃないの 決済はしてくれるだろうけど月額課金の管理なんてPayPalにとって知ったことじゃないと思うよ PayPalのあなたのサイトへの支払い履歴から追うか、それが無理なら自前でなんらかの管理方法を考えるしかない
PHPで作ってるってだけで全くPHPと関係ないな どっかにショッピングカートの専スレがあった気がするが・・・ そこに決済関連に詳しい人がいたとおもう
某マッチングサイトの案件でOpenID+paypal決済機能追加の仕事見たけどお前かな?
それはちょっと痛々しいな
934 :
nobodyさん :2011/12/31(土) 12:23:57.47 ID:HSDPOare
クレジットカード決済は導入にかなり金かかるが、paypalなら 安いってことくらいしか知らんな
宣言されていないメンバへのアクセスをエラーにする方法ってないんですか? class ABC { } $a = new ABC(); $a->hoge = 444;
せったとげったをうまくつかえ
937 :
nobodyさん :2012/01/01(日) 00:34:42.78 ID:hL0Y8xWR
phpでmyaqlのauto_incrementをリセットするのはどうやるのですか? >alter table question_tb auto_increment=1; の代わりを教えてください。
>>937 alter table使わないとしたら・・・リセットするわけじゃないけど
insertするときauto_incrementが設定されているフィールドの値も
いっしょにセットしておけばauto_incrementされてても関係ないんじゃね?
それじゃ意味ないじゃんw
ほんじゃプロシージャ使って、直接コードの中には書かないとか やってることは同じだけど
それじゃ同じじゃんw
じゃぁ勝手にしろよ(´・ω・`)
944 :
nobodyさん :2012/01/01(日) 13:11:34.89 ID:hL0Y8xWR
ないのですね。分かりました。
phpにそんな機能はない sqlを実行する機能ならある mysqlできけ
946 :
nobodyさん :2012/01/01(日) 14:11:51.16 ID:hL0Y8xWR
大学の非常勤講師(34歳)でオレの所属する研究室のOBに phpの勉強してるって言ったら、小手先の技術よりもアルゴリズム の勉強を勧められました。グーグルマップも結局はアルゴリズムと 説教されました。アルゴリズムは再帰くらいしか勉強してません。 独学するphpは小手先の技術なのでしょういか?
947 :
nobodyさん :2012/01/01(日) 14:27:23.27 ID:eogngf9P
>>946 小手先です。PHPは技術的に応用が効かないので後で困りますよ。
アルゴリズムはPHPで勉強しない方がいい。C系かJavaで。
アルゴリズム無しでプログラミング? 地図無しで旅に出るようなもんだな 地図が無くてもなんとかならないこともないけど
>>946 言語なんてどれを使おうが大差はないという意味で小手先かも知れない
HTTPサーバーに特化したPHPを、ウェブアプリを作らない人間が覚えても無駄になるからね
そもそもアルゴリズムも言語も手段であって目的ではないので
今必要なものから順次覚えて行けばいい
論理と言葉は表裏一体だよ。 どちらかだけでできるものでもないので両方の上達が必要。
>グーグルマップも結局はアルゴリズム この考えがおかしいんじゃね? グーグルマップという「目的」があって、必要なアルゴリズム「道具」を選択・開発したりする。 じゃあ「○○みたいなサービス作ろう」と考えたときに、どの道具が一番効率よくてコストが低いか自ずと選択肢は決まってくる。 そこに「いい年なんだし、もうそろそろ就職出来るスキル身につけなきゃ…」とかいう切実な現実問題がある場合は尚更。 中学生ぐらいだったら、「小手先の技術より、基礎を身につけろ!将来役に立つから!」とアドバイスするけど。
952 :
nobodyさん :2012/01/01(日) 15:47:08.11 ID:eogngf9P
PHPの場合は便利な関数の存在がアルゴリズムの学習を損なう恐れがある。 またPHPはシステム系の職にありつけた場合でも給料が安いので おすすめできない。
お前ら全員リストラな
;;
>>951 Googleは他の誰も追いつけない卓越したアルゴリズムを開発できるから
Googleたりえているという話でしょう
そして、同じ道具でもアルゴリズムかプログラム言語のどちらを極めるかによって、仕事も全然変わってくる
まぁぶっちゃけた話優秀な人はどっちも優秀なんだけどね
優秀な人は大手に就職できるけどおまえらみたいにPHPしかできない奴らは無理 大手でPHPしかできない人いないから笑 ていうか言語1つしか出来ない人って戦力にならん Javaぐらいは身に付けとけよって漢字
おまえ大手で開発したことないやろ 大手なんて技術者かかえてないとこ多い プロジェクトのたびに系列のコネから寄せ集めたり、それでも集まらなかったらいろんなルートでかき集められる
959 :
957先生 :2012/01/01(日) 16:45:28.55 ID:???
xamppで入れることしか出来ない奴とかな。すぐ首だよクビクビ いまどき仮想マシンでlinux入れて開発環境揃えられないような素人は現場で邪魔になるだけだから。マジで笑 VirtualBoxにCentOSなりDebianなりいれて開発環境手に入れるのに 毎日インストールするわけでもないんだからよ笑 まあ企業では予め作成されたものをコピーして使わせてもらうんだけどな コンソールからログインやらシェルスクリプトも書けない奴は足をひっかるだけだから勉強しろといいたい
大手って具体的にどういう会社?
961 :
957先生 :2012/01/01(日) 16:47:07.84 ID:???
Yahoo Google Livedoor クックパッド amazon
962 :
957先生 :2012/01/01(日) 16:49:14.73 ID:???
最低限の礼儀でsvnかgitの使い方も覚えとけ
963 :
nobodyさん :2012/01/01(日) 16:58:47.99 ID:eogngf9P
昔はレンタルサーバーだったが、今はVPSが主流となりつつある。 Linuxが使えないと仕事にならない。 また今はVPSが主流になりつつあることはPHP以外の言語も簡単に使用 できるようになったことを意味する。昔はいろいろ我慢しながら 仕方なくPHP使っていたが、今は言語の選択肢が増えた。 だからPHPしか使えないやつはいらない。
新年から痛い人が沸いてるなw
>>952 >便利な関数の存在がアルゴリズムの学習を損なう
便利な関数はどんどん使ったらいいとおもう。
たとえば、行列の積を求めるのに
C = A x B
の1行で済むに越したことはない。
別なことに頭が使えるからね。
(もし逆行列も C = 1/A でできたらすごいな。 )
で、Googleの優秀さってアルゴリズムなの?
他になにかあんの?
実現したいことが既存の道具ではできない時に新しい道具を作り出してるとこじゃね。
968 :
nobodyさん :2012/01/01(日) 17:07:20.00 ID:eogngf9P
>>965 PHPに限定するなら当然使った方がいい。
ただ、他の言語を学習するときは戸惑うので覚悟すべき。
戸惑うw
971 :
nobodyさん :2012/01/01(日) 17:11:21.28 ID:eogngf9P
>>969 たとえばhtmlspecialchars()をサーバサイドJavaでどうしますかw
いちいち他の言語を学習するときに戸惑うとか考えてるやつって 1つの言語も身に付けられないレベル止まりだよ
973 :
nobodyさん :2012/01/01(日) 17:14:49.70 ID:eogngf9P
>>972 PHPから始めた人はたぶん戸惑うと思うがね。
974 :
nobodyさん :2012/01/01(日) 17:15:39.14 ID:eogngf9P
個人的にはPHPを最初の言語にするのはやめるべき。 学べる技術に汎用性がない。
C言語のアルゴリズムにいくら卓越してもPHPは作れないよ。 PHPはC言語で書かれててもね。
個人的には 頭硬い人はプログラマに向かないと思う
977 :
nobodyさん :2012/01/01(日) 17:20:17.23 ID:eogngf9P
>>975 大丈夫。
C言語の方が汎用性が高いから、C言語で学んだ技術は生かせる。
PHPは汎用性が低いから、PHPで学んだ技術は他に生かせない。
極論好きだねあなたw
979 :
nobodyさん :2012/01/01(日) 17:28:10.31 ID:eogngf9P
>>978 PHPでスマホネイティブアプリでも作ってくれ。
PHPのソースコードを修正することもあるけど中規模までの企業だとそういうことしないから楽だよな
「アルゴリズム」と念仏のように言ってると器用貧乏から抜けられないよ。 便利な物はどんどん使ってより豊かになるものを実現できるように。 低レベル言語の技術など所詮テクニックにすぎないからね。
982 :
nobodyさん :2012/01/01(日) 17:36:05.71 ID:eogngf9P
>>981 便利なPHPを使ってHadroopでも作ってくれ。
研究室では何を作るかが問題であって、何を使ってどう作るかは問題ではないのだよ。
ま、この板ではJava盛り上がらんから気の毒ではある
ドヤッ
>>982 は昨日こんなトンチンカンな事言ってた人じゃない?
下みたいなケースに陥る素人が居たらぜひ見てみたいw
110 名前: nobodyさん 投稿日: 2011/12/31(土) 23:37:41.85 ID:JkKqmE7m
↓これは関連あるよ。
PHPのシングルトン実装の話と何の関連もない。
Javaなどのマルチスレッド言語のシングルトンの解説を読んで、
それが初心者がPHPでも同機能が適用できると勘違いして
アプリ作ったら大変なことになるよね。
こういった意味ではおかしなコードを助長しやすいでしょ?
988 :
nobodyさん :2012/01/01(日) 18:40:30.44 ID:eogngf9P
いまどきネイティブアプリとか
990 :
nobodyさん :2012/01/01(日) 18:41:12.03 ID:eogngf9P
しかしこのスレは高レベルだな。
991 :
nobodyさん :2012/01/01(日) 18:44:18.93 ID:eogngf9P
992 :
nobodyさん :2012/01/01(日) 18:47:10.03 ID:eogngf9P
さてPHPでは何が作れるのかな?
Hello world.
995 :
nobodyさん :2012/01/01(日) 18:56:09.25 ID:eogngf9P
996 :
nobodyさん :2012/01/01(日) 18:56:37.47 ID:eogngf9P
997 :
nobodyさん :2012/01/01(日) 18:57:25.08 ID:eogngf9P
998 :
nobodyさん :2012/01/01(日) 18:58:11.37 ID:eogngf9P
さてと。PHPは今年はどうなるかな?
その点トッポってすげぇよな、最後までチョコたっぷりだもん
1000 :
nobodyさん :2012/01/01(日) 18:58:58.57 ID:eogngf9P
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。