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

このエントリーをはてなブックマークに追加
1nobodyさん
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
2nobodyさん:2009/07/31(金) 21:19:53 ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 85
http://pc11.2ch.net/test/read.cgi/php/1245074032/
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
【PHP】下らねぇ質問はID出して書き込みやがれ 79
http://pc11.2ch.net/test/read.cgi/php/1231850905/
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/
【PHP】下らねぇ質問はID出して書き込みやがれ 77
http://pc11.2ch.net/test/read.cgi/php/1228667259/
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はID出して書き込みやがれ 74
http://pc11.2ch.net/test/read.cgi/php/1221909788/
3nobodyさん:2009/07/31(金) 21:20:07 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
4nobodyさん:2009/07/31(金) 21:20:20 ID:???
【簡易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プログラムとして実行された結果になる。
5nobodyさん:2009/07/31(金) 21:20:42 ID:???
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に保存?
 → 好きにしてください
6nobodyさん:2009/07/31(金) 21:22:10 ID:???
くだすれPHP(超初心者用)6
http://pc11.2ch.net/test/read.cgi/php/1238936666/l50
【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
http://pc11.2ch.net/test/read.cgi/php/1233590976/l50
姉妹スレ
7977です。:2009/07/31(金) 21:44:01 ID:f7nn6Kbb
だめだ。わかんないよ。
8nobodyさん:2009/07/31(金) 21:45:46 ID:???
データベースの設計はちゃんとできるの?
第三正規化とかわかる?
9nobodyさん:2009/07/31(金) 21:47:29 ID:???
ちゃんとPHP理解してからDBにさわった方がいい、慎重にコーディングしないとXSSの脆弱性を内包することになる
10nobodyさん:2009/07/31(金) 21:55:54 ID:???
お前ら容赦ないなw
11977です。:2009/07/31(金) 22:06:18 ID:f7nn6Kbb
いや、僕が作ったわけではないので。
ただどうやって作ったのか。
チェックボックスのデータをひとつずつ区切って処理
するにはどうしたらいいのかがわからなくて

12nobodyさん:2009/07/31(金) 22:12:40 ID:???
>チェックボックスのデータをひとつずつ区切って処理
これが何をいってるのかわからん
だいたいこれOR検索じゃん
複数の市町村にチェックつけたら物件表からOR検索するんでしょこれ
13nobodyさん:2009/07/31(金) 22:42:51 ID:???
配列をcountして1つならそのまま複数なら並べてor
これだけ
14977です。:2009/07/31(金) 23:08:21 ID:f7nn6Kbb
配列をcountして1つならそのまま複数なら並べて

ここのソースを頼みます。
一から教えてください。
15nobodyさん:2009/07/31(金) 23:16:35 ID:FLyuwNhj
mime typeにないファイルをポストしたとき
mime typeの○○/拡張子の○○の部分って何が表示されるのでしょうか
16nobodyさん:2009/07/31(金) 23:17:32 ID:???
application/なんとかストリーム
17nobodyさん:2009/07/31(金) 23:18:17 ID:FLyuwNhj
○○/拡張子←拡張子じゃありませんでしたすいません
例えばapplication/activemessageのapplicationの部分はどうなるのでしょうか>>15
よろしくおねがいします
18nobodyさん:2009/07/31(金) 23:19:11 ID:FLyuwNhj
>>16
ありがとうございます。
わからないものはapplicationになるんですね
ありがとうございました
19nobodyさん:2009/07/31(金) 23:19:50 ID:???
まず自分で考えて書け
お前が例に出したページで考えてみろ
nameがtown_cd[] valueは新宿区が13104 渋谷区が13113
たとえばこの2つを選択したら物件表にどういうQueryを投げるか考えてみろ
20nobodyさん:2009/07/31(金) 23:32:20 ID:???
>>19
安価付けろ、ID:FLyuwNhjに言ったように見えるぞそれ
21nobodyさん:2009/07/31(金) 23:34:57 ID:???
いや見えないだろw
22nobodyさん:2009/07/31(金) 23:56:56 ID:f7nn6Kbb
わかった。
考えてみる。
23nobodyさん:2009/08/01(土) 00:24:26 ID:???
考えるほどのものじゃないだろ・・・
select * from 物件表 where 市町村id=13104 or 市町村id=13113
$_POST['town_cd']には
0=>13104
1=>13113
が入ってるんだからあとはforeachでまわして
ベースになるquery(selevt * from 物件表 where)にくっつけてやればいいだけの話
24nobodyさん:2009/08/01(土) 00:43:05 ID:???
Javascript でグリッド(表)を作るのですが、表示件数が15万件と多く、一度に表示しきれません。
ページャをそのまま使うのではなく、スクロールバーの上下でページ移動ができるようにしたいです。
また、スピードを重視するため、表示する分+α程度のデータだけを AJAX で取ってきます。

ページャのページ指定をスクロールバーにバインドできるのか?

というのが今考えていることです。
25nobodyさん:2009/08/01(土) 00:45:26 ID:???
そうですか。頑張ってくださいね。
26nobodyさん:2009/08/01(土) 01:27:50 ID:???
>>23
ありがとうございました。
理解できました。
27977:2009/08/01(土) 01:31:32 ID:???
すいません。26です。
foreach($_POST['town_cd'] as $val){
select * from 物件表 where $valでOK?

28977:2009/08/01(土) 01:34:23 ID:???
もし違っていたら訂正をお願いします。
29nobodyさん:2009/08/01(土) 01:38:43 ID:???
$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 市町村id={$val}";
  continue;
 }
 $query .= " or 市町村id={$val}";
}
30nobodyさん:2009/08/01(土) 01:48:14 ID:???
>>29
なんで試しに動かしてみないの?バカなの?

〜〜〜というエラーが出たが原因が分からない
なら話はわかるが、なんで実行もしてないソースこれでいいか聞いてんの?
31nobodyさん:2009/08/01(土) 01:49:41 ID:???
>>29 != >>977
32977:2009/08/01(土) 01:50:42 ID:yM0cIisM
なるほどそういうことか。勉強になります。

33nobodyさん:2009/08/01(土) 01:57:38 ID:???
理解できましたっていってたのにw
吹いたわ
34977:2009/08/01(土) 02:06:37 ID:yM0cIisM
理解できていませんでした。
もっと勉強します。
ありがとうございました。
35nobodyさん:2009/08/01(土) 02:09:16 ID:???
SQLインジェクションに注意
36nobodyさん:2009/08/01(土) 02:12:45 ID:???
そういやfor分の中で

if () {
 処理;
 continue;
}
処理

ってやるのと
if () {
 処理;
} else {
 処理;
}

ってやるのってなんか違いあるの?
37nobodyさん:2009/08/01(土) 02:41:50 ID:???
全然違うだろ
38nobodyさん:2009/08/01(土) 02:45:01 ID:???
だから何が違うのかって聞いてるの。日本語分かる?
39nobodyさん:2009/08/01(土) 02:53:41 ID:???
ID出さないの?
スレタイ日本語だけど読める?
40nobodyさん:2009/08/01(土) 02:54:18 ID:???
>◆回答者への注意
>・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
読めなかったら振り仮名振ってあげます
4136:2009/08/01(土) 02:55:19 ID:uPB6yqUJ
まぁ俺>>38じゃないけどよろしく頼むよ
42nobodyさん:2009/08/01(土) 02:55:59 ID:???
悔しいの?wwwwwwww
43nobodyさん:2009/08/01(土) 02:56:42 ID:???
>>38
ばか?大丈夫? 
44nobodyさん:2009/08/01(土) 03:02:12 ID:???
>>38じゃないが>>38は正論だろ
>>37がアホとしか思えん
45nobodyさん:2009/08/01(土) 03:08:27 ID:???
>>44がアホだろ
46nobodyさん:2009/08/01(土) 03:17:40 ID:???
まあ>>38の言ってる事は正しいわな。口は悪いが
47nobodyさん:2009/08/01(土) 03:18:46 ID:???
んで結局誰もわからないのか?
48nobodyさん:2009/08/01(土) 06:18:27 ID:???
>>36
for(){
A処理;
if () {
 B処理;
 continue;
}
C処理;
}
A->B->...
A->C->...

for(){
A処理;
if () {
 B処理;
} else {
 C処理;
}
D処理;
}
A->B->D->...
A->C->D->...

よって前者はDの処理が必要な時、B・Cの両方にD処理の記述が必要であるため後者を用いる事が正しい
D処理が不要であれば結局はどちらも同じである
49nobodyさん:2009/08/01(土) 06:44:59 ID:???
速度面ではどうだろうとおもってJavaScript+Firefoxでやってみたが変わらないね
elseブロック通る分時間かかるかなと思ったけどそうでもなかった
50nobodyさん:2009/08/01(土) 07:24:15 ID:???
>>49
ifが評価されたらelseブロックをまるまる飛ばすから、elseブロック直後にforブロックの終端があれば大差ないと思うよ
51nobodyさん:2009/08/01(土) 07:28:10 ID:???
>>49
あとここPHPスレだよ
52nobodyさん:2009/08/01(土) 07:49:48 ID:???
ループの検証のコードなんざどの言語でもいいだろ・・・
53nobodyさん:2009/08/01(土) 07:58:01 ID:???
peclにMemcacheとMemcachedがあるけど、どう違うの?
54nobodyさん:2009/08/01(土) 09:52:30 ID:???
またつまらんことでもめてたのか?
55nobodyさん:2009/08/01(土) 11:17:38 ID:yM0cIisM
もっとPHPができるようになりたいです
56nobodyさん:2009/08/01(土) 13:14:31 ID:???
で?
57nobodyさん:2009/08/01(土) 18:44:39 ID:???
お前ら喧嘩すんな、慎吾こち亀でもみてろ
58nobodyさん:2009/08/01(土) 20:16:28 ID:???
>53
memcachedの方が速いし多機能(検証済)。
memcacheは独自実装。memcachedは中身がlibmemcachedという汎用ライブラリ。
59nobodyさん:2009/08/01(土) 20:34:37 ID:o7Ir56np
Cookieを削除する必要がある時ってどんな時ですか?

60nobodyさん:2009/08/01(土) 22:01:33 ID:???
>>59
cookieを何に使っているかによって変わると思うが。

一般論としてなら、必要なくなったらさっさと消す。
ブラウザが毎回サーバーに送信していることを忘れるな。
僅かながら帯域を消費しているし、サーバーの処理も余計に必要になる。
61nobodyさん:2009/08/01(土) 22:04:13 ID:???
普通に、セッションクッキーにすればいいんじゃあ…
6260:2009/08/01(土) 22:09:44 ID:???
>>61
これは俺へのレスなのか?
それとも独り言?
63nobodyさん:2009/08/02(日) 00:48:57 ID:Zm7WmY12
>>60
どうも。
後、ブラウザが閉じられるまで有効なセッションって、どうやってブラウザが閉じられたかどうか判断してるんですかね?
ブラウザ側が判断してるんでしょうか。


64nobodyさん:2009/08/02(日) 01:14:45 ID:???
C++で10年食ってるプログラマでPHP初心者です。
PHPのクラスに関する解説を見るとどれもnewで生成したクラスをdeleteしてないんだけど、PHPにはdeleteというものがないのですか?
65nobodyさん:2009/08/02(日) 01:16:47 ID:???
マニュアルくらい見ようぜ
66nobodyさん:2009/08/02(日) 01:17:59 ID:???
>>58
ありがとん。公式にはどっちがどうとか書いてなかったので、
どっち使えばいいのかちょっと混乱しちゃいますよね。
67nobodyさん:2009/08/02(日) 01:40:26 ID:???
>63
他にどんな可能性があるのか言ってみろよ低能
68nobodyさん:2009/08/02(日) 01:45:45 ID:???
>>63
デフォルトではセッション識別にCookieを使っている
クライアントの終了時に破棄する設定のSet-Cookieを返すことで実現する

>>64
オブジェクトが参照されなくなった時点でGCが後始末する
69nobodyさん:2009/08/02(日) 09:55:53 ID:???
C++10年やっててもスレタイもマニュアルも読めないんだな
70nobodyさん:2009/08/02(日) 21:35:18 ID:???
unset($hoge);
71nobodyさん:2009/08/02(日) 21:57:41 ID:???
exit;
72nobodyさん:2009/08/02(日) 23:17:28 ID:V4BPZ7v2
フォームのテキストエリアに確認したい内容を、
改行を入れると複数入れられるようにしています。
そして実際の確認時に

$array = explode("\n",$text);
foreach($array as $val){
if(確認の場合の条件){
一致した場合はループを抜ける
}
}

というように配列に入れて、foreachで1行ずつ確認しています。
これはこれで良いのですが、foreachを使わず、配列に入れずに
確認する方法って無いでしょうか?
73nobodyさん:2009/08/02(日) 23:21:30 ID:???
何を確認するんだ
7472:2009/08/02(日) 23:29:14 ID:V4BPZ7v2
すみません、説明不足でした。$textには以下のような値が入っているとします。
$text="a
b
c";

それを改行毎に配列に入れて、>>72のようなforeachを使って
配列の中身に特定の文字列があるか確認したいと思います。

$array = explode("\n",$text);
foreach($array as $val){
if($val == "a"){
return false;
}
}

普段はこのような書き方をしているのですが、
foreachを使わない書き方はないでしょうか?
75nobodyさん:2009/08/02(日) 23:47:00 ID:???
$array = explode("\n",$text);
if(in_array("a",$array)===true){
  return false;
}
76nobodyさん:2009/08/02(日) 23:51:16 ID:???
===trueの意味何かあんの
77nobodyさん:2009/08/03(月) 00:08:20 ID:???
速度的な意味
7872:2009/08/03(月) 00:09:28 ID:???
>>75
ありがとうございます。in_arrayを使うんですね。

あと、explodeは¥nではなくて¥r¥nじゃないと駄目でした
79nobodyさん:2009/08/03(月) 00:12:24 ID:???
Windowsは\r\n、UNIX系は\n、初期のMacは\r
80nobodyさん:2009/08/03(月) 00:18:01 ID:???
便乗して
$array = explode("\n",$text);
foreach($array as $val){
if(strpos($val, "a") !== false){
return false;
}
}

の場合はもっと単純に短くできますでしょうか?
81nobodyさん:2009/08/03(月) 00:18:52 ID:VvsrItXl
ID出し忘れましたすいません
82nobodyさん:2009/08/03(月) 00:29:23 ID:???
1万回程度ループさせて
867 名前: nobodyさん [sage] 投稿日: 2009/07/27(月) 17:40:26 ID:???
PHPで実行時間を求める方法

<?php
$time_begin = microtime(true);

/* expression */

echo "実行時間".(microtime(true) - $time_begin)."秒";
?>

これで時間計ればいいと思うよ
83nobodyさん:2009/08/03(月) 00:31:34 ID:???
コードの短さの話をしてるんだろ
84nobodyさん:2009/08/03(月) 00:50:58 ID:???
>>80
配列に直す必要あんの?
85nobodyさん:2009/08/03(月) 01:00:49 ID:???
strpos($text,"\na\n") !== false ? return false : "";

1行で
86nobodyさん:2009/08/03(月) 01:22:05 ID:???
たった1行でバグ含むなよ。
87nobodyさん:2009/08/03(月) 01:24:41 ID:???
こいつ・・・たった1行に2つもバグを含んでいるぞ。
88nobodyさん:2009/08/03(月) 01:33:23 ID:???
これはひどい
89nobodyさん:2009/08/03(月) 02:27:09 ID:???
三項演算子って、可読性悪そうなのに好きな人はやたらと使いたがるよね
90nobodyさん:2009/08/03(月) 02:30:43 ID:???
可読性を高められそうなときだけ使うな
91nobodyさん:2009/08/03(月) 04:53:20 ID:UYXdY2Ut
馴れだよ
92nobodyさん:2009/08/03(月) 11:26:47 ID:???
>>63
ブラウザが閉じられた時点で、ブラウザが保持しているセッションクッキーが破棄される。

サーバー上にあるセッションデータはそのまま残っているが、そのセッションを参照する
クライアントがいなくなったので無いも同然という状態。

サーバー上にあるセッションデータは、最終的にphp.ini等で設定されているGCによって
破棄される。
確か、デフォルト設定では24分の生存期間が設定されている。

なお、サーバーから破棄されるまではセッションIDを知っていればそのセッションを再利用
可能なので注意。
93nobodyさん:2009/08/03(月) 13:08:45 ID:U06Xk0yO
ダブルクウォーテーションとシングルクウォーテーション
どちら使っても良い状況のとき、
何か理由があってこっち使うほうが良い
みたいなことはありますか?
好みでいいのでしょうか
よろしくお願いします
94nobodyさん:2009/08/03(月) 13:12:33 ID:LOY5W65B
ファイルのアップロードについて質問です。
アップロードの最大サイズ、メモリの最大使用領域
これらは現在稼働中の鯖のメモリを考えて割り当てたほうがいいんですかね。
(2GBのメモリ積んでる場合は2GBまでとか←単純計算で)

ファイルを40GBまでうp可能な鯖を構築したいのですが、
メモリに格納ではなく、一時的にtmpとして保存することは可能でしょうか?
95nobodyさん:2009/08/03(月) 13:20:17 ID:???
>>93
シングルクオートは変数を展開しない分、処理速度が速いと思うよ。
96nobodyさん:2009/08/03(月) 15:01:27 ID:GfwjTEf5
レンタルサーバで使用中の容量が使える容量のフルに
なっていないかどうかをPHPで確認する方法って
どんな方法が考えられますか?
「一時ファイルを同階層に作り、書き込みしようとして例外が返されたら容量がフル」
みたいなことを考えたのですが、なんかちょっとスマートじゃない気がしてしまうんです。
97nobodyさん:2009/08/03(月) 15:04:08 ID:???
float disk_free_space( string directory )
98nobodyさん:2009/08/03(月) 15:38:54 ID:???
>>97
レスありがとうございます。
さくらのレンサバなんですが、ユーザとして使える容量ではなく
サーバマシンの空き容量と思われる数値が返ってきてしまいました。
99nobodyさん:2009/08/03(月) 15:42:34 ID:???
>>98
カレントディレクトリ以下の使用容量を取得したらいいんじゃない?
100nobodyさん:2009/08/03(月) 15:48:17 ID:???
>>98
disk_free_spaceの引数で該当ディレクトリを指定するのは?
もしくはsystemでduで調べるとか。

あとはさくらのレンサバ知らないけど、もしquotaで制限かけているなら
「quota -u ユーザ名」 で確認できるかもしれない。

phpからなら、こんな感じか。
$quota = system('/usr/bin/quota -u ユーザ名' , $retval);
101nobodyさん:2009/08/03(月) 16:30:18 ID:8ObdthvW
>>95
3GhzのCPUを使ってたら、そんなの誤差の範囲内だと思うけど?
102nobodyさん:2009/08/03(月) 16:31:33 ID:8ObdthvW
>>89-91
三項演算子も読めないプログラマーって使えないよね。
103nobodyさん:2009/08/03(月) 16:58:12 ID:???
変数展開をCPUの仕事だと思ってる日曜プログラマーって使えないよね
104nobodyさん:2009/08/03(月) 17:04:10 ID:???
よくわからんが、寝ぼけて文中に変数名入れちゃわないように
スタティックな文字列はシングルクォートにするようにしてる。
105nobodyさん:2009/08/03(月) 17:07:06 ID:???
ifとcaseと三項演算子の中からいちばん可読性の高いものを自然に選べるのがよいプログラマ?
ifとcaseと三項演算子の中からいちばん処理速度の速いものを自然に選べるのがよいプログラマ?
106nobodyさん:2009/08/03(月) 17:11:54 ID:???
そのレベルなら可読性でしょ。

数100万単位のデータ処理なら、設計の自由度と判りやすさで
RMDBSを選ぶか、またはシーケンシャルアクセスを使って独自
の高速データ処理ができる方法を選ぶかって考えなきゃいけないけど。
107nobodyさん:2009/08/03(月) 17:12:18 ID:???
コーディング規約を守れるのがよいプログラマ
108nobodyさん:2009/08/03(月) 17:13:11 ID:???
仕様書やコーディング規約通りにかけるのがよいプログラマ。
109nobodyさん:2009/08/03(月) 17:14:52 ID:???
>>106
>RMDBS
110nobodyさん:2009/08/03(月) 17:17:52 ID:???
>>109
いいじゃないかよぉ、Typoくらいよぉ(><)
111nobodyさん:2009/08/03(月) 17:18:23 ID:???
TypoでRDBMSをRMDBSは無いわ・・・
112nobodyさん:2009/08/03(月) 17:18:38 ID:???
>>110
間違ったんだろ?知識なんてカケラも無いんだろ?素直になれよ?
11396:2009/08/03(月) 17:29:19 ID:???
>>100
quota制限でビンゴでした。
ありがとうございました。
114nobodyさん:2009/08/03(月) 19:48:59 ID:???
eclipseってなんで160MBもあるん
115nobodyさん:2009/08/03(月) 22:34:31 ID:???
>>64
C++でいったんnewした
クラスをdeleteしないと、なにがどうなるの?
116nobodyさん:2009/08/04(火) 09:46:49 ID:2TKWOoA9
質問です。
http://www.livein-tokyo.com/search3.php
で"市町村id={$val}" の一致したデータを出す場合
$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 市町村id={$val}";
  データを出すsql文
  continue;
 }
 $query .= " or 市町村id={$val}";
}
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 1) {
  $query .= " 市町村id={$val}";
  データを出すsql文
  continue;
 }
 $query .= " or 市町村id={$val}";
}
でOK?

117nobodyさん:2009/08/04(火) 09:51:16 ID:???
$_POST['town_cd']は配列?
118nobodyさん:2009/08/04(火) 09:52:17 ID:2TKWOoA9
配列です。
119nobodyさん:2009/08/04(火) 10:06:50 ID:???
>>118
環境作って実際に動作させてみた?

・上のforeachと下のforeachはそれぞれ何がしたいの?
・foreach内の$keyが0か1かで判断していいの?
・$_POST['town_cd']が無い場合(全件取得の場合?)に
 $queryは "select * from 物件表 where"になるけどそのまま実行したらエラーになるよね?
120nobodyさん:2009/08/04(火) 10:07:26 ID:???
>>116
手出すのは早すぎなんじゃない?もっとちゃんと基礎から勉強してきたほうがいいよ。

$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 市町村id={$val}";
  continue;
 }
 $query .= " or 市町村id={$val}";
}

この時点で$queryはOR検索で全てのデータを問い合わせる文になってるんだからこれ以上の処理はいらない。
あとはこのクエリを投げて返ってきた結果(オブジェクト・配列・ハッシュ等)を元にHTMLを仕上げればいいだけ。
121119:2009/08/04(火) 10:18:45 ID:???
$keyってもしかしてwhereの直後の条件(orがいらない)かどうかの判断で使ってる?
それなら、ベースとなるSQLを「select * from 物件表 where 1」と「where 1」とするのが定石。
これなら$_POST['town_cd'] が空(全件の場合)もエラーにならない。
つまりこんな感じか

$query = "select * from 物件表 where 1";
foreach ($_POST['town_cd'] as $key => $val) {
 $query .= " or 市町村id={$val}";
}
122nobodyさん:2009/08/04(火) 10:34:46 ID:???
空の場合はSQLException出さない?
123119:2009/08/04(火) 10:48:29 ID:???
>>122
俺に言ってる?
SQLExceptionはでないと思うよ「select * from 物件表 where 1」を実行すればわかる

上の書き方だと、$_POST['town_cd']が空だったらforeachでWarningはでるけど。
124nobodyさん:2009/08/04(火) 10:50:13 ID:???
普通は例外キャッチして検索条件入れてくださいってechoするよね
125122:2009/08/04(火) 10:52:21 ID:???
ああ・・・Javaと混ざってた。スルーしてちょうだい。
126nobodyさん:2009/08/04(火) 11:01:07 ID:???
>>124
それは要件によると思うよ
>>116 のような不動産サイトで各種条件(価格とか面積とか)を指定して物件を絞り込むような場合
条件指定しなければ全件でてくる所が多い。
127nobodyさん:2009/08/04(火) 11:15:16 ID:???
いちいち全件出すような仕様にはしないんじゃない?
転送量的にも負荷的に考えて
もし出すにしても人気のものとか売り出したいものとか数件出す程度にする
規模のおおきくなる商用サイトとかだとそういうかんじだとおもうけど
動画サイトとかは典型例
全件なら全件チェックを別途いれるんじゃないかな
128nobodyさん:2009/08/04(火) 11:18:18 ID:???
こまけえ話はいいんだよ
とりあえず>>116は勉強不足
実力に見合ったとこからやらないと
いきなり飛び級してもついていけなきゃ意味がない
かえって遠回り
129nobodyさん:2009/08/04(火) 11:18:31 ID:???
1ページ辺りの表示件数は制御するけど
条件は全部無条件にするって意味じゃね
130nobodyさん:2009/08/04(火) 11:21:06 ID:???
>>116,120,121
SQL Injection も指摘しておく
131nobodyさん:2009/08/04(火) 11:25:30 ID:???
>>130
そこまで言い出すと余計混乱すると思うw
132nobodyさん:2009/08/04(火) 11:35:50 ID:???
かもしれないが,実システムでは避けては通れない道なんだから
オミットできるものではない
133nobodyさん:2009/08/04(火) 11:58:23 ID:???
まぁSQLインジェクションなんざXSSと同じで関数1つでどうにかなる問題だけどな
134nobodyさん:2009/08/04(火) 12:01:11 ID:???
$_POST['town_cd'][0] = " '; DELETE '物件表";

こんなデータが入ってきたらどうするんだろう
135nobodyさん:2009/08/04(火) 12:04:14 ID:???
くだ質でもそこまで考慮した回答を提示しろって事か。
ただ、要点しぼらないと余計わからなくなるかもしれないし。

悩み所だな。
136nobodyさん:2009/08/04(火) 12:12:43 ID:???
PHPにはmysql_real_escape_stringとかデータベース用のエスケープ関数んだから。
インジェクションの被害は1億円超える事例もあるし(ttp://internet.watch.impress.co.jp/cda/news/2006/11/29/14076.html
実際にネットに公開するような使い方だしさ
137nobodyさん:2009/08/04(火) 12:34:12 ID:???
XSS 対策には引数が必要な罠
138nobodyさん:2009/08/04(火) 12:38:54 ID:???
>>137
kwsk
139nobodyさん:2009/08/04(火) 12:41:13 ID:???
ENT_QUOTESだろ
140nobodyさん:2009/08/04(火) 12:50:09 ID:???
>>139
付けないとどうなんの?
141nobodyさん:2009/08/04(火) 13:02:39 ID:???
142nobodyさん:2009/08/04(火) 13:16:50 ID:???
function escape($str){
  return stripslashes(htmlspecialchars($str,ENT_QUOTES));
}
$_GET = array_map("escape", $_GET);

1つずつエスケープするのは面倒なので俺ならこうするな
143nobodyさん:2009/08/04(火) 13:31:09 ID:???
出力時にエスケープしてください
144nobodyさん:2009/08/04(火) 13:33:01 ID:???
>>141
kwsk
145nobodyさん:2009/08/04(火) 13:46:42 ID:???
>>143
出力時のうっかりエスケープ忘れを防げないよね。
なので >>142 が安全。
146nobodyさん:2009/08/04(火) 14:03:59 ID:???
うっかりエスケープ忘れしてしまうような設計なら問題あり
147nobodyさん:2009/08/04(火) 14:08:48 ID:???
無条件でstripslashes、$_GET上書きに違和感を感じるが・・・

>>145
出力時のうっかりミスを考えるなら、その関数を入れ忘れるのも考慮しないといけないんじゃ?
そしてそのリスクって変わらないと思うんだけど。
スクリプト内の色々な箇所でecho出力してるわけじゃないでしょ?
148nobodyさん:2009/08/04(火) 14:12:13 ID:???
>>142 は一か所に入れておけば済むが、
出力時のエスケープは何箇所かに及ぶため、
人間である限りうっかりが起こる。
失敗学的に 142 のようなのを一か所だけ、が安全。
149nobodyさん:2009/08/04(火) 14:18:26 ID:???
入力時にエスケープするのは意味あいが変わるじゃん
エスケープした時点で受け取った入力内容と異なるデータになっちゃう
セキュリティを考慮しても違和感のあるプログラミングは避けたほうがいいと思う
入力時にエスケープは個人的にはないわー
150147:2009/08/04(火) 14:22:16 ID:???
>>148
やっぱり設計思想というか考え方の差だね

俺の場合は出力箇所はスクリプト内で常に1箇所にしてるのと、
出力する変数は全て一つの表示用配列に入れ、出力時に1回 >>142 のようにエスケープすれば良いようにしてる。
だから安全度は変わらないと思う。

そろそろフレームワーク使えと言われそうだw
151nobodyさん:2009/08/04(火) 14:22:45 ID:???
「違和感」を感じるかは、
セキュリティを重視するか、
セキュリティを軽視したコードを書くかの主観の問題。
セキュリティを重視すれば違和感を感じない。

毎月のようにある Web アプリの XSS 脆弱性は、
まったくエスケープしていないのではなく、
出力時にエスケープしているため。
152nobodyさん:2009/08/04(火) 14:28:59 ID:???
自分はフレームワークでも >>142 みたいのを入れてるよ
153nobodyさん:2009/08/04(火) 14:30:21 ID:???
echo何度も実行するより$echo .= 〜みたいにつなげていって最後に出すのが速度的にもいいね。
154nobodyさん:2009/08/04(火) 14:32:41 ID:???
$_GET全てに無条件でエスケープは無いな
受け取ったデータ全てが画面表示されるわけでもないし
155nobodyさん:2009/08/04(火) 14:44:12 ID:???
XSS 脆弱性を出す人はみんなそう言うんだよ
156nobodyさん:2009/08/04(火) 14:44:17 ID:???
URLの長さの上限はIEで2100バイト、Apacheで8190バイトだし変換コストでの問題は無いと思う
157nobodyさん:2009/08/04(火) 14:45:13 ID:???
>>151
出力時にエスケープしているのにXSS 脆弱性があるってのはどういう状況?
できれば解説お願いします。

単に「うっかりミスが出やすい」という話?
158nobodyさん:2009/08/04(火) 14:46:58 ID:???
セキュリティ云々じゃなくて単純に変なだけでしょ
とにかく$_GET $_POSTは有無をいわさずエスケープっておかしいよ
入力値はまずチェック(バリデーション)からはいるでしょ?
わざわざエスケープ済みのデータを基準にしてチェックするわけ?
入力時エスケープにするとしてもタイミングが悪いよね?
やるとしてもデータ格納直前にやるべきでない?
159nobodyさん:2009/08/04(火) 14:51:53 ID:???
htmlspecialcharsは表示直前
エスケープはDBに入れる直前が基本だろ
160nobodyさん:2009/08/04(火) 14:52:01 ID:???
ううむ・・・
色々調べてみたけど
入力時エスケープによって脆弱性が生まれると主張する人も結構いるね
161nobodyさん:2009/08/04(火) 14:52:57 ID:???
htmlspecialcharsは表示直前
DBに入れるのは受け取った生のデータが基本だろ
162161:2009/08/04(火) 14:53:50 ID:???
もちろんSQLインジェクション用のエスケープはするよ
163nobodyさん:2009/08/04(火) 14:55:46 ID:???
たぶんうっかりミスで過去にひどい目にあったんだろ。
164nobodyさん:2009/08/04(火) 14:56:27 ID:???
「htmlspecialcharsは表示直前」だと「うっかり」忘れる。
世の Web アプリの XSS 脆弱性のほとんどはこの「うっかり」。
だから、最初の段階でエスケープ。

従来のソフトウェア工学的には変かもしれないけれど、
人間工学的には必要。
165nobodyさん:2009/08/04(火) 14:57:20 ID:???
議論がループしている。
>>142- から再読を。
166nobodyさん:2009/08/04(火) 14:59:28 ID:???
ただの個人の主張をさも学問ぶるとか。。
167nobodyさん:2009/08/04(火) 15:04:57 ID:???
うっかりミスというかルール作りすればそんなのおきないでしょ
たとえば文字列出力時は

function es($str) {
 echo htmlspecialchars($str, ENT_QUOTES);
}
es("<strong>ほげー</strong>");
っていう風にやるとか

voidにしたけどStringにして
echo es("<strong>ほげー</strong>");
にするとか

必ず何かを通すようにルール作りしとけばよい
168nobodyさん:2009/08/04(火) 15:10:01 ID:???
うっかりDBパスワードをechoしてしまうかもしれないからDBは使用厳禁ってか?
169nobodyさん:2009/08/04(火) 15:11:02 ID:???
>>167
たぶんそのルールを忘れるって事だと思うぞ。
議論は平行線のままだろうな。

厳密なコーディング規約を作れば良い
→ルールを守らない奴がでてくる

しっかりテストすれば良い
→テストに抜けがあるかもしれない

こういう事だろ?
170nobodyさん:2009/08/04(火) 15:14:27 ID:???
>>169
コードレビューとかしないの?
171nobodyさん:2009/08/04(火) 15:16:50 ID:???
「必ず何かを通すようにルール」や
「コードレビュー」によって 100% 見落としがなくなりますか?
172nobodyさん:2009/08/04(火) 15:27:26 ID:???
じゃ最初の段階でエスケープするのは絶対忘れないの?
173nobodyさん:2009/08/04(火) 15:32:53 ID:???
>>172
子供じゃないんだから…。

「一か所に入れるだけ」というルールは守られやすいし、
コードレビューでも一か所を見るだけだから
見落としの可能性は極めて低いでしょう?

その逆に、表示直前だと、ページ数が数百、
出力箇所が数千ある場合、
見落とす確率が非常に高くなるよね。
そして、それこそが Web アプリの脆弱性なんですよ。
174nobodyさん:2009/08/04(火) 15:48:12 ID:???
規模が大きいとエスケープの確認するだけで数時間いるかもね
175nobodyさん:2009/08/04(火) 15:54:07 ID:???
その数時間を 20 回、100 回と繰り返せば、確実に見落とすから。
176nobodyさん:2009/08/04(火) 17:25:09 ID:???
設計がヘボいからそういう考えに陥る
177nobodyさん:2009/08/04(火) 17:38:56 ID:???
>>176
ヘボくない設計って?
178nobodyさん:2009/08/04(火) 19:47:41 ID:???
ウェブアプリの脆弱性君
お前のアプリケーションは入力データをそのまま出力するだけなのか
信頼しないデータは入力されたものだけなのか
次のスクリプトを読んで>>142が無価値なものだと気付こうぜ

<?php $uri = $_GET['uri']; $filename = apache_lookup_uri($uri)->filename; ?>
URI <?php echo $uri; ?> に対するファイル名は <?php echo $filename; ?> です。

例外処理は本質じゃないので省いてあります
179nobodyさん:2009/08/04(火) 21:48:45 ID:???
>>173
>その逆に、表示直前だと、ページ数が数百、
>出力箇所が数千ある場合、
>見落とす確率が非常に高くなるよね。

普通はMVCのビューに変数を渡す時、またはビューが変数を出力
する時に一括してエンティティ化や文字コード変換などの出力処理
をかけるんだよ。
カプセル化して出力には必ずビュークラスを通すようにしておけば
目視で全部確認するなんて前時代の方法はいらない。

>子供じゃないんだから…。

100%とか言い出したのはそっちだろ?
本題に自信がないのか知らんけど煽りで煙に巻くのはやめてほしいね。
180nobodyさん:2009/08/04(火) 22:00:34 ID:???
たまに>>142みたいなの湧くけど
HTML以外への出力、例えばメールとかPDFとかに乗っける場合は
わざわざ元に戻すのかな?
181nobodyさん:2009/08/04(火) 22:01:05 ID:???
マクロ用意しとけばうっかりなんておきねえよ
182nobodyさん:2009/08/04(火) 22:02:32 ID:???
>>178
これの実行結果はどうなるの
183nobodyさん:2009/08/04(火) 22:33:37 ID:???
>>180
まあ、そうだろうな。

意外と、メールはすべてHTMLメールで、
PDF出力はHTML2PDF的なものを使う、
とかかも知れんけど。
184nobodyさん:2009/08/05(水) 00:04:48 ID:QkW6R4Ei
一つのテーブルに項目が多いので、ループでうまくMYSQLにINSERTしたいのですが、
スマートなやり方が思いつきません。どなたかテクニックを教えてください。

テーブル名:user
id  =>(主)
grade
first_name1
last_name1
first_name2
last_name2
sex
birth_day
school
tell
tell2
zip_code
add1
add2
mail
で、項目名がキーで連想配列(arr)に入ってるとしてお願いします。
185nobodyさん:2009/08/05(水) 00:09:11 ID:???
俺はその手のはテーブル構造を書いたArrayをまわすようにしてる。

でも、値によって保存方法のルールが複雑なら、別に愚直に長く
書いてもいいと思うぜ。
186nobodyさん:2009/08/05(水) 01:09:35 ID:8EYjxJv2
$query = "select * from 物件表 where 1";
なんで1が必要なんでしょうか?
foreach ($_POST['town_cd'] as $key => $val) {
 $query .= " or 市町村id={$val}";
}
後この$query .= " or 市町村id={$val}"; は
なんのために必要なんですか?
ぜんぜんわかりません。
教えてください。
こういうことが書いてあるサイトがあれば教えてください
187nobodyさん:2009/08/05(水) 01:18:57 ID:???
SQLスレでやれ
188nobodyさん:2009/08/05(水) 01:19:46 ID:???
>>186
where 1は全件検索
そのSQLだと
select * from 物件表 where 1 or 市町村id=1
とかになるから結局全件表示されちゃうんじゃね?
見直したほうがいいよ
189nobodyさん:2009/08/05(水) 01:29:22 ID:8EYjxJv2
$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 市町村id={$val}";
  continue;
 }
 $query .= " or 市町村id={$val}";
}
or市町村id={$val}"; ってなにをしているの?
もし板違いならどこを参考にすればいいの?
190nobodyさん:2009/08/05(水) 02:32:30 ID:FCm+s8yN
【OS名】FreeBSD 6.2
【PHPのバージョン】php5.2.3
【連携ソフトウェア】mysql4.0.27
【質問内容】
時間とともに常に変化していく折れ線グラフを表示させたいんだけど、
(ページを更新しなくてもずっと動いている折れ線グラフ。
  株価のようなグラフがリアルタイムで動いていくイメージです)
これを実現するためには何をどうすればいいのか方向性を教えてください。

とりあえず今はjpgraphを使ってグラフを描こうとしてるんだけど、
ページを更新させずにグラフを動かすっていうのがさっぱり分かりません。

ソケットというものを使う必要があるの?
そもそもPHPで作れるの?JavaScriptとかも使うの?
こういうことを勉強しとけ、この本orサイトを読めっていうのがあれば
教えてください。
191nobodyさん:2009/08/05(水) 02:37:48 ID:???
ajaxとグラフを表示させるjavascriptライブラリ
動的に更新するには難しいかも
ttp://www.html5.jp/library/graph_line.html
192nobodyさん:2009/08/05(水) 06:10:53 ID:???
>>189
select * from 物件表 where 市町村id=1 or 市町村id=2 or 市町村id=3
なんてのを想定してるんだろ?
そのままの意味じゃねえか
この意味がわからないならSQLの勉強しろとしかいいようがない
193nobodyさん:2009/08/05(水) 07:54:39 ID:???
test
194nobodyさん:2009/08/05(水) 09:33:01 ID:???
>>190
jpgraphでグラフを描けるのであれば、後はページの一部をjavascriptで定期更新するだけ。

ajax timerで検索してみると良いかも。
後はjavascriptのスレで質問してくれ。
195119:2009/08/05(水) 10:52:28 ID:???
>>188
ぼけてた・・・andじゃなくてorだもんな。

みなさん、間違った回答をしてしまいすみませんでした。
196nobodyさん:2009/08/05(水) 11:02:59 ID:???
>>180
そう。戻す。

HTML 出力時に「わざわざ」直前にエスケープして
それを忘れて XSS 脆弱性を出すように、
メールや PDF の「わざわざ」直前にデエスケープして
それを忘れて脆弱性じゃないバグの方を選択する。

それに、HTML より、メール、PDF の方が出力箇所が圧倒的に少ないから。

だから脆弱性を重視するかどうかなんだって。
197nobodyさん:2009/08/05(水) 11:15:13 ID:4RYOgnxK
PHP4年使ってきたけど、未だにPECLがわかりません。
なので今日しっかり理解しようと思います。

PECLはどういった位置づけなのでしょうか。
以前まで、PEARのようなライブラリと思っていたのですが、
最近はdllのようなモジュールとしての扱いかなと思ってきました。

それで正しいのでしょうか。
198nobodyさん:2009/08/05(水) 11:34:24 ID:???
標準機能じゃ満足にできないことをやるためのもの

ペイントじゃうまくできないからPhotoshopいれたり
CADやりたいけど標準じゃないから新しく入れたりみたい
199nobodyさん:2009/08/05(水) 11:38:00 ID:8EYjxJv2
$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 市町村id={$val}";
  continue;
 }
 $query .= " or 市町村id={$val}";
}
では市町村idが多い場合、orも増えるということ?
200nobodyさん:2009/08/05(水) 11:43:52 ID:???
>>199
なぜ自分で試してみないんだ?
試した上で疑問点を質問しなさい。
201nobodyさん:2009/08/05(水) 11:43:55 ID:???
>>199
お前は何を言ってるんだ?
202nobodyさん:2009/08/05(水) 11:58:13 ID:8EYjxJv2
http://www.livein-tokyo.com/search3.php
みたいなものをどうやって作るのかしりたいんです。
まだ作ってないので、ためしようがないんです。
<li><input type="checkbox" name="town_cd[]" value="13105" />
みたくいっぱい地区が並んでいますが、この場合
$query .= " or 市町村id={$val}";
$query .= " or 市町村id={$val}";
ってならべていくの?
それとも
新しくforeach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 市町村id={$val}";
  continue;
 }
 $query .= " or 市町村id={$val}";
}
を作るの?
意味がよくわからなくてすいません。
どうやって作っているのか知りたくて。
教えてください。
203190:2009/08/05(水) 12:01:53 ID:FCm+s8yN
>>191 >>194
なるほどajaxですか。
ありがとうございます。
204nobodyさん:2009/08/05(水) 12:03:40 ID:???
>>202
前者だったら同じ値じゃないか
チェックボックスのデータはPHPで配列で受け取れるんだよ
205478:2009/08/05(水) 12:28:42 ID:???
つまりひとつずつ
$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 13105={$val}";
  continue;
 }
 $query .= " or 13105={$val}";
}
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 13106={$val}";
  continue;
 }
 $query .= " or 13106={$val}";
}
と書けるわけだ。
206nobodyさん:2009/08/05(水) 12:29:57 ID:8EYjxJv2
つまりひとつずつ
$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 13105={$val}";
  continue;
 }
 $query .= " or 13105={$val}";
}
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 13106={$val}";
  continue;
 }
 $query .= " or 13106={$val}";
}
と書けるわけだ。
207nobodyさん:2009/08/05(水) 12:53:38 ID:???
$query .= " 13105={$val}";

$query .= " 13105=".$val;

こうしたほうが速度的に早くなる
208miniyou:2009/08/05(水) 12:59:19 ID:9EvJqO1U BE:897350663-2BP(0)
CGI初心者です。以下のコードは、現在ページのURLを取得する物で、あるサイトで見つけたものですが、PHPではなく、CGIでしたいのです。CGIに直してみようと思いましたが、難しくて分かりません。PHP/CGIが得意な方、CGIに直して頂けないでしょうか。大変困っております。


if( isset($_SERVER['HTTPS']) ){
$http = ($_SERVER['HTTPS'])?'https://':'http://';
}else{
$http = 'http://';
}
define('CONFIG_THIS_URL',$http.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
$url = CONFIG_THIS_URL;
209nobodyさん:2009/08/05(水) 13:47:54 ID:???
>>202
いきなり全部作る気なのか?

疑問のある部分のコードをひとつずつ実際に実行して試してみろって。
今の調子じゃ永遠に理解できないぞ。

それともテストプログラムを作れない理由が何かあるのか?
210nobodyさん:2009/08/05(水) 13:52:39 ID:???
>>208
まずCGIという言葉の意味について勘違いしているようだから意味不明だぞ。
211nobodyさん:2009/08/05(水) 13:55:48 ID:???
>>208
PHPはApacheモジュールのほかにCGIとして動かすことが出来ますがそれでは駄目?
212nobodyさん:2009/08/05(水) 14:34:13 ID:???
CGIって大概はPerl実装のこと言ってるんだろ。そっちの噛み付き方のが意味不明。
213nobodyさん:2009/08/05(水) 14:52:01 ID:???
214nobodyさん:2009/08/05(水) 14:58:26 ID:???
>>212
cgi=perlのつもりと判断する要素がひとつでもあったか?
211のような話かもしれんし、cやruby、shとかかもしれんだろ。
決め付けるのも良くないぞ。
215nobodyさん:2009/08/05(水) 15:01:25 ID:???
皆さん、Windowsでのテスト時のファイルへの絶対パスの指定ってどうしてます?

c:\tmp\001.tmp
c:/tmp/001.tmp
file:///c:/tmp/001.tmp
色々な方法がありますが、それがベストなんでしょうか。
216mikky:2009/08/05(水) 15:03:18 ID:9EvJqO1U BE:3140726797-2BP(0)
【記述】
$http = ($_SERVER['HTTPS'])?'https://':'http://';
print $http;

結果:http://
と出力されました。


【記述】
define('CONFIG_THIS_URL',$http.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
$url = CONFIG_THIS_URL;

結果:何も表示されません
217miniyou:2009/08/05(水) 15:08:43 ID:9EvJqO1U BE:598233762-2BP(0)
名前「mikky」に間違えてました。すみません。
218miniyou:2009/08/05(水) 15:10:11 ID:9EvJqO1U BE:498528825-2BP(0)
ありがとうございました。
後は自分で調べて勉強してみます。
219nobodyさん:2009/08/05(水) 15:10:15 ID:???
>>216
下はechoもprintもしてないんだから表示されなくて当然。

であなたの質問は

・phpを、apacheのモジュールではなくcgi(という仕組みで)動かしたい
・phpを、cgiという仕組みを使いperl(php以外の言語)で動かしたい

のどっち?
220215:2009/08/05(水) 15:13:25 ID:iDK7D7+A
sage入れたまんまだった。
どれがベストなんでしょうか。

というのも
finfo_file関数で、パスが取得できずに困っています。
返り値は「false」なので、
「filename のテキスト表現、あるいはエラーが発生した場合に FALSE を返します。 」
と書いてあるので、テキスト表現が間違っているのかなと思っています。

取得は
C:/xampp/hoge.tmp
C:\xampp\hoge.tmp
両方のパスで行いましたがどっちもfalseが返ってきます。
どのようにして取得すれば良いのでしょうか。
221nobodyさん:2009/08/05(水) 15:16:32 ID:???
>>220
エラーの内容は?
222nobodyさん:2009/08/05(水) 15:32:59 ID:???
>>220
phpinfo()で表示されるパスを参考にしたらいいとおもうよ
223nobodyさん:2009/08/05(水) 16:01:42 ID:4RYOgnxK
>>221
エラーは表示されませんでした。
ただ、Falseが返ってくるだけです。

他のファイルでは正常に表示されました。
原因不明なのでいまだにエラーわからずじまいですが・・・

ありがとうございました
224nobodyさん:2009/08/05(水) 17:22:17 ID:qtFRGhoH
DB(mysql)と連携して、特定のテーブルのカラムに対してキーワード検索したいと思います
このとき、ユーザーが入力する検索キーワードが2つ以上ある時の検索手順はどうしたらいいでしょうか?
自分の考えでは

$keyAry = explode(" ", $_POST['key']);
半角スペースをキーに切り出して、出来た要素をクエリ文のwhere以下で `tgtColumn`=%keyAry[0]% AND `tgtColumn`=%keyAry[1]% …
としていくしかないかなぁと思います。
が、何か穴があるのではと思いますがわかりません。
上の配列要素の中に全角スペースがあればそれもまたexplodeのキーにして、再度検索キーワードを作り直す…くらいしか思いつきません。

何かもっと効率的に実践する方法ないでしょうか?
php5.2.8 mysql5です。よろしくお願いします。
225nobodyさん:2009/08/05(水) 18:16:42 ID:???
>>205
なんでひとつずつそんな冗長的なアホなコード書きたいの?
だいたいぜんぜん違うだろそれ
めちゃくちゃになるぞ・・・
たとえば$_POST['town_cd'] = array(13105);
が入ってたら
>>205のコードだとループ終了時点で
$query = "select * from 物件表 where 13105=13105 13106=13105";
になるだろ
あんましったかはしなくていいからちゃんと基礎から勉強してください
ループや結合演算子の動作も理解できてないじゃん
ぜんぜん理解できてないしもう1度>>7->>35を読み返した上でPHPマニュアルで1から勉強して下さい
226nobodyさん:2009/08/05(水) 18:35:47 ID:???
公開したらURL教えてね
$_POST['town_cd'] = array("; DELETE 物件表;");
を突っ込んであげるから
227nobodyさん:2009/08/05(水) 18:52:49 ID:???
$query = "select * from 物件表 where";
if (in_array("1", $_POST['town_cd'])) {
 if (preg_match("/where$/", $query)) {
  $query .= " 市町村id=1";
 } else {
  $query .= " or 市町村id=1";
 }
}
if (in_array("2", $_POST['town_cd'])) {
 if (preg_match("/where$/", $query)) {
  $query .= " 市町村id=2";
 } else {
  $query .= " or 市町村id=2";
 }
}
if (in_array("3", $_POST['town_cd'])) {
 if (preg_match("/where$/", $query)) {
  $query .= " 市町村id=3";
 } else {
  $query .= " or 市町村id=3";
 }
}
こんなんを市町村分やりたいのならもう好きにしろって感じだなw
228nobodyさん:2009/08/05(水) 18:57:54 ID:???
入れられる値を限定したいのならarrayにでも入れておけばいいさぁ
229nobodyさん:2009/08/05(水) 18:59:20 ID:???
なぜarrayにこだわる?
あれ?
230nobodyさん:2009/08/05(水) 19:07:22 ID:???
>>229
誰のレス?>
>228にいってるなら何の話をしているのかよくわからないが
一連の流れにいってるのであれば>>202のページの話ね
name="town_cd[]"
231nobodyさん:2009/08/06(木) 01:22:08 ID:???
$hoge[0]['node'] = "A"
$hoge[0]['next'] = "B"
$hoge[1]['node'] = "B"
$hoge[1]['next'] = "C"
$hoge[2]['node'] = "C"
$hoge[2]['next'] = "D"
...

の様な値から、流れ図を画像で出力したいと思っています。
上記のような値なら、
 A→B→C→D…
という画像が出力されるイメージ。

実際には、もっと複雑になり、一つのnodeから複数の線が出ることになると思うので、
できれば配列を引数で渡したら、画像を出力してくれるようなライブラリを使いたいのですが、
何か良いライブラリやサンプルはないでしょうか。

imagecreateのような、GD関数を使えば、簡単なものは実装できると思うのですが、
複雑になってくると、難しいかなと思っています。
232nobodyさん:2009/08/06(木) 08:05:29 ID:???
http://takagi-hiromitsu.jp/diary/
ひろみちゅかっけー
何をいってるのかサッパリ俺にはわからなかったがすげえなやっぱり
俺は携帯対応はさっぱりなんだけどね
233nobodyさん:2009/08/06(木) 08:21:43 ID:???
それってニコ動が出してるなじゃんくてiphone側が出してるアラートじゃないの?
234nobodyさん:2009/08/06(木) 09:02:09 ID:???
>>232
いや、わかれって。
大事なことだぞ。
235nobodyさん:2009/08/06(木) 09:42:48 ID:???
Session の扱いであって
本質的にケータイとは関係ないことだから
236nobodyさん:2009/08/06(木) 13:43:02 ID:???
>>224
preg_split()が楽。UTF-8限定ならもっと楽
$tokens = preg_split('/\p{Z}+/u', $keyword);
237nobodyさん:2009/08/06(木) 15:31:49 ID:???
$query = "select * from 物件表 where";
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 13105={$val}";
 }
}
foreach ($_POST['town_cd'] as $key => $val) {
 if ($key == 0) {
  $query .= " 13106={$val}";
}
}
238237:2009/08/06(木) 15:35:13 ID:Qt302JJo
ageてしまった。
239nobodyさん:2009/08/06(木) 15:45:10 ID:???
>>237
なんでもいいけどそのソースはなに?
$keyが0の時だけなんかしたいなら最初から
$query = "select * from 物件表 where 13105=".$_POST['town_cd'][0]." AND 13106=".$_POST['town_cd'][0];

でいいんじゃないの?
あとANDかORで繋がないと文法エラーになるよ
240nobodyさん:2009/08/06(木) 16:10:24 ID:???
まだ続いてんのか。
241nobodyさん:2009/08/06(木) 16:20:42 ID:sYopahvA
$ary = array(3, 5, 5, 9 ,2, 5, 2, 7)を
$ary = array(3, 5, 9, 2, 7)としたいです。
ルールはindexの低い順に格納し、すでに格納している値と
同じ値ならスルーする。
アルゴリズムが分かりません。教えてください。
242nobodyさん:2009/08/06(木) 16:24:57 ID:???
foreach でオリジナルの配列をまわし、新しい配列に
重複しないものだけを追加していけばいいんじゃないかな。
243nobodyさん:2009/08/06(木) 16:28:12 ID:???
244nobodyさん:2009/08/06(木) 16:30:42 ID:sYopahvA
>>243
ありがとうございます。
245nobodyさん:2009/08/06(木) 17:43:04 ID:Qt302JJo
ひとつずつくぎりたいんだ。
<?php
if( isset(13106=$_POST['town_cd'] ){
$query = "select * from 物件表 where 13106=$_POST['town_cd']
}else{
}
?>
13106のデータを出したいんだ。

どうすればいい?
246nobodyさん:2009/08/06(木) 17:46:55 ID:???
理想の入力データと出力データを書けうざい
247nobodyさん:2009/08/06(木) 17:52:38 ID:Qt302JJo
http://www.livein-tokyo.com/search3.phpこれみたく
たとえば13106、13107のデータをチェックボックスでチェック
されたら13106、13107分けて、13106の画像、説明が次で表示される。
その下に同様に13107の画像、説明が表示される。
うまく説明できないけどこんな感じです。
248nobodyさん:2009/08/06(木) 17:56:34 ID:???
$_POST['town_cd']に何が入っててどういう結果を出したいのかを書いて
249nobodyさん:2009/08/06(木) 18:00:09 ID:Qt302JJo
$_POST['town_cd']にはひとつ13106がはいっていてほしい
そして13106で検索してその土地、画像、説明文がでてきてほしい
250nobodyさん:2009/08/06(木) 18:02:46 ID:???
>>247
phpはひとまずおいといて、必要なSQL文がどのようなものになるのか理解してからきなさい。
両方一緒に質問するのは君にはムリだよ。
251nobodyさん:2009/08/06(木) 18:03:10 ID:???
13106っていうカラム名なの?
252nobodyさん:2009/08/06(木) 18:06:52 ID:???
$_POST['town_cd']は絶対に13106が入るの?
あとissetは変数がセットされてるか調べるだけisset(13106=$_POST['town_cd'])なんて使い方は出来ない
253nobodyさん:2009/08/06(木) 18:11:22 ID:Qt302JJo
そうか。もうぜんぜんだめだ。
説明ができない。
$_POST['town_cd']はチェックされた数値が入る
254nobodyさん:2009/08/06(木) 18:15:38 ID:Qt302JJo
$_POST['town_cd']にはチェックされた数値が入って
それをチェックした分だけ画像や説明文をsql文で呼び出す
プログラムを作りたい。
255nobodyさん:2009/08/06(木) 18:23:56 ID:???
変数**には**から**の範囲の数値文字列が配列で複数個入っていて〜とか
SQLのデータ構造は主キーが**で〜とか言ってくれないと
256nobodyさん:2009/08/06(木) 18:44:24 ID:???
言っていることは分かるけど、
魚を与えるより、釣りの仕方を教えたい。

SQL は忘れて、まずは PHP のチェックボックスを学んだ方がいいよ。
257nobodyさん:2009/08/06(木) 18:58:33 ID:???
なんか面倒になってきたな

DBの内容を以下 テーブル名bukken
物件番号,土地,画像,説明文
001 東京 001.jpg 東京の物件です
002 大阪 002.jpg 大阪の物件です
003 京都 003.jpg 京都の物件です

んで選択画面のHTMLで
SELECT * FROM bukkenのクエリを発行し、結果を$bukkenに入れる
foreach($bukken as $value){
echo '<input type="checkbox" name="bukken[]" value="'.$value[物件番号].'">';
echo $value[土地];
・・・略
}

送信先で
2次元配列$_POST['bukken']に物件番号が送られてくる
ここまでいいか?
258nobodyさん:2009/08/06(木) 19:11:27 ID:???
>>236
どうもありがとうございます
たすかりました
259nobodyさん:2009/08/06(木) 19:18:51 ID:???
ローマ字変数名きめぇ
260nobodyさん:2009/08/06(木) 19:40:38 ID:???
ここまで分かるなら実際に動かしてみろよ・・
261nobodyさん:2009/08/06(木) 20:16:35 ID:BSJAUmaX
MT互換というか、できるだけMTそのまんまの無料ブログサービスを教えてください
262nobodyさん:2009/08/06(木) 20:17:47 ID:BSJAUmaX
誤爆しました
すみません
263nobodyさん:2009/08/06(木) 21:17:51 ID:???
>>247
あのさ・・・DB使ったシステム構築したことあるの?
13106と13107のデータをOR検索したら両方のデータがとれるじゃん
あとはとってきたデータを順番に表示してるだけでしょ
クエリ送る段階で分ける必要はぜんぜんないんだけど
264nobodyさん:2009/08/06(木) 21:25:06 ID:???
何というか、2chにも親切な人はいるんだな
265nobodyさん:2009/08/06(木) 21:41:08 ID:mexO5YhN
ども PHP書くとき何のソフト使ってます?
266nobodyさん:2009/08/06(木) 21:42:01 ID:???
vi
267nobodyさん:2009/08/06(木) 21:55:09 ID:???
viとは硬派だな

俺はvim + debugger.vim + Xdebug
268nobodyさん:2009/08/06(木) 22:07:48 ID:???
最先端のメモ帳
ていうかこういう話題は別のスレだったきがするが
269nobodyさん:2009/08/06(木) 22:29:34 ID:???
PHPエディタ(スタンドアロン)
270nobodyさん:2009/08/06(木) 22:39:42 ID:???
PHPエディタ(IDE)からEclipseに移行中
でも重くてうんざりする。

PHPエディタのスタンドアロン版が不意に更新されたので、
IDE版もいろいろ不満点が解消される時が来るのかなーと少し期待。
271nobodyさん:2009/08/06(木) 22:39:47 ID:???
PDT

エディタは別スレあるが、全然書き込み無い
komodoに期待してる。
272nobodyさん:2009/08/06(木) 22:41:57 ID:???
>>270
>PHPエディタのスタンドアロン版が不意に更新されたので、

全然知らなかった。
だがたいした修正じゃないなw
273nobodyさん:2009/08/06(木) 22:56:27 ID:???
秀丸だな
274nobodyさん:2009/08/06(木) 23:03:28 ID:???
サクラ使ってる俺は少数派?
275nobodyさん:2009/08/06(木) 23:10:38 ID:???
>>274
(゚∀゚)人(゚∀゚)ナカーマ
276nobodyさん:2009/08/06(木) 23:12:14 ID:???
>231
PHP関係なくなって恐縮だが、graphvizを使うといい。
277nobodyさん:2009/08/07(金) 01:52:22 ID:???
>>276
おおお…理想通りなソフトすぎて、感動してしまった…
これから色々調べて使ってみたいと思います。
本当にありがとうございます。
278237です。:2009/08/07(金) 03:45:30 ID:ts6lfKVw
257様続きをどうぞ。
勉強になります。
遅くなりましてすいません。
279nobodyさん:2009/08/07(金) 03:55:38 ID:xbsfYg7f
DWみたくF12押すと、FTPでUPしてブラウザ立ち上がってそのページ表示
を自動でしてくれるエディタねいですか?
280nobodyさん:2009/08/07(金) 04:56:19 ID:???
>>278
おいおい
テストをレン鯖でやる気かい?
xamppでもいれて開発しなさい
281nobodyさん:2009/08/07(金) 05:06:52 ID:???
rubyでソケットで通信する際に
TCPSocket.open("localhost", port)
のように書くのを、
phpではどのように書けばいいのでしょうか?
282nobodyさん:2009/08/07(金) 05:12:03 ID:???
fsockopenあたりしらべてみ
283237です。:2009/08/07(金) 06:52:46 ID:ts6lfKVw
257様そこまでは理解できています。
続きをお願いします。
284237です。:2009/08/07(金) 06:54:16 ID:ts6lfKVw
続きをかいてください。
285nobodyさん:2009/08/07(金) 09:06:46 ID:???
しね
286nobodyさん:2009/08/07(金) 09:11:33 ID:???
お前は何なんだ...。
287nobodyさん:2009/08/07(金) 09:13:55 ID:???
結局は、誰かに代わりに考えて欲しいだけなのか。
288nobodyさん:2009/08/07(金) 09:57:38 ID:???
つーか宿題なんじゃねーの?
289nobodyさん:2009/08/07(金) 10:07:49 ID:???
俺が小学生の頃はそんな宿題はなかったなー。
290nobodyさん:2009/08/07(金) 11:09:49 ID:???
>>279
xyzzy + browserex + ftpupdate
291nobodyさん:2009/08/07(金) 11:58:45 ID:???
>>283
あとは送られてきた物件番号だけを問い合わせればいいから
$sql = "SELECT * FROM bukken WHERE ";
$where ="物件番号='" . implode("' OR 物件番号='",$_POST['bukken']) . "'";

$sql .= $where;

$sql変数のクエリを発行すれば良い


わかったらもうくんな
292nobodyさん:2009/08/07(金) 12:13:05 ID:???
>>291
これはひどい
293237です。:2009/08/07(金) 12:37:32 ID:ts6lfKVw
$sql = "SELECT * FROM bukken WHERE ";
$where ="物件番号='" . implode("' OR 物件番号='",$_POST['bukken']) . "'";
最後の一文があんまりよくわかりません。
ここの部分を教えてください。
よろしくお願いします。
宿題ではないです。
勉強のためです。
しねとかやめてください。
294237です。:2009/08/07(金) 12:43:30 ID:ts6lfKVw
http://oshiete1.watch.impress.co.jp/qa4659300.html
これと同じ考え方と考えてよろしいのでしょうか?
295nobodyさん:2009/08/07(金) 12:43:53 ID:???
>>293
勉強なら implode() のマニュアル読んだ?
296237です。:2009/08/07(金) 12:54:05 ID:ts6lfKVw
読みました
297nobodyさん:2009/08/07(金) 12:54:57 ID:???
勉強なら自分で考えろよ
しね
298nobodyさん:2009/08/07(金) 13:09:37 ID:???
読んだのなら分かるだろ
読んでないから分からない
299nobodyさん:2009/08/07(金) 13:09:46 ID:???
だから実際にプログラムを書いて実行しろよ。
そうすれば一目瞭然だろうが。
どんだけ馬鹿なんだ。
300nobodyさん:2009/08/07(金) 13:16:18 ID:???
>>296
実行できる環境は整えたのか?
コード自分で書いて試してみて、ちっとは試行錯誤した上で質問してくれないと。
301237です。:2009/08/07(金) 13:44:29 ID:ts6lfKVw
if( isset($_POST['bukken'] and is_array($_POST['bukken']) {
$a = '`'bukken'` in ("' .implode('","' , array_map('mysql_real_escape_string', $_POST[''bukken'']) ). '")';
$sql = "select * from bukken where ID in ('$a')
でどうかな?
302237です。:2009/08/07(金) 13:45:54 ID:ts6lfKVw
こんな感じで試してみたいと思います。
ありがとうございました。
303nobodyさん:2009/08/07(金) 13:46:03 ID:???
implode() のマニュアルを読んだ上で何が分からなかったの?
304nobodyさん:2009/08/07(金) 13:55:39 ID:???
1行目から突っ込みどころ満載なコードだな
305nobodyさん:2009/08/07(金) 13:56:38 ID:ts6lfKVw
だめかな?
306nobodyさん:2009/08/07(金) 13:57:17 ID:???
上の方で誰かがissetについて指摘してくれてたのにな。
307nobodyさん:2009/08/07(金) 13:59:42 ID:???
と思ったら単に閉じてなかっただけか。
失礼。
308nobodyさん:2009/08/07(金) 14:06:05 ID:???
書き直してやろうと思ったが2行目が解読不能でやめた
309nobodyさん:2009/08/07(金) 14:14:13 ID:???
array_key_exists 使え。
310nobodyさん:2009/08/07(金) 14:14:52 ID:???
expression and expressionなんて使い方出来たっけ?(expression=任意の式)
311nobodyさん:2009/08/07(金) 14:44:08 ID:???
312nobodyさん:2009/08/07(金) 15:05:32 ID:???
&&と同じか、でも普通使わないだろう
313nobodyさん:2009/08/07(金) 15:25:00 ID:???
え、なんで?
314nobodyさん:2009/08/07(金) 15:33:56 ID:???
演算子の優先順位表を読んでも理解できないんだろ
315nobodyさん:2009/08/07(金) 16:46:01 ID:???
pythonで
>>> import urllib2
>>> req = urllib2.Request(url='https://localhost/cgi-bin/test.cgi',
... data='This data is passed to stdin of the CGI')
>>> f = urllib2.urlopen(req)
>>> print f.read()
と書くのを、phpで書くとどうなりますか?
316nobodyさん:2009/08/07(金) 16:49:04 ID:???
echo 'read the thread title.';
317nobodyさん:2009/08/07(金) 17:09:00 ID:???
>>316
pythonスレで聞いてみます
318nobodyさん:2009/08/07(金) 17:19:03 ID:???
そんなにID出したくないのか
319nobodyさん:2009/08/07(金) 18:08:28 ID:/dIJ9UWZ
初歩的な質問をさせてくださいませ。

1ページ目:名前を入力
2ページ目:情報を入力
3ページ目:情報を入力
4ページ目:1,2,3の情報を出力

フォームとPOSTを使って上記のようなことをしたいです。

1ページ目で入力した数値を4ページ目で受け取りたいのですが、

<form action="2ページ目" method="post">

と記入しないと、submitを押した時に順番にページが表示されません。

そして、4ページ目で

print ( $_POST['name'] );

と入力しても、 actionで指定したページが2ページ目なので、文字を受け取れません。
この場合どうすればよいのでしょうか?

どうぞよろしくお願いします。
320nobodyさん:2009/08/07(金) 18:18:36 ID:???
>>319
セッション又はhiddenで受け渡すのが一般的
321nobodyさん:2009/08/07(金) 18:47:36 ID:/dIJ9UWZ
>>320さん

ありがとうございます。調べてみます。
322nobodyさん:2009/08/07(金) 23:42:08 ID:???
俺はhidden渡しで、変数名なども全部そのまま渡す事が多いな。
入力値検証(バリデート)のロジックが丸ごと使いまわせるし、途中のページを削ったり確認ページとかを増やしたり、などの処理も楽になる。
323nobodyさん:2009/08/08(土) 01:07:58 ID:???
失礼します。2つほど質問お願いします。
$_GETでURLから引数渡すときに
http://〜/index.php?a=1&b=2&c=abc
とかやるじゃないですか。その場合の?以降全てを一つの文字列として受け取りたい場合
どうすればよろしいのでしょうか?一つ一つ分けての受け取り方は$_GET['a']とかすればいいのは
わかるのですけれども。


また日本語をc=%E3%82%A2%E3%83%8B%E3%83%A1のようにエンコードも日本語に変換されることなく
エンコードされたまま文字列として受け取りたい場合どうすればよいでしょうか?
一つの引数で受け取った場合$_GET['c']=アニメ とかなってしまってデコードされちゃうようなのですが。

よろしくお願いします。
324nobodyさん:2009/08/08(土) 01:20:37 ID:???
すいません自己解決しました
2つとも
$uri = $_SERVER['REQUEST_URI'];
$ary_uri = explode("?",$uri);
$arg = $ary_uri[1];
print $arg;

これで解決できるようですね。お騒がせいたしました
325nobodyさん:2009/08/08(土) 01:25:31 ID:???
>>323
$_SERVER["QUERY_STRING"]
ってのもあるぞ。
326nobodyさん:2009/08/08(土) 01:30:45 ID:???
http://phpspot.org/blog/archives/2006/04/phpajax_lace.html
このlaceというチャットを設置したいのですが、設定し、設置した後、
ブラウザでそのディレクトリを開くと、「自動転送がループしています」と
表示されます。

これはどうしたらいいのでしょうか?ちなみにfirefoxです。
327nobodyさん:2009/08/08(土) 01:30:48 ID:???
そのまま出ry・・なんでもない
328nobodyさん:2009/08/08(土) 01:32:37 ID:???
ぶほw一行ですんだwサンクスwww
329nobodyさん:2009/08/08(土) 01:40:52 ID:???
>>323
解決してるだろうけどURLエンコードはurlencodeという関数があるよ
330nobodyさん:2009/08/08(土) 01:44:04 ID:???
>>329 うす。一つ一つ受け取る場合それやろうかとおもってました。
重ねてサンクス
331nobodyさん:2009/08/09(日) 04:34:18 ID:jT8fv9uV
カレンダーを出力する(header関数で)プログラムがあるとします。
カレンダーの中身はDBから引き出すとして、そのDBは情報がUTF-8で保存されていて
そのサイト自体もUTF-8だとします。
ここで、この出力するプログラムを外部サイトに埋め込んでその外部サイトに
出力するとしたら、外部サイトの文字コード(SJIS)に合わせて文字コードを変更する必要があるんでしょうか?
(header関数で制御する部分)
332nobodyさん:2009/08/09(日) 09:50:35 ID:???
>>331
やってみたら?
333nobodyさん:2009/08/09(日) 10:51:17 ID:jT8fv9uV
>>332
環境づくりをどうやったら良いのかわからないんです。マシン一台しかないし。。
PHP以前の話になってしまいますが、apacheのエンコード設定がUTF-8でも、
ページの文字コードってのは最終的に
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
で決定されるんでしょうか?
それなら同じサーバで1ページだけ、動かせば良いのかな
334nobodyさん:2009/08/09(日) 11:05:21 ID:???
HTTPヘッダの Content-Type: */*; charset=* で指定されたエンコーディングが最も優先される

カレンダーを表示するためにはPHPのコードを実行させるのか?
それともiframeやscriptを使って結果だけ読み込ませるのか?
前者なら変換する必要がある
後者なら変換しなくていいがContent-Typeヘッダで明示し、更にscript要素を使う場合はcharset属性も指定する
335nobodyさん:2009/08/09(日) 11:50:49 ID:???
header関数でカレンダーを出力って時点でよくわ
336nobodyさん:2009/08/09(日) 12:27:55 ID:???
なんで能力無い人に限って「〜とします」とかさも抽象論みたいな言い回し使うんだろうね。
「私の環境は〜です」ってちゃんと言えよ。
337nobodyさん:2009/08/09(日) 12:28:38 ID:Ho1U3iRt
>>333
文字化けで悩むのは時間の無駄だから文字コードは全てをUTF-8に統一な
文字コードの設定が必要なモノ
apache
PHP
DB
HTMLの出力
HTMLやPHPなどのファイル






338nobodyさん:2009/08/09(日) 12:49:55 ID:???
>>334
詳しい説明ありがとうございました
色んなやり方を試してみたいと思います
>>337
ありがとうございました
339nobodyさん:2009/08/09(日) 18:48:31 ID:j1FcAzsW
>>336
言えよ ってのはどうかと^^;;
340nobodyさん:2009/08/09(日) 18:50:04 ID:???
あん?臭い口開けるな
341nobodyさん:2009/08/09(日) 19:01:49 ID:j1FcAzsW
別に開けてませんけど^^;
342nobodyさん:2009/08/10(月) 03:54:04 ID:GiR2mz2l
PHPでバッチスクリプトを書く場合、

#!/bin/env php
<?php

から始めるので合ってますか?
343nobodyさん:2009/08/10(月) 09:28:44 ID:???
>>342
動かそうとしてるPHPがCGIモードだとHTTPヘッダがでるかも。
php -q としておけば?

あとenvは/usr/binにあるとは限らない。
344nobodyさん:2009/08/10(月) 09:29:55 ID:???
ごめん、envは、/usr/bin/じゃなくて、/bin にあるとは限らない。
345nobodyさん:2009/08/10(月) 19:25:14 ID:8T/ZNI95
http://up2.viploader.net/pic/src/viploader1125909.bmp
画像のように、色分けした枠ごとに送信先を変えたいのですが、上手い方法を教えてください。
「変更」と「詳細」は思惑通り行くのですが、チェックの項目を、下の「削除」と「メール作成」で扱おうとすると
上手くいきません。
上の表はSQLから取り出したデータをループで表示しています。
本当なら「詳細」はIDからリンクさせたいのですが、IDのデータをリンクで渡すやり方がわからなく、仕方ないので
無理やりやっています。
htmlスレの方で聞いた方が良いでしょうか。
346nobodyさん:2009/08/10(月) 19:31:18 ID:???
>>345
ヒント、JavaScript使わないと無理そう
後はHTMLスレで。
347nobodyさん:2009/08/10(月) 21:16:16 ID:???
赤→緑→黒の順番でformを書いてスタイルシートで整形する
348nobodyさん:2009/08/10(月) 21:47:57 ID:???
>>345
>チェックの項目を、下の「削除」と「メール作成」で扱おうとすると
>上手くいきません。
もうちょっと具体的に
2列分ぐらいのHTMLをここに書いてみるべし
たぶんcheckboxの受け渡し方がおかしいとは思うが
<input type="checkbox" name="id[5854]">
みたいにして配列で渡すとよい


>本当なら「詳細」はIDからリンクさせたいのですが、IDのデータをリンクで渡すやり方がわからなく、仕方ないので
>無理やりやっています。
<a href="shousai.php?id=5854">5854</a>みたいにGETで渡せばよい
349nobodyさん:2009/08/10(月) 22:25:45 ID:???
えっ
350nobodyさん:2009/08/10(月) 23:37:48 ID:???
>>343
ありがとうございました。
351nobodyさん:2009/08/11(火) 04:26:11 ID:OhLUXqwk
シバン中envでパスを指定したphpを、
cronで実行すると、env php部分でエラーになります。
envがphpを見つけられないようです。

phpをフルパスで指定した場合、
あるいはターミナルから実行した場合、
あるいはスクリプトがrubyだった場合は問題ないです。

cron×env×phpの時に問題になります。
これは何故でしょうか?
352nobodyさん:2009/08/11(火) 05:42:26 ID:???
盗聴ってLan内の事だよね?

353351:2009/08/11(火) 08:28:51 ID:???
cron実行時の環境変数PATHが貧弱なせいでした
354nobodyさん:2009/08/11(火) 10:36:18 ID:???
というか実行するサーバが決まっているならphpのフルパスを書いた方が良いよ
355nobodyさん:2009/08/11(火) 11:28:36 ID:???
while($row=$stm->fetch()){
for($i=0;$i<23;$i++){
if($i==0){
echo "<td align=\"center\">";
echo "<input type=\"checkbox\" name=\"check[]\" value=\"".$row['id']."\"/></td>";
}else if($i==1){
echo "<form method=\"POST\" action=\"../new_student.php\">";
echo "<td><input type=\"submit\" value=\"変更\"/></td>";
echo "<input type=\"hidden\" value=\"".$row['id']."\" name=\"id\">";
echo "</form>";
}else if($i==2){
echo "<form method=\"POST\" action=\"../display/student_page.php\">";
echo "<td><input type=\"submit\" value=\"詳細\"/></td>";
echo "<input type=\"hidden\" value=\"".$row['id']."\" name=\"id\">";
echo "</form>";
}
else{
echo "<td> ".$row[$i-3]."</td>";
}
}
echo "</tr>";
}
この下に削除とメールボタンがあるのですが、チェックボタンの間に変更と詳細があるので
formをまたがせる事が出来ません・・・・
簡単に言うと、
<チェックボタンのform>
<変更のform></変更のform>
<詳細のform></詳細のform>
</チェックボタンのform>
のような事がしたいです。
356nobodyさん:2009/08/11(火) 11:36:45 ID:???
>>355
もらったレスはシカトか
357nobodyさん:2009/08/11(火) 11:37:51 ID:???
>>355
>>345の人?

formをネストさせないで、>>347さんの言うようにcssで整形するか
押すボタンによってaction先をjavascriptで変える

どっちにしてもphpの話題ではない。板違い。
358nobodyさん:2009/08/11(火) 12:01:47 ID:+4lP6KeF
お願いします

--------------------------
<table border=1> <tr>
<td>1</td>
<td>aaaa</td>
<td nowrap>bbbb</td>
<td>cccc</td>
<td>dddd</td>
</tr> <tr>
<td>2</td>
<td>eeee</td>
<td nowrap>ffff</td>
<td>gggg</td>
<td>hhhh</td>
</tr>
</table>
----------------------------

このようなHTMLのtdで囲まれた文字列を配列で取得したく

preg_match_all("/(<tr>.*?<td>(.*)<\/td>.*<td>(.*)<\/td>.*<td>(.*)<\/td>.*<td>(.*)<\/td>.*?<\/tr>)/i",$html,$match);

こう記述しましたが、期待通りの結果になりません
どうすればよいでしょうか?
359nobodyさん:2009/08/11(火) 12:20:56 ID:???
なんじゃそりゃ
PHPで実行する前に正規表現チェッカで試すことをお勧めする
360nobodyさん:2009/08/11(火) 12:25:37 ID:???
>>358
改行を最初に除去

$html = preg_replace('/\r/,'',$html);
$html = preg_replace('/\n/,'',$html);

preg_match(ry
361nobodyさん:2009/08/11(火) 12:26:55 ID:???
何でわざわざ二回も
362nobodyさん:2009/08/11(火) 12:29:52 ID:???
対象のソースがどんな改行コードで作られてるかわからない
\nだけなら'/\r\n/'とするとヒットしない
363nobodyさん:2009/08/11(火) 12:53:45 ID:???
(\n|\r)でいいじゃん
364nobodyさん:2009/08/11(火) 12:54:53 ID:???
str_replaceでも
365nobodyさん:2009/08/11(火) 12:54:55 ID:???
その書き方ならこれじゃだめなの?

$html = preg_replace('/\r|\n/','',$html);
366>>355:2009/08/11(火) 13:05:46 ID:???
すいません。
レス下さった方、ありがとうございます。
失礼しました。
367nobodyさん:2009/08/11(火) 13:15:33 ID:???
正規表現を理解できてないのに自慢げに書いてる男の人って…
368nobodyさん:2009/08/11(火) 13:18:09 ID:???
擁護じゃないけど正規表現未だに難しいわ。
どっかトラの穴か相応のプロジェクトでこねくりまわさないと一生
正規表現がでてくるたびにつまづく気がする。
369nobodyさん:2009/08/11(火) 13:20:59 ID:???
勉強しろよ
370368:2009/08/11(火) 13:23:37 ID:???
なんつーかSQLほど出てくる結果に感動が無いと申しますか
371nobodyさん:2009/08/11(火) 13:24:05 ID:???
SQLのどんな結果が感動?
372nobodyさん:2009/08/11(火) 13:25:34 ID:???
なんかアドバイスしたら>>367みたいに揚げ足取られるならしないほうがいいな
なんでそんなにひねくれてるの?
373nobodyさん:2009/08/11(火) 13:35:25 ID:???
正規表現使ってないのにpreg_replace使う意味が分からない
指摘されて「こいつはひねくれてる」で終わるようなら回答しなくていいよ
374368:2009/08/11(火) 13:45:12 ID:???
結局なんか正規表現使う場合って場当たり的な書き方になってしまってるのがなんかやだなぁ
SQLだとおもった結果を何回かのクエリやらプロセス通さず一発のクエリで導きだしたりが
醍醐味かなぁ。。まぁおれが正規表現こねたことないからだろうけど。
375nobodyさん:2009/08/11(火) 13:50:30 ID:???
正規表現も、文字列の集合からおもった結果を一発でとってくるわけで
ようは正規表現に苦手意識みたいなものがあるだけじゃないか?
複雑なSQL組み立てた時に感動するなら
同じように、パッと見暗号にしか見えない正規表現作れた時も感動できるかもよ。
376368:2009/08/11(火) 14:01:32 ID:???
たぶん変な苦手意識は少なからずあるな。見ただけでなんぞこれ〜ってなっちゃう。

読むのがつらいからかなぁ?対象となる文字列から人間の目での抜き出しはこんなに
簡単にできるのに、機械にあわせようとするからこんなややこしい暗号になってしうのか・・・つーかんじか
377nobodyさん:2009/08/11(火) 14:07:48 ID:???
正規表現はコメント振ってても、後で見たら意味不明になってたりするしな・・・
378nobodyさん:2009/08/11(火) 14:08:28 ID:???
>>376
SQLのどんな結果が感動なの?ねえ???
379368:2009/08/11(火) 14:15:43 ID:???
>>378
ん?自分で計算するのも面倒な行の合計だけでも感動しない?
SQLこねて作った場合でも感動するよ。
心の中で「あ、でたw」「数値変えたらちゃんと結果も変わったwおkおk」てなかんじで。

正規表現使ってる時の心の声は「あーなんでこれ抜き出せないんだよ」「たったこことここだけなのに!」
とかいう心の声が多いですわ。
380nobodyさん:2009/08/11(火) 14:25:28 ID:???
>ん?自分で計算するのも面倒な行の合計だけでも感動しない?
PHPの存在意義は・・・?
381nobodyさん:2009/08/11(火) 14:32:15 ID:???
結果的に期待どおりの動きになってたらいいと思うんだが
やたら人のスクリプトや考えを否定的なやつってうざいよな
正直ひねくれてると思われても仕方が無いと思うわ
382368:2009/08/11(火) 14:47:16 ID:???
まぁスレチだったわけですいません。なかなか正規表現に慣れないもので
なにか良い見方・覚え方・学び方があるのならとはおもってずるずると。

380 まぁ今の話のなかではないね。3重以上のループ組むならやはりSQLで外部参照とか組んじゃうけど。
381 まぁ色々やり方あってもいいわな。美しいか美しくないかも上記ループのようにあるかもしれんけど。
383nobodyさん:2009/08/11(火) 15:16:23 ID:???
結合はDBの基本では

「SQLは行の合計ができるから感動する」っていうから
この人エクセルとかプログラム知らないのかなと思っただけ。

結局難しそうなものから逃げてるだけでは?
384nobodyさん:2009/08/11(火) 15:22:16 ID:???
ここはPHPスレです
385nobodyさん:2009/08/11(火) 17:44:20 ID:???
何事も勉強する意欲には「おー」とか思う感動が必要なんじゃないかなとおもって。
場当たり的に定石も美しさもわからずなんとか対処してる俺は正規表現をまともに習得できるきがしない。
386nobodyさん:2009/08/11(火) 17:50:48 ID:???
>>385
>正規表現をまともに習得できるきがしない。
それがダメなんだってば
387nobodyさん:2009/08/11(火) 18:04:17 ID:???
「出来ない」と思えば何もかも出来なくなる
「出来る」と思えば出来る
388nobodyさん:2009/08/11(火) 18:17:02 ID:???
まだやってんのか。
389nobodyさん:2009/08/11(火) 19:05:36 ID:???
>>388
暇なんだもん
390nobodyさん:2009/08/11(火) 19:43:28 ID:???
正規表現なんて要は希望通りマッチすりゃいいんだから、適当に書くぐらいで丁度良い。
あれこれメタキャラクタ使って短縮したり技巧を凝らすのは好きな人がやればいい
391368:2009/08/11(火) 20:17:40 ID:???
その適当感がたまらなく嫌なんだ。。
392nobodyさん:2009/08/11(火) 20:58:13 ID:???
適当人生のくせに
393nobodyさん:2009/08/11(火) 21:57:04 ID:???
だから書くコードだけでもとw
394nobodyさん:2009/08/11(火) 22:42:38 ID:???
正規表現になると玄人面したやつが素人の書いたやつに文句つけるから荒れるんだよ
変だと思ったらこう書けばよいとさらりと書き直してあげれば終わるんだから
いちいちつっかかる必要はない
書き直したコードみて最初に書いたやつもほーこう書くのかーと勉強になるし
まぁここ正規表現スレじゃないけどもう少し大人になろうぜ
395nobodyさん:2009/08/11(火) 23:10:09 ID:???
正規表現は、ややっこしいパターンを書かざるを得ない羽目に陥って嫌々書いてるうちに自然と覚える。
分かってしまえば簡単。
複雑な技巧は、個人的には避けるべきだと思う。可読性とメンテナンス性が落ちる事が多い。
396nobodyさん:2009/08/11(火) 23:46:23 ID:???
>>394
何でこう書かないの?的なツッコミが必ず入るのは勉強にはなるけど、
荒れやすい要素ではあるよなあ。

あとはお決まりの「メールアドレスを正規表現で(ry」も一言で済むのに
何故か突っかかられる印象がある。
397nobodyさん:2009/08/12(水) 01:19:04 ID:PY+df2PJ
教えてください
あるページでセッション変数として文字列を保存し、
異なるページで保存したセッション変数の中身を表示させようとしています。
まったく同じファイルなのですが、
IEだとうまく表示できるのに、
Firefoxだと何も表示されない(空文字)になってしまいます。

IEではうまく動作するのにFirefoxだと駄目なんてことはあるのでしょうか。
Firefoxはバージョン3.5.2で、
サイトから送られてきてたCookieを保存する、サードパーティのCookieも保存するに
チェックがついていて、例外サイトには何も設定していません。
保存する期間はサイトが指定した期限までとなっています。

なぜなんだろう?
398nobodyさん:2009/08/12(水) 01:33:08 ID:???
IEでうまくいって他がうまくいかない大半はタグの間違い
IEはヘンテコリンなタグでも適当に解釈してしまうので、IEが間違っている
399nobodyさん:2009/08/12(水) 01:45:20 ID:PY+df2PJ
ありがとうございます
うーん。タグとかでなく、セッションに保存した内容が取得できないんですよね
if ($var == ""){}でtrueになるので、タグ以前の問題ではないかと思っています
400nobodyさん:2009/08/12(水) 01:47:37 ID:???
再現するコードうp
401nobodyさん:2009/08/12(水) 02:14:30 ID:PY+df2PJ
了解しますた

呼び出す側
<?
 $pic = "file.wmv";
 session_start();
 $_SESSION["pic"] = $pic;
?>
<html>
<head>
</head>
<body>
 <object id="MediaPlayer" width="640" height="525" classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
standby="Loading MicrosoftR WindowsR Media Player components..." type="application/x-oleobject">
  <param name="FileName" value="movie.html" />
  <param name="AutoStart" value="true" />
  <param name="ShowControls" value="true" />
  <embed name="プレーヤー名" type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" src="movie.html" width="640" height="525" autostart="1" showcontrols="1"></embed>
 </object>
</body>
</html>
402nobodyさん:2009/08/12(水) 02:15:12 ID:???
呼び出される側
<?
 session_start();
 $pic = $_SESSION["pic"];
 if ($pic == "")
 {
  exit;
 }
 if (file_exists($pic)) {
  header('Content-Type: video/x-ms-wmv');
  header('Content-Length: ' . filesize($pic));
  ob_clean();
  flush();
  readfile($pic);
 }
?>
403nobodyさん:2009/08/12(水) 02:24:30 ID:???
つvar_dump($pic)
404nobodyさん:2009/08/12(水) 02:46:47 ID:???
PHPさんからSet-Cookieついた
Firefoxさんたらガツガツ食べた
仕方がないのでWMPさん手ぶらで聞いた
さっきのCookieご用事なぁに

IEさんとWMPさんは仲良しなのでCookieを回し読みします
405削ジェンヌ:2009/08/12(水) 02:57:34 ID:???
つまらん >>404
死んだ方が良いよ。
406nobodyさん:2009/08/12(水) 03:23:49 ID:???
この場合読み込みを行うのはIEでもFirefoxなくWMPだな
IEにCookie食べさせるとWMPでも使われるがFirefoxが食べたCookieはFirefox以外で使われない
セッションの管理方法をcookieじゃなくてURLにセッションIDを付加させる方法にしたらいいと思う
407nobodyさん:2009/08/12(水) 03:31:16 ID:???
セッションIDの受渡し
http://jp2.php.net/manual/ja/session.idpassing.php
読めば分かると思う
408nobodyさん:2009/08/12(水) 04:42:13 ID:???
PHPファイルの中でオブジェクト開けばいいんじゃ
409nobodyさん:2009/08/12(水) 10:02:26 ID:???
日本語でおk
410397:2009/08/12(水) 15:18:43 ID:???
試してみました。
sessionIDをGETで渡して、
session_startの前にsession_id(string id)でsession_idを渡すことで
ひとまず動作しました。

確かに、考えれば最後はWMPがhtmlを参照するので
Firefoxで設定したsessionが読めるわけないですね。
でも、Firefoxの過去のバージョンではなぜかうまく動作していたんですよ・・
うーんなぜなんだろう・・
411nobodyさん:2009/08/12(水) 16:10:37 ID:L+TnL+Ze
セッション引き回しも質問です。
[OS]FreeBSD 6.1-RELEASE-p10(CPIのシェアードプラン X30)
[php]4.4.7
[DB等]mysql使用(phpでは--with-pgsql7も組み込み)
[症状]セッションが引き回されない

require "env.php";
session_start();

// 1回目
if ($DEBUG) { print_r($_SESSION); }

$userId = $_POST['userId'];
$passwd = $_POST['password'];
$sessId = $_SESSION['userId'];
$sessPw = $_SESSION['passwd'];

// 2回目
if ($DEBUG) { print_r($_SESSION); }
412nobodyさん:2009/08/12(水) 16:13:50 ID:L+TnL+Ze
(>>411の続き)
// MySQLへ接続
$conn_id = mysql_connect($MySQL['HOST'], $MySQL['USER'], $MySQL['PASSWORD']) or exit('MySQLへ接続できません。');
// 使用するデータベース選択
mysql_select_db($MYSQL['DATABASE'], $conn_id);
mysql_query("SET NAMES ujis");

// ユーザー認証
if (($sessId == null || $sessPw == null) && ($userId == null || $passwd == null)) {
echo "<div align=\"center\">";
echo "<p><font color=\"red\">ログイン情報に誤りがあります。<br>再度ログインを行ってください。</font></p>";
echo "<a href=\"index.php\">ログイン画面へ戻る</a>";
echo "</div>";
exit;
}

上記コードで、print_r()を2度呼び出して確認したところ、
1つめ…Array ( [userId] => ******** [passwd] => ******** )
2つめ…Array ( [userId] => [passwd] => )
となり、$_SESSION 配列の各要素の値が消えてしまいます。そのためか、if文が常に真となり、
セッションが引き回せません。この他のスクリプト間では何ら問題なく引き回せているので、
上記のソース部分に鍵がありそうなのですが、phpは慣れていないため原因がわからずにいます。
どなたかおわかりになる方がいらしたら是非教えてください。よろしくお願いします。
413nobodyさん:2009/08/12(水) 16:23:46 ID:???
どこで$_SESSION['userId']と$_SESSION['passwd'];をセットしてるの?
414nobodyさん:2009/08/12(水) 17:41:12 ID:L+TnL+Ze
>>413
ありがとうございます。続きのソースです。ログイン時に書き込みしています。
if ($sessId != null) {
$userId = $sessId;
}
if ($sessPw != null) {
$passwd = $sessPw;
}
$userResult = mysql_query("SELECT * FROM USER_MASTER WHERE USERID = '$userId' AND PASSWD = '$passwd'", $conn_id);
$userInfo = mysql_fetch_object($userResult);
if ($userInfo->USERID != $userId || $userInfo->PASSWD != $passwd) {
echo "<div align=\"center\">";
echo "<p><font color=\"red\">入力したユーザー情報に誤りがあります。<br>再度ログインを行ってください。</font></p>";
echo "<a href=\"index.php\">ログイン画面へ戻る</a>";
echo "</div>";
exit;
} else {
// セッションへログイン情報セット
$_SESSION['userId'] = $userId;
$_SESSION['passwd'] = $passwd;
//このあとhtml表示(省略)
}
415nobodyさん:2009/08/12(水) 18:40:17 ID:???
>>414
$sessId $sessPw の2つに値は入ってるのかな?
416nobodyさん:2009/08/12(水) 18:40:31 ID:???
function debug(){
$echo = '$_SESSION<br /><pre>'.print_r($_SESSION,true).'</pre><br />';
$echo .= '$_POST<br /><pre>'.print_r($_POST,true).'</pre><br />';
return $echo;
}
こんな関数書いてif文の前とかでecho debug();してみたら分かると思う
あとファイルの先頭にerror_reporting(E_ALL);書いて潜在的なバグをつぶす
417nobodyさん:2009/08/12(水) 23:35:55 ID:kCVCP35f
PHP5.3.0で

$a1=x;
$a2=y;
echo $a1;
echo $a2;

と同じ動作をするコードを

$a1=x;
$a2=y;
for ($i=1;$i =2;++$i)
{
echo $a$i;
}

のように書いたらecho $a$i;の部分でエラーが出ました。
正しく動かすにはどのように書けばいいのでしょうか?
418nobodyさん:2009/08/12(水) 23:36:40 ID:???
文字列連結
419nobodyさん:2009/08/12(水) 23:41:24 ID:???
>>417
echo ${'a'.$i};
420nobodyさん:2009/08/12(水) 23:48:46 ID:???
それなら配列でまとめたらいいと思うんだが
分かりやすいし応用できる
$a = array(
  [0] => x,
  [1] => y,
);
foreach($a as $value){
  echo $value;
}
421nobodyさん:2009/08/12(水) 23:49:37 ID:kCVCP35f
>>418
$a1="x";
$a2="y";
for ($i=1;$i<=2;++$i)
{
$a = "a".$i;
echo $$a;
}
でうまくいきました。
ありがとうございます
422nobodyさん:2009/08/12(水) 23:51:13 ID:???
>>415-416
ありがとうございます。
いろいろ試してみたのですが、走らせていたサーバのphpでregister_globals=onとなっていました。
そのせいか分からないのですが、>>411,412,414のコードのうち、411の

$sessId = $_SESSION['userId'];
$sessPw = $_SESSION['passwd'];

をコメントアウトしたところ、症状が解消しました。コメントあうとする前は、上記代入の前後で呼び出した
print_r($_SESSION) で、1回目では値があったのに2回目では消えていました。

つまり、上記のコード2行があると、その直前では値があったのに$sessIdも$sessPwもnullであり、
上記の2行がないと、$sessIdも$sessPwに $_SESSION['userId'] と $_SESSION['passwd']の値が
それぞれセットされているということになります。逆なら分かるのですが、症状はなくなったもののなんか
気持ち悪いです。
423nobodyさん:2009/08/12(水) 23:51:26 ID:???
echo $a . $i;

でいいだろ・・・
424nobodyさん:2009/08/12(水) 23:57:16 ID:???
>>422
register_globalsはたぶん後方互換のためにonにしているのだろうが
好きなように変数の中をいじれるのでセキュリティに問題がある
直ちにoffにしたほうがいい
425nobodyさん:2009/08/13(木) 02:18:30 ID:CXYe9XKR
Windows上のVMwareでCentOS5を動かして開発しています。

現在、PHP OpenID Libraryを利用して
OpenIDのログイン処理のテストをしているのですが、
yahoo、mixi、ライブドア、はてな、いずれも
「現在ログインできません」のようなメッセージが出てログインできません。

curlやopensslが必要というのを見かけたので、確認しましたが、
いずれも有効になっていました。

レンタルサーバーなどにアップした場合はうまくいくのですが、
ローカル環境だとうまくいきません。

なにが原因なのでしょうか?
426nobodyさん:2009/08/13(木) 02:29:54 ID:???
多分コードが悪い
427nobodyさん:2009/08/13(木) 09:24:07 ID:h6lN5QEU
【OS名】RHEL
【PHPのバージョン】php5.26
【連携ソフトウェア】PostgreSQL 8.4.0
【質問内容】 Cronで回して相手サーバーにバックアップデータを投げたいのですが、レンタルなのでモジュールとかの追加は出来ません。
PHPでそういう事は可能でしょか?
もし可能ならPHPでそういった事をやる際はどういった関数を使えば可能ですか?
428nobodyさん:2009/08/13(木) 09:44:19 ID:???
telnetなりsshなり使え
429427:2009/08/13(木) 09:48:51 ID:h6lN5QEU
>>428
回答ありがとうございます。
telnetとsshのポート空いてないサーバーなのでそういった事が難しいため
PHPなどで出来ないかと思っておりました。
説明が不足しており大変申し訳ありませんでした。
430nobodyさん:2009/08/13(木) 10:02:45 ID:???
>>429
ftpならあいてるでしょ。
http://www.php.net/manual/ja/ref.ftp.php
431nobodyさん:2009/08/13(木) 10:10:51 ID:???
データ量が少ないなら JSON なりでいいかもしれないけれど
432425:2009/08/13(木) 10:20:31 ID:???
>>426
ライブラリの使い方が間違ってるということでしょうか?
ほとんどコピペなので、コード以前の、
環境の問題のような気がしているのですが・・・
433427:2009/08/13(木) 11:03:42 ID:h6lN5QEU
>>430
すいません。
HTTPサーバーのみ稼働しててFTPが使えないです。
情報を小出しにしているわけではないですが他にも必要な情報あれば言ってください。
434nobodyさん:2009/08/13(木) 11:28:50 ID:???
JSONって元気?
435nobodyさん:2009/08/13(木) 12:21:35 ID:???
>>432
環境をコードに合わせるんじゃなくてコードを環境に合わせるべし
436432:2009/08/13(木) 12:48:26 ID:CXYe9XKR
>>435
できればそうしたいのですが、環境のどこがまずいのか分からなくて・・・
そもそも「現在ログインできません」とは、どういう状況なのでしょうか?
437nobodyさん:2009/08/13(木) 14:29:54 ID:???
ライブラリのコードを追うしかない
438nobodyさん:2009/08/13(木) 14:56:28 ID:???
OpenIDなんてはじめてしったわ
2年も前からやってるのか・・・
ぜんぜんついていけてない
439nobodyさん:2009/08/13(木) 15:56:21 ID:???
>>433
相手サーバーでcron使って file_get_contents で ファイルもってくれば?

440nobodyさん:2009/08/13(木) 16:54:53 ID:lMlALn5L
Windows環境でphpizeする方法が詳しく書かれているサイトってありますか?
441433:2009/08/13(木) 17:04:41 ID:h6lN5QEU
>>439
その手がありましたね。
すっかり忘れてました。
ですが諸事情あってあくまで初回のアクションはバックアップ元にしたいので
バックアップ元のCronでバックアップ先のPHPを叩くようにすれば出来そうです。
ありがとうです。
442nobodyさん:2009/08/14(金) 08:03:40 ID:S/PVqIxN
PHPの質問とは直接関係ないのですがどこで聞けばいいのかわからないのでどなたかわかる方お願いします

a.php
header("Content-Type: application/zip");
echo "zipのバイナリコード";

ダウンロードダイアログでa.phpとなってしまうのですが(zipにリネームしたら開けるのですが)
a.zipでダウンロードさせるにはどうしたらよいのでしょう?
headerで何か明示的にダウンロード時のファイル名を指定できると読んでいるのですが
やり方がわかりません(読み違いでできなかったらすみません)
443nobodyさん:2009/08/14(金) 08:07:05 ID:???
公式マニュアルのheader関数のページにサンプルが載ってるよ
http://php.net/header
444442:2009/08/14(金) 08:13:30 ID:S/PVqIxN
>>443
盲点でした
ズバリな答えが書いていますね
助かりました
どうもありがとうございました
445nobodyさん:2009/08/14(金) 22:42:22 ID:vkQArbxO
mb_splitについて質問させてください
症状はFreeBSD7.1+PHP5.2.10のレンタルサーバで実行結果が以下のようになってしまいます

$arrWork = mb_split (",", "2004年5月13日,1234566,aabbcccddd");
foreach ($arrWork as $data)
  echo "$data\n";

実行結果
  2004年5月13日,1234566
  aabbcccddd

手元のWindowsXP+PHP 5.2.8では、以下の実行結果となり、当方はこちらの結果を想定してプログラミングをしています
実行結果
  2004年5月13日
  1234566
  aabbcccddd

おそらく文字コード関連だと思うのですが・・
なお、.phpファイルの文字コードは全てUTF-8で統一して有ります
446nobodyさん:2009/08/14(金) 22:43:30 ID:???
mbstringの文字コードも設定しなきゃ
447nobodyさん:2009/08/14(金) 22:52:22 ID:???
正規表現
448nobodyさん:2009/08/14(金) 23:23:54 ID:vkQArbxO
ありがとうございます
とりあえず以下を試して見ましたが結果は変わりませんでした
ini_set(default_charset,"UTF-8");
ini_set(mbstring.internal_encoding,"UTF-8");
他にも設定があるのかな・・
phpinfo()で確認したところ、サーバはEUC-JPでした
449nobodyさん:2009/08/14(金) 23:36:35 ID:Tors7Awt
S-JISでスクリプトのファイル保存してるだろ
450nobodyさん:2009/08/14(金) 23:38:55 ID:???
explode()使ってみても同じ?
451nobodyさん:2009/08/14(金) 23:44:56 ID:???
言葉足らずだったかな。
S-JISでスクリプトのファイル保存してるだろ
いま自分とこでテストしたら
UTF-8で保存したら正しくて、S-JISで保存したら上記間違いと同じ結果になったよ。
なんか日の漢字コードとコロンのコードとの絡みでおかしくなってるのだとおもうよ。
結論:UTF-8で保存しなおせ
452448:2009/08/15(土) 01:30:41 ID:DUbarFt/
色々ありがとうございます
>>450
explode()、またはsplit()ならうまく行きました
ただマルチバイトに対応してるわけじゃない(と思う)ので気持ち悪いですね
"日,"だけの定型なら良いんですが、上の文字列と同時に日本語文字列も扱ってるので、ううむ・・

>>451
念のためサーバ上で確認しましたが、やはり全てUTF-8でした
しかしSJISで保存すると似た症状になるんですね、ややこしいなあ
453451:2009/08/15(土) 01:57:21 ID:???
こっちでそのソースコピってUTF8で保存、動かしたら
普通に動くのだけれどもね。
454nobodyさん:2009/08/15(土) 02:12:45 ID:???
PHPで次のファイルを消すにはどうすればよいですか?
※.Netで言うところのFile.Delete(ファイルパス)みたいな関数はありますか?

./HOGE/TEST.JPG

455nobodyさん:2009/08/15(土) 02:26:45 ID:???
unlink()とか?
456nobodyさん:2009/08/15(土) 03:15:12 ID:???
unlink(/home/);
457nobodyさん:2009/08/15(土) 03:39:09 ID:???
>>456
10年間撮り貯めた子供の写真が全部消えました・・・
458nobodyさん:2009/08/15(土) 05:32:44 ID:YpOdOwqF
>>452
PHPコード上で
echo mb_regex_encoding();
とかで本当にUTF-8になってるか調べたり
mb_internal_encoding("UTF-8");
とかしてみたりしても同じ?
459448:2009/08/15(土) 08:21:22 ID:DUbarFt/
こちらのサイトの以下の記述より、
mb_regex_encoding("UTF-8")とすることで解決しました

http://f32.aaa.livedoor.jp/~azusa/?t=php&p=mbstring#a_mb_split
>エンコーディングは、内部文字エンコーディングまたはmb_regex_encoding()関数で指定した文字エンコーディングが使用されます。

ありがとうございました
460nobodyさん:2009/08/15(土) 09:39:49 ID:???
まず先にぐぐろうよ。
461nobodyさん:2009/08/15(土) 13:01:22 ID:oRoHSHUF
<?= $hogehoge ?>
こういう変数の出力方法はなんと呼ばれていますか?
上記書式で出力できるサーバとできないサーバがあって、原因や違いを調べています。

出来た方のサーバ
【OS名】Centos5
【PHPのバージョン】php バージョン不明 (今遠隔地にあって電源も切ってるので、弄れません)
出来なかった方のサーバ
【OS名】 WindowsXP +XAMPP
【PHPのバージョン】php5.3.0

PHP 出力・表示などでぐぐったのですが見つかりませんでした。
よろしくお願いします
462nobodyさん:2009/08/15(土) 13:01:52 ID:???
マニュアルに書いてあるよ
463nobodyさん:2009/08/15(土) 14:41:29 ID:???
>>461
short_open_tag
464nobodyさん:2009/08/15(土) 15:09:04 ID:oRoHSHUF
>>463
php.iniの設定を書き換えて出力できるようになりました
どうもありがとうございます。
465nobodyさん:2009/08/15(土) 22:07:59 ID:???
>>455
>>456
ありがとうございます。


>>457
乙w
466nobodyさん:2009/08/15(土) 22:17:38 ID:???
直接phpに関係があるかは分らないですが、
次の様2つのディレクトリ(パス)が存在しているとして

@のパス直下にあるファイルには外部からアクセスする事が出来るけれども、
Aの場合には一切アクセスをさせなくするにはどうすればよいでしょうか?


http://test.com/path_1/   ・・・@
 ・AA.txt
 ・BB.txt
http://test.com/path_1/AA.txt ←アクセス可能(内容を確認する事が出来る。)


http://test.com/path_2/   ・・・A
 ・CC.txt
 ・DD.txt
http://test.com/path_2/CC.txt ←アクセス不可(外部からURLの直打ちがあった場合にはforbiddenのページを表示したい。)


467nobodyさん:2009/08/15(土) 22:23:18 ID:???
どちらかというとApacheで何とかしろよという気がするな
468nobodyさん:2009/08/15(土) 22:26:36 ID:???
>>467
ヒントをお願いします。
Apacheでも結構です。
469nobodyさん:2009/08/15(土) 22:31:33 ID:???
Apacheのディレクティブのマニュアル読め
470nobodyさん:2009/08/15(土) 22:31:47 ID:YpOdOwqF
>>468
.htaccessでググレ
471nobodyさん:2009/08/15(土) 22:45:26 ID:???
forbiddenを知ってんのになに言ってんだ...。
472nobodyさん:2009/08/16(日) 04:39:45 ID:K6eLO5dl
>>468
鯖を運用してるの?
473nobodyさん:2009/08/16(日) 08:42:22 ID:Lr9z6CdZ
GET,POST,COOKIEそれぞれに異なるセッションIDが格納されていた場合
どの順で有効になりますか?
474nobodyさん:2009/08/16(日) 10:57:24 ID:???
GETとPOSTは一緒に出来ねーだろ
475nobodyさん:2009/08/16(日) 11:04:37 ID:???
postするurlに?hoge=fuga付けたらできるでしょ?
476nobodyさん:2009/08/16(日) 11:28:29 ID:???
>>473
PHPは COOKIE → GET の順で探して
セッションキーが存在しなければセッション開始せずに
POSTは自前で指定しないとダメなんじゃないか?

477nobodyさん:2009/08/16(日) 12:06:34 ID:???
配列変数について質問です。

【OS名】FreeBSD6.x
【PHPのバージョン】php5.26
【連携ソフトウェア】postgres

変数 $a に下のような値がセットされていて、

$a[0][id] = 5
$a[0][name] = 山田
$a[1][id] = 7
$a[1][name] = 鈴木
$a[2][id] = 14
$a[2][name] = 山下

これを $a[id] = 名前 のように変換する関数はありますでしょうか?

$a[5] = 山田
$a[7] = 鈴木
$a[14] = 山下

よろしくお願いします。
478nobodyさん:2009/08/16(日) 12:35:45 ID:???
単純に
foreach ($a as $b) {
$c[$b['id']] = $b['name'];
}
でいいんじゃね。
DBのAPIによっては1番目のカラムをキー、2番目のカラムを値として
取得するメソッドがあることもあるよ。
1行ずつfetchする時に組み替えてもいいし。
479477:2009/08/16(日) 13:01:35 ID:???
>>478
出来ました!ありがとうございます!
480nobodyさん:2009/08/16(日) 13:07:00 ID:???
>>479
あと今後からはスレタイと>>1も読んでな
481nobodyさん:2009/08/16(日) 14:15:58 ID:???
必死だな
482nobodyさん:2009/08/16(日) 14:44:09 ID:???
何が?
483nobodyさん:2009/08/16(日) 17:22:14 ID:???
夏です
484nobodyさん:2009/08/17(月) 10:52:23 ID:XUMXmNvO
起動すると指定ファイルを送信するものをcronで定期的に回したいと考えてますが
ファイルのアップロードするものを替えれば出来るのではないかと考えてます。
受け側はpostで来たものをmove_uploaded_fileで受け取ればいいと思ってますが、
送信元にform methodを書くとsubmitしなければいけないのでcronで実行するだけではダメな状態です。
formではなく何か関数でファイルを送るようなものがPHPにあれば助言もらえないでしょうか。
485nobodyさん:2009/08/17(月) 10:59:15 ID:???
HTTPリクエストでもFTPでもscpでもできるので何で送りたいかが問題かと
486nobodyさん:2009/08/17(月) 11:00:23 ID:???
>>484
日本語でおk
487nobodyさん:2009/08/17(月) 11:03:45 ID:???
>>484
もうちょっと詳しく。それぞれのOSは?
送信元サーバからphpで、送信先サーバへファイルをpostするって事?

phpではなくrsyncで事足りるような気がする。
488484:2009/08/17(月) 11:28:26 ID:XUMXmNvO
説明不足で申し訳ない。

それぞれのサーバはCentOSです。
やりたい事は>>487さんの言ってることなんですが、レンタル鯖なのでrsyncを入れたりってことが出来ないです。
実際に送るファイルはzipファイルになります。
489487:2009/08/17(月) 11:51:52 ID:???
>>488
それなら、ftpでいいんじゃないか?
phpだとftp_connect・ftp_login・ftp_put 等で検索するとサンプルがたくさんでてくると思う
490nobodyさん:2009/08/17(月) 12:07:23 ID:???
上の方でも書いたけど、もらいに行くだけじゃだめか?
fwrite(fopen("file.zip", "wb"), file_get_contents("http://www.example.com/file.zip"));
491488:2009/08/17(月) 12:21:28 ID:XUMXmNvO
>>489
FTPなくてブラウザからアップするタイプのサーバなのでFTPダメっぽいです。

>>490
よくわからないけど火壁の問題でもらいに行くのはアウトみたい。
あくまでリクエストに対してレスポンスを返すってのがデフォルトみたい。

じゃあサーバ替えろよっていわれそうですが、FTPなくても問題ないしそれ以外では満足してるので
この点だけ出来ればOKだと思ってます。
ftp_connectみたいなのでhttpとかhttpsがあればいいのかな。
492nobodyさん:2009/08/17(月) 12:35:08 ID:???
もうメールで添付しちゃえよw
493nobodyさん:2009/08/17(月) 12:47:05 ID:???
HTTP_Client::post()かな
494488:2009/08/17(月) 13:00:17 ID:XUMXmNvO
>>492
メールでもいいんですけど、両方とも鯖ってこととメールがないので難しいですね。

>>493
Pearが入ってたかどうか確認しないといけないですが、外部モジュールを使用せずに
PHPの機能でやるってのは難しそうですね。

submitなしで送るのは困難と考えていいのでしょうか。
495nobodyさん:2009/08/17(月) 13:03:18 ID:???
rsyncじゃだめなのか?
496488:2009/08/17(月) 13:12:34 ID:XUMXmNvO
>>495
自分の鯖じゃないのでモジュールの追加とかが厳しいですね。
なのでPHPとかでやりとりできれば比較的そういった事を気にしなくてもいいかと思ってました。
497nobodyさん:2009/08/17(月) 13:33:11 ID:???
>>494
できるよ。PEARだってPHPのネイティヴ関数使ってるわけだし
498488:2009/08/17(月) 13:39:31 ID:XUMXmNvO
PearのHTTP_Client::post()は
PHPの何らかの関数を(もしくは複数)を使用して実現しているという事ですね。
どの関数かは調べないといけないですが。
499nobodyさん:2009/08/17(月) 13:47:43 ID:???
HTTP_Requestでいいんじゃ?
500nobodyさん:2009/08/17(月) 20:32:54 ID:???
あああ
501nobodyさん:2009/08/17(月) 21:12:59 ID:N8y+jQ14
<input type="file" name="upfile[]">
<input type="file" name="upfile[]">
みたいに同じnameのinputが複数ある場合
HTTP_REQUESTで、両方のupfile[]に
addPostDataしてやるにはどのように記述すればいいのでしょうか?
よろしくお願いします
502nobodyさん:2009/08/17(月) 21:14:28 ID:jMCEI25H
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
        |     /⌒\   .. .|
        |     (:::::::::::::::)     .|
        |===×二×===|  日本国旗を友愛しました
        |     (:::::::::::::::)     .|
        |     \.__./   .. .|
        |_________|
                            ノ´⌒`ヽ         _
             /|\ | ヽ      γ⌒´      \     / !    /!ヽ
             | l  ヽ |  ヽ     // ""´ ⌒\  )  /  |   ,' /  !
             | ヘ   !   ヽ   i /  \  /  i )  ,'   !_/ /  j
             ',  ヽ |    l    i   (・ )` ´( ・) i,/  !    ', /   /
             ',  ヽ!≡   l    l    (__人_).  |   !  ≡ !     /
              ヽ    ≡  !    \   `ー'   /   l  ≡ !   ,.'
               \   ≡ |   ,.-         ̄メ、_',  = / /
                \ ≡ !  /てノしイ_人人ノ、    ヽ  /
                  \― |/ヽ ,イ- 、ヽ /   イ´ ̄ ̄ヽ_/
                   \ ヽ/  l  ヽi / ̄`!
【党首討論】 麻生首相 「民主党の党旗、日の丸切り刻み作成…」→鳩山氏「神聖マーク、きちんと作らねば」→民主HPから写真削除★12
http://tsushima.2ch.net/test/read.cgi/newsplus/1250507570/l50
503nobodyさん:2009/08/18(火) 00:29:07 ID:???
ついに他党の党旗暮らしか突っ込むところ無くなったのかw
504nobodyさん:2009/08/18(火) 00:35:36 ID:???
国家の旗だろ
505nobodyさん:2009/08/18(火) 00:42:54 ID:???
function flag()
506nobodyさん:2009/08/18(火) 02:57:07 ID:???
>>501
upfile1、upfile2みたいにするしかない
507nobodyさん:2009/08/18(火) 11:54:02 ID:vguzrODx
PHP5.3をインストールしたのですが、急に「Deprecated」エラーが表示されるようになりました。
error_reporting(E_ALL & ~E_DEPRECATED);と記述すれば表示されないと聞き、記述してみましたが表示されてしまいます。

error_reporting(E_ALL & ~E_DEPRECATED);
var_dump(error_reporting());
出力:int(22527)

error_reporting(2);
var_dump(error_reporting());
のように、Warningだけ表示させるようにしてもDeprecatedエラーが表示されてしまいます。
どのように対処すれば良いのでしょうか。
508nobodyさん:2009/08/18(火) 12:02:45 ID:???
なるはずだよ。
その上でエラー出てるんじゃない?
509nobodyさん:2009/08/18(火) 12:24:48 ID:vguzrODx
ちなみに出る部分はPEAR::DBとPEAR::PEARです。
これの=&を全て=にしたら解決しそうなんですが、それで何か支障とか出ないですかね。
510nobodyさん:2009/08/18(火) 12:53:55 ID:???
出ないと思うよ
511nobodyさん:2009/08/18(火) 14:32:41 ID:???
>>509
そのエラーは構文解析時に出る
PEARをrequire/includeする前にerror_reporting()を実行しているかい
512nobodyさん:2009/08/18(火) 20:51:21 ID:4p9NHHkL BE:39461344-2BP(931)
配列についての質問です。

$s[data] = array();
とし、フォームに入力された値から、
$s[data][name]に名前を、
$s[data][age]に年齢を、
$s[data][sex]に性別を代入して、
“少なくとも1つ以上のフォームに入力された場合の処理”を記述するためのif文で、
if( !empty( $s[data] ) ) {
   ・・・
}
と条件指定したのですが、入力の有無に関わらず実行されてしまいました。
原因を調べたところ、入力の有無に関わらず、
$s[data]の中には$s[data][name]と$s[data][age]と$s[data][sex]という
要素があると認識されてしまっていたためのようなのですが、
どうにかして、うまく条件指定する方法はないでしょうか?
513nobodyさん:2009/08/18(火) 22:04:09 ID:???
if ( isset($_POST['name'])===true ){
  $data = array(
    'name' => $_POST['name'],
    'age' => $_POST['age']
  );
}
こんな感じで入力があったときだけ変数を作って

if( isset($data)===true ){
  処理
}
変数がセットされてたら処理するようにしたらいいよemptyはissetより動作が遅いし
514512:2009/08/18(火) 22:31:12 ID:??? BE:22197233-2BP(931)
>>513
レスありがとうございます。

1度の処理ですべてのフォームの値チェックをして、
漏れなどの記入ミスがあった場合はその旨を表示しつつ、
再度入力フォームを表示する(その際、問題なかった欄については初期値として表示させる)。
という動作をさせたいのですが、それだと、
名前欄に入力があったのみにしかチェックを行なえなくなりますよね。

配列の“要素が配列”である場合、その、“要素である配列”に、
要素が入っているかどうか調べることはできないんでしょうか?
515nobodyさん:2009/08/18(火) 22:41:53 ID:???
>>514
<form action="" method="post">
<input type="text" value="" name="name" />
<input type="text" value="" name="age" />
</form>
たとえばこんなフォームがあっとして
これをnameだけ"test"と書き込んで送信したらPHPで受け取るデータは

$_POST['name'] = "test" //文字列
$_POST['age'] = ""    //空の文字列

になる。ただしcheckbox等はチェックしてなかったら送信されない
516512:2009/08/18(火) 22:47:03 ID:??? BE:19731124-2BP(931)
>>515
レスありがとうございます。はい、それは理解できています。
今僕がやりたいのは、

if( 1つ以上の項目に入力されている ) {
 全項目の値を、入力漏れや記入ミスなどそれぞれチェック
}

というものなんですが、そうなると、たとえば>>512の変数を用いて、

if( isset($s[data][name]) || isset($s[data][age]) || isset($s[data][sex]) ) {
  それぞれのチェック処理
}

のように、全変数に値があるか否かを判断して、
1つでも値があったら・・・って言う方法しかないんでしょうか?

実際のフォームは>>512のように3個の項目しかないわけではなく、
10個とかたくさんあるので、見栄え的に汚くなってしまうため、
どうにかきれいに表現できないかな、と思ったのです。
517nobodyさん:2009/08/18(火) 22:49:28 ID:???
>>516
count($array)で配列の数を数えられるけどだめかな
518nobodyさん:2009/08/18(火) 22:51:23 ID:7JFUjPwR
>>516
なんでそんな複雑な配列にするのか?ってことが言いたいんじゃないの?

>>515が理解できてりゃ悩まないと思う
519nobodyさん:2009/08/18(火) 22:58:50 ID:???
見栄えねぇ。そういうのはある程度知り尽くした分野で自分で追求しなよ
520nobodyさん:2009/08/18(火) 22:59:46 ID:???
スレタイ読んでくれたらうれしいね
521512:2009/08/18(火) 23:01:02 ID:??? BE:29595762-2BP(931)
>>517
レスありがとうございます。
$s[data]の中には $s[data][name],$s[data][age],$s[data][sex]
という3つの要素があるとみなされてしまうようで、
count($s[data])とやると、常に3という値が返ってきてしまうのです。

>>518
レスありがとうございます。
1つのスクリプトで、
 ・データ入力
 ・入力された値をチェック
 ・すべて正しく入力できていればMySQLへ書き込み
という処理をすべてしたいため、セッション変数を用いて場合わけしています。
そのためどうしても、1つ以上の項目に入力されている場合は〜、
という条件指定が必要なのです(僕の知識の範囲内ではですが)。
522512:2009/08/18(火) 23:04:55 ID:??? BE:118383168-2BP(931)
>>519
それもそうですね。
>>516のような方法で条件指定することにします。

>>520
すみません、常にageで、とは思いませんでした。
523nobodyさん:2009/08/18(火) 23:06:59 ID:???
ちっさなclass書けばいいじゃん。見栄えも今風だしw
524ひろゆき:2009/08/18(火) 23:07:55 ID:???
525nobodyさん:2009/08/18(火) 23:10:35 ID:???
1行では無理かもね
526nobodyさん:2009/08/18(火) 23:20:48 ID:???
ifの中だけでチェックするならこんな感じかな
もはやネタの領域だが

if(
  $res = (function(){
    global $s['data'];
    $c = 0;
    foreach($s['data'] as $value){
      if(is_string($value)){
        if(strlen($value)>0){
          $c++;
        }
      }
    }
    return $c;
  }
){
  処理
}
527nobodyさん:2009/08/18(火) 23:25:45 ID:???
$profile_check_array = array(
"name" => "名前",
"age" => "年齢",
"sex" => "性別"
);

//配列のキー取得
$check_array_kyes = array_keys( $_POST );

//定義した配列分まわしてチェックする
for( $i = 0; $i < count($check_array_kyes); $i++ )
{
$cach = array_key_exists( $check_array_kyes[$i], $_POST ) );
if( $cach == false or $_POST[$check_array_kyes[$i]] == "" )
{
"はいってないー";
}
}

あとの調理はどうぞ。
528512:2009/08/19(水) 00:09:42 ID:??? BE:59192238-2BP(931)
>>526-527
うおっ、ありがとうございます。
そこまでいくと、>>516のようにしたほうが見栄えもいいんじゃないか、
って言う話にもなってきそうですが、
僕の知識的にはなかったものなので、勉強させていただきます。
わざわざありがとうございました!
529nobodyさん:2009/08/19(水) 00:31:22 ID:???
本当にくだらない質問ですいません。

自分のサイトにメールフォームを設置していて
動作テストはFirefox3.0以降、IE6・7、OPERA、Google Chorome,Safari
で確認済みです。
ですが、月に1回くらいの頻度で文字化けしたようなメールが来ます。

こんな感じです。
[御社名] AlRJUkXCXfAKfsG
[ご担当者名] XaXcsANiTi
[メールアドレス] ZuACulytkH
[ご住所] lMfvCbGQJ
[お電話番号] BsffuuhnL

アドレスはいつも@マーク以下がsv602.lolipop.jpです。
ちなみに私が使っているサーバはロリポップです。

せっかく問い合わせが来てるのに逃してるのか
単なるエラーかはっきりさせたいのでぜひお願いします。
530nobodyさん:2009/08/19(水) 00:43:16 ID:???
自動のコメントスパムぐらいにしかみえんな
心配ならphpスレに書き込んでいるのだからphpのメールフォーム先のスクリプト読んで
挙動確認すればいいとおもう。
531nobodyさん:2009/08/19(水) 00:52:26 ID:???
>>529
スパム以外なら文字コードの問題かなISO-2022-JPっぽい
532nobodyさん:2009/08/19(水) 03:55:55 ID:???
スパムだろ。
533nobodyさん:2009/08/19(水) 13:05:24 ID:???
>>529
あれ?IDが???になってますね
気のせいですか?
534nobodyさん:2009/08/19(水) 13:13:50 ID:Ph4gYam8
Calendar-0.5.4.tarを解凍すると、意味不明なファイルになってしまいます。
本来ならディレクトリ階層のファイルになるはずです。
package.xml^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@100664 ^@ 764 ^@ 764 ^@ 40416 11120534466 6416 ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^
@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
535nobodyさん:2009/08/19(水) 13:20:17 ID:rHPCm5Kh
すいません、質問いいですか?
【OS名】 linux
【PHPのバージョン】php5.1.6
【WEBサーバ】 Apache
【質問内容】
function send_to_smart($data1, $data2 ,$mode){
//パターン1
if($mode+0 == 0){
$request = "GET /aaaaa/?data1=".$data1."&data2=".$data2."HTTP/1.0\r\n\r\n";
send_request($request);
//パターン2
}elseif($mode+0 == 1){
$request = "GET /bbbbb/?data1=".$data1."&data2=".$data2."HTTP/1.0\r\n\r\n";
send_request($request);
}
$fp = fsockopen("*****.jp",80);
fputs($fp, $request);
while (!feof($fp)) {
$line .= fgets ($fp,128)."\n";
}
fclose ($fp);
}
上記の感じでソケット送信のプログラムを作ってます。
・パターン1と2で別々にデータを送信してる
・2回とも情報送ってるはずなのに、受け取り側ではパターン1しか受け取れてない。
・パターン2はデータが入っていないのではなく、リクエスト自体が来ていない。
・2回ともレスポンスは取れている。ソケットオープンも問題なし。

パターン2で送れない理由がさっぱりわかりません。
これで、なんか原因や解決策判ったりしますか?
536nobodyさん:2009/08/19(水) 13:23:41 ID:???
マルチですか
537nobodyさん:2009/08/19(水) 13:38:37 ID:rHPCm5Kh
他のスレに同じ質問はタブーだったのか。
知らなかった、気をつけます。
538nobodyさん:2009/08/19(水) 13:56:22 ID:rHPCm5Kh
記述間違ってました。
マルチはもうしないんで教えてください。
結構困ってるので
【OS名】 linux
【PHPのバージョン】php5.1.6
【WEBサーバ】 Apache
【質問内容】
function send_to_smart($data1, $data2 ,$mode){
//パターン1
if($mode+0 == 0){
$request = "GET /aaaaa/?data1=".$data1."&data2=".$data2."HTTP/1.0\r\n\r\n";
//パターン2
}elseif($mode+0 == 1){
$request = "GET /bbbbb/?data1=".$data1."&data2=".$data2."HTTP/1.0\r\n\r\n";
}
$fp = fsockopen("*****.jp",80);
fputs($fp, $request);
while (!feof($fp)) {
$line .= fgets ($fp,128)."\n";
}
fclose ($fp);
}
上記の感じでソケット送信のプログラムを作ってます。
・パターン1と2で別々にデータを送信してる
・2回とも情報送ってるはずなのに、受け取り側ではパターン1しか受け取れてない。
・パターン2はデータが入っていないのではなく、リクエスト自体が来ていない。
・2回ともレスポンスは取れている。ソケットオープンも問題なし。

パターン2で送れない理由がさっぱりわかりません。
これで、なんか原因や解決策判ったりしますか?
539nobodyさん:2009/08/19(水) 13:57:11 ID:???
540nobodyさん:2009/08/19(水) 14:08:21 ID:???
ファイルがないとかでレスポンスヘッダしか帰ってこないとかじゃね

自分はこんな感じで関数作ってるけど
function httreq($url){
  if(is_string($url===true)){
    $headers = array(
      'Host: '.parse_url($url,PHP_URL_HOST),
      'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1',
      'Accept-Language: ja,en-us;q=0.7,en;q=0.3',
      'Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7'
    );
    $options = array(
      'http' => array(
        'method' => 'GET',
        'header' => implode("\r\n",$headers),
      )
    );
    return file_get_contents($url, false, stream_context_create($options));
  }else{
    return false;
  }
}
541nobodyさん:2009/08/19(水) 14:10:06 ID:???
if(is_string($url===true)){ は if(is_string($url)===true){ だったすまそ
542nobodyさん:2009/08/19(水) 14:10:44 ID:???
if(is_string($url===true))
なにこれ
543nobodyさん:2009/08/19(水) 14:11:37 ID:???
ちなみにis_stringはboolで返ってくるのに===する意味あんの?
544nobodyさん:2009/08/19(水) 14:17:44 ID:???
無いよ、厳密な比較が好きなだけ
545nobodyさん:2009/08/19(水) 14:22:01 ID:???
そうだね、将来的に返り値がintになるかもしれないしね
546538:2009/08/19(水) 14:24:18 ID:rHPCm5Kh
うーん、やはり詳細なデータを入れないとだめなんですかね?

あ、一つ書き忘れてました。
これ携帯用です。
547nobodyさん:2009/08/19(水) 14:31:46 ID:???
面土居からテストすらしないんだけど
一応聞くがこの関数のmode値変えて2回呼び出してるんだよな?
548nobodyさん:2009/08/19(水) 14:44:34 ID:???
>>538
よくわかんないけど$mode+0ってなに?
549538:2009/08/19(水) 14:46:00 ID:rHPCm5Kh
はい、そうです。
send_to_smart($data1, $data2 ,0);

send_to_smart($data1, $data2 ,1);
で呼び出してますね
550nobodyさん:2009/08/19(水) 14:47:42 ID:???
>>548 数値化確定させてんだろう
551538:2009/08/19(水) 14:51:05 ID:rHPCm5Kh
>>548
$mode+0で変数の型を数値に強制変換してます。
まぁ、今回$modeには元々数値しか入ってないんですが、クセですな。

ちなみにテキストに強制変換する場合は$mode.''です。
$mode内が1でもこの場合テキストと判断されます。
552nobodyさん:2009/08/19(水) 14:57:33 ID:???
>>551
世の中にはキャストという便利なものがあってだな
553nobodyさん:2009/08/19(水) 15:00:31 ID:???
>>551
関数内で強制変換とかバグ入り込みやすいコーディングしてんじゃねえぞksg
関数に渡す前に数値化しろよ
554538:2009/08/19(水) 15:14:25 ID:rHPCm5Kh
関数内での強制変換はよろしくないのか・・。
了解、そのやり方は使わないようにします。

というか
レスポンスが返ってくる=データが送られている
っていう認識だったんだけど違いましたっけ?
555nobodyさん:2009/08/19(水) 15:38:53 ID:???
レスポンスヘッダは捨てられてレスポンスボディだけを受け取る

304(更新無し)とかだと下のような感じでレスポンスヘッダのみ帰ってくる
HTTP/1.x 304 Not Modified
Date: Wed, 19 Aug 2009 06:36:52 GMT
Server: Apache
556nobodyさん:2009/08/19(水) 15:46:17 ID:gdnF9G1d
CentOSでyumでPHP5.2.6を入れたのですが、
extension_dir = "/usr/lib64/php/modules"
となっていたので中を覗いてみると
dbase.so json.so mysql.so mysqli.so pdo.so pdo_mysql.so pdo_sqlite.so phpcups.so zip.so
しかありませんでした。
ほかのモジュールはどこにあるのでしょうか・・・それともこれしかないのでしょうか。
557nobodyさん:2009/08/19(水) 15:47:26 ID:???
yumだからじゃね?
558nobodyさん:2009/08/19(水) 16:12:17 ID:???
>>556
yum search php
で探してみるとか。

というか何が必要なんだ?
559nobodyさん:2009/08/19(水) 16:16:42 ID:???
>>556
てめえなめてんのか!
5.2.6なんて古いだろ!バージョンアップしろよ!
PHPナメ杉ksgkg!
560nobodyさん:2009/08/19(水) 16:21:06 ID:gdnF9G1d
ありがとうございます。
Windowsでのdllではphp_fileinfo.dllに値するものです。
561nobodyさん:2009/08/19(水) 16:24:34 ID:???
yumでインストールすると伸びませんよ
自分でソースコードから入れましょう
562nobodyさん:2009/08/19(水) 16:25:29 ID:???
yumベースで他のも管理してるなら、別にyumを避ける理由ないだろw
563nobodyさん:2009/08/19(水) 16:33:08 ID:???
yum信者きめえ
564nobodyさん:2009/08/19(水) 16:34:47 ID:???
面倒なのでぜんぶWebmin任せ。
565nobodyさん:2009/08/19(水) 17:49:25 ID:???
みんなすごいな、俺見習中だけどもPHPすらわからん。
ジャヴァスクリプトだのAjaxだの絡んでますますわからん。
向いてないのが良くわかった。
566nobodyさん:2009/08/19(水) 17:58:00 ID:???
>>560
yum install php-pecl-fileinfo
でどう?

あなたの環境でもあるかどうかわからんけど。
567nobodyさん:2009/08/19(水) 18:01:39 ID:gdnF9G1d
ありがとうございます。
その方法でfileinfoをインストールできました。
モジュールの中にしっかりfileinfo.soを確認しました。

ですが、
Call to undefined function finfo_open
のエラーが出てきてしまいます。
httpd -k restartで再起動もかけましたが症状は変わらずです。

php.iniでは、ディレクトリの中身丸々モジュールを読み込んでいるようでした。
この場合はどういった原因が考えられるのでしょうか、宜しくお願いします。
568nobodyさん:2009/08/19(水) 18:09:24 ID:???
>>567
>php.iniでは、ディレクトリの中身丸々モジュールを読み込んでいるようでした。
そんな指定できたっけ?
どの箇所?

普通に、php.iniに
extension=fileinfo.so
が要るんじゃないかな。
569nobodyさん:2009/08/19(水) 18:15:53 ID:gdnF9G1d
>>568
extension_dir=ディレクトリ名
で、その中のモジュールは全て読み込んでくれませんでしたっけ?

ちなみに
extension=fileinfo.so
でも
extension=/usr/lib64/php/modules/fileinfo.so
でも読み込んでくれませんでした・・・。
570nobodyさん:2009/08/19(水) 18:28:18 ID:???
>>569
>extension_dir=ディレクトリ名
は、ベースディレクトリの指定だと思うよ。

>extension=/usr/lib64/php/modules/fileinfo.so
こう書かなくて済むように。


で、読み込まれなかったというのは、apache再起動しても
Call to undefined function finfo_open
になったということかな?


/usr/lib64/php/modules/fileinfo.so
が実際に存在しているのは確認ずみ?


あ、ちなみに実際にcentosで試して回答しているわけではないから何か外しているかも。
571nobodyさん:2009/08/19(水) 18:31:34 ID:gdnF9G1d
はい、確認しました。

extension_dir = "/usr/lib64/php/modules"

extension=fileinfo.so

pwd -> /usr/lib64/php/modules
にて「fileinfo.so」を確認

httpd -k restartにてApacheの再起動
572nobodyさん:2009/08/19(水) 18:36:20 ID:gdnF9G1d
Apacheのerror_logを確認したところ
Unable to initialize module\nModule compiled with module
とあったので検索してみると
どうやらコンパイルでインストールしたphpとyumでインストールしたphpが共存しているのが問題みたいでした。

ですので、一度PHP関係を削除してインストールしなおそうと思います。
ありがとうございました。
573nobodyさん:2009/08/19(水) 20:10:10 ID:I0IT/dw1
会社で公開してるシステムで再現性なしのエラーが見つかった

ただ単純にpublic/user/のファイルからpublic/admin/のインデックスに移動
admin側でuserのとこで発行したセッションをキーにDBからデータを引っ張ってきて
どうたらこうたらしてるだけのはずなんだけど

ある利用ユーザが入れないらしい
ただ、そのユーザのID借りても入れたし、
ブラウザやいろんなテストID使っても
一回だけしか再現できなかった

こんな再現性がない不具合が見つかった場合、
どんなふうに原因を探すものなのでしょうか?
574nobodyさん:2009/08/19(水) 20:11:42 ID:???
エラー起きたときに変数全部テキストかDBに保存するようにしたらいいんじゃね
575nobodyさん:2009/08/19(水) 20:14:25 ID:???
ログイン周りといえばクッキーだろうか
576nobodyさん:2009/08/19(水) 20:26:06 ID:I0IT/dw1
エラーがでたら は ありですね
具体的になにがエラーになってるのかは不明なんですけど、やってみようかと思います

ちなみにクッキーは怪しいと思ったけど、セッションIDしかなかった
577nobodyさん:2009/08/19(水) 20:45:43 ID:ECQ6gete
phpでFlateDecodeって扱える?
578nobodyさん:2009/08/19(水) 22:24:32 ID:ECQ6gete
zlibの
・gzdeflate ? 文字列を deflate 圧縮する
・gzinflate ? deflate圧縮された文字列を解凍する
これがFlateDecodeなのかな?
579nobodyさん:2009/08/19(水) 22:28:08 ID:???
exec("zip");
580nobodyさん:2009/08/20(木) 15:11:25 ID:???
ファイルにログを書き込んでいるのですが、更新順に読み込むには
どうすれば良いでしょうか?
ログファイルをスタックのように扱いたいです。
ファイルポインタを先頭に置くと一行目が上書きされていますので、しょうがなく
終端に置いて書き込んでいるのですが、そうすると逆から読み込まなければいけなくなっていしまいます。

ログの表紙形式としては、
2009/08/20 更新
2009/08/19 更新
2009/08/18 更新

のように降順に表示したいです。
ログがどのぐらいの量になるかわからないので、いったん配列に読み込んで、それから
逆順に出力するのも変な気がします・・・。
581nobodyさん:2009/08/20(木) 15:19:51 ID:???
つスレタイ
582nobodyさん:2009/08/20(木) 15:24:32 ID:???
下らなくない質問は余所でやれ。
583nobodyさん:2009/08/20(木) 15:35:44 ID:???
>>580
データ全部読み込んでから、先頭に書いて元からあったデータを追加とか。
DB使ったほうがいいんじゃね。

あと>>1呼んでID出せ
584nobodyさん:2009/08/20(木) 15:40:22 ID:???
>>580
ログを書き換えるということと追記は意味が違うよ
ログがどのくらいの量っていったってメモリを食いつぶすような量にはならないでしょ
もしも問題になるほどの量ならそもそも管理方法に問題がある
585580:2009/08/20(木) 15:44:42 ID:2mPTkGjX
レスありがとうございます。
ID出すの忘れてました。

>>583
DBをいじるのはあまり慣れていないので・・・・。
>>584
配列に読み込んでも大丈夫でしょうか・・・・。

ファイルポインタを終端に置き、そこから逆に先頭まで一行ずつ読み込むのは
無理でしょうか?
586nobodyさん:2009/08/20(木) 15:46:20 ID:???
そしたら文章逆になるやん
587nobodyさん:2009/08/20(木) 15:48:05 ID:???
>>580
$logfile = "example.txt";
$write = "追加したい文字";
$lines = file($logfile,FILE_IGNORE_NEW_LINES);
foreach($lines as $value){
  $add .="\n".$value;
}
if(($fp = fopen($logfile,'a'))!==false){
  fwrite($fp,$write);
  fclose($fp);
}else{
  return ("書き込みに失敗");
}

こんなかんじで
588nobodyさん:2009/08/20(木) 15:49:51 ID:???
>>585
file_get_contentsつかってStringに読み込めばいい
それで先頭に新しいログ\nつけたしたものを
ファイルを書き換え(一旦中身消して)すればいい
589nobodyさん:2009/08/20(木) 15:49:56 ID:???
$add .="\n".$value; は $write .="\n".$value; だスマソ
590nobodyさん:2009/08/20(木) 15:51:40 ID:???
使い回せるようにfile使ったけど単に追記するならfile_get_contentsのほうがよかったかな
591nobodyさん:2009/08/20(木) 15:56:48 ID:???
>>580
ファイルにどれくらいの行数を保存しようとしているんだ?
万単位になるならデータベースを使うのがいいと思う

格納するデータが少ないのであれば
態々降順にファイルを書かなくても最後に追記
ファイルを配列に格納>降順ソート>foreachで十分じゃないのか?

下手な小細工するよりこっちの方が早いと思う
592580:2009/08/20(木) 16:38:09 ID:2mPTkGjX
皆さんレスありがとうございます。

>>588に書かれているやり方で、読み込みは先頭からするのが一番簡単ですかね・・・。

>>591
あまり決まっていないので、更新した内容があれば延々と書き続けると思います。
ただ、古いログは消しても支障ないので、あまりにも増えてしまったら消してしまう予定です。
593580:2009/08/20(木) 17:16:35 ID:2mPTkGjX
無事成功しました。
ありがとうございました。
594nobodyさん:2009/08/20(木) 18:01:55 ID:WKWR+oFl
Apacheが起動しません。

error_logを見ると
PHP Warning: PHP Startup: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in Unknown on line 0

PHP Fatal error: PHP Startup: Timezone database is corrupt - this should *never* happen! in Unknown on line 0

と書かれています。

[root@localhost]# httpd -k start
[root@localhost]#

起動時にはエラーは出ませんが、実際は起動されていません。
上記のエラーが書き出されます。

PHPの問題なのかApacheの問題なのかOSの問題なのかすらわかりません。
似たようなエラーでは、php.iniのdefault.timezone=ASIA/Tokyoで解決してありますが、
こちらはそれでも解決しないです。
595nobodyさん:2009/08/20(木) 18:06:48 ID:???
php.iniが読みに行けてないとみた。
596nobodyさん:2009/08/20(木) 18:14:50 ID:WKWR+oFl
# PHP.ini Dir
PHPIniDir "/etc"

のように、php.iniの場所を指定してあげましたが、
やはりエラーが出てしまいます。

597nobodyさん:2009/08/20(木) 23:48:48 ID:???
Apacheを再起動してないとみた。
598nobodyさん:2009/08/20(木) 23:49:35 ID:???
default.timezoneがそもそもおかしいとみた。
599nobodyさん:2009/08/20(木) 23:54:57 ID:???
HDDがいかれてると見た
600nobodyさん:2009/08/21(金) 00:10:47 ID:e3oLJKKb
【OS名】centOS
【PHPのバージョン】php5.2
【質問内容】
mbstring.http_inputにSJIS
mbstring.internal_encodingにEUC-JP
のような設定です。
AjaxのページからのリクエストはUTF-8になってしまうので、
$_REQUESTに入るパラメータの自動文字コード変換をしたくないのですが、
方法ありますでしょうか?
mb_convert_encoding($_REQUEST["TEST"],"SJIS","EUC-JP");
で戻そうかと思ったのですが、
たまに文字の一部が消えてしまいます。
601nobodyさん:2009/08/21(金) 01:02:02 ID:???
PHPはUTF-8が標準、json_encodeとかいくつかの関数はUTF-8でしか受け付けない
602nobodyさん:2009/08/21(金) 01:08:30 ID:???
PHPの自動変換って無効にするのが基本かと思ってた
603nobodyさん:2009/08/21(金) 06:39:37 ID:1d2neVQK
HTTP_Requestで、POSTフォームのあるページにアクセスするときに、
valueしてあるところは弄らなくていいかなぁと思って(radioボタンとか)、
必要なフォームだけaddPostDataでポストしといたのですが、
結果は、スルーしたポストフォームは全て空になってしまいました。
クライアント側のブラウザに依存して判断しているからだと思うのですが、
これがもしもvalueで選択済みのフォームが大量にあった場合、
HTTP_RequestするときはaddPostDataも
その数だけ指定しなければならないのでしょうか?
value済みフォームは有効になるような都合の良いHTTP_Request関数などないでしょうか。
よろしくおねがいします。
604nobodyさん:2009/08/21(金) 08:44:12 ID:???
value済みフォームって何?
605nobodyさん:2009/08/21(金) 12:11:07 ID:PCqrhdqr
$hairetsu = array("test" => "pong","ok" => "ng");

test.logに"array("test" => "pong","ok" => "ng");をそのまま文字列として書き出したいのですが、やはりいちいちクォートして書き込むしかないのでしょうか?
606nobodyさん:2009/08/21(金) 12:15:06 ID:???
シングルクォーテーションがあるじゃない
607nobodyさん:2009/08/21(金) 12:17:30 ID:???
変数に格納された記述をそのまま出力する関数があるから探してみ
608nobodyさん:2009/08/21(金) 12:24:19 ID:PCqrhdqr
>>606-607
var_export($hairetsu,TRUE);
でいけました。
ありがとうございましたm(__)m
609nobodyさん:2009/08/21(金) 12:26:12 ID:???
>>605
str_replace("\n","",print_r($array,true));
610nobodyさん:2009/08/21(金) 14:22:44 ID:WhelcFIU
質問します。幼稚園の年間イベントをまとめるアプリを作ります。
遠足などのイベントのページに、参加した子供たちを組分けして出力します。
(イベント名の見出しの下に、A組の参加生徒出力、B組の参加生徒出力、C組の… という形)
利用するテーブルは
○table1 イベント情報テーブル
 id, eventName, eventDay
○table2 参加した生徒テーブル
 id, evId, studentName, kumi
です。

この状況で、table1.id=table2.evIdという条件でJOINし、SELECTのクエリ(以下)を実行して参加生徒を抽出するんですが、
 SELECT table1.*, table2.evId, table2.studentName, table2.kumi
 FROM table1 LEFT JOIN table2
 ON table1.id=table2.evId
 WHERE table1.eventName = '○○山の遠足';
どうやって組ごとにまとめて出力したら良いのか迷っています。(クエリの結果は当然、全ての組を含んでいます。)
自分の考えでは、
1)クエリ結果に対してforeach
2)それぞれのtable2.kumi値を取得して
3)重複を省きながら$kumiAry配列にpush
4)出来上がった$kumiAryの値をキーにしてリスト出力
という流れです。
しかし、もっとマシな効率的なやり方ないでしょうか?
クエリを書き換える必要があれば、それも教えていただけると嬉しいです。
よろしくお願いします。
611610:2009/08/21(金) 14:23:55 ID:WhelcFIU
すみません、書き忘れました
環境は php5.2.6 Mysql5 です
612nobodyさん:2009/08/21(金) 14:38:38 ID:???
クエリ結果に対してforeachかけなくても、クエリ結果から1件ずつ取得する時に
while ($row = fetchする関数()) {
$students[$row['kumi']][] = $row;
}
と連想配列に入れればいいのでは。

あるいは、幼稚園規模なら組ごとにクエリ発行してもいいと思うけど
613nobodyさん:2009/08/21(金) 16:19:58 ID:???
私だったら
ORDER BY table2.kumi,table2.studentName
って並べ替えしておいて前の処理とkumiの値が変わってたらスタックを出力&クリアで
次の組に備えるとかやるかなぁ($oldkumiとか)

つか少し気づいたとこは普通、生徒管理テーブル作ってstudentNameとkumiはそっちのテーブルだな。
614nobodyさん:2009/08/21(金) 16:25:52 ID:???
そうだね。正規化してから始めた方がいいかも。
615613:2009/08/21(金) 16:28:52 ID:???
まぁ質問のために簡略化して書いてるのかもしれませんが。
616nobodyさん:2009/08/21(金) 16:30:18 ID:o/Rwitrf
PHP5.3にFileinfoインスコしようとおもたらすでにパッケージに組み込まれてた
質問しようと思ったけど完全に独り言になってしまったぬるぽ
617nobodyさん:2009/08/21(金) 16:42:31 ID:???
>>613
なんか古臭い手法ですね
618nobodyさん:2009/08/21(金) 17:01:52 ID:???
では>>617が最先端の手法を
↓↓↓↓↓↓
619613:2009/08/21(金) 17:12:10 ID:???
だって古いひとだものww
↓↓↓↓↓↓
では>>617が最先端の手法を
↓↓↓↓↓↓
620nobodyさん:2009/08/21(金) 17:12:40 ID:???
糞スレ
621nobodyさん:2009/08/21(金) 17:16:34 ID:???
最近まともな流れだったのに
>>617お前しんでいいよ
自分の答えを言った上でケチつけろ
ケチつけるだけなら100年ROMってろ
622nobodyさん:2009/08/21(金) 17:28:17 ID:???
お前もそうじゃん
623nobodyさん:2009/08/21(金) 17:37:45 ID:???
>>622
どこが「そう」なのかkwsk
日本語理解できない人?
624nobodyさん:2009/08/21(金) 17:47:48 ID:???
625nobodyさん:2009/08/21(金) 17:51:20 ID:???
お前らまたやってんのか...。

とりあえず>>617は最先端の手法を頼む
↓↓↓↓↓↓
626nobodyさん:2009/08/21(金) 17:55:42 ID:???
.>>624
ハア?
>>613の回答にケチつけた覚えはねえよ
>>617なんてそもそも回答になってねえし

>>617まだですか?早く最先端教えてくださいよ
627nobodyさん:2009/08/21(金) 17:59:05 ID:???

   ======糞スレ終了======
628nobodyさん:2009/08/21(金) 18:02:50 ID:???
答えられないから終了にしたいんですねw
なら最初から黙っとけよ
629610:2009/08/21(金) 18:13:11 ID:WhelcFIU
>>612-614
どうもありがとうございました
>>612
なるほどー、組をキーにした連想配列に入れて、そこから出力するわけですね
たしかにそっちのほうが楽かもしれない
>>613
すみません、スタックというのが理解できません。調べたんですがいまいちわからずで…
kumiの値を出力ごとにチェックして、例外(前のと違う)ときに次の組として処理し直すわけですね?
ちょっとやった事がない処理です。どうやったら良いのか考えてみます。。

もう一つ質問してもいいですか?
実はそれぞれのお返事をもらう前に、上で書いた自分なりの方法で「3)重複を省きながら$kumiAry配列にpush」を
とりあえずやっていたんですが、思ったように動きません。

$kumiAry = array();
foreach($allStudentAry as $key=>$value){
 if(!in_array($kumiAry, $value['kumi'])){
  array_push($kumiAry,$value['kumi']);
 }
}
array_unique($kumiAry);
print_r($kumiAry); 
結果、Array ( [0] => 3 [1] => 3 [2] => 3) と、思い切り重複してます。どこが問題なんでしょうか?

2つの方法で書き直す前に、スッキリしたいので教えてもらえると嬉しいです。
630nobodyさん:2009/08/21(金) 18:37:11 ID:???
>>629
> すみません、スタックというのが理解できません。調べたんですがいまいちわからずで…
> kumiの値を出力ごとにチェックして、例外(前のと違う)ときに次の組として処理し直すわけですね?
> ちょっとやった事がない処理です。どうやったら良いのか考えてみます。。

基本的に上記の理解であってます。
1レコードづつ読み込んでは、出力用変数(メモリ)に出力形式なりで溜め込んで(これをスタックって言ってた)
kumi値が変わったところで溜め込んだものを出力。語弊を生むような語法を使ってしまいすいません。
>>617に言われたとおり昔からあるデータベース読み込みの基本的なアルゴリズムですよw
631607:2009/08/21(金) 21:12:31 ID:???
>>608
いいってことよ
お礼は俺だけでいいよ606は関係なかったみたいだしw
632nobodyさん:2009/08/21(金) 21:33:12 ID:???
スタックとかPHPでやるもんじゃなくね?
633nobodyさん:2009/08/21(金) 22:43:05 ID:???
なんで?
配列でできるじゃん
634nobodyさん:2009/08/21(金) 22:47:53 ID:PNbb36xj
◆質問です。
OS:windowsXP SP3 Pro
PHP:5.2.9

自PCに飛んでくるパケットをすべてキャプチャしたいです。
phpsnifferなるものを見つけて試したのですが、うまくいきませんでした。
(エラーは出ないが★部分で止まったまま何も起こらない)
http://eder.us/projects/phpsniffer/
----------プログラマの主要な処理を抜き出したのが以下です。
$sock = socket_create(AF_INET, SOCK_RAW, SOL_TCP);
socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1);
$socks=array($sock);
$w = $e = NULL;
socket_select($socks, $w, $e, NULL);//★
socket_recv($sock, $packet, 65536, 0);
var_dump($packet);
-----------------------------
〜〜板いけ 〜〜のサイト見ろなどでも構いませんので
どなたか回答なりヒントをいただけないでしょうか。
635477:2009/08/22(土) 01:13:38 ID:???
tcpdump っておもったけどWindowsか、、
636634:2009/08/22(土) 02:01:56 ID:DV5PllOD
>>635
ヒントありがとう tcpdumpのwindows版でwindumpってのがあるみたい。
popenとの組み合わせでなんとかなるかも。
試してみます
637nobodyさん:2009/08/22(土) 02:52:54 ID:h6KUXpBq
HTTP_Requestでcheckboxをチェックするのってどうやるのか教えてください
638nobodyさん:2009/08/22(土) 02:56:11 ID:h6KUXpBq
自己解決しました
639nobodyさん:2009/08/22(土) 14:15:17 ID:qs0RE9DR
クラスを定義したmyClass.class.phpをrequire_once('myClass.class.php')して実行し
クラス中のメソッドを複数回実行してるんですが、最初の一回だけ動いて二回目以降は動きません。
なぜでしょうか?

myClass.class.php
=================================
class myClass{
 function __construct(){
  require_once("arrayList.php"); //配列リストの読み込み
  $this->musicGenreAry = $musicGenreAry;//$musicGenreAryはarrayList.phpに定義されてます
 }
 function func($aryName,$num){
  if($aryName =="music"){
   return $this->musicGenreAry[$num];
  }
 }
}

読み込む側の.php
=================================
<?php
function smarty_modifier_NUMtoTEXT($num,$aryName){
 require_once("myClass.class.php");//記入値・登録値を取得するクラスの読み込み
 $myClass = new myClass();
 echo $myClass->func($aryName,$num);
}
?>

すみません、続きます。
640639:2009/08/22(土) 14:39:16 ID:qs0RE9DR
639のつづきです

読み込み側の.phpを実行させるファイル test.tpl(smartyのテンプレートファイル)
=================================================
<p>
好きな音楽は、
1){$rsGakki.music1|NUMtoTEXT:'music'} (※修飾子プラグインとして実行しています)
2){$rsGakki.music2|NUMtoTEXT:'music'}
です
</p>

こんな感じです。
これで、1)ポップス  とは出るものの、2) のあとに何も表示されず空欄になってしまいます。
なぜなんでしょうか。smarty修飾子プラグインのルールに何かあるんでしょうか?
検証として、別に用意した普通の .phpの中で、 $myClassObj->func('music',1)、$myClassObj->func('music',2)と
したところ、ちゃんと目標の値を2つとも出力します。

smarty固有の問題ならsmartyスレで聞くべきなんですが、requireとかスコープとかで
間違ってるのかも知れないと思い、ここで聞きました。
例えば読み込み側.phpの、require_once()のタイミングはあそこでいいんでしょうか?
基本的におかしな事をしてるような気がして、自分ではわからない状態です。

色んなジャンルにまたがっててすみません。よろしくお願いします
641nobodyさん:2009/08/22(土) 14:50:44 ID:???
requice_onceだから
642639:2009/08/22(土) 15:04:14 ID:qs0RE9DR
すみません、書き忘れましたが環境は
PHP5.2.6、SMARTY2.6、CentOS5.3 です
あと、今
 function func($aryName,$num){
  if($aryName =="music"){
   print_r($this->musicGenreAry); //この行追加
   print "abc";
   return $this->musicGenreAry[$num];
  }
 }
したところ、print_rの結果を一度しか表示しないです(2回コールしてるので2回出るはず)
print "abc";は二回出力します。
配列が吹っ飛んでるのかな? なぜでしょうか。。
643nobodyさん:2009/08/22(土) 15:55:35 ID:TG4jntAz
>>641
ありがとうございます
今出先なので、帰宅したら試してみます!
644nobodyさん:2009/08/22(土) 16:07:13 ID:zxIfIvf2
PDOのprepare()でDB関数をバインドすることは出来ないんでしょうか?

イメージとしてはこんな形式で…
$pstmt->bindParam(':foo', 'NOW()');
645nobodyさん:2009/08/22(土) 16:12:51 ID:???
んなことしなくても、select now() as nowdate ;
ってクエリをprepareして実行してnowdate ってカラムをとればいいじゃん。
646nobodyさん:2009/08/22(土) 16:15:53 ID:???
bindParamって変数のバインドだぞ
fooがNOW()という条件を作りたいならSQL文でfoo = NOW()と書きゃいいだけだろ
根本的に考え方が間違ってる
647nobodyさん:2009/08/22(土) 16:34:41 ID:???
>>644
わざと出来ないようにしてると思ってもいいかも。
648nobodyさん:2009/08/22(土) 18:21:36 ID:???
暇だから質問してこいよ
fusianasaやって質問した奴は全部俺が答えてやる
649fusianasa:2009/08/22(土) 18:30:22 ID:???
やあ
650nobodyさん:2009/08/22(土) 18:41:54 ID:kOYOIwI1
複数の画像がアップロードできてかるい、画像掲示板CGIって ないですかね
651nobodyさん:2009/08/22(土) 19:18:40 ID:v9riHruT
return xml_parse(&$this->parser, &$data, true) ? $this->document : NULL;
ってどういう意味でしたっけ?
652651:2009/08/22(土) 19:32:14 ID:v9riHruT
すんません、ただの分岐でしたね
申し訳ない
653nobodyさん:2009/08/22(土) 19:34:44 ID:???
xml_parse関数の実装は知らん
?:は三項演算子。xml_parse関数の戻り値がtrueなら$this->documentを、falseならnullを返す。
文字列やら数値が返ってきた場合は、真偽値にキャストしてから判定する。0ならfalseとかな。
654nobodyさん:2009/08/22(土) 19:45:28 ID:???
>>649
fusianasaって書いたらそのままそっくり言われた通りのことしかできないのはゆとりなんだよ
俺はfusianasanって書いてほしかったな
655nobodyさん:2009/08/22(土) 20:33:26 ID:839IHuhx
初歩的で恐縮です。

郵便番号7桁の数字 1234567 を 123-4567
にしたいです。教えてください。
656nobodyさん:2009/08/22(土) 21:36:21 ID:???
substr_replace($var, '-', 3, 0)
657nobodyさん:2009/08/22(土) 22:16:18 ID:839IHuhx
>>656 ありがとうございます。
658nobodyさん:2009/08/22(土) 22:16:35 ID:???
>656
こんな関数あるんだな、初めて知った
659nobodyさん:2009/08/22(土) 22:23:59 ID:???
>>656
2chにこんな親切な人がいるんだな、初めて知った
660nobodyさん:2009/08/22(土) 22:24:16 ID:???
>>656
なにこのおしゃれな関数
これはいいな
661nobodyさん:2009/08/22(土) 22:32:21 ID:LFACnGww
ディレクトリのパスを取得する関数はありますか
たとえば ./.../././ のようなパスを ../ に直したいのです
662639:2009/08/22(土) 23:07:01 ID:???
>>641
うまくいきました!
ありがとうございました
663nobodyさん:2009/08/22(土) 23:14:03 ID:nZ+TC59g
fsockopen()とfwrite()つかってpost、getできるけど
これってhttp requestでのpostと何が違うの
前者は、いちいち要求ヘッダ書くのが面倒くさいだけ?
664nobodyさん:2009/08/22(土) 23:51:52 ID:???
>>655

俺ならもっと楽な方法を取る。
replace系使うまでもないかなと
$a = 1234567;
$[a][2]= $a[2]+"-";
665nobodyさん:2009/08/23(日) 00:47:36 ID:???
えっ
666nobodyさん:2009/08/23(日) 01:04:33 ID:???
なにそれ
667nobodyさん:2009/08/23(日) 02:06:44 ID:???
123 + "-" + 4567

くらいにやってることの意味がわかりやすく伝わるコードじゃない限り、
どれでも大差ないって思っちゃうなー。
668nobodyさん:2009/08/23(日) 02:18:18 ID:???
正規表現について質問があります。
入力された文字列の中にYouTubeのURLが複数存在しており
それらの中から 【 TnqXQSbLUQ1  or TnqXQSbLUQ1 】 という文字列を
取得し、 $match (配列)に一度に取得するにはどうすれば良いでしょうか?

【入力された内容】
動画1
http://www.youtube.com/watch?v=TnqXQSbLUQ1 ・・・ @
動画2
http://www.youtube.com/watch?v=TnqXQSbLUQ2 ・・・ A

【自分で書いてみた正規表現】
$pattern = "/http:\/\/www.youtube.com\/watch?v=\/i";
$string = "http://www.youtube.com/watch?v=TnqXQSbLUQU&feature=featured";
preg_match($pattern,$string,$match);

※最終的には $match に @>TnqXQSbLUQ1 A>TnqXQSbLUQ2
を取得したいです。
669nobodyさん:2009/08/23(日) 02:33:15 ID:???
>>668
"/youtube\.\w+\/watch\?v=([\w-]+)/"

ドメインがyoutube.jpだったりwww.youtube.comだったりするのでこんなかんじかな
670nobodyさん:2009/08/23(日) 02:44:57 ID:???
668

>>669
ありがとうございます。やりたい事が出来ました。

あと、正規表現について勉強をしているのですが、
"/youtube\.\w+\/watch\?v=([\w-]+)/"
のうち最後の「+」とは一体どういう意味なのでしょうか?
671nobodyさん:2009/08/23(日) 02:49:03 ID:???
[〜]が範囲内の文字、[A-Z]でA〜Zの文字を指す
\wが英単語つまり[a-zA-Z_0-9]と同じ意味
+は直前の表現が1個以上あることを示す。\w+ならa-zA-Z_0-9のどれかが1つ以上あとはググれ
672nobodyさん:2009/08/23(日) 03:00:14 ID:RepkHWNs
PHP5つかってるんですが
includeでindex?q=item&a=1&b=2みたいな引数を読み込む方法はありませんでしょうか?
PHP4で絶対パス指定してた時代は出来たのですが!
怒ってます
673nobodyさん:2009/08/23(日) 03:07:28 ID:???
>>671
ご丁寧にどうもありがとうございます。
ググって色々と勉強します。
674nobodyさん:2009/08/23(日) 03:11:54 ID:???
675nobodyさん:2009/08/23(日) 03:30:00 ID:RepkHWNs
>>674
はい4は読んでました。
たとえばキーワードで複数のAPI組み合わせてサイト作る機会って意外と多いと思うんですが
みなさんどうしてるんでしょうか。
PHP4に戻してCGI版PHP5にすればいけそうですか?
676nobodyさん:2009/08/23(日) 03:48:02 ID:???
>>675
それでおk
677nobodyさん:2009/08/23(日) 04:01:33 ID:RepkHWNs
>>676
マジですか?それとも軽くあしらう感じの答えですか?マジだったらありがとう
678nobodyさん:2009/08/23(日) 04:02:21 ID:???
PHP6や7になっても4を使い続けるつもりなら良いだろう
679nobodyさん:2009/08/23(日) 04:07:32 ID:RepkHWNs
そんなつもりないです
時代の波にのりたいです
680nobodyさん:2009/08/23(日) 04:08:55 ID:???
そうかそうか
681nobodyさん:2009/08/23(日) 04:18:49 ID:???
includeする側でなんか変数に設定する
っていうのでできると思うのだけども
それは求めてるものとは違うんだろか?
682nobodyさん:2009/08/23(日) 04:21:33 ID:???
って、$_GETとか$_REQUESTで一発かー。

>たとえばキーワードで複数のAPI組み合わせてサイト作る機会って意外と多いと思うんですが

いまいち言いたいことが分からないなー。
683nobodyさん:2009/08/23(日) 12:04:55 ID:AfcVjQ+e
localhostで実験しているときも、
自分のグローバルipを取得したいんですが、
何か簡単な方法ないでしょうか。
$_SERVER["REMOTE_ADDR"]すると127.0.0.1になってしまうんです。
よろしくお願いします。
windowsです。
(phpはapacheでlocalhost以外では実行できない設定にしてあります)
exec("ipconfig")とやってみたらDefault Gatewayという項目しか出てきませんでした
684nobodyさん:2009/08/23(日) 12:09:31 ID:???
外のサーバに問い合わせなさい
685nobodyさん:2009/08/23(日) 12:41:41 ID:???
もうすぐ5マンアクセス突破

そーいえばWEB魚拓やりたいけど容量がパンクしちゃう!!

とサガットさんが嘆いてました。
686nobodyさん:2009/08/23(日) 13:04:27 ID:???
>>669
それだとnetにもひっかかるわな
悪意を持ってる人物がnetとかplとか空いてるドメインを見つけて使うかもしれないからこれはアウト
687nobodyさん:2009/08/23(日) 14:18:55 ID:???
>>686
元のドメインはばらばらでも動画IDしか使わないんだから関係ないでしょ
688nobodyさん:2009/08/23(日) 15:41:38 ID:Tby4tQso
foreachで配列の次の要素を見ることはできますか?
ループのなかで5番目の要素を見てるときに6番目をみるような…
689nobodyさん:2009/08/23(日) 15:48:56 ID:???
添字が0から始まるということを知らないゆとりでないなら再現コードを詳しく
690nobodyさん:2009/08/23(日) 15:49:19 ID:???
ポインタを進めるとかキーをインクリメントするとか
691nobodyさん:2009/08/23(日) 16:18:29 ID:Tby4tQso
foreach($allAry as key=>val){
//ここで$val['name']が『やまだ』を返すとき、次の$['name']と等しいか知りたいんです
}
foreachはどうもいまいち理解できません
くだ質ですみませんがお願いします
692nobodyさん:2009/08/23(日) 16:28:51 ID:???
>>687
ばかだろ
693nobodyさん:2009/08/23(日) 16:30:35 ID:???
>>691
foreach($allAry as $key=>$val) {

このなかにforをつかう

}
694nobodyさん:2009/08/23(日) 16:35:45 ID:???
>>691
foreach($参照する変数 as $KEY名=>$値){

この書式をよく理解してないと思う。
この書式は、参照する配列変数の一次元目について、
キーと値の対応表を得るのに使う。要するに、配列の
キーがわからないときにそれをリストアップするものだよ。

なので、

$allAry が、
$allAry = array(
  array('name'=>'yamada','age'=>15,addr=>'tokyo-to'),
  array('name'=>'sato','age'=>18,addr=>'chiba-ken'));
というようなデータ構造の場合、$KEY名には、1、2しか
入ってこないし、$値には一名分の配列そのものしか
入らない。

もう、$allAryが、上記のような構造の場合、普通に
foreach($allAry as $one ){
とでもやって、一時変数に $one['name']の値を保存して
おいて逐次比較すればいいんじゃないかな。
695nobodyさん:2009/08/23(日) 16:40:23 ID:???
$array[0][name] = "Yamada";
$array[1][name] = "nanashi";

を foreach($array as $key => $val) で展開したら、$keyが0のとき$val['name']に
Yamadaが入るから、次のと比較するなら$key+1して$arrayを参照して比較すれば、
と思ったけど違ったんだっけか。
696nobodyさん:2009/08/23(日) 17:06:43 ID:???
>>692
youtube以外のドメインからとったID( [\w-] )をどうやったらアウトになるのか教えて
697nobodyさん:2009/08/23(日) 18:51:19 ID:???
>>696
信頼できるドメインからIDを取得できなかったらアウトですよね
698nobodyさん:2009/08/23(日) 18:52:08 ID:???
>>696
悪意のあるコードを仕込まれたサイトのIDを取得した場合という判断を考えられない池沼乙
699nobodyさん:2009/08/23(日) 18:57:48 ID:???
>>696の言ってる意味がわからないんだけど
誰か翻訳よろ
700nobodyさん:2009/08/23(日) 19:08:29 ID:???
>>696

youtube.hoge
youtube.test

こんなサイトがあったとして、君はyoutubeってだけで何でもいいからIDを取っちゃうのかい?
701nobodyさん:2009/08/23(日) 19:40:25 ID:???
>>698
[\w-]のIDからどうやって悪意のあるサイトに飛ぶんですか。
取ってるIDは[\w-]の範囲内ですよ
>>698
もしyoutube.comからHTMLをとってきてIDとるなら問題ないし。
ユーザーが入力したものだとしたらドメインが一致してもそのIDがでたらめなものかもしれないからドメインの問題じゃない


馬鹿ばかりだな
702nobodyさん:2009/08/23(日) 19:52:05 ID:???
>>701
IDから悪意のサイトに飛ぶなんてどの回答者も書いてないじゃん
少し落ち着けよ
703nobodyさん:2009/08/23(日) 19:54:29 ID:???
飛ばないなら問題ないじゃん
704nobodyさん:2009/08/23(日) 20:58:34 ID:???
>>691は、ふつうこうやるんじゃないの?

foreach($users as $key => $user){
 if($users[$key] == $users[$key+1]){
  // ここにやりたい処理を書く
 }
}
705nobodyさん:2009/08/23(日) 21:06:06 ID:???
あ、たいしたことじゃないけど['name']を付け忘れたので修正

foreach($users as $key => $user){
 if($users[$key]['name'] == $users[$key+1]['name']){
  // ここにやりたい処理を書く
 }
}
706nobodyさん:2009/08/23(日) 21:15:46 ID:???
foreachでやるとオーバーするだろ
そういう時はforでやるべし
707nobodyさん:2009/08/23(日) 21:16:25 ID:???
重複があるかどうか一発でわかる関数があるのに何故使わない?
マニュアルの配列関数のところ見れ
708nobodyさん:2009/08/23(日) 21:23:11 ID:???
>>706ごもっともwww
709nobodyさん:2009/08/23(日) 21:24:49 ID:???
>>691
array_mapを使うと幸せになりますよ
710nobodyさん:2009/08/23(日) 21:37:56 ID:???
関数を呼ぶのと、ifで比較するのってどっちが早いんだろうとか考えてると
いいコードは書けませんよね
711nobodyさん:2009/08/23(日) 22:00:24 ID:???
それは雇われたPGの考え
712nobodyさん:2009/08/23(日) 22:23:38 ID:nlDqD5AK
ユーザログインを管理する公開されてるサンプルでもなんでもいいので
使いやすいもの・参考になる簡単なもの無いですか?
やりたいことは、
・各ユーザに対する専用ページの保護
・ユーザ名・パスワードを入れた後はログアウトするまでユーザ専用ページ情報を開ける
・メールアドレスをユーザ名として使用
713nobodyさん:2009/08/23(日) 22:26:14 ID:???
すいません。
できればコードは「クラス」なものが良いのですが。
714691:2009/08/23(日) 22:27:22 ID:???
アドバイスくれた方、みなさんどうもありがとう
参考にしてやってみます。ありがとう
715nobodyさん:2009/08/23(日) 22:45:58 ID:???
>>712
つCMS
716nobodyさん:2009/08/23(日) 23:43:48 ID:???
>>715 ありがとうございます。
基本から良く分かってないのでできればどのCMSのこのモジュールが分かりやすいよ
とかいうのがあればおききしたいのですが。
717nobodyさん:2009/08/24(月) 01:27:27 ID:???
>>716
知ってる限りじゃDrupal。

静的ページを作るだけじゃかなり面倒臭いので
CMSのコンテンツマネージメント機能を利用する
ついでじゃなきゃお勧めできないけどw

つーか、PHPの標準機能だけでも結構あっさりと
できるでしょ。ユーザ管理DBを置いて、共通処理
で各ページ表示処理の手前で、認証やってダメな
ら弾けばいいんだから。Cookieにすればパラメータ
の受け渡しに迷うこともないし、セッションとしても
使えるし。
718nobodyさん:2009/08/24(月) 01:29:32 ID:???
>>716
どの程度の規模なん?
ユーザ少ないんだったらhtaccessという手もあるよ
719nobodyさん:2009/08/24(月) 02:17:17 ID:???
>>717 Drupal調べてみます。
> つーか、PHPの標準機能だけでも結構あっさりとできるでしょ。

基本DB使ってセッションで_SESSION[USER]=ユーザ名があればログイン中
というふうにしたらメアドがネットにながれちゃうのかなぁ?とか。
んでなんか一回安全で一般的なユーザ管理の方法を学ぼうかなぁとおもいまして
サンプルを探しているわけです。
(できればフォームで登録申請→登録メアドにメールが届く→メール内URLをクリックで本登録とか機能も作りたい)
一応ネットでいくつか見てはみたのですが説明サンプル的なもので実践的でないもの
っぽかったので、これ使ってりゃそんな間違いないし簡単だよってものがあるのかお聞きしたかったのです。

>>718
100人程度登録・書き込みしてくれたらまぁいいかな程度なんですが。
Basic認証のことかなぁ?できればログインフォームでのログインクラスとして実装したいのですが。
720nobodyさん:2009/08/24(月) 11:39:25 ID:F/8gKHCC
改行のない数万バイトのデータがあります
これを一定(1バイトの文字*60文字=60バイト)の長さで一気に配列に格納したいのですがスマートな方法はありますか?
このデータは最初から最後まで60バイトで区切っていって丁度きっちり割り切れるデータです
721nobodyさん:2009/08/24(月) 11:42:20 ID:???
forで回せばいいじゃん
722nobodyさん:2009/08/24(月) 11:47:52 ID:???
>>720
データの先頭60バイトを切り取って、配列に格納
この処理をarray_mapを使って再帰的に処理すればforより短いコードで書ける
723nobodyさん:2009/08/24(月) 11:58:07 ID:???
array_mapでどうやって・・・?
724fusianasa:2009/08/24(月) 11:58:25 ID:???
ずばり
str_split
725nobodyさん:2009/08/24(月) 12:00:31 ID:???
バイナリセーフではありません
726nobodyさん:2009/08/24(月) 12:21:50 ID:???
>>720
スマートと言っても何がスマートなのかよくわからん
見た目をすっきりなのか
行数をすっきりなのか

まぁ、こんな手もある
20文字区切りだけどな
$teststr = '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
$splitstr = chunk_split($teststr,20,"\n");
$bunkatu = split("\n",$splitstr);
727nobodyさん:2009/08/24(月) 12:24:50 ID:???
きっちり分けれるなら最後に区切り文字が二つ繋がるから空の要素が一つ出来る
それの処理が必要
728nobodyさん:2009/08/24(月) 12:28:32 ID:???
>>726
わざわざ改行をつけるなら初めから改行付きでデータを作るだろzk
729nobodyさん:2009/08/24(月) 12:30:49 ID:???
>>728
>>720を読んでからにしろな
730nobodyさん:2009/08/24(月) 12:36:33 ID:???
みなさんありがとうございます、自分の知らなかった関数が出てきたのでちょっと調べてて遅くなりました
>>726さんのchunk_splitが一番よさそうなのでそれでやってみようと思います
本当に勉強になりました、みなさんありがとうございました
731nobodyさん:2009/08/24(月) 12:42:56 ID:???
chunk_splitの他にphp5での関数があるなstr_split
732nobodyさん:2009/08/24(月) 12:44:08 ID:F/8gKHCC
>>703は自分です

>>731
ありがとうございます、そちらもしらべて学習します
733nobodyさん:2009/08/24(月) 12:53:11 ID:F/8gKHCC
str_splitはsplitする手間が省けて区切り文字なく直接配列に割り振ることができるんですね
ループの処理もいらず、短い1行でやりたいことができました!
734fusianasa:2009/08/24(月) 13:02:41 ID:???
僕が書き込んだんだぞ!!
ぷんぷん
735nobodyさん:2009/08/24(月) 13:08:02 ID:???
にこにこぷんぷん
736nobodyさん:2009/08/24(月) 13:13:36 ID:???
ぷんすかぷんぷん
737nobodyさん:2009/08/24(月) 14:01:09 ID:???
>>729
読んでからレスしたんだが
改行がないんだからわざわざ付けてどうすんだ
データ処理時に改行を付加するなら最初からデータの末尾に改行をつけるのがスマート
738nobodyさん:2009/08/24(月) 15:02:37 ID:???
頭悪いな〜
739nobodyさん:2009/08/24(月) 16:07:53 ID:???
>>738
頭悪いのはお前
数万バイトぐらいで改行分をケチる必要はないだろう
740nobodyさん:2009/08/24(月) 16:26:21 ID:ywIYQab+
PHP Version 5.3.0
imagick2.3.0 / ImageMagick 6.5.5
を利用しています

Imagickで取り込んだデータをブラウザに出力する場合、静止画であれば

echo [Imagickのインスタンス];

でいけるのですが、
アニメーションGIFを出力する場合は一旦ファイルに書き出してからでないと無理でしょうか?
741nobodyさん:2009/08/24(月) 18:12:09 ID:gGslhGFk
識別IDから国名を表示したく、以下のように書きました。
配列の要素数が増えると、処理が遅くなりそうで…
そもそも、配列で処理しようとしてることが間違いなのか…
上手な書き方、教えてください。

<?php
//$array[] = array(識別ID, 国名, 点数);
$array[] = array('a01', '日本', '10');
$array[] = array('a02', 'アメリカ', '20');
$array[] = array('a03', 'ロシア', '30');
//(省略)

$str = 'a02';
foreach($array as $item){
list($id,$name,$i) = $item;
if(in_array($str, $item)){
echo $name;
}
}
?>
742nobodyさん:2009/08/24(月) 18:21:11 ID:???
>>741
プログラムのほかの部分が判らんからあれだけど、
任意の識別IDから国名を出したいのなら、識別IDをキーにすべきじゃないか?

$array['a01'] = array('日本', '10');
$array['a02'] = array('アメリカ', '20');
$array['a03'] = array('ロシア', '30');

echo $array['a02'][0];
743nobodyさん:2009/08/24(月) 19:06:02 ID:???
連想配列使おうよ
744726,731:2009/08/24(月) 19:23:46 ID:???
>>737
ちょっとは応用に頭を使えよ…
改行改行って拘りすぎだ
chunk_splitは特定バイト毎に改行文字を挿入する
だから\nじゃなくて<br>でも何でも使えるんだよ

今回は思いついた\nを使っただけだ
745nobodyさん:2009/08/24(月) 20:51:53 ID:waMnQ6RO BE:66590093-2BP(931)
MySQLに格納した画像データの取り出しについて質問です。
格納の仕方・手順については、MySQL Query Browserを用いて、
格納した画像を表示・ローカルPCに保存(して表示)できたので問題ないと思います。

しかし、PHPを用いていざ表示してみようとすると、
『格納したものと同じデータ容量・同じサイズの白色(無色かも?)の画像』が表示されるだけです。

言っている意味が分かりづらいかもしれないですが、
それをローカルPC上に保存してみても、
画像を表示することはできないのですが、
(Windows Picture and Fax Viewerで表示しようとすると、
『画像を描画できませんでした』と表示される)
データ容量とサイズはしっかりとあっています。

こういった場合に考えられる原因がお分かりになる方、ご教授いただけませんか。

ソースコードを書く必要があれば書きます。
また、他に不足している情報があれば補足しますので、
どうぞよろしくお願いします。
746nobodyさん:2009/08/24(月) 20:59:09 ID:???
ヘッダ出してないからじゃね
747nobodyさん:2009/08/24(月) 20:59:21 ID:???
HTTPヘッダ忘れ。
748nobodyさん:2009/08/24(月) 21:01:25 ID:???
>>740
無理だと思った理由は?こんな症状が出たとか書くと答えてもらえる
どんなフォーマットでも出力方法は同じ
http://www.php.net/manual/ja/function.imagick-getimageblob.php

>>744
737じゃないが、>>726のヌル文字やデリミタの混入で
動くけど挙動がおかしくなるコードは下策
初心者に教えるべきでもないな
749nobodyさん:2009/08/24(月) 21:34:50 ID:???
配列のソートに有用なライブラリを探しています。

今私がやりたいのは、二次元配列を、n番目の配列をキーにソートをする、ということです。
イメージとしては、MySQLのORDER BYみたいな感じです。

array_multi_sortでもできますが、ソートのパターンが増えるたびにコードを書かないといけないのが少し煩わしいです。

何かいいのないでしょうか。
750nobodyさん:2009/08/24(月) 21:35:44 ID:???
スレタイ
751745:2009/08/24(月) 21:36:51 ID:waMnQ6RO BE:69057247-2BP(931)
>>746,747
ヘッダは
header('Content-type: image/jpeg');
と出力しています。

ただ1つ気になるのは、 image/jpeg であっているのか?というところです。
元画像はもちろん jpg なんですが、
先述の MySQL Query Browser を使って保存すると、
jpg とは認識してくれない( All Files(*.*) となっている)のです。
(もともと自動認識してくれないのかもしれませんが)
それを *.jpg として保存すると見られますし、あるいは *.png などとしても見られます。

ちなみにヘッダを出力しないと、文字化けしたバイナリデータが表示されます。
また、ヘッダの前に echo " "; などを追加するとエラーが起きるので、
ヘッダより前に何かが出力されてしまっている、ということもないと思います。
ソースコードの保存はutf8、BOMなしでしてます。
752740:2009/08/24(月) 21:37:48 ID:ywIYQab+
>>748
レスthx

なるほど、出力する時はその関数だったのか

php.netの例がそのままインスタンスechoしてるだけだったので、
正直変な書き方だとは思ってたんだw
どっちでもいいのかもしれんが今後はそれ使います

で、変更してみたけど結果は変わらず、
おそらくアニメーションGIFの1フレーム目だけが静止画として表示されるのみ

テストソース
$image = new Imagick('./img/0');
header('Content-type: image/gif');
echo $image->getImageBlob();

で、もうちょっと自力で探してたら
ttp://kyle-in-jp.blogspot.com/2008/09/imagemagickphpgif.html
このブログでまさにやりたい事がエントリされたのでちょっとこれから勉強してきます。
753nobodyさん:2009/08/24(月) 21:38:39 ID:???
>>751
じゃ再現するコードうpだ
754745:2009/08/24(月) 21:45:23 ID:waMnQ6RO BE:14798423-2BP(931)
>>753
了解です。
クラスオブジェクトとかを使っているので、
画像を表示するプログラム単体ではわかりづらいかもしれないです。
<?php
require_once( 'Config.class.php' );
require_once( 'Tables.class.php' );

$config =& new Config();

$_SESSION['permission'] = ADMIN;
$DSN = $config->DSN();
$uid = $_GET['uid'];
$img_type = $_GET['img_type'];


$cartoonist =& new Cartoonist( $DSN, "user_id", $uid );
// ↑Tables.class.php により、これで、
// Cartoonist テーブルの user_id フィールドにおいて、 $uid と一致するデータを、
// Cartoonist->user_id や Cartoonist->user_password などとして呼び出せます。

if( $cartoonist->isError() ) {
die( $cartoonist->getError() );
}
if( $img_type = "illust_1cut" ){
header('Content-type: image/jpeg');
echo $cartoonist->illust_1cut;
}
$cartoonist->__destruct();
?>
よろしくお願いします。
755745:2009/08/24(月) 21:46:46 ID:waMnQ6RO BE:29596234-2BP(931)
連投すみません、

×:// Cartoonist->user_id や Cartoonist->user_password などとして呼び出せます。

○:// $cartoonist->user_id や $cartoonist->user_password などとして呼び出せます。
756nobodyさん:2009/08/24(月) 22:03:38 ID:???
>>744
<br>なんて使うか
バカじゃねええの
757nobodyさん:2009/08/24(月) 23:13:57 ID:???
>>754
出力されるべき画像の形式は何なの?
758nobodyさん:2009/08/24(月) 23:19:04 ID:???
サイズだけじゃなく、MD5とかで壊れていないことを確認済みなんだろうか
759nobodyさん:2009/08/24(月) 23:19:18 ID:???
array(18)
{ [0]=> array(2)
{ ["aaa"]=> string(1) "a-1" ["bbb"]=> string(6) "b-1" }
[1]=> array(2) { ["aaa"]=> string(1) "a-1" ["bbb"]=> string(6) "b-2" } ....以下略
という風に並んでいるものがあって、
a-1 b-1,b-2....
a-2 b-1,b-2....
っていう風に取り出す方法ないでしょうか…。
どうしたら良いものかさっぱり…。

二次元配列…?でも上手くいかなかったし。
760nobodyさん:2009/08/24(月) 23:25:43 ID:???
こういう場合、再帰という手法を使う
761nobodyさん:2009/08/24(月) 23:26:56 ID:???
何のデータ構造だこりゃ?
762759:2009/08/24(月) 23:31:55 ID:HdED1h1S
sage入れてた。ごめんなさい。
763nobodyさん:2009/08/24(月) 23:52:54 ID:???
とりあえず、このデータだけでは並びがわからん。
764nobodyさん:2009/08/25(火) 00:01:24 ID:???
foreachで別の配列なり変数なりに放り込む
765nobodyさん:2009/08/25(火) 00:04:51 ID:???
[0]
 ["aaa"] = "a-1"
 ["bbb"] = "b-1"
[1]
 ["aaa"] = "a-1"
 ["bbb"] = "b-2"

[0]と[1]の両方に同じデータが入ってるのか?
766nobodyさん:2009/08/25(火) 00:22:12 ID:???
もしかしてただのcsvだったりするのか
767nobodyさん:2009/08/25(火) 01:07:51 ID:Owp0h4vB
Auth::getAuthData()がうまくできなくて困っています。
ソースはこんな感じ。

require_once( "Auth/Auth.php" );

$params = array(
  dsn' => "mysql://user:pass@localhost/db",
  'table' => "member_table",
  'usernamecol' => "username",
  'passwordcol' => "password",
  'crypttype' => "md5",
  'db_fields' => "*",
);

$auth_obj = new Auth( "DB", $params );
$auth_obj->start();
if( $auth_obj->getAuth() ) {
  print "ようこそ!" . $auth_obj->getAuthData( 'username' ) . "さん<br>";
};


認証はできててエラーは何も出ず、
ようこそ!さん
と表示されます。getAuthDataがNULLを返しているような感じ。
フィールド名をいろいろ変えても同じ。
ぐぐったけどわかりません。
なんでこんなシンプルな関数が動作しないのか…。何を調べればいいのでしょうか。
768nobodyさん:2009/08/25(火) 01:08:26 ID:???
array(
  [0] => array(
    [0] => "a",
    [1] => "b",
  ),
  [1] => array(
    [0] => "c",
    [1] => "d",
  ),
)
こんな感じでかいてくれ上のだと見にくい
769nobodyさん:2009/08/25(火) 01:11:13 ID:Owp0h4vB
追記:ぐぐってこれも試してみたけどだめでした。
http://go4it.seesaa.net/article/113476888.html
770nobodyさん:2009/08/25(火) 01:19:06 ID:???
>>769
エラー全部表示してみたら?
771759:2009/08/25(火) 01:20:46 ID:EILdhFsc
array[18]{
[0]=> array(2){
["aaa"]=> string(1) "a-1" ["bbb"]=> string(6) "b-1"
}
[1]=> array(2){
["aaa"]=> string(1) "a-1" ["bbb"]=> string(6) "b-2"
}
[2]=> array(2){
["aaa"]=> string(1) "a-1" ["bbb"]=> string(6) "b-3"
}
[3]=> array(2){
["aaa"]=> string(1) "a-2" ["bbb"]=> string(6) "b-1"
}
[4]=> array(2){
["aaa"]=> string(1) "a-2" ["bbb"]=> string(6) "b-2"
}
[5]=> array(2){
["aaa"]=> string(1) "a-3" ["bbb"]=> string(6) "b-1"
}
.....略

書き方を変えてみました。
772nobodyさん:2009/08/25(火) 01:22:03 ID:???
>>771
foreach
773nobodyさん:2009/08/25(火) 01:25:07 ID:???
>>771
function array_print( $array )
{
foreach( $array as $key => $value )
{
if( is_array( $value ) )
{
array_print( $value );
}else{
print $value;
}
}
}
774745:2009/08/25(火) 01:39:37 ID:jyvND+zG BE:14798232-2BP(931)
レス遅くなってすみません。

>>757
元ファイルが jpg なので、jpg 形式で出力すればいいかと思ってたんですが・・・。
データベースに格納する際、何か必要な処理があるんでしょうか?

>>758
md5 で確認、といいますとどういうことでしょうか?
暗号化するコマンドの md5 しか知らないのですが・・・。


よろしくお願いします。
775nobodyさん:2009/08/25(火) 01:42:12 ID:Owp0h4vB
>>770
エラー全部表示にしても、何も出ません。

しょうがない、Authを使うのはあきらめよう。これだから他人の書いたライブラリは信用できない。
776745:2009/08/25(火) 01:43:00 ID:jyvND+zG BE:51792473-2BP(931)
連投すみません。

>>758
もしかして、
echo $cartoonist->illust_1cut;
の部分を、
echo md5( $cartoonist->illust_1cut );
としてみる、ってことでしょうか?
そうなのであれば、その結果、
f85f7936575718c32cbc4018e7dc63a6
と出力されたので、壊れてないと思われます。
777nobodyさん:2009/08/25(火) 01:48:21 ID:???
>>776
自作でいろいろやってる部分を省いて、一番単純なコードでちゃんと表示されるかどうか試してみたら?
問題が再現するコードってのはそういうこと
778nobodyさん:2009/08/25(火) 02:04:17 ID:???
SQLに入れる段階でバイナリ含めてエスケープされると思うんだが
779745:2009/08/25(火) 02:30:52 ID:??? BE:44394236-2BP(931)
>>777,778,他皆様

以下のようなスクリプトにしてみたところ、表示できました!
あとはこれをいじってどうにか自分の思う形に持っていきたいと思います。
面倒見てくださった皆様ありがとうございました。

<?
// DB接続
$conn=mysql_connect("localhost","root","");
// DB選択
mysql_select_db("eninaru");
//DBからバイナリ画像を取得
$sql = " SELECT illust_1cut FROM Cartoonist LIMIT 1 ";
$result = mysql_query( $sql );
$val = mysql_fetch_assoc( $result );
//画像として表示
header("Content-type: image/jpeg");
echo $val['illust_1cut'];
exit;
?>
780nobodyさん:2009/08/25(火) 09:19:58 ID:???
>>756
お前本当に頭悪いな
chunk_splitは区切り文字として何でも使えるんだから好きなのを使えば良いだろ?
固定バイト数毎に配列に格納する方法についての質問に
・forループで格納する方法の別の方法として
chunk_splitを使って特定バイト毎に区切り文字入れてsplitで分ける方法を出しただけだ
その後にphp5のマニュアルを見たらstr_splitを見つけたけどな

考え方として案を出しているのに区切り文字に拘り続ける理由がわからん
そんなのは自分のシステムに合わせた区切りにするだけじゃないのか?
781nobodyさん:2009/08/25(火) 09:31:01 ID:???
お前らまだやってんのか
他人のどうでもいいプログラムのことでけんかすんなよ...
782nobodyさん:2009/08/25(火) 09:34:08 ID:???
どうでもいい…(ノ_・。)
783nobodyさん:2009/08/25(火) 10:55:25 ID:Nftjn5Vt
windowsXP+IISです

あるシステム関数を含んだコードを実行すると下のようなエラーが出ます。
何に原因があると思いますか?
Warning: system() [function.system]: Unable to fork ["C:/Program Files/Xpdf/pdftotext.exe" -enc Shift-JIS ./showPickingListNoUpdate.pdf2.pdf .\_4a933e906bb263.14282916] in C:\public_html\group\pdf_test.php on line 8
784783:2009/08/25(火) 10:56:27 ID:Nftjn5Vt
実行したスクリプト
(以前にここでPDFのテキストを抽出したいと相談した時に教えてもらったサイトのコードで試しました
パスは適宜修正済みできちんとその場所に実行ファイルやPDFファイルがあります)
----------------------------------------------
<?php
class PdfToText {
public static $exepath = '"C:/Program Files/Xpdf/pdftotext.exe"';
public static $options = ' -enc Shift-JIS';
public static function execute($path=null) {
$tmp_path = PdfToText::get_temp_file_path($path);
system(PdfToText::$exepath . " " . PdfToText::$options . " {$path} {$tmp_path}");
$text = null;
if (file_exists($tmp_path)) {
$text = readfile($tmp_path);
unlink($tmp_path);
}
return $text;
}
public static function get_temp_file_path($path=null) {
$dir = dirname($path);
if ($dir[(strlen($dir)-1)] != DIRECTORY_SEPARATOR) {
$dir .= DIRECTORY_SEPARATOR;
}
return ($dir . uniqid('_', true));
}
}
echo PdfToText::execute("./test.pdf");
?>
785nobodyさん:2009/08/25(火) 11:19:30 ID:???
>>783
windowsでphpを使ったことがないので外しているかもしれんけど...

ttp://www.iis-aid.com/articles/trouble_shooting/warning_exec_function_exec_unable_to_fork
ttp://www.somacon.com/p255.php
あたりを見ると、IISユーザーにC:/Program Files/Xpdf/pdftotext.exe
を実行するパーミッションがないからじゃないだろうか。
786nobodyさん:2009/08/25(火) 11:53:08 ID:???
>>780
自分のきめえさを指摘されたら本気になって弁論
フイタワ
787nobodyさん:2009/08/25(火) 11:55:46 ID:2Veus9TY
【OS名】FreeBSD 6.2
【PHPのバージョン】5.2.3
上記仕様のレンタルサーバーでSmartIRCというライブラリを使用して
IRCBOTを動かしています。動作としては指定のIRCチャンネルに
10分置きに現在時間を知らせるメッセージを送信するというものです。
問題なく動作はしてくれるのですが、1時間ほど経つと
IRCBOTがチャンネルから落ちてしまいます。PHPは初心者で
あまり詳しくないのですが、恐らくPHPのセッションが1時間で
タイムアウトしてしまう設定になってるのではないかと想像しています。
自分でタイムアウト時間を設定したいのですが、どのように
すれば良いでしょうか?ご教示よろしくお願い致します。

(SmartIRC)http://pear.php.net/package/Net_SmartIRC/
(参考ページ)http://www.phppro.jp/phptips/archives/vol36/



788nobodyさん:2009/08/25(火) 12:10:51 ID:???
>>787
quickIRCに乗り換えれば?
789nobodyさん:2009/08/25(火) 12:17:26 ID:???
つうかよどこのレンサバかぐらい書け
790787:2009/08/25(火) 12:44:57 ID:2Veus9TY
>>788
ご提案ありがとうございます。
ですが、「IRCBOTが1時間で勝手に落ちる」という問題が
解決可能なのであれば、SmartIRCでBOTを運用したいと思っています。

>>789
すみません、書き漏れておりました
レンタルサーバーはland.toという所を使っています。
http://land.to/
791nobodyさん:2009/08/25(火) 13:02:09 ID:???
>>783
>>785の書いているIISが実行ファイルを処理できる権限があるかどうかのチェック

>>787
スクリプトはCRONか何かで定期的に起動するタイプなのか?
常駐だとレンタルサーバーならプロセスがkillされているかもしれん
792787:2009/08/25(火) 13:22:01 ID:2Veus9TY
>>791
ご回答ありがとうございます。
CRON等で定期的に起動はしていません。
EIからBOTスクリプトの書かれたphpを一度だけ読み込んでます。
読み込んだ後はブラウザを閉じています。

>常駐だとレンタルサーバーならプロセスがkillされているかもしれん
なるほど。。。
BOTを常駐させたいのですが、プロセスがkillされない方法は
ないでしょうか?
793787:2009/08/25(火) 13:23:51 ID:2Veus9TY
>>EIからBOTスクリプトの書かれたphpを一度だけ読み込んでます。
EIではなくIE(インターネットエクスプローラー)。
失礼しました。
794nobodyさん:2009/08/25(火) 13:38:32 ID:???
>>786
かわいそうに
795nobodyさん:2009/08/25(火) 15:16:31 ID:???
>>792
レンサバでプロセス占領するようなことすんな
やるなら自鯖でやれ
氏ねksg
796nobodyさん:2009/08/25(火) 15:54:23 ID:???
恥ずかしいなぁ
797nobodyさん:2009/08/25(火) 16:28:30 ID:???
>>792
ttp://www.phppro.jp/phptips/archives/vol36/
をざっくりと見た感じだとスクリプトが常駐する感じっぽいな

それなら「レンタルサーバで使うのは止めておけ」だ
レンタルサーバは皆で使用している物だからな
一つのサーバに「自分だけなら・・・」で使う奴が何人も居たら
大変な事になる
798787:2009/08/25(火) 16:36:34 ID:2Veus9TY
そんな事は知ってんだよ
他の奴なんかどうだっていい、俺さえよければいいんだ
わからねえなら下らないレスすんな雑魚ども
799nobodyさん:2009/08/25(火) 16:44:57 ID:???
ID:2Veus9TY
質問内容から知ってるような感じには見えなかったなあ
800nobodyさん:2009/08/25(火) 16:48:18 ID:???
いやいや、レンタルサーバーとはいえ、この程度であーだこーだ言ってる人がどうかと思う。
そもそもレンタルサーバー屋と借りてる奴との間の話だし。
VPSとか借りたらどう? 他のお客さん関係なくなるし。
共有なんかだと、プロセスみてずっと動いてるの殺したり、定期的にいろいろ再起動されたりするので無理じゃね。

801nobodyさん:2009/08/25(火) 16:51:45 ID:???
専用サーバやVPSならまわるか共有サーバーであーだーこーだ言わない人のほうが少ないな
802nobodyさん:2009/08/25(火) 17:16:02 ID:???
スルーしとけよ
803nobodyさん:2009/08/25(火) 17:18:40 ID:TGZyUfPX
鯖くらい自分で立てろよ
なんならスペース貸そうか?
804nobodyさん:2009/08/25(火) 17:39:18 ID:???
phpでデーモン作るのは簡単にできるけど、実際問題色々とナンセンス。
805nobodyさん:2009/08/25(火) 22:27:39 ID:Y/NZgk2c
PHP 5.3.0
finfo_open → resource(12) of type (file_info)
finfo_file → NULL

どうしてもfinfo_fileでNULLが返ってきます。
ローカルサーバーでは正常にファイルタイプが返ってきました。
ちなみにmimeのデータベースはローカルで成功したものをLinuxにアップロードして使っています。
なぜこのようなことになるのでしょうか・・・。
806nobodyさん:2009/08/25(火) 23:18:15 ID:???
>>805
finfo_openのリソースをfinfo_fileで使用するから片方だけ通らないってのも変な話だ
その部分のコードをアップしてくれないか?
807nobodyさん:2009/08/25(火) 23:29:39 ID:Y/NZgk2c
$finfo = new finfo(FILEINFO_MIME, "/etc/httpd/conf/magic");
$mimetype = $finfo->file($finfo, $file_path);
var_dump($finfo, $mimeType, $file_path);

Warning: finfo::file() expects parameter 1 to be string, object given in /home/uploader/data/class/Uploader.php on line 52

object(finfo)#3 (0) {
}

NULL

string(14) "/tmp/phpmGveGV"

こんな感じです。
おかしいな、$finfoオブジェクトなのに・・・
newじゃなくfinfo_openならさきほどのresource(12) of type (file_info)がかえってきてました
808nobodyさん:2009/08/25(火) 23:32:37 ID:???
PHPで携帯のサイトを作成しています。
空メールを送って、メールを自動返信する処理を作成しているのですが、
ソフトバンク携帯だけ、自動返信メールの件名がダブって送られます。
例えば、件名が「登録ありがとうございます!」だったら、「登録ありがとうございます!登録ありがとうございます!」みたいな感じです。
その他の2キャリア、auとドコモは大丈夫でした。またPCから送ってみたのですが、そちらも大丈夫でした。
メールを送る処理は、普通にmail関数を使っているのですが、これはソフトバンク携帯の仕様なんでしょうか?
809nobodyさん:2009/08/25(火) 23:33:05 ID:Y/NZgk2c
ごめん、オブジェクトにしたら書き方間違えてた

$finfo = new finfo(FILEINFO_MIME, $this->getMagicFilePath());
$mimetype = $finfo->file($file_path);
var_dump($finfo, $mimeType, $file_path); die;

object(finfo)#3 (0) { }

NULL

string(14) "/tmp/phpCZhdyB"
810nobodyさん:2009/08/25(火) 23:39:32 ID:???
コピペじゃなく手書きしたんだよな?
2行目:$mimetype
3行目:$mimeType
811nobodyさん:2009/08/25(火) 23:41:57 ID:Y/NZgk2c
どう見てもコピペです
本当にありがとうございました
812nobodyさん:2009/08/25(火) 23:43:33 ID:MI9sHpli
しばらくphpから離れてたんですが
PHP5.2.x系の最新版ってないんですか?
PHP5.3しかないのですが・・・
813nobodyさん:2009/08/25(火) 23:46:34 ID:8cJr6T6d
PHPの変更点を日本語化してるサイト、もしくはブログはございませんか?
http://www.php.net/ChangeLog-5.php
814nobodyさん:2009/08/25(火) 23:55:31 ID:???
>>811
ネタっぽく返ってきてるんだがw
解決でいいのか?w

>>812
意味が良くわからん
環境にもよるが本家にも無かったか?
815nobodyさん:2009/08/26(水) 00:08:15 ID:zWNH0csG
はい、解決です
本当にありがとう
816nobodyさん:2009/08/26(水) 04:21:39 ID:8mfIJWwV
<?php
for($i=0;$i<5;$i++)
{
echo $i."<br>";
}

for($j=0;$j<5;++$j)
{
echo $j."<br>";
}
?>
これなんで、$iも$jも同じ結果になるの?
前置加算だったら、$j=0に++して最初は0じゃなくて1になるんじゃないの??
forの中は特別?
817nobodyさん:2009/08/26(水) 04:24:02 ID:???
++$jがどのタイミングで実行されると思ってんの?
818nobodyさん:2009/08/26(水) 04:32:29 ID:8mfIJWwV
>>817
ちょっとかんがえてみたけど
文法はおかしいけど、もしかしてこういう感じのこと??
for($j=0;$j<5;)
{
echo $j."<br>";
++$j
}
819nobodyさん:2009/08/26(水) 04:39:27 ID:???
そうです
820nobodyさん:2009/08/26(水) 05:04:50 ID:8mfIJWwV
ありがとうございました
821nobodyさん:2009/08/26(水) 13:58:45 ID:6H4tMTv1
ど忘れしたので教えて
<input type="text" value={$text}>
のようにテキストボックスにあらかじめ文字列を表示しようとしてるんだけど、
$textの半角スペースなんかをエンコードするのってどうやるんだっけ
822nobodyさん:2009/08/26(水) 14:05:18 ID:???
htmlspecialchars
823nobodyさん:2009/08/26(水) 14:06:45 ID:6H4tMTv1
>>822
ありがとう!やってみたけど、やはり途中に半角スペースがあるとそれ以降が表示されない。
他にも何かあるんだっけ?
824nobodyさん:2009/08/26(水) 14:08:01 ID:???
urlencode
825nobodyさん:2009/08/26(水) 14:10:24 ID:6H4tMTv1
>>824
こんどは半角スペースが「+」に化けちゃった…
htmlspecialchars と組み合わせてもだめだ…だれか助けて
826nobodyさん:2009/08/26(水) 14:13:09 ID:jmEq8MiJ
それHTMLの問題だろwwww
value={$text}
  ↓
value="{$text}"

で囲ってやれよwww
827nobodyさん:2009/08/26(水) 14:17:49 ID:6H4tMTv1
>>826
できた!wwww
d
828nobodyさん:2009/08/26(水) 14:18:56 ID:???
>>823
お前敬語使えよ
829nobodyさん:2009/08/26(水) 14:24:04 ID:6H4tMTv1
>>828
サーセンwwwwww
830nobodyさん:2009/08/26(水) 14:38:53 ID:???
すみません、PHP(PHP4)でCSVのデータの読み込みなんですが
読み込むCVSファイルは株価のデータです。こんな感じのです。

| 日 付 | 始値 | 高値 | 安値 | 終値 |
| 2009-7-1 | 100.0 | 150.0 | 50.0 | 120.0 |
| 2009-7-2 | 120.0 | 130.0 | 70.0 | 90.0 |
| 2009-7-3 | 90.0 | 150.0 | 50.0 | 120.0 |

          :

CSVファイルを読み込んで、MYsqlでデータを保存します。
データベースはkabu
テーブルはそれぞれopen,high,low,close です。
下らない質問なのは承知ですが、まったくわかりませんorz
よろしくお願いします。


831nobodyさん:2009/08/26(水) 14:44:42 ID:???
>>830
IDだして。

っていうかいくらなんでも丸投げ過ぎるw
何がしたいのかを具体的に書いてくれよ(CSVのデータをDBに入れたいのはわかるが)

あとテーブルが4つにわかれているの?列じゃなくて?
832nobodyさん:2009/08/26(水) 14:51:00 ID:???
>>831
830じゃないけどガタガタうるせえぞボケ
答えられないくせに調子に乗るな!
833nobodyさん:2009/08/26(水) 14:51:12 ID:???
学校の宿題でしょ
834nobodyさん:2009/08/26(水) 14:53:46 ID:???
>>830 >>832

>>1 読め
835nobodyさん:2009/08/26(水) 15:02:50 ID:???
なんじゃこりゃwwwほんとに学校の宿題みたいなかんじだなw
836nobodyさん:2009/08/26(水) 15:21:11 ID:???
どこのスレにも狂犬みたいなやつがいるな。
837nobodyさん:2009/08/26(水) 15:25:12 ID:???
>>833-836
答えられない癖に煽りは一人前wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
きめえwwwwwwwwwwwwww
838830:2009/08/26(水) 15:25:13 ID:6QIN4yeN
すみません、sageてはいけないんですね。

丸投げすぎてすみませんorz
テーブルはそれぞれ分かれています。日付=torokubi が抜けてました。
日付はtorokubiに
始値はopenに・・といった具合です。すみませんがよろしくお願いします。
839nobodyさん:2009/08/26(水) 15:28:33 ID:???
ここは丸投げスレじゃなくて質問スレなのでお間違えないように
840nobodyさん:2009/08/26(水) 15:29:16 ID:???
>>839
氏ねクソ
841nobodyさん:2009/08/26(水) 15:30:21 ID:???
>>839
じゃあなんで>>345は答えてもらえてるのか回答よろ
842nobodyさん:2009/08/26(水) 15:31:40 ID:???
とんでもない基地外がやってきたな...。
843nobodyさん:2009/08/26(水) 15:31:50 ID:???
>>839
素直に僕は<?php echo "Hello World!!";?>しか書けない初心者ですって言えよ(笑)
どうせお前は回答者になれるほど知識無いんだろ(笑)
844830:2009/08/26(水) 15:32:28 ID:6QIN4yeN
あ、あと何がしたいかっていうとですね

もともと最新値は自分で入力していくんですが、過去分を証券会社からDLしてきて、
それを表示する&(間違いとかあれば)修正したり出来るページを作りたいのです。
新規に入力できたり、DBにあるデータを表示するPHPのページは出来てるんですが
アップロードのとこがわかりませんorz
845nobodyさん:2009/08/26(水) 15:32:58 ID:???
830っていい奴だね
誰か答えてみろよ
846nobodyさん:2009/08/26(水) 15:34:33 ID:???
おれが回答してやる。
phpでプログラム書いて読み込むんだ
847nobodyさん:2009/08/26(水) 15:41:41 ID:???
質問してる人が ああいう人に文句言えばいいとおもうんだけどね。

//DB接続略 ファイルアップロードしてファイルに保存部略
$sql = "LOAD DATA INFILE 'example.csv' INTO TABLE kabu (torokubi,open,high,low,close)FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES ";
@mysql_query($sql);
848nobodyさん:2009/08/26(水) 15:46:29 ID:???
>>847
さっさど書けばいいんだよクズ
849nobodyさん:2009/08/26(水) 15:50:58 ID:???
なんで俺がそんな事言われるんだ? おまえ実は質問者だろ。
850nobodyさん:2009/08/26(水) 15:52:39 ID:???
>>830
>>847がloaddataでの完璧な例を出してくれているので書くことが無いw

で、質問とは別の話なんだが、そのテーブル構成だと銘柄が判らないぞ?
まさか銘柄毎にテーブルを作るとか考えているわけではないよな?
851nobodyさん:2009/08/26(水) 15:54:55 ID:???
無駄レス増やさなくていいからテンプレ守れないのは放置しとけな
あと質問者も煽られたからって荒らさないでID出さないほうで聞いて来い
852nobodyさん:2009/08/26(水) 15:56:21 ID:jmEq8MiJ
くだらない質問以前に質問になってない
何がしたいの?
853830:2009/08/26(水) 16:01:13 ID:6QIN4yeN
>>847さん
ありがとうございます、試してみます。
そんなたった1行でできるとは、、、感服です。

>>850
銘柄はいまのところ固定してるんで大丈夫ではありました。
が、実は本当はいります。作り忘れてでしたorz

その他のみなさんもありがとうございました。
糞な質問でスレ消費してすみませんでした。
854nobodyさん:2009/08/26(水) 16:03:06 ID:???
>>847
なんで@付けてんの?
855nobodyさん:2009/08/26(水) 16:08:54 ID:???
>>853
>データベースはkabu
>テーブルはそれぞれopen,high,low,close です。

テーブルがkabuで列がopen,high,low,closeの間違いだよね?
それなら>>847さんの例で平気だけど。

こういう時はDBのテーブル構成も明記しておいたほうがいいよ。
856nobodyさん:2009/08/26(水) 16:10:13 ID:???
おまじないだよ
857nobodyさん:2009/08/26(水) 18:23:09 ID:4ml6a4mF
php5.3とphp6どっちから始めてらいいのか教えろ
858nobodyさん:2009/08/26(水) 18:42:21 ID:???
5.3です
859sage:2009/08/26(水) 19:31:41 ID:???
下記のファイルの権限を変更したくて
-rwxrwxrwx 1 apache apache 4852374 8月 26 19:29 hogehoge
下記のPHPを実行したんですが変更されません。
<?php
chown("hogehoge", root);
?>
構文間違ってます?
860nobodyさん:2009/08/26(水) 19:36:29 ID:???
861sage:2009/08/26(水) 19:48:55 ID:???
>>860
<?php
$dir = "/var/www/html/";
$path = $dir . "hogehoge";
$username = "root";
chown($path, $username);
?>
これでもダメだった。
もうお手上げ。
862nobodyさん:2009/08/26(水) 19:54:08 ID:???
>>858
じゃあ5.3使うとするか
863nobodyさん:2009/08/26(水) 19:54:17 ID:???
説明
bool chown ( string $filename , mixed $user )

ファイルfilename の所有者を(名前または番号で指定した) ユーザuser に変更しようと試みます。 スーパーユーザのみがファイルの所有者を変更できます。


注意: この関数では、 リモートファイル を使用することはできません。これは、処理されるファイルがサーバのファイルシステムによりアクセスできる必要があるためです。

注意: セーフモード が有効の場合、PHP は操作を行うファイル/ディレクトリが実行するスクリプトと同じ UID (所有者)を有しているかどうかを確認します。
864nobodyさん:2009/08/26(水) 19:54:50 ID:eFQ12b2O
なんでもいいから実用できる軽量テンプレートエンジンがあったら教えろ
865sage:2009/08/26(水) 20:06:20 ID:???
>>863
条件は満たしてる気がするんだが…
866nobodyさん:2009/08/26(水) 20:07:11 ID:???
867nobodyさん:2009/08/26(水) 20:13:27 ID:eFQ12b2O
なんで俺がそのスレで聞きに行かないといけないんだバカ
>>1はちゃんと読んだぞ
868nobodyさん:2009/08/26(水) 20:19:31 ID:???
じゃあSmarty
はい終了
869nobodyさん:2009/08/26(水) 20:55:39 ID:???
>>867
>・ 質問者として、態度をわきまえること。
どう考えてもこれ読んでないだろ。
870nobodyさん:2009/08/26(水) 21:06:28 ID:eFQ12b2O
敬語で質問しろと書いてないだろボケ
871sage:2009/08/26(水) 21:10:00 ID:???
敬語で質問しろとは書いてないけど態度はわきまえてない
872sage:2009/08/26(水) 21:30:51 ID:???
夏の終わりにはこういうの増えるね
学校を前にすると不安になるからなのかね
873nobodyさん:2009/08/26(水) 22:15:36 ID:eFQ12b2O
きめえ
874 ̄ ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄:2009/08/26(水) 22:29:35 ID:1j0SUHbG
.__________
|| // //         |
||    / ̄ ̄ ̄ ̄\ . |    / ̄ ̄ ̄ ̄\
||   (  人____) |   (          )   
||     |ミ/  ー◎-◎-)|   (ヽミ        |   
||    (6    ゜(_ _) )|.  ( 6)        |    
||  __| ∴ ノ  3  )|  (∴ \____ノ_
|| (_/.\_____ノ |   >--(っ___□__)
|| / (   ))    ))ヽ|  (  ))     |三| ヾ
. ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   |  ||========[]===|)
                    |_||  | ̄ ̄ ̄ ̄ ̄|
                  (_)\|三三三三三|
                   (:::::::::::::::::::::y:::::::::ノ)\
                    |:::::::::::::::::::::|:::::::::|   |
875nobodyさん:2009/08/26(水) 23:09:41 ID:???
またかわいそうな子供がいるのか。
876nobodyさん:2009/08/26(水) 23:11:51 ID:eFQ12b2O
はいはい
てめえらの知識不足ってやつね
あとsmartyは軽量ではないからな、無知は痛いね(苦笑)
877nobodyさん:2009/08/26(水) 23:14:40 ID:???
>>876
>【その他諸注意】
>・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
878nobodyさん:2009/08/26(水) 23:22:00 ID:???
キチガイ涙目w
879nobodyさん:2009/08/26(水) 23:34:45 ID:???
pear くらいならいいんじゃない?

ただのライブラリでしょ。
標準からは一歩下がったところだけど、いまはもう
デファクトスタンダードになっていると覆う。
880nobodyさん:2009/08/26(水) 23:35:36 ID:???
pearなんていまだに動かない鯖もあるぞ
881nobodyさん:2009/08/26(水) 23:57:37 ID:???
んなあほな
実態はただのPHPファイルだよ
882nobodyさん:2009/08/27(木) 00:17:36 ID:???
javascriptのライブラリみたいなものか
883nobodyさん:2009/08/27(木) 00:40:52 ID:???
そういえば最近仕事でhtmlテンプレートっていうテンプレートを使ってるシステムの手直ししたな
軽くて小さくて単純ってのはわかるが、故に難しかった
後、うどん屋とか焼肉屋とか、そんな感じの名前のフリーのシステムを使ってたのもあったなぁ
軽くて小さくて簡単なのはわかるけど、マイナーで深い使い方が出来ない分、意外と苦労した
884nobodyさん:2009/08/27(木) 00:44:00 ID:???
>>880
レンタルサーバーでも、自分でディレクトリ入れてincludeすればそれで動くこと多いよ
885nobodyさん:2009/08/27(木) 01:43:48 ID:eQsuAF/T
PHP4と5はどっちがいいの?
886nobodyさん:2009/08/27(木) 01:44:20 ID:???
今なら6
887nobodyさん:2009/08/27(木) 02:02:52 ID:eQsuAF/T
いやいや6なんてないでしょ?
オブジェクト的なのが変わっただけ?
888nobodyさん:2009/08/27(木) 02:05:17 ID:???
存在するにはする開発段階だけど
PHPサイドはもう4は使うなとアナウンスしてるので5にしときな
889nobodyさん:2009/08/27(木) 02:13:48 ID:eQsuAF/T
thx
5って分家的な感じだと思ってた
890nobodyさん:2009/08/27(木) 02:29:41 ID:???
>>887
お前は何を言ってるんだ
891nobodyさん:2009/08/27(木) 08:47:53 ID:???
>>876
http://pannkaka.txt-nifty.com/upload/manual.html

下らない質問スレなんだからこんなんでいいだろ。
892nobodyさん:2009/08/27(木) 11:08:49 ID:???
>>886=>>890

正式版でもないのにPHP6なんて使うのは可笑しい
893nobodyさん:2009/08/27(木) 11:59:29 ID:AzGLOn1y
http://www.pachiweb.com/updir/data/1111.jpg

for関数はこのように入れ子構造で使う事は可能なのでしょうか?
894nobodyさん:2009/08/27(木) 12:21:28 ID:???
なんで画像で質問すんの?
ここにコード書けよ
バカなの?
895nobodyさん:2009/08/27(木) 12:23:49 ID:???
お前らkandaMAXって知ってる?
896nobodyさん:2009/08/27(木) 12:26:54 ID:???
>>893
できる

>>894
スルーしろ

>>895
しらん
897nobodyさん:2009/08/27(木) 12:28:28 ID:AzGLOn1y
>>894
すいません、コード抜き出すと300行ぐらいになるので
このようにした方がわかりやすいと思いました。
ちょっと投稿レベル低すぎるようなのでくだスレの方に
書き込みたいと思います、ありがとうございました。
898nobodyさん:2009/08/27(木) 12:39:51 ID:???
>>893
今日一番笑えた
サンクス
899nobodyさん:2009/08/27(木) 12:43:12 ID:AzGLOn1y
何度もすいません、
ちょっと過疎ってるようなので
こちらに再度書き込ませて頂きたいと思います。

http://www.pachiweb.com/pachiweb/pachiweb.html
↑掲示板のように
http://www.pachiweb.com/updir/data/2222.jpg
↑ログをhtml出力したいと思い
http://www.pachiweb.com/updir/data/1111.jpg
↑このような構文を考えました。

ログには
$threadno,$responseno,$last,$now,$name,$email,$sub,$model,$com,$host,$pass,$ext,$W,$H,$tim,$chk,\n
このようになっており$lastはスレッドの最終書き込み判定です。
そして、上記構文で実行したところ処理が永久ループし始めました。
もうちょっとシンプルで頭の良いやり方などありましたら
教えて頂けませんでしょうか?
900nobodyさん:2009/08/27(木) 12:49:35 ID:???
>>899
同じパターンの入れ子を考えるときは、再帰的な構造を考える
そうすればシンプルなものが書ける

再帰とは - はてなキーワード
http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2
901nobodyさん:2009/08/27(木) 13:04:16 ID:???
まじでコードは書けよ
画像に映ってるものをそのまま書けばいいだろ
902nobodyさん:2009/08/27(木) 13:07:12 ID:???
すいません、紹介頂いたサイトの他に
検索などして見回ってきたのですが今一イメージが掴めません。
言葉だけでも結構なので上記構文を元にお教え頂けると幸いです。
効率よいログ自体の変更例もお教え頂けるとありがたいです。
903nobodyさん:2009/08/27(木) 13:07:41 ID:???
904nobodyさん:2009/08/27(木) 13:11:52 ID:???
指摘する人に、画像みて文字を打ってもらう気ですか?
面倒だから回答もらえないんだよ。
905nobodyさん:2009/08/27(木) 13:13:01 ID:???
http://haruka-yumenoato.info/txt/comic/src/F2039.txt
失礼しました、上記が独自関数内容になります。
906nobodyさん:2009/08/27(木) 13:14:12 ID:???
>>903->>904
すいません>>902書きこんだ直後から
txt上げれるアップローダー探したりしてました。
907nobodyさん:2009/08/27(木) 13:35:22 ID:???
>>905
段の表示や画像表示だったりのある程度の共通部分は、別functionに。
908sage:2009/08/27(木) 13:36:50 ID:???
なぜわざわざうpろだ使うのか意味がわからない
リンク先たどるの面倒だろ
何度もいうが普通に書け
909nobodyさん:2009/08/27(木) 13:47:14 ID:???
>>907
そうしたいと思います、
アドバイスありがとうございます。

>>908
過去2chでコード書いた時に
改行制限やらtab要素消去ですごく苦労したので
今回のようにさせてもらいました。
>>905でも駄目でしょうか?
910nobodyさん:2009/08/27(木) 13:47:25 ID:???
>>899
一度CSVをスレッドごと,レスごとに連想配列に入れてから
forかforeachで回して表示した方がいいんじゃない?

ページはページング処理したいんだろうから多分別の処理になると思うけど
911nobodyさん:2009/08/27(木) 13:53:04 ID:???
910だけどごめんあんまコード読んでなかった
要は処理部と表示部を分けたほうがいいよということ
そのほうがデバッグもしやすい
912nobodyさん:2009/08/27(木) 13:54:06 ID:???
>>910
まさに今同じ事を考えていました・・・・
やはりその肯定を最初にやらないと駄目ですよね。
前述した処理でそれが出来ていると思っていたのですが
多分まったく出来てないですよね。

実は今回何故このようにしたかといいますと
futaba.phpと言う掲示板は
スレッド番号とスレッド内のレス番号を改行で区切ったログと
そのスレッド番号がついた書き込みログの2つに分けたphpだったので
それを1つにまとめたいと思ったのが原因でした。

1つにすると処理速度大幅に遅くなったりするのでしょうか。
皆様、一度>>910さんの言うとおりの方法でやってみます、
ちょっと帰り遅くなりますがアドバイス頂ければ
また返信させていただきます。
本当にありがとうございました。
913nobodyさん:2009/08/27(木) 14:13:00 ID:MqB1vJcx
おいカスども今日も来てやったぞありがたく思え
トラックバック送信ライブラリを教えろ
914nobodyさん:2009/08/27(木) 14:30:35 ID:???
915nobodyさん:2009/08/27(木) 14:48:11 ID:???
>>905
241行目のページング処理のループ、$i使わない方がいいんじゃね
今は一番外のループ(7行目)が1回しか回らないし問題なさそうだけど
916nobodyさん:2009/08/27(木) 15:07:11 ID:MqB1vJcx
>>914
ありがとうございます
917nobodyさん:2009/08/27(木) 16:59:31 ID:4gKJtMw/
おいてめえら今日2度目の質問だぞ、気合い入れてよく聞けや
php5.3から実装された新機能の解説をしているサイトを教えろ
918nobodyさん:2009/08/27(木) 17:03:18 ID:???
919 ◆83yIjoTVFM :2009/08/27(木) 17:18:17 ID:???
モバイルでexcelファイルをダウンロードさせたいんだけど
以下の状況で困ってるので知恵を貸して!

xlsファイルに直リンすると
softbank(911T)はexcelファイルとしてダウンロード>表示ができた
au「表示できないファイルです」
docomo(N904i)端末はバイナリがそのまま文字として出力された

あとobjectタグとかもあるっぽいけど
docomoだとダメみたいなので
auとdocomoでのダウンロードのさせかたを教えてほしい

ゆくゆくはoffice系のファイルを全部ダウンロードできるようにしたいけど
とりあえず
httpd.confに
AddType application/vnd.ms-excel .xls
を設定してある

920 ◆83yIjoTVFM :2009/08/27(木) 17:20:17 ID:???
あ、
上のはphpの関連性がないけど

今テストとしてxlsに直リンしてて
PHPで書いた内部パスひっぱってダウンロードさせるスクリプトを使いたいので
まずは生ファイルでという段階です

ということでここでの質問をお許しください・・
921nobodyさん:2009/08/27(木) 17:24:31 ID:???
スレタイ嫁
922919:2009/08/27(木) 17:48:24 ID:GXwqUg2e
トリップとまちがえてました
>>921
thx!
923nobodyさん:2009/08/27(木) 17:56:21 ID:???
モバイルはわからんから間違ってるかもしらんけど

<?php
header('Content-type: application/download');
header('Content-Disposition: filename="filename.xls"');
?>
924nobodyさん:2009/08/27(木) 18:27:42 ID:???
>>923
ありがとうございます
Webのほうでもきいてみます!
925nobodyさん:2009/08/27(木) 18:47:49 ID:BfJOagLT
phpスクリプトの中にperlスクリプトを書くことができますか?
926nobodyさん:2009/08/27(木) 18:51:38 ID:???
できるよ
927nobodyさん:2009/08/27(木) 19:09:37 ID:???
どうやって書くんですか?動きますか?
928nobodyさん:2009/08/27(木) 19:16:32 ID:???
PECL-Perl
929nobodyさん:2009/08/27(木) 19:44:07 ID:???
なぜIDを隠すの?
930nobodyさん:2009/08/27(木) 20:03:21 ID:???
質問者じゃないから
931nobodyさん:2009/08/27(木) 23:17:09 ID:qnE7rLil
         ______ 
       ,;i|||||||||||||||||||||||||||||||ii;、         _/
     /||||||||||||||||||||||||||||||||||||||ii;、        \
  / ̄ ̄\||||||||||||||||||||||||||||||||||||ii;゙ヽ,      /
'" ̄ヽ     ヽ!!||||||||||||||||  ||||||||||!!"ヘ     <  ロマンティックageるよ
ヽ          ゙!!!||||||||||||  |||||||!!   iヽ── /
|||l            ゙゙ヽ、ll,,‐''''""     | ヽ|||||||||ロマンティックageるよ
|||l     ____   ゙l   __   \|||||||||  
||!'    /ヽ、     o゙>┴<"o   /\   |'" ̄| ホントの勇気 見せてくれたら
\  /  |ミミヽ──‐'"ノ≡- ゙'──''彡| |、 |   |
   ̄|    |ミミミ/" ̄ 、,,/|l ̄"'''ヽ彡|| |、/   / ロマンティックageるよ
 ヽ、l|    |ミミミ|  |、────フヽ |彡l| |/  /_
  \/|l    |ミミミ| \_/ ̄ ̄フ_/  |彡|l/    ̄/ ロマンティックageるよ
  \ ノ   l|ミミミ|  \二二、_/  |彡|      フ  
    ̄\  l|ミミミ|    ̄ ̄ ̄  |メ/       \トキメク胸に キラキラ光った
    | \ ヽ\ミヽ    ̄ ̄"'  |/        /
    /  \ヽ、ヾ''''ヽ、_____//       /_夢をageるよ
  /  ヽ ゙ヽ─、──────'/|         ̄/
. /       ゙\ \     / / \__
   ───'''" ̄ ̄ ゙゙̄ヽ、__,,/,-'''" ̄   ゙''─
932nobodyさん:2009/08/28(金) 10:25:35 ID:9RiD+7YO
PHP.INIに日本語のコメント付けても大丈夫ですか?
933nobodyさん:2009/08/28(金) 10:32:11 ID:9RiD+7YO
5.2.10ですけど、あ、なんかコメントと改行のみの業を全部消したら175行に収まったんですけどこんなに少なかったんです
934nobodyさん:2009/08/28(金) 10:35:23 ID:???
なぜ消したし
935nobodyさん:2009/08/28(金) 10:40:04 ID:???
消しちゃったらまずいですかね?
コメント消したのはすぐ目的の個所をいじりやすかったからなんです
936nobodyさん:2009/08/28(金) 10:46:16 ID:???
コメントなんだから消しても平気
937nobodyさん:2009/08/28(金) 10:54:10 ID:???
検索使えよ
938nobodyさん:2009/08/28(金) 11:01:53 ID:9RiD+7YO
毎回設定帰るたびに検索→修正ってめんどくさくないですか?
939nobodyさん:2009/08/28(金) 11:05:20 ID:0tCfU1Pn
俺はEclipseに、php.iniをxml形式で設定できるように修正してる
940nobodyさん:2009/08/28(金) 11:07:14 ID:???
>>938
175行あったら1画面に収まらないから、結局目的の箇所を探すわけだろ?
それなら検索するのと手間は変わらないと思うけど?

あとそんなに頻繁に設定変える必要があるのか?
そしてその設定項目はphp.iniじゃないと設定できない項目なのか?
頻繁に変えるなら、.htaccessとかini_setじゃ駄目なの?
941nobodyさん:2009/08/28(金) 11:14:14 ID:???
             /)
           ///)
          /,.=゙''"/   
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

942nobodyさん:2009/08/28(金) 11:21:58 ID:???
>>932
php-5.3.0/Zend/zend_ini_scanner.l
<INITIAL,ST_VALUE,ST_RAW>{TABS_AND_SPACES}*[;][^\r\n]*{NEWLINE} { /* Comment */
<INITIAL>{TABS_AND_SPACES}*[#][^\r\n]*{NEWLINE} { /* #Comment */
ということで問題ない
943nobodyさん:2009/08/28(金) 11:30:00 ID:???
>>940
言いたい気持ちはわかるが
コメント消すくらいでそんなに目くじらたてることもなかろう。

ini_setが便利なのは確か。
944nobodyさん:2009/08/28(金) 11:35:29 ID:???
>>943
言葉が悪かったか、スマン。
別に目くじらたてたわけじゃないよ。
945nobodyさん:2009/08/28(金) 11:40:03 ID:???
目くじら立てるっていうか本人のことを思いやってアドバイスしてるんだけど
まぁ別に本人がいいっていうならいいんじゃね
946nobodyさん:2009/08/28(金) 11:45:07 ID:???
今時一画面でおさまらない奴なんているの?w
947nobodyさん:2009/08/28(金) 11:49:20 ID:???
>>946
24インチのフルHDのディスプレイを縦にして使ってるけど175行も表示できない・・・
948nobodyさん:2009/08/28(金) 11:54:34 ID:???
ini_setが便利とかどんだけ池沼なんだよ
設定弄って再起動したほうが早いだろ
949nobodyさん:2009/08/28(金) 14:28:11 ID:IryiXPVo
$keyword = "ああああ";
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$threadcount = count($treelog);//スレッド数をカウント
for($i=0; $i<$threadcount; $i++){
$writing = explode(",", $treelog[$i]);
$writingcount = count($writing);
for($j=0; $j<$writingcount; $j++){
list($no,$now,$name,$email,$sub,$model,$com,$host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $writing[$j]);
if(mb_ereg_match($keyword,$com)){
$hit = TRUE;
}
}
if($hit == TRUE){
$hitthreadline .= "$i\n";
$hit = FALSE;
}
}
echo "$hitthreadline";
950nobodyさん:2009/08/28(金) 14:34:00 ID:???
はじめまして。
携帯で見るページで↓のようなコードでPOST渡しの情報をezwebでやりとりしようとすると、var_dump($_POST)が空になるのですが…どこがわるいのやらわからない。
GETメソッドにするとちゃんとFORMの中身が渡ってるのですがGETにはURL長制限があるので…いい方法ないでしょうか

<html>
<head>
<title>post.php</title>
</head>
<body>
<?php
echo "POSTs:<br>";
var_dump($_POST);
echo "Requests:<br>";
var_dump($_REQUEST);
?>

<form method="POST" action="http://hoge.hoge/~hoge/post.php" >
<textarea name="message" raws=8 cols=12 >post </textarea>
<input type="hidden" value="test" />
<input type="submit" />
</form>
</body>
</html>
951950:2009/08/28(金) 14:35:09 ID:FUKcT0P8
まずい、>>950sageちゃいました、すいません
952nobodyさん:2009/08/28(金) 14:39:06 ID:???
953nobodyさん:2009/08/28(金) 14:40:02 ID:IryiXPVo
TREEFILEはスレッド順に並んだログ番号ファイルで
1,3,4\n
だとLOGFILEの記事番号1番がスレッド記事、3&4番がレス記事になります。
記事内のコメントにキーワード文字が含まれてる場合、
そのスレッドツリー丸ごと1行分を$hitthreadlineに
該当したスレッド分格納したいのですが
どうも上記プログラムを実行すると$hitthreadlineに
何も挿入されておりません。
ログの方にはキーワードを含まれた分があるのですが・・・・

何かおかしいところあるでしょうか?
954nobodyさん:2009/08/28(金) 14:41:47 ID:IryiXPVo
明らかにおかしかった部分は書き直しましたがまだ先程と動作変わりません。
文章は>>953です。

$keyword = "ああああ";
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$threadcount = count($treelog);//スレッド数をカウント
for($i=0; $i<$threadcount; $i++){
$writing = explode(",", $treelog[$i]);
$writingcount = count($writing);
for($j=0; $j<$writingcount; $j++){
$rrrr = $writing[$j];
list($no,$now,$name,$email,$sub,$model,$com,$host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $log[$rrrr]);
if(mb_ereg_match($keyword,$com)){
$hit = TRUE;
}
}
if($hit == TRUE){
$hitthreadline .= "$i\n";
$hit = FALSE;
}
}
echo "$hitthreadline";
955nobodyさん:2009/08/28(金) 14:45:50 ID:???
1行ごとに値をチェックしてみ
956nobodyさん:2009/08/28(金) 14:46:48 ID:???
>>954
そんなコードじゃコピペしてすぐ試せないだろクズが!
define使わないで書けやできそこない
957nobodyさん:2009/08/28(金) 14:50:40 ID:IryiXPVo
>>955
やってみます、ありがとうございます。

>>956
昨日と同じ方ぽいのですが
外部ロダにあげるなやらちょっと無茶すぎやしませんか。
昨日言われたとおりにここにわざわざ書き込んだのに。
結局ログ自分で用意しないといけないから
defineも糞もないと思うんですが。
958nobodyさん:2009/08/28(金) 14:54:10 ID:???
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

ヌルーしとけー
959nobodyさん:2009/08/28(金) 14:56:26 ID:???
>>957
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
960nobodyさん:2009/08/28(金) 15:04:57 ID:IryiXPVo
>>958
すいません、気をつけます。

>>959
?
961nobodyさん:2009/08/28(金) 15:11:41 ID:???
$treelog = file("./treefile.txt");
$log = file("./logfile.log");

みたいに書きなおせ氏ね
962nobodyさん:2009/08/28(金) 15:17:29 ID:???
・ 質問者として、態度をわきまえること。
963nobodyさん:2009/08/28(金) 15:19:00 ID:???
>>957
>結局ログ自分で用意しないといけないからdefineも糞もないと思うんですが。


日本語でおk
お前が用意しろよ
コピペして動かないだろバカなの?
964nobodyさん:2009/08/28(金) 15:21:50 ID:???
・ 回答者として、態度をわきまえること。
965nobodyさん:2009/08/28(金) 15:22:09 ID:???
残念だけどここは抽象的なことを抽象的に返す場所で
具体的な答えを求めてもかえって来ないよ
わからんから
966nobodyさん:2009/08/28(金) 15:29:40 ID:???
ID:IryiXPVoスルー推奨
967nobodyさん:2009/08/28(金) 15:33:37 ID:???
http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?
の2323に一式あげてみました、
失礼しました。
968nobodyさん:2009/08/28(金) 15:47:15 ID:???
>>954
本題と関係ないんだけど、
$log[$rrrr]ってことはログ番号=ログファイル内での行番号ってこと?
ログファイルに(バグとか手修正で)意図しない行が追加/削除される
だけで破綻するんじゃないか?
969nobodyさん:2009/08/28(金) 15:49:04 ID:???
DB使えば?
970nobodyさん:2009/08/28(金) 15:51:17 ID:???
>>967
今北けど一言でいうとどうしたいの?
971954:2009/08/28(金) 15:54:25 ID:IryiXPVo
データベース覚えるとまた時間かかるので
とりあえず基礎技術だけ覚えるために
ログからの書き出しで行こうと思いました。
ファイル読む過程中ロックかけても駄目でしょうか?
972954:2009/08/28(金) 15:56:35 ID:IryiXPVo
>>970
ああああを含む書き込み番号を後で出力するために
変数に格納したいのです。
973954:2009/08/28(金) 16:01:07 ID:IryiXPVo
あげたphpの8行目の書き方間違えてるようですね・・・・
どうなおしたらいいんだろう。
974nobodyさん:2009/08/28(金) 16:08:37 ID:???
8行目間違えてるってなんで?
975nobodyさん:2009/08/28(金) 16:09:40 ID:???
>>972
<?php
$keyword = "ああああ";
$log = file("img.log");
$hit = array();
foreach ($log as $value) {
$tmp = explode(",", $value);
if (preg_match("/^".$keyword."$/", $tmp[6])) {
$hit[] = $tmp[0];
}
}
var_dump($hit);
?>
こういうこと?
976954:2009/08/28(金) 16:18:52 ID:IryiXPVo
>>974
1行ずつ出力したら思った行動と違う結果が出てきたんです。
ちょっとその部分見つけた後いじりすぎてどこが間違ってたか
具体的に説明できないのですが。

>>975
記事部分だとそうなのですが
欲しいのはツリー部分の該当列番号なんです。
その9番記事が格納されている
ツリーログの0含めて3番目が出力されるのが正解だと思います。
説明足らずですいません。
977nobodyさん:2009/08/28(金) 16:21:49 ID:???
>>976
<?
header("content-type:text/plain;charset=euc-jp"); $keyword = "ああああ";
$treelog = file("./tree.log");
foreach(file("./img.log") as $line){
$tmp = explode(",", $line);
$log[$tmp[0]] = $tmp;
}
$threadcount = count($treelog);//スレッド数をカウント
for($i=0; $i<$threadcount; $i++){
$writing = explode(",", $treelog[$i]);
$writingcount = count($writing);
for($j=0; $j<$writingcount; $j++){
$rrrr = trim($writing[$j]);
if(mb_ereg_match($keyword,$log[$rrrr][6])){
$hit = TRUE;
}
}
if($hit == TRUE){
$hitthreadline .= $i;
$hit = FALSE;
}
}
echo "$hitthreadline";
?>
こんな感じか?
できるだけそのまま書いてみた。
978977:2009/08/28(金) 16:22:32 ID:???
>>977
header("content-type:text/plain;charset=euc-jp");
は無視してちょ...。
979954:2009/08/28(金) 16:25:49 ID:IryiXPVo
>>977
そうです、その動作です。
間違ってると思ってた8行目の動作はあっておりました、すいませんでした。
ちょっと回答ログ見直してどこがおかしかったか見直してみます。
980954:2009/08/28(金) 16:28:02 ID:IryiXPVo
肝心のお礼忘れておりました、
本当にありがとうございました。
これで前進できそうです。
981954:2009/08/28(金) 16:48:59 ID:IryiXPVo
申し訳ありませんが最後にもう一つ教えて下さい。
$rrrr = trim($writing[$j]);
ここで空白が入ってうまくいってなかったようなのですが
$writing = explode(",", $treelog[$i]);//1スレッド分の記事番号を$writingに格納
ここで配列に格納したはずなのになぜ空白が入る余地があるのでしょうか?
982954:2009/08/28(金) 16:50:11 ID:IryiXPVo
$rrrr = $writing[$j];修正前
$rrrr = trim($writing[$j]);修正していただいた後

補足を
983nobodyさん:2009/08/28(金) 16:56:25 ID:???
>>982
空白?については判らないけど、
trimなしでうまくいかなかったのは、fileで読み込むと改行コードも入るからだよ。
たとえば、1行目の「18」は実際には「18<改行コード>」になっていた。

$log[$rrrr]は、$log[18]ではなく$log[18<改行コード>]を取得しようとしたが、そんな要素はないので。
それと$logのキーの問題の2箇所がまずかった。
984nobodyさん:2009/08/28(金) 17:03:01 ID:???
>>980
とりあえずお礼ついでに次スレたのんだ
985nobodyさん:2009/08/28(金) 17:05:23 ID:???
     __      _____  r―‐┐┌――┐         _
  / ∠___,  |______ | /_/7 /  7 厂| | く\     ||
  l   ___  |         | | _/ 〈_ L/ [_|   ヽ」┌─┘└─┐
  | |___| | ____| | | 口 口 | /Z_冂_ 〈\.└─┐┌┐│
  l   ___  | |         | | 口 口 l〈_,r┐┌┘ \/__| L_」 |_
  | |___| | | | ̄ ̄ ̄ ̄ |┌ー┐|┌ ┘└┐   |__  ___|
  l   ___  | | |         ||   ||└ ┐┌┘  / 〉   / \
  | |___| | | ヽ____/| ||   ||   | |   / /  //\ \__
  l______| ヽ_____ノ |.」   [__|   |_.」  く_/ く_/   \_ノ
  _             _       _        _
  | |        __| |__     | |      __| |__
  | |         |__  __|   | |        |__  __|
  | |        __| |__     | |         | |  __
  | |         |__  __|   | |         | | └─‐┘
  | |    _   ___| |_       | |    _   / /
  l ヽ__/ |  /┌┐ _ \   l ヽ__/ |   / /  |ヽ___
   \__/   ヽ、二__ノ  ヽ/     \__/ ∠_/  `ー――'
986nobodyさん:2009/08/28(金) 17:06:54 ID:???
俺がスレ建てるから待ってろ
987nobodyさん:2009/08/28(金) 17:12:21 ID:???
hore

【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
988nobodyさん:2009/08/28(金) 17:13:33 ID:???
>>986
コピペしたままはろうとすると専ブラじゃ制限にかかるようにみえるが
きっちり32ラインになるようにテンプレ作られてるんだよ
>過去スレ、関連スレ、FAQなどは>>2-10辺り
これを抜かすのは関心しないな
どうせ削るなら誰も使ってない質問用テンプレ消せばよかったのに
989954:2009/08/28(金) 17:15:34 ID:IryiXPVo
ご説明ありがとうございます、
お礼にスレ立てしようとしたんですがp2だと
ちょっとスレ立て項目見当たらないので
少しお待ちください、検索続けてみます。
990nobodyさん:2009/08/28(金) 17:16:35 ID:???
>>989
もう>>986が立てたからいらないよ
991954:2009/08/28(金) 17:16:54 ID:IryiXPVo
ああ、立ってた。
992nobodyさん:2009/08/28(金) 17:20:00 ID:???
>過去スレ、関連スレ、FAQなどは>>2-10辺り

別にこんなの見ないしどうでもいいに一票入れとく
993nobodyさん:2009/08/28(金) 17:22:22 ID:???
姉妹スレDAT落ちじゃん
994nobodyさん:2009/08/28(金) 17:23:45 ID:???
えー・・・
過去・関連スレはともかく
関連リンクやFAQは重要じゃないか
995nobodyさん:2009/08/28(金) 17:24:34 ID:???
その一文自体は要らないだろ
996nobodyさん:2009/08/28(金) 17:25:36 ID:???
書くなら>>1にかかないと意味ないしな
997nobodyさん:2009/08/28(金) 17:26:34 ID:???
いる
>質問者はまず>>1を良く読むこと(必須!)
>次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
だけだと>>1にしか目がいかない
998nobodyさん:2009/08/28(金) 17:41:49 ID:???
普通、質問する前に過去スレ過去ログを調べるのが当たり前だから不要
999nobodyさん:2009/08/28(金) 17:44:11 ID:???
| 1.文字コードは何を使えばいいの?
| →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。

今ならもう UTF-8 のみでいいのでは
1000nobodyさん:2009/08/28(金) 17:45:36 ID:???
>>998
そりゃお前の普通だろw

1000GET
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。