【PHP】下らねぇ質問はここに書き込みやがれ 26

このエントリーをはてなブックマークに追加
1nobodyさん
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
2nobodyさん:2006/08/07(月) 13:12:33 ID:???
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
3nobodyさん:2006/08/07(月) 13:12:53 ID:???
【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
【PHP】下らねぇ質問はここに書き込みやがれpart21
http://pc8.2ch.net/test/read.cgi/php/1148389517/
【PHP】下らねぇ質問はここに書き込みやがれ 22
http://pc8.2ch.net/test/read.cgi/php/1149710968/
【PHP】下らねぇ質問はここに書き込みやがれ 23
http://pc8.2ch.net/test/read.cgi/php/1150995543/
【PHP】下らねぇ質問はここに書き込みやがれ 24
http://pc8.2ch.net/test/read.cgi/php/1152251693/
【PHP】下らねぇ質問はここに書き込みやがれ 25
http://pc8.2ch.net/test/read.cgi/php/1153652403/
4nobodyさん:2006/08/07(月) 13:13:19 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/

 (以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■ZFマニュアル    http://framework.zend.com/manual/en/
■PECL本家(英語) http://pecl.php.net/

まだ英語しかないマニュアルも後々/manual/en/を/manual/ja/に変えてみたら日本語があるかもしれません。
5nobodyさん:2006/08/07(月) 13:13:42 ID:???
関連スレ
PHP関連の書籍 第3版
http://pc8.2ch.net/test/read.cgi/php/1150558685/
PHP関連サイト
http://pc8.2ch.net/test/read.cgi/php/982694601/
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/
[PHP]フレームワークについて語るスレ4[総合]
http://pc8.2ch.net/test/read.cgi/php/1151706907/
Webでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1133489897/
【PHP】セッションについて語ろう!【PHP】
http://pc8.2ch.net/test/read.cgi/php/1064399467/
【ZendStudio】PHP統合開発環境 Part2【Eclipse】
http://pc8.2ch.net/test/read.cgi/php/1154082822/
最強のPHPエディタはなに?
http://pc8.2ch.net/test/read.cgi/php/1133785416/

[PHP-users MLヲチ9]丸投げした覚えは全くありません
http://pc8.2ch.net/test/read.cgi/php/1143731062/
中学生がPHPを習得するスレ
http://pc8.2ch.net/test/read.cgi/php/1139746974/
【PHP】Lvうpしたいので宿題ください
http://pc8.2ch.net/test/read.cgi/php/1147830986/
親切な人が初心者にPHPの関数を使い方を教える
http://pc8.2ch.net/test/read.cgi/php/1068190843/
くだすれPHP(超初心者用)
http://pc8.2ch.net/test/read.cgi/php/1150088761/
6nobodyさん:2006/08/07(月) 13:13:59 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プログラムとして実行された結果になる。
7nobodyさん:2006/08/07(月) 13:14:19 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ってどう違うの?
 → echoはコンマ区切りで書けるけど関数ではない。printは関数。パフォーマンスは気にするな
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に保存?
 → 好きにしてください
8nobodyさん:2006/08/07(月) 14:08:49 ID:???
おっぱい括弧にワラタ
9nobodyさん:2006/08/07(月) 15:14:11 ID:???
>>前スレ997
ttp://wiki.2chx.net/php/
10nobodyさん:2006/08/07(月) 16:53:13 ID:2T37Evsi
すいません
自分が頭悪いだけなんですが

2つのUNIXタイムの差を求めて 300秒なら 300

これを、00:05:00 のように 時:分:秒にしたいんです

date() を使ってもうまくできませんでした・・・
11nobodyさん:2006/08/07(月) 16:58:52 ID:???
>>10
小学生の算数の問題だな
12nobodyさん:2006/08/07(月) 18:24:32 ID:T/kEZdoT
gethostbyname("nifty.com");
↑これが変換できないんですが
どうやったらIPに変換できますか?
13nobodyさん:2006/08/07(月) 18:25:32 ID:???
>>12
変換されないんならサーバーで禁止してるんだろ
14nobodyさん:2006/08/07(月) 18:44:22 ID:T/kEZdoT
$addr=gethostbyname($host);
$ipaddr=sprintf("%u.%u.%u.%u",unpack("C*",$addr));
↑PHPに書き直すとどうなるんですか?
15nobodyさん:2006/08/07(月) 18:48:41 ID:???
>>14
RTFM.
16nobodyさん:2006/08/07(月) 19:12:22 ID:???
>>14
$ip_adde = gethostbyname($hostname);
17nobodyさん:2006/08/07(月) 19:17:27 ID:???
gethostbyname("nifty.com");
↑これを変換するために
CGI
だと
$addr=gethostbyname($host);
$ipaddr=sprintf("%u.%u.%u.%u",unpack("C*",$addr));
と書いてあるから
PHPに書き直すとどうなるのでしょうか?
1810:2006/08/07(月) 19:32:10 ID:???
10ですがだれか教えて下さい・・・
頭悪くてすみません・・・
19nobodyさん:2006/08/07(月) 19:37:45 ID:???
>>17
その C G I は普通はPerlと呼ばれているものの事だとして…

まずはその C G I で書かれている事が何を意味するのかを考えてみよう。
どういう処理をしているのか理解できたら、
今度は自分で同じ処理をするPHPの書き方を色々考えてみよう。
分からない時にはマニュアルを読むのもお勧めだよ☆
それで、どうしても上手く動かない時は
具体的にどう作ったらダメだったのかを添えてもう一度ここで聞いてみよう。

それじゃ、頑張ってね〜☆
20nobodyさん:2006/08/07(月) 19:45:36 ID:???
>>18
一分は60秒、一時間は3600秒
21nobodyさん:2006/08/07(月) 19:52:21 ID:???
>>18
date()は時差が入るからむしろややこしくなるな。
多分おまいが引っかかってるのは2桁表示にするところだと思うからヒントをあげよう。

echo sprintf("%02d:%02d:%02d", $hour, $min, $sec);
22nobodyさん:2006/08/07(月) 19:53:28 ID:???
>>10
UNIXタイム形式ならstrtotime関数使ってTIMESTAMPを比較すれば良いだろうが
23nobodyさん:2006/08/07(月) 19:54:06 ID:???
>>17
俺が>>16に書いたのが見えないのか?
PHPマニュアルぐらい読めよバカが。
24nobodyさん:2006/08/07(月) 20:01:32 ID:???
だって夏だし
25nobodyさん:2006/08/07(月) 20:07:48 ID:???
23>んなことをきいてんじゃねぇよバカが
26nobodyさん:2006/08/07(月) 20:20:33 ID:ReHevUYM
文字列の20060807を日付型に変換するにはどの関数を使えばいいですか?
27nobodyさん:2006/08/07(月) 20:22:46 ID:???
日付型なんてない
28nobodyさん:2006/08/07(月) 20:29:07 ID:???
あれ?そだったんですか
Mysqlにdate型ってあったから入れるのに変換しないといけないと思ってた
てことはdate型には直接文字列が入ります?
29nobodyさん:2006/08/07(月) 20:33:06 ID:???
やってみればいいんじゃないの?
30nobodyさん:2006/08/07(月) 20:35:40 ID:???
SELECTしてfetchしたものをvar_dump()してみれば分かる
31nobodyさん:2006/08/07(月) 20:56:48 ID:???
>>28
MySQLのデータ型とPHPのデータ型は別物だ
32nobodyさん:2006/08/07(月) 21:14:00 ID:???
あ、入ったぽいです。
初歩的な質問すみませんでした。
33nobodyさん:2006/08/07(月) 21:19:46 ID:???
32だけ読むとなんかエロいな
34前スレ967:2006/08/07(月) 21:28:16 ID:muOt4GfJ
>>968
誘導どうもです。
自作フレームワークに HTML テンプレートを組み込んでいるので。
Smarty 用に書き換えるのも面倒で……

>>969
え、やはり閉鎖してたんですか。
どこかで再配布してないかな……
35nobodyさん:2006/08/07(月) 21:49:23 ID:???
>>22
質問を取り違えてるよ。
>>10はすでにUNIX秒同士で差分を求めてて、
その秒数を時:分:秒の形式に変換できないと言ってる。

…昔は中学で勉強する内容だったんだけどな。これ。
36nobodyさん:2006/08/07(月) 21:52:35 ID:???
37nobodyさん:2006/08/07(月) 21:55:13 ID:???
>>25
いやおまえ、そういうことを聞いてるだろう。
38nobodyさん:2006/08/07(月) 22:30:20 ID:???
>25
gethostbyname("nifty.com");
これを一回実行してみろハゲ
39nobodyさん:2006/08/07(月) 22:31:12 ID:???
>37
間違えた
gethostbyname("nifty.com");
これを一回実行してみろハゲ
40前スレ982:2006/08/07(月) 22:40:47 ID:???
>>1さん乙です。

前スレ982なんですが、もう一つ質問させてください。

結局、ディレクトリの中から目的のファイル名にアクセスする事と、
ファイルの中から目的の文字列を検索する事は、
処理速度として差はないのでしょうか?

41nobodyさん:2006/08/07(月) 22:55:36 ID:???
ディレクトリの中から目的のファイルを探しだし、その中から目的の文字列を検索する
42nobodyさん:2006/08/07(月) 22:58:52 ID:???
>>40
  ヒャークマーミーピートゥーパァー♪
   ゜ *
      ☆ノハヽ  ゜
    + ノノ*゜∀゜)つ
  。   と   /  。
  〜   ⊂  / +
        (_/
43nobodyさん:2006/08/07(月) 22:59:14 ID:???
>>40
いや、それは大分違うと思うぞ。

前スレで「差がない」と言われてたのは、ファイルの中から目的の文字列を探す場合でも、
結局は最初にまずその文字列の入ったファイルにアクセスしなきゃいけないわけで、
ってことはファイルにアクセスした時点で、ディレクトリの中からファイルを探すのと
同じだけの時間がすでにかかっちゃってるわけよ。
1)3.logにアクセスする処理
if(file_exists("3.log") $data = file("3.log");
2)3番のデータが入ってるデータファイルを開く
$fp = fopen("data.log", "r"); $line = fgets($fp);
↑ここまででほぼ同じ処理時間

で、後者ではさらにファイルの中から文字列を探す処理を「+α」でやんなきゃいけない分、
圧倒的に遅いのね。
44前スレ982:2006/08/07(月) 23:02:44 ID:???
>>41
前スレで頂いた回答の事ですよね。それについては理解できました。

では、単純にディレクトリの中から目的のファイル名にアクセスする事と、
ファイルの中から目的の文字列を検索する事を比べた場合はどうなんでしょうか?

ファイルの中から目的の文字列を検索する際の、ファイルを開くまでの処理は省いて考えた場合です。
45nobodyさん:2006/08/07(月) 23:05:02 ID:???
>>43
ただし、この処理がほぼ同等の速度になるのはディレクトリの中のファイル数が
極端に多いわけじゃない場合までで、これが異常に多くなると遅くなる。
ただ、遅くなると言っても、PHPで書いたプログラムがファイルを1行1行探すよりは
ずっと高速な処理なので、よっぽどバカみたいにファイル数が増えない限りは
ファイルの中を探すよりはまだ速いと思うよ。
ファイル検索が遅くなるほど数があれば、1個のデータファイルにした場合も
行数がめちゃくちゃでかくなるからね。これはもうとんでもなく遅い。
多分、PHPで探すくらいならshellでgrepでも呼び出した方がまだ速い。
4645:2006/08/07(月) 23:07:13 ID:???
あ。リロードすればよかった。

>>44
>>45がほぼその回答になると思う。
PHPのファイル処理なんて大して速くないので、OSがやってくれる
ディレクトリ(iノード)の検索の方がずっと早いです。
数が少なければ大した差じゃないけど、増えれば増えるほどその差は広がる一方かと。
47前スレ982:2006/08/07(月) 23:12:37 ID:???
>>46
>>>45がほぼその回答になると思う。

あ、ちょうどなりました(笑
同等ではなく、ファイル名検索の方が早いんですね。

大変参考になりました。回答してくれたみなさんありがとうございました。
48nobodyさん:2006/08/07(月) 23:21:45 ID:???
>>47
ただ、ファイル数が1000を超えるようになってくると、iノードの処理も複雑になってくるので
頑張ればファイルの中身を探す方が逆転できる余地も出てくると思う。
もっとも、普通に頭から1行ずつ舐めてって行頭の数字を判別して〜なんてやり方じゃ
絶対に勝てないと思うけどね。
49nobodyさん:2006/08/08(火) 00:02:56 ID:???
PHPの質問とは若干ズレてるが、結構意義のある内容になったな。
というか今まで鯖任せでそこまで考えることがあまりなくなってたから初心にかえった気分だ。
50nobodyさん:2006/08/08(火) 01:08:07 ID:???
$dir = @scandir('/path')
で存在しないディレクトリを開くと
Warningがでちゃうんだけど、
これって仕方ないの?

仕方なくないとしたらどういう原因が考えられるの?
5149:2006/08/08(火) 01:10:39 ID:qLlWPezk
OS : fedoracore3
PHP : 5.0.4
HTTP : Apache2.0
です。
52nobodyさん:2006/08/08(火) 02:00:08 ID:???
>>49
> 今まで鯖任せでそこまで考えることがあまりなくなってた

今でも初心者のままってことだよ
53nobodyさん:2006/08/08(火) 05:38:32 ID:???
>>50
儂のはでないがのう
54nobodyさん:2006/08/08(火) 05:39:33 ID:???
iノードってb木でしょ?複雑になるって何?
55nobodyさん:2006/08/08(火) 06:34:51 ID:???
>>39
echo gethostbyname("nifty.com"); // nifty.com
echo gethostbyname("www.nifty.com"); // 202.248.239.42
56nobodyさん:2006/08/08(火) 07:49:51 ID:???
>>54
ファイル名エントリーはB木だけどinodeは固定長リストのリンク。
数が多くなると拡張inodeリストのリンク数が増えて検索が遅くなる。
57nobodyさん:2006/08/08(火) 08:00:28 ID:vPDdJKnB
PHPを見やすく、効率良く書きたいのですが、PHPのプログラミング・スタイル(コーディング・スタイル?)を勉強するには
他人のスクリプトを見て勉強するのが良いのでしょうか?

どこかにコーディングマニュアルらしきものがあった気がするのですが
見つけることが出来ませんでした。マニュアルの言語はなるべく日本語希望。
58nobodyさん:2006/08/08(火) 08:17:02 ID:???
>>57
> どこかにコーディングマニュアルらしきものがあった気がするのですが
これ?
ttp://pear.php.net/manual/ja/standards.php
59nobodyさん:2006/08/08(火) 08:25:22 ID:vPDdJKnB
>>58
ああ、それです。
PEARにあったのですね。ありがと
60nobodyさん:2006/08/08(火) 08:50:12 ID:???
>>48
モダンなOS使おうよ
61nobodyさん:2006/08/08(火) 08:57:09 ID:???
ts=3 sw=3でexpandtabしない阿呆は俺だけでいい
62nobodyさん:2006/08/08(火) 09:04:29 ID:???
63nobodyさん:2006/08/08(火) 09:12:13 ID:vPDdJKnB
>>62
どうもです。
64nobodyさん:2006/08/08(火) 09:20:35 ID:???
>>50
仕様

もしscandir($dir_name)で$dir_nameが正しくディレクトリであったとしても、オープン出来なければ異常事態。
$dir_nameが存在しないならオープンできることはありえないから常に異常事態。


要するにfile_exists関数でディレクトリの存在確認したのが前提ということ。
65nobodyさん:2006/08/08(火) 09:37:30 ID:???
>>50
エラー抑止可能。5.1.4、5.0.5@debianで確認
66nobodyさん:2006/08/08(火) 09:38:49 ID:5ybA5K11
すみません、質問です。
/etc/resolv.confの設定を誤って、SSHでの接続が出来なくなってしまいました。
現在アクセスできる方法はApacheモジュールのPHPだけです。

そこで、wwwで実行してるPHPをセキュリティーホールに関係なくrootになれるアカウントにsuして、そのアカウントからrootになることを考えています。
rootになった後はPHPのfputsで編集しようと思っていますが、PHPの実行ユーザーの変更が分かりません。。
system関数でsuを発行しても、次のパスワードの入力が出来ないので‥

サーバーではSSHとApacheしか動いていません。しかし、SSHに接続できるのは、今現在localhostしかいない状態です。。(/etc/hosts)
67nobodyさん:2006/08/08(火) 09:58:12 ID:???
>>66
たとえそれが PHP で出来たとして、その PHP ファイルをどうやってサーバに置くのか?
68nobodyさん:2006/08/08(火) 09:59:24 ID:5ybA5K11
>>67
FTPがあります。FTPでの接続はできるんです。
69nobodyさん:2006/08/08(火) 10:00:44 ID:???
多分、PHPでは無理
expect コマンドをシェルから実行すれば、同じようなことができると思う
70nobodyさん:2006/08/08(火) 10:01:18 ID:???
>>68
> サーバーではSSHとApacheしか動いていません。
うそつき。
71nobodyさん:2006/08/08(火) 10:05:27 ID:???
1点差キタ━━( `≧´)´〜`)`↓´]・ ゥ・)彡´ー`)´金`)ムΘラ)^亮^ )っ´∀`)ア,_ゝレ)ヽ゚∀゚]っ━━!!!
72nobodyさん:2006/08/08(火) 10:07:24 ID:???
>>69
--with-expect 付きで make した PHP なら expect も使えます。
expect コマンドが使えるなら expect なスクリプトを用意して PHP から
system すれば良い。
73nobodyさん:2006/08/08(火) 10:15:39 ID:5ybA5K11
expectはコマンド自体入ってないです。。
rootになるにはsuしかだめなのですが‥

FTPでrootになる方法もないし、、

PHPでSSHにつなぐ方法はありますか?
PHPで、localhostのSSHに接続->su root->/etc/resolv.confに>>でやろうと思ったのですが‥
74nobodyさん:2006/08/08(火) 10:16:30 ID:???
>>66
> /etc/resolv.confの設定を誤って、SSHでの接続が出来なくなってしまいました。
これ、どういうエラーが出るの?
どういう設定してるか分からないけど、IP アドレス指定で試してみた?
75nobodyさん:2006/08/08(火) 10:23:27 ID:5ybA5K11
SSHでタイムアウトしてしまう状況です。。
76nobodyさん:2006/08/08(火) 10:25:00 ID:???
>>71
落ち着け! 高校野球の実況板はここじゃない。
77nobodyさん:2006/08/08(火) 10:46:27 ID:???
あと、簡単なのは Ruby で expect するか、かなぁ。Ruby が使えればね。
Perl で expect も出来るけど、Expect.pm がないことがあるだろうし。
78nobodyさん:2006/08/08(火) 10:54:10 ID:5/p7Z87X
データベースに入れるデータは、
http://jp.php.net/manual/ja/function.mysql-real-escape-string.php の「例3」にある
やり方で一応大丈夫?

addslashes()はしたほうがいいのかなぁ?
79nobodyさん:2006/08/08(火) 11:02:11 ID:???
>>78
何らかのDBインターフェースが使えるのなら、それのバインド機能を使うほうがいい。
80nobodyさん:2006/08/08(火) 11:21:35 ID:???
>>66
それPHPの質問か?
よくわからんけどPCが壊れたなら、新しいの買ってこればいいんじゃね?
それか修理に出したほうが早いだろ
81nobodyさん:2006/08/08(火) 11:24:45 ID:???
>>80
PHP の質問かと言われれば微妙だが、壊れているのとは違う。
で、結局どうなったのかな? Ruby があるなら、さくっと出来るけどなぁ。
82nobodyさん:2006/08/08(火) 13:41:51 ID:???
>>78
> addslashes()はしたほうがいいのかなぁ?
何のためにstripslashes()までやってると思ってるんだお前。
83nobodyさん:2006/08/08(火) 18:06:56 ID:???
array_merge すると添字番号が0からになってしまうようなのですが、これを回避する方法は
ないでしょうか?

$a = array();
$b[1] = 1;
$a = array_merge($a,$b);
print_r($a);
84nobodyさん:2006/08/08(火) 18:13:38 ID:???
>>83
$a += $b;
85nobodyさん:2006/08/08(火) 18:33:58 ID:???
>>84
そういう使い方も出来たのですね
ありがとうございます
86nobodyさん:2006/08/08(火) 18:50:03 ID:CQRoL3Un
htmlspecialcharsで、改行タグはそのまま残しておきたいのですが、どうすればいいですか?
87nobodyさん:2006/08/08(火) 18:54:59 ID:???
無理
88nobodyさん:2006/08/08(火) 19:07:01 ID:???
str_replace で、改行タグをあらかじめ任意の文字列に書き換え、
htmlspecialchars 後に改行タグに戻す
89nobodyさん:2006/08/08(火) 19:14:24 ID:???
<a href="../test/read.cgi/hogehoge/適当な数値/適当な数値" target="_blank">>>72</a>

これを

>>72

に置き換えたいのですが、どのようにすれば良いのでしょうか?
90nobodyさん:2006/08/08(火) 19:14:47 ID:4QDp9Gx3
RSSの生成をしてみようとFeedCreator.class.phpをDLしてみました。
ttp://www.bitfolge.de/rsscreator-en.html
上記URLにサンプルも提示されているので基本的なことはすぐできたんですが
自分なりのアレンジをしようと思うといまいち使い勝手がわかりません。

出力の文字コードをデフォルトのlatin-1からUTF-8にしたいと思い
呼び出し側(自作スクリプト)で指定を試みたんですがうまく反映されません。
逆にソースコード中のその部分を書き換えることでUTF-8で出力できたんですが、
これはそういう使い方でいいんでしょうか?
もし真っ当な指定の仕方が他にあるようでしたらおしえてください。
現在のところUniversalFeedCreatorクラスを用い、createFeedメソッドで出力しようとしています。
お願いします。
9190:2006/08/08(火) 19:34:44 ID:???
すいませんちょっとわかりにくかったので追記します。

>>ソースコード中のその部分を書き換えることで
と書いたのは、もとのクラスファイルのことです(FeedCreator.class.php)
9289:2006/08/08(火) 19:40:57 ID:???
『<a』で始まって『_blank">』で終わる部分を消したいんです
93nobodyさん:2006/08/08(火) 19:49:28 ID:???
>>89
正規表現で消せると思う
9489:2006/08/08(火) 20:19:13 ID:???
すみません、説明不足です。
正規表現を使ったやり方が知りたいんです。
95nobodyさん:2006/08/08(火) 20:34:18 ID:???
正規表現を勉強すればいいんじゃね?
96nobodyさん:2006/08/08(火) 23:05:16 ID:???
>>92
正規表現が分からないなら、strpos使って位置を調べてsubstr_replaceで置換すれば?
その程度のことなら別に正規表現すら要らん。
97nobodyさん:2006/08/08(火) 23:11:11 ID:???
>>94
> 説明不足です

失礼だと思わんのか?
98nobodyさん:2006/08/08(火) 23:29:00 ID:???
コピペすればすぐ終わるようなバカ親切な回答を期待してるんだろうさ
9989:2006/08/09(水) 00:05:28 ID:???
すみません、
$comm = preg_replace("/~<a[ \t\n\r\fa-zA-Z0-9_\"=]+blank\">$/", "", $comm);
これじゃうまくいかなくて・・・
100nobodyさん:2006/08/09(水) 00:22:43 ID:???
先頭の「〜」はなんだろう
/<a[^>]+blank">/
とかでどうだろうか
101nobodyさん:2006/08/09(水) 00:52:31 ID:???
$str = preg_replace("/>>\d{1|2|3}/","<a href=#\\1>\\1</a>",$str);

俺も適当なの試してみた。
アンカにリンクを貼ろうと思ったんだがうまくいかなすwww
正規表現ってむずいな
102nobodyさん:2006/08/09(水) 00:59:19 ID:???
preg_replace("/>>[0-9]+/","【ここがわからない】",$str);

これの0-9の文字って取得できるの?
103nobodyさん:2006/08/09(水) 01:05:36 ID:???
>>102
()でくくれ。 マニュアル嫁よ。
104nobodyさん:2006/08/09(水) 01:08:04 ID:???
>>103
ごめ、すっかり忘れてた

preg_replace("/>>(\d{1|2|3|4})+/","<a href=\"#log\\1\">>>\\1</a>"$str);

こうできたのは良いが、\\1に数値が1文字しか入らないのはなぜだろ・・・
105nobodyさん:2006/08/09(水) 01:08:28 ID:???
>>99
~ と $ の意図が分からんが、それを除外しても駄目。
なぜなら「blank」の部分が a-z にマッチするから。
だから、最短一致をさせないといけない。
106nobodyさん:2006/08/09(水) 01:08:37 ID:???
ごめ、

preg_replace("/>>(\d{1|2|3|4})+/","<a href=\"#log\\1\">>>\\1</a>",$str);  ね
107nobodyさん:2006/08/09(水) 01:13:20 ID:???
>>106
なんだ? (\d{1|2|3|4})+ って? (\d{1,4}) のこと? 最後の + が意味不明。
108nobodyさん:2006/08/09(水) 01:17:24 ID:???
>>106
{1|2|3|4}って意味わからんぞ。何をしようとしている?
で、(\d+)と、+の部分もカッコに含めないと数字全桁は取れないだろ。
109nobodyさん:2006/08/09(水) 01:36:59 ID:XkNwEDtZ
http://masago.kir.jp/php20040103.php

<?php
$image = imagecreate(200, 200);
$black = imagecolorallocate($image, 0, 0, 0);
imagepng($image);
imagedestroy($image);
?>
で画像表示が出来ません。文字化けみたいになってる。
4.3.11でGDできることは確認。。
誰か助けてください。
110nobodyさん:2006/08/09(水) 01:40:35 ID:???
>>109
header('Content-Type: image/png');
111nobodyさん:2006/08/09(水) 01:42:39 ID:???
>109
ブラウザで文字化けしてるってことか?
どんなレスポンス返してるのか全部見てみなよ
content-typeがtext/htmlになってるだけじゃないの?
112nobodyさん:2006/08/09(水) 01:44:13 ID:???
>>109
ここのサイトってどういう設定にしてるんだ??
<?php
の次の行に
header("Content-type: image/png");
って足せば動かない?
113112:2006/08/09(水) 01:45:14 ID:???
なんだ、元のサイトでもちゃんとheader出力してんじゃん。
ttp://masago.kir.jp/phpsc.php?s=php2004010301.php
114nobodyさん:2006/08/09(水) 01:52:00 ID:???
115nobodyさん:2006/08/09(水) 02:01:15 ID:???
は?
116nobodyさん:2006/08/09(水) 02:04:17 ID:???
109のサイトあぶねーなぁ
register globalがonだから、XSSがおきるよ
ttp://masago.kir.jp/php20030111s.php?msg=%3Cscript%3Ealert%28document.cookie%29%3B%3C/script%3E
117nobodyさん:2006/08/09(水) 02:04:37 ID:???
>>114
言ってる意味が分からんぞ
分からないことは恥ずかしいことじゃない。お前の考えを正直にぶちまけてみろ
118nobodyさん:2006/08/09(水) 02:09:08 ID:???
>>117
すんません、教えてください。

http://example/だけのときは
<A href="http://example/">http://example/</A>とリンクを貼り、

http://example/img.jpg(何らかの画像)のときは
<IMG src="http://example/">と画像を貼りたいんです
119nobodyさん:2006/08/09(水) 02:21:32 ID:???
>>118
自分で試行錯誤するってことをしないのはなぜ?
120nobodyさん:2006/08/09(水) 02:22:09 ID:???
<A href="http://example/"><IMG src="http://example/img.jpg"></A>
121nobodyさん:2006/08/09(水) 02:34:43 ID:???
122nobodyさん:2006/08/09(水) 03:21:02 ID:???
index.php?hogehoge=test#5

$_GET['hogehoge']にtestを格納して
<a name="5"></a>に飛ぶ予定だったんですが、
$_GET['hogehoge']にtest#5が入ってしまいます。

どのようにすれば
$_GET['hogehoge']にtestを格納し、
<a name="5"></a>に飛ぶことができるのでしょうか
123nobodyさん:2006/08/09(水) 03:37:24 ID:???
list($_GET['homegome'],$anchor)=explode('#',$_GET['hogehoge']);
124nobodyさん:2006/08/09(水) 03:41:15 ID:???
>>122
手元の PHP 4.4.2 では $_GET['hogehoge'] に # 以降は含まれていなかったが。
125nobodyさん:2006/08/09(水) 04:54:12 ID:???
>>118
文字列の末尾が .jpg .jpeg .png .gif のときはIMGタグに、それ以外のときはAタグに変換、がお手軽。
厳密にやるならそれぞれソケットでHEADアクセスして、返ってきたレスポンスのContent-Typeを判定。
126nobodyさん:2006/08/09(水) 07:10:09 ID:???
>>124
普通はそう
>>122は勘違いしてるんだろう
127nobodyさん:2006/08/09(水) 08:28:07 ID:jiSDaPkk
$name = '名無しさん';
$name = isset ($_POST['name']) || $_POST['name'] !== '' ? $_POST['name'] : $name;

terniary条件文でこのように書くのはダメなのでしょうか?
論理演算子でどちらかがTRUEなら、最初の式がTRUEになるはずなのですが…

$_POST の値が空 ('') だと$nameが$nameに代入されません...
128nobodyさん:2006/08/09(水) 08:30:54 ID:jiSDaPkk
訂正:

正: $_POST['name'] の値が空 ('') だと$nameの値(名無しさん)が$nameに代入されません...
誤: $_POST の値が空 ('') だと$nameが$nameに代入されません...
129nobodyさん:2006/08/09(水) 09:19:05 ID:jiSDaPkk
すみません、つまらないミスでした。

論理演算子の '||' は、どちらかの式がTRUEの場合TRUEなのですから、これでは
isset ($_POST['name'])がTRUEの場合、$_POST['name']が空でも$_POST['name']を$nameに代入してしまう…orz

つまり、これは:
$name = '名無しさん';
$name = isset ($_POST['name']) && $_POST['name'] !== '' ? $_POST['name'] : $name;

でしたね。本当にスマソ
130nobodyさん:2006/08/09(水) 09:31:58 ID:???
もぅ〜馬鹿ぁ
131nobodyさん:2006/08/09(水) 09:38:57 ID:???
Javaのような最終変数(final)はPHPにはありませんか?
もしないようなら同じようなことをするには
defineを使うしかないのでしょうか?
132nobodyさん:2006/08/09(水) 09:57:53 ID:???
>>131
ない
define で代用するしかない
133軟式PHP:2006/08/09(水) 09:59:22 ID:???
>>131
俺も欲しいなぁとは思ってるんだけどないなぁ。
オブジェクト定数ってのならあるんだけど、多分想像してるのとは違うと思われ。
134nobodyさん:2006/08/09(水) 10:02:20 ID:???
ランダムな英数字のみの書き込みを弾きたいのですが

if($kakiko=="" || ereg("^([a-z])+$",$kakiko)) error("不正な文字列です");

これじゃだめなんですか?
テストしてみましたがこの処理をスルーしてしまいます・・・。
135131:2006/08/09(水) 10:03:24 ID:???
>>132-133
どうもありがとうございます。
やはりないんですねorz
defineで代用することにします。
136軟式PHP:2006/08/09(水) 10:05:10 ID:???
>>134
大文字・数字の判定がない。あとeregよりpregのほうがいいよ。
if( $kakiko == "" || preg_match('/^[0-9a-zA-Z]+$/',$kakiko) )
137nobodyさん:2006/08/09(水) 10:20:01 ID:???
>>136
ありがとうございます
自分で英数字と言っておいて入れ忘れたのはなんともお恥ずかしい限りです。
で、試しにやってみたんですが・・・書き込み成功してしまいました・・・orz
何もおかしいところはないと思うのですが・・・なぜでしょうか・・・
138軟式PHP:2006/08/09(水) 10:35:21 ID:???
>>137
kakikoという変数から察するに掲示板の書き込みの内容?
スペース・改行・タブ等が入っていたら上のじゃスルーされるよ。
タブ、改行、スペース対応版。記号入ってたら駄目だけど('A')あとは改造してくれ。
if( $kakiko == "" || preg_match('/^[0-9a-zA-Z\r\n\s\t]+$/',$kakiko) )
139nobodyさん:2006/08/09(水) 10:43:36 ID:???
これって例によって strlen() == mb_strlen() を判定すれば一発、ってネタじゃないだろうな?
140nobodyさん:2006/08/09(水) 11:09:37 ID:???
$foo = "フォー";
echo("{$foo}");
とやったらフォーが出力されますよね?

では、
define("FOO","フォー");を
echo("")という形を使ってフォーと出すにはどうしたらよいのでしょうか?
echo FOO;でもちろんできますが、どうしても("")の中に入れたいんです。
変数と同じ要領で("{FOO}")をやってみたけどだめでした。
よろしくおねがいします。
141軟式PHP:2006/08/09(水) 11:15:03 ID:???
よくわからんこだわりだけど、echo(FOO)やecho(FOO."文字文字");
とかじゃだめなん?
142nobodyさん:2006/08/09(水) 11:16:14 ID:???
>>138
そうです掲示板です。
こういう場合空白とか改行についても入れないと駄目なんですね・・・。
勉強になりました。
しかしまたもスルーされてしまいました・・・orz

検索したりと色々試行錯誤していましたら

if(!preg_match("/[\x80-\xA0]/",$com)) { error("不正な文字列です"); }

これで自分の思い通りの結果になりました。
色々とご教示いただきありがとうございました。
143140:2006/08/09(水) 11:16:49 ID:???
>>141
実はDBの接続に使う予定なんです。
pg_connect("host=HOST");
といった感じに。
144nobodyさん:2006/08/09(水) 11:31:37 ID:GlwbD+0Y
>>143
pg_connect("host=%s", HOST);
もしくは
$host = HOST;
pg_connect("host=${host}");
でいいと思うけど
145140:2006/08/09(水) 11:37:46 ID:???
>>144
どうもありがとうございます。
MySQLからの乗換えで、ずっと定数を使っていたので、
そのまま使えないかなーと思いまして。
上の方法で早速試してみたいと思います。
146nobodyさん:2006/08/09(水) 11:56:06 ID:???
>>143
pg_connect("host=" . HOST);
でいいだろ
147nobodyさん:2006/08/09(水) 12:09:56 ID:OFf4cMrj
改行コードの置き換えなのですが、次のようにするとWarningが出てしまいます:
preg_replace(array("\r\n", "\r"), "\n". $str)

Warning: preg_replace(): Empty regular expression
「正規表現が空」とはどういうことでしょうか?
マニュアルを見るとパターンは配列もアリと書いてあるのですが。
よろしくおねがいします。
148nobodyさん:2006/08/09(水) 12:16:22 ID:???
デリミタ
149nobodyさん:2006/08/09(水) 12:16:24 ID:???
\r\n|\r
150nobodyさん:2006/08/09(水) 12:24:04 ID:???
>>140
文字列クオートの中でのdefine展開はできない。
echo("〜" . FOO . "〜");
みたいに前後で連結するしかない。
151nobodyさん:2006/08/09(水) 12:25:09 ID:???
>>147
preg系の正規表現は /〜/ をつけないと。
152nobodyさん:2006/08/09(水) 12:33:50 ID:OFf4cMrj
>>148-149
preg_replace ("(\r\n|\r)", "\n", $str)
これでよろしいのでしょうか?

>>151
すみません、詳しく。
153nobodyさん:2006/08/09(水) 12:34:59 ID:???
>>152
ちょっと上にpreg_matchの例があるだろうに・・・
154nobodyさん:2006/08/09(水) 12:41:37 ID:???
>>152
いきなり複雑な処理を書かず、公式のマニュアルをまずそのまま書いて
動作確認をしてから書けば、同じような問題で悩むことはないよ

http://jp.php.net/manual/ja/function.preg-match.php
155nobodyさん:2006/08/09(水) 13:53:50 ID:???
すいません、本来Smartyスレで聞くべきなのかも知れないのですが、下らない質問だと思うのでこちらで質問させてください。
■mySmarty.class.php
include_once('Smarty/Smarty.class.php');

class mySmarty extends Smarty
{
function mySmarty()
{
$this->Smarty();

$this->template_dir = "./templates/";
$this->compile_dir = "./template_c/";
}
}
■index.php
include_once('mySmarty.class.php');
$smarty = new mySmarty();
$smarty->display( "index.tpl" )
で、index.phpにアクセスすると
Parse error: parse error, unexpected '{', expecting '(' in 〜〜〜sample\mySmarty.class.php on line 8
と言ったエラーがでます。
何処がおかしいのでしょうか。
下らない質問だとは思うのですがよろしくお願い致します。。
あと、環境はwindowsXP PHP5.1.4 Smartyは2.6.14 です。
156nobodyさん:2006/08/09(水) 14:16:58 ID:???
>>155
そのソース上には問題はない
しいて言うなら、
$smarty->dispya("index.tpl")
の文末に ; がないくらいだけど、エラーメッセージの内容からして
コピペミスだろうと思うから関係ないだろう

本当に、このソースでそのエラーが出ているのか
157nobodyさん:2006/08/09(水) 14:35:26 ID:???
>>156
レスありがとうございます。。
原因解りました。
何ていうのか、もう完全に初歩的なミスでして、説明しづらいんですが、本来読むべきmySmarty.class.phpとスペルミスのmySmaty.class.phpと言うファイルが何故か2つありまして、
で、スペルミスの方は上記の通りソースは良いんですが、スペルミスしてない方(index.phpから読み込んでる方)は()が有りませんでした。
もうホントにお恥ずかしい話です。。
すみません。
お騒がせ致しました。。
158nobodyさん:2006/08/09(水) 17:10:30 ID:???
>>147
それならstr_replaceで十分なのでは
159nobodyさん:2006/08/09(水) 17:21:32 ID:OFf4cMrj
>>158
ごめん、最初から str_replace() でやるつもりだったんだけど
ミスって str が preg になってしまった…。

でもミスに気付けて良かったよ。ありがとう。
160nobodyさん:2006/08/09(水) 18:34:28 ID:???
値のチェックで大文字と小文字を区別しないようにするには
どう書いたらよいのでしょうか?
たとえば、HOGEもhogeもHoGeもhoGEも同じHOGEとしてチェックする感じです。
161(^ω^):2006/08/09(水) 18:44:48 ID:???
String.toUpperCase
162(^ω^):2006/08/09(水) 18:46:30 ID:???
間違えた(^ω^;)
strtoupperで比較
またはstricmp
163nobodyさん:2006/08/09(水) 18:57:34 ID:???
>>162
おーこんなものがあったんですね。
どうもありがとうございます。
164nobodyさん:2006/08/09(水) 19:55:05 ID:???
すいません、質問です。
simplexml_load_fileで読み込んだオブジェクトを
functionの引数として指定したいんですが、上手くいきません。
試しに下記のように書いてみたのですが、どうも引数を渡せていないようです。
こういう時はどのようにして渡したらよいのでしょうか。
どなたかアドバイスなどよろしくお願いします。

$xml = simplexml_load_file("hoge.xml");
$item=$xml->item;
item_construct($item);

funciton item_construct($item){
$sword=$item->sword;
(略)
}
165nobodyさん:2006/08/09(水) 21:36:27 ID:???
>>164

よくわからんがその関数で読みこんだオブジェクトは$xmlであって引数にしてる$itemではないのではないか?
166109:2006/08/09(水) 21:52:49 ID:XkNwEDtZ
亀レスすみません。
ありがとうございます。。
>>110
>>112
header("Content-type: image/png"); を書き足してみましたが
前と変わらず表示されませんでしたorz
<?php
header("Content-type: image/png");
$image = imagecreate(200, 200);
$bcolor = imagecolorallocate($image, 0, 0, 0);
imagepng($image);
imagecolordeallocate ($image,$bcolor);
imagedestroy($image);
?>
とやってみましたのですがorz
>>111
はいブラウザでサイト上で文字化けしてます。。
167nobodyさん:2006/08/09(水) 21:58:01 ID:???
どうせブラウザのキャッシュだろうけど
imagepngでファイルに出力してみて、正しい画像ならブラウザの問題
168109:2006/08/09(水) 22:01:31 ID:???
ブラウザはIE6でキャッシュも削除しますた・・
169nobodyさん:2006/08/09(水) 22:09:15 ID:???
俺のIE6、Opera8.5では表示できた。
PHP5.1.4
170nobodyさん:2006/08/09(水) 22:35:53 ID:???
>>168
先に改行とかBOMとか余計なもの出力してない?
171nobodyさん:2006/08/09(水) 22:39:17 ID:???
>>164
funcitonはPHP8以降じゃないと使えないから。
172nobodyさん:2006/08/09(水) 22:44:50 ID:???
>>166
それ動かしてるサーバーってレンタルスペース?
ひょっとして広告とか入ってるとこで、PHPでいくらheader出力しようと思っても無駄なとこだったりしない?
173nobodyさん:2006/08/09(水) 22:46:19 ID:???
>>164
それは何年後に使えるようになるのですか?
174109:2006/08/09(水) 23:12:13 ID:XkNwEDtZ
>>170
はい余計なものは出力していないです。。
>>172
はいレンタルスペースです。下部にテキスト広告が入っています。。
header出力に関しての記載はないので管理者に聞いてみようと思います。

ちょっと他の所でも試してみます。。
何度もすみませんでした。
175nobodyさん:2006/08/09(水) 23:20:44 ID:???
>>174
広告入ってるサーバーの多くではプログラムで画像出力とかできないよ。
その自動で動く広告挿入のプログラムが、出力内容をHTMLとして扱っちゃうので。
一部のサーバーでは自動的に広告OFFにするための仕組みを用意してるので(ディレクトリや拡張子の変更など)
それがあるなら使ってみることだ。
176nobodyさん:2006/08/09(水) 23:27:13 ID:???
すいません、間違って?PHP part2スレで書き込んでしまったので、
もう一度こちらに書き込みさせていただきます。(マルチになって申し訳ありません)

399 名前:デフォルトの名無しさん[sage] 投稿日:2006/08/09(水) 23:17:17
こんなことを質問できる場がここしかないので、どうかご教授願いたいです。

実験でHTMLのテキストフィールドから直接SQL文を入力させてDB(MySQL)を操作したいんですが、、

例えばHTMLの入力フォームから
select * from [テーブル名] where ID='06A00012'
などと入力すると、phpで受け取った値は
select * from [テーブル名] where ID=\'06A00012\'
となってしまい、SQL文に余計なものがついてSQLの構文エラーとなってしまいます。

phpのstrtr関数で文字を置き換えようとしても上手くいきません。
(\をなんとか消しても、今度は "(ダブルコーテーション)に置き換わってしまいます。)

どなたか、¥の消し方をご存知の方がいましたら、お願いします。。。
177nobodyさん:2006/08/09(水) 23:35:09 ID:???
>>176
マジッククォートについてぐぐれ
178176:2006/08/09(水) 23:41:17 ID:???
あ!!こ、これかもしれません、ちょっと調べてやってみます!涙
179109:2006/08/09(水) 23:53:52 ID:XkNwEDtZ
>>175
なるほど。。
ありがとうございます。
180176:2006/08/10(木) 00:18:11 ID:???
$inpo=get_magic_quotes_gps();
if($inpo==1){
$okki = stripslashes ($inpo);
}
print $okki. "マンセー";


↓こんなスマートなやりかたもありました。
if (get_magic_quotes_gps()){
 $comment = stripslashes ($comment);
}

本当にありがとうございました。
181nobodyさん:2006/08/10(木) 00:20:57 ID:???
$inpo=get_magic_quotes_gps();

gpc()←訂正

まだまだ、先は長そうだ。
182nobodyさん:2006/08/10(木) 00:32:47 ID:9+xl79/r
php5で、ローカル側(自分が使っているPC)のファイルやディレクトリを
ブラウザで表示したいんですけど、それが載っているサイトや
書籍ってありますか?例えば、ffftpの左半面のようなものを
イメージしています。用途が幅広いので、どこかに公開されている
と思うのですが・・・。どなたか、お教え下さい。
183nobodyさん:2006/08/10(木) 00:37:23 ID:???
>>182
出来ない。PHP で何が出来るかを良く考えましょう。
184nobodyさん:2006/08/10(木) 01:18:40 ID:???
>>183
いや、出来るんじゃないか?
まぁ、その表示したものを消したりとかってなると無理な部分があまりにも多い
だろうけど。
見るだけならある程度できそう
185nobodyさん:2006/08/10(木) 01:22:54 ID:???
>>184
表示がどうこう以前の問題。
186nobodyさん:2006/08/10(木) 01:22:58 ID:???
>>184
file:// でってこと? PHP 全然関係ないし。
187nobodyさん:2006/08/10(木) 01:29:43 ID:???
普通にファイル一覧とって繰るじゃん?で、それにイメージくっ付けるってのは
できるんじゃないか?
188nobodyさん:2006/08/10(木) 01:34:04 ID:???
182を良く読んで。
Client側のファイル一覧どうやって取るんだってことだよ。
189nobodyさん:2006/08/10(木) 01:35:13 ID:???
localhostで動かす場合の話じゃね
190nobodyさん:2006/08/10(木) 01:40:36 ID:???
>>188
おもいっきり自分の(ローカルホスト)って書いとるじゃないか
191nobodyさん:2006/08/10(木) 01:48:26 ID:DcRBPcvM
説明不足で、申し訳ない。
サーバ側から、クライアント側のディレクトリ構造を・・・という話です。
phpで、サーバにクライアントのファイルをアップロードするシステムが
あるくらいだから、何とかできないものかと思ったのですが・・・。
192nobodyさん:2006/08/10(木) 01:52:12 ID:???
>>191
PHP はサーバサイドで動くもの。知ってた?
193nobodyさん:2006/08/10(木) 02:04:48 ID:???
>>191
そうなっちゃうとPHPだけじゃ無理だな〜
でも、その着眼点は良いんじゃない?今PHPでは実現不可能って分かったんだから
じゃあ、ほかの言語で代用しちゃえってなもんだ。
今ならpythonが熱いぞ!PHPみたいなスクリプト言語だがデスクトップアプリも作れる。
下手したらVBよりも簡単だしな
194nobodyさん:2006/08/10(木) 02:07:12 ID:???
>>191
ファイルのアップロードはブラウザの機能。
しかもHTMLレベルじゃセキュリティ上アップロードはかなり制限されてる。
クライアントサイドでActiveX走らすとかそういった手しか無いだろうね。一言で言うと>>183
195nobodyさん:2006/08/10(木) 02:08:31 ID:???
>>191
クライアントがサーバなら出来るなw
お前のサーバからクライアント(サーバ)にリクエスト投げて、クライアントが
PHPとかでデータを取得してXMLなりなんなりでお前のサーバに結果を返す。
で、お前側サーバでそれをCSSで綺麗に整えれ幸せになれます。
196nobodyさん:2006/08/10(木) 02:11:46 ID:???
>>191
無い。
アップロードはブラウザにファイルから送信データを生成させる仕組みが規定されてるが、
セキュリティ的に危険なためそれ以上のクライアントファイル操作は全て禁止が原則。
クライアント上で動くJavaScriptでも基本的にはクライアントのファイルには触れない。

回避手段があるとすればActiveXを使う手だろうね。パソコン側に半自動でプログラムを
ダウンロード・インストールさせ、それを実行するような仕組みが必要。PHPだけではどうしようもない。
ActiveXならがんばりゃオンラインウイルススキャンなんて仕組みも作れるのでかなり色々できる。
ただし、WEBの標準的な機能ではなくWindowsの機能を利用する形になるため、
使えるOSとブラウザが著しく制限される。
また、セキュリティ的に非常に危険な仕組みなので、クライアントの設定によっては拒否される。
197nobodyさん:2006/08/10(木) 09:00:08 ID:???
PHPでウェブアプリを作ろうと思ってるんですが
smartyというものは使った方がいいんでしょうか?
PHPやってるならsmartyくらいは使えないとって感じなら勉強するつもりなんですが
そうでもないなら回避しようかなと思ってるんですが
198nobodyさん:2006/08/10(木) 09:28:53 ID:???
>>197
とりあえず不要。
やってくうちに必要性を感じたなら、それから導入すればいい。
199nobodyさん:2006/08/10(木) 09:38:53 ID:???
>>197
Smartyみたいな汎用志向のテンプレート機能は
デザイナーとプログラマーが分業してる場合など
多人数で開発する際に大きな効果を発揮する。

逆に言うと、個人でやってる分には意義を見出しにくいものでもある。
(規模が大きくなってきたり、同じプログラムでデザインの差し替えを
多用するようになったりすると便利さを感じる場面も出てくると思うけど)
ってことで、とりあえずは無くてもいいものだと思う。
今後、プロになりたいと思ってるならスキルの1つとして覚えといてもいいけど。
200nobodyさん:2006/08/10(木) 10:18:56 ID:???
便乗して質問ですが、
PerlのHTML::Templateのような、単純なテンプレートを知りませんか?
Smartyほどの機能は不要なのですが。
201nobodyさん:2006/08/10(木) 10:33:24 ID:???
>>200
簡単なテンプレなら自作が一番。
デザイン済みのHTMLソースに変数をはめこんで、
それをヒアドキュメントにして拡張子.phpにしてincludeすればいい。
202nobodyさん:2006/08/10(木) 10:56:33 ID:???
>>198,199
回答サンクスです。
個人で好きにやってるだけなのでやめときます。
203nobodyさん:2006/08/10(木) 11:00:42 ID:???
>>201
いくら単純と言っても、ループブロックくらいは扱えないと使い物にならない気がする。
204nobodyさん:2006/08/10(木) 11:08:20 ID:ftKUYt4P
MySQLの質問スレってないんでしょうか?
見つからないので多目に見てください。

MySQLのフイールド「unko」に
こんなのが入ってるとします(1行を1レコードとしてください)
1_123
10_376
4_432
11_543
5_982

これを
1_123
4_432
5_982
10_376
11_543
のようにソートしたいのですが

order by unko
だと、
1_123
10_376
11_543
4_432
5_982
となってしまいます。

設計から見直せと言われそうですが、なにかいい方法はありませんか?
205nobodyさん:2006/08/10(木) 11:11:17 ID:???
>>204
スレ違い
206nobodyさん:2006/08/10(木) 11:13:59 ID:???
イヤ、板違いだろ
207nobodyさん:2006/08/10(木) 11:17:29 ID:???
>>204
>>1
> ・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
208nobodyさん:2006/08/10(木) 11:27:55 ID:???
order by convert(substring(unko, 1, instr(unko, '_')), signed)
209nobodyさん:2006/08/10(木) 11:56:07 ID:Zt0pUlM3
>>205-207
スレ違い以前に板違いでしたか、すいませんでした。

>>208
どうもです、完璧ですた。
助かりました。
210nobodyさん:2006/08/10(木) 12:10:55 ID:???
みなさんアレですか、やっぱりAssemblerやC/C++からプログラミングを始めて、業務上必要になった為PHPを覚えたって感じですか?
いや、なんかスレの内容が随分レベル高いなぁーっと思いまして。

それと質問なんですが、ECサイトの構築を覚えたいとずっと考えていまして、言語はPHPに決めました。
PHPと組み合わせるDBで特に易しいもの等はあるんでしょうか?
どれでも一緒ならPHP+MySQLで勉強を始めようと思っています。
211nobodyさん:2006/08/10(木) 12:19:25 ID:???
>>210
> いや、なんかスレの内容が随分レベル高いなぁーっと思いまして。
いや…ちょー低いだろ…_| ̄|○

> PHPと組み合わせるDBで特に易しいもの等はあるんでしょうか?
MySQLは特に易しいよ。機能少なめでかつ高速で。あんまり悩む必要がない。
212nobodyさん:2006/08/10(木) 12:33:05 ID:83OIGtyl
mb_send_mailをの送り先をドコモの携帯にしてフォームを送信しました。
すると、本文の最初に
mime-version:1.0
content-type:text/plane;carset-ISO-2022-jp
content-transfer-encoding: 7bit
という文字列が付加されました。

これを取り除くにはどうしたらいいでしょうか?
$to = 携帯のアドレス
$subject = "タイトルです。";
$msg = "内容内容内容";
$header = "From: PCのアドレス";
みたいな感じになっています。上の文字列は内容内容内容の前に付いてしまいます。
携帯はdocomoでしか確認していませんが、mova、fomaとも同じ結果です。
213nobodyさん:2006/08/10(木) 12:37:32 ID:???
>>212
関数へ渡してる部分も含めてもう少し全体を見せれ。
多分、どっかに余分な改行がある。
メールのヘッダーと本文は1行の空行で区切られてるが、
ヘッダーの途中に空行が余分に入ったことでヘッダー後半が
本文扱いになってしまってるわけだ。
214nobodyさん:2006/08/10(木) 12:38:11 ID:???
最近classを勉強しています。
ソース中によくreturn文を使っているのを見るのですが、
どういうときに使っているのか、何をしているのかがよく理解できません。
マニュアルを見てもいまいちピンとこないのですが、
これはPHPを学ぶ上で必須となるものでしょうか?
215nobodyさん:2006/08/10(木) 12:46:16 ID:???
PHPに限らず多くの言語の基本中の基本事項です
クラス以前の問題
216nobodyさん:2006/08/10(木) 12:49:53 ID:???
>>214
オブジェクト指向学ぶ前に言語構文覚えれ
217nobodyさん:2006/08/10(木) 12:53:27 ID:???
>>214
絶対必須。
それ覚えるまでクラスなんていじるな。
218nobodyさん:2006/08/10(木) 12:56:06 ID:???
>>214
classの前にまずfunctionを覚えましょう
219nobodyさん:2006/08/10(木) 13:04:06 ID:83OIGtyl
>212さん
レスありがとうございます。
試しに必要な部分だけ抜き出して実行してみましたが、結果は同じです。

<?php
mb_language("ja");
mb_internal_encoding("SJIS");
$to = "携帯のアドレス";
$from = "PCのアドレス";
$subject = "お問い合わせがありました。\n";
$header  = $from."\n";
$msg = $header."さんからお問い合わせがありました。";
mb_send_mail($to, $subject, $msg, $header);
?>

どうでしょうか?
220nobodyさん:2006/08/10(木) 13:05:03 ID:???
POSTで送ったURLの内容を表示させると文字化けする。
文字コードをEUCにすると他の文字が文字化けする。
どうすればいいの?
221nobodyさん:2006/08/10(木) 13:07:07 ID:???
>>220
文字コード統一しろよ
222nobodyさん:2006/08/10(木) 13:10:35 ID:oKJYDnYF
>>221
どうやって?
223nobodyさん:2006/08/10(木) 13:15:11 ID:???
>>219
mb_internal_encoding("SJIS");
これがまずいんじゃない?
たしか内部エンコードSJISは使えなかったはず。
UTF-8かEUC-JPでやるとうまくいくと思う。
224214:2006/08/10(木) 13:16:33 ID:???
>>215-218
厳しいご意見ありがとうございます。
頑張って理解できるように勉強してまいります。
225nobodyさん:2006/08/10(木) 13:21:15 ID:???
リファレンスマニュアルには次のように書いてある

PHPで動作しないと思われる文字エンコーディングの例を以下に示します。
JIS, SJIS, ISO-2022-JP, BIG-5
これらのエンコーディングで書かれたPHPスクリプトは、 特に符号化された文字列がスクリプトで記述子やリテラルに使用される場合には、 動作しない可能性がありますが、
入力されるHTTPクエリに関して mbstringの透過的なエンコーディングフィルタを 設定することでこれらのエンコーディングをほとんど使用しないようにすることが できます。

SJIS使いたければ、内部エンコードUTF-8とかにして出力時に自動変換がお勧め
226nobodyさん:2006/08/10(木) 13:27:35 ID:???
>>222

-------- .htaccess --------
php_flag output_buffering On
php_value output_handler mb_output_handler
php_value default_charset UTF-8
php_flag mbstring.encoding_translation Off
php_value mbstring.http_input auto
php_value mbstring.http_input UTF-8,SJIS,EUC-JP,JIS,ASCII
php_value mbstring.substitute_character none
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_output UTF-8
php_value mbstring.language Japanese
---------------------------
出力をSJISにしたいときは
php_value mbstring.http_output SJIS
とする
227nobodyさん:2006/08/10(木) 13:33:18 ID:???
>>219
> $subject = "お問い合わせがありました。\n";
の."\n"を外せ。
「改行コードが余分だ」と言ったのに何を聞いてたんだ。
ttp://www.php.net/manual/ja/function.mail.php
> subject
> 送信するメールの表題。
> 注意
> 改行を含んではいけません。含めてしまうとメールが正しく送信できません。
228nobodyさん:2006/08/10(木) 13:37:33 ID:???
>>227
ほんっとにアホだよな
229nobodyさん:2006/08/10(木) 14:15:48 ID:83OIGtyl
>223,225,227さん
レスありがとうございます。

教えて頂いた内容を試しましたが、だめっぽいですorz
mb_internal_encoding("UTF8");としてみましたが、
あいかわらずヘッダー情報のようなものは出力されます。

\nはあまり関係が無いようでした。
以下のようエンコードをUTFにして各変数の中身を空っぽにして
送信したところ、そのいらないヘッダー情報だけが本文として送られてきてしましました。

<?php
mb_language("ja");
mb_internal_encoding("UTF8");
$to = "携帯のアドレス";
$from = "PCのアドレス";
$subject = "";
$header  = "";
$msg = $header."";
mb_send_mail($to, $subject, $msg, $header);
?>

上から2行のmb関数の行を削除して送信してみたら、
mime-version:1.0
content-type:text/plane;carset=utf8
content-transfer-encoding: base64
これの最後の行がbace64になったという以外、大きな変化はありませんでした。
230nobodyさん:2006/08/10(木) 14:16:46 ID:83OIGtyl
$msg = ""; です。すみません。
231nobodyさん:2006/08/10(木) 14:25:41 ID:???
認証の関係でサブスクライバIDを取得したいのですがuser_agentでは取得できませんでした(当然といわれれば当然ですが)
どのような関数で取得できるでしょうか?
下らない質問で申し訳ありませんがお願い致します
232nobodyさん:2006/08/10(木) 14:26:53 ID:83OIGtyl
みなさんすみません。こんなのを見つけてしまいました.....orz

ttp://blog.itoy.jp/archives/20050108_0133.php

本家のURLは移動したっぽくて確認できませんでしたが、ドコモ的な仕様っぽいです。どうにもならないでしょうか?
233nobodyさん:2006/08/10(木) 14:28:34 ID:???
>>229

<?php
mb_language("ja");
mb_internal_encoding("UTF8");
$to = "[email protected]";
$from = "[email protected]";
$subject = "てすとサブジェクト";
$header = "From: " . $from;
$msg = "本文";
mb_send_mail($to, $subject, $msg, $header);
?>
234nobodyさん:2006/08/10(木) 14:37:03 ID:83OIGtyl
>233
ありがとうございます。
ドコモ以外のキャリアをお使いですか?

ttp://www.nttdocomo.co.jp/info/spam_mail/if/index06.html
オフィシャルな情報をみつけました。

携帯に通知するようなサービスは結構あると思うのですが、どうやってやっているのでしょうか。
235nobodyさん:2006/08/10(木) 14:53:19 ID:???
>>231
そんな限定された機能の関数はない
236nobodyさん:2006/08/10(木) 15:02:26 ID:???
>>235
あるよはげ
$_SERVER['HTTP_X_UP_SUBNO']
237nobodyさん:2006/08/10(木) 15:30:32 ID:???
>>231
サブスクライバIDって書いていることはAU限定だろうから
>>236 の方法か getenv() を使えばいいよ
238nobodyさん:2006/08/10(木) 15:37:30 ID:???
つうか、サブスクライバIDって単語がわかっているのなら、それで検索かけたら
山ほど例が出そうな気がするが
239nobodyさん:2006/08/10(木) 15:47:02 ID:???
>>236
まあ、それは「関数」とは呼ばないね

240hage:2006/08/10(木) 15:47:18 ID:GpwygKMQ
すみません。文字コード変換で、euc の"'" を utf-8の"'"に変換したいのですが、
どうしても"''"になってしまう。回避法ご存知のかたいらっしゃいます?
$apo = mb_convert_encoding("'",'UTF-8','EUC-JP');
241nobodyさん:2006/08/10(木) 16:39:02 ID:???
>>240
松田さん、手元の環境では再現できませんでした。
242nobodyさん:2006/08/10(木) 16:45:07 ID:???
>>240
よく知らないんだが英数記号はどの文字コードでも一緒じゃないの
243nobodyさん:2006/08/10(木) 16:45:42 ID:???
>>240
松田さん、こんにちは。
こちらの環境(php4.4.2)でも確認できませんでした。
そもそも、半角の ' に文字コードが関連するとも思えませんし。
244nobodyさん:2006/08/10(木) 16:54:41 ID:kXNrpO55
PHPを使ってモバイルサイトから
HTMLファイルを取得したいと思います。

ソケットオープン

ヘッダー送信

データ受信

という流れになるんですが、
その際に、
ユーザーエージェントを携帯端末にしたいと思います。
たぶんheaderで指定する必要があるんだと思うんですが、
誰かサンプルソース持ってないでしょうか?
245nobodyさん:2006/08/10(木) 17:11:12 ID:???
ini_set('user_agent', $user_agent);
246hage:2006/08/10(木) 17:13:02 ID:GpwygKMQ
>>241,242,243
どうも、すみません。私の勘違いでした。前処理で、余計なことしてて
気づかなく、ハマッました^^;

247nobodyさん:2006/08/10(木) 17:17:46 ID:???
>>244
php の公式にサンプルがあるよ

http://jp2.php.net/manual/ja/function.fsockopen.php
248nobodyさん:2006/08/10(木) 17:21:56 ID:???
松田・・・・かわいそうな子!
249nobodyさん:2006/08/10(木) 17:31:33 ID:???
ちゃんとphp-usersでも解決報告したのはえらいぞ。松田。マルチの鑑だね。
250nobodyさん:2006/08/10(木) 22:05:54 ID:???
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#checkbox

上記のページ(W3C勧告私的日本語訳)で、「1つのフォームで複数のチェックボックスが同じコントロール名を共有してよい。こうしたチェックボックスは、例えば、ユーザが1つのプロパティについて複数の値を選ぶことを許容する。」とありますが、
例えば以下のようなformを作って送信すると、

<input type="checkbox" name="q" value="1">
<input type="checkbox" name="q" value="2">
<input type="checkbox" name="q" value="3">

確かに「q=1&q=2&q=3」というリクエストが送信されます(IE、Firefoxともに確認済み)。しかし、これをサーバサイドでPHPで受け取って print_r($_POST) とかで表示すると、

Array
(
    [q] => 3
)

のように q の値は 3 のみになっています。これはPHPの仕様がW3Cの勧告に即していないということでしょうか?
251nobodyさん:2006/08/10(木) 22:10:12 ID:???
>>250
<input type="checkbox" name="q[]" value="1">
<input type="checkbox" name="q[]" value="2">
<input type="checkbox" name="q[]" value="3">
でお願いします。
252nobodyさん:2006/08/10(木) 22:17:30 ID:???
その文面からだと確かにそのように読めるね。
一応こうならば何とか動くけど。

<input type="checkbox" name="q[]" value="1">
<input type="checkbox" name="q[]" value="2">
<input type="checkbox" name="q[]" value="3">
253252:2006/08/10(木) 22:19:59 ID:???
うは、遅かった。
254nobodyさん:2006/08/10(木) 22:20:09 ID:???
それを動かそうとすると、QUERY_STRINGを取得して、自前で変換するしかないと思う
255nobodyさん:2006/08/10(木) 22:34:13 ID:???
>>252-254
できました。ありがとうございました。
256nobodyさん:2006/08/10(木) 22:42:35 ID:???
PHPで検索システムを作ってますが、1文字で検索するとたまに?になってしまいます。
なぜでしょうか?
257nobodyさん:2006/08/10(木) 22:57:22 ID:???
>>256
文字コードの自動判別失敗と mbstring.substitute_character のせい
258nobodyさん:2006/08/11(金) 01:07:57 ID:???
>>257さんへ

文字コードはちゃんと判別してると思います。(たまに?になるだけですので)
mbstring.substitute_character はnone,long,12307と変更してみましたが
やはり1文字で検索するとたまに?になってしまいます。
259nobodyさん:2006/08/11(金) 01:13:14 ID:???
>>258
1文字だと誤判別しやすいんだよ。>>257の言ってるのはそういう指摘だと思う。
文字コード自動判別にはある程度の字数がないと正確に判定できないのだ。
260nobodyさん:2006/08/11(金) 01:39:59 ID:???
文字コード自動判別の順番変えるべし
261164:2006/08/11(金) 03:07:29 ID:???
>>171

すいません、そこはここで質問する時にキーを打ち間違えたんです。
「function」ですね、お恥ずかしい。

やりたいことはようはXMLで読み込んだオブジェクト?($xml->itemみたいな)
を引数にして関数に渡して、そっちで処理したい、ってことなんですが、
まだできません。

引き続きどなたかアドバイスなどいただけたらと。
262nobodyさん:2006/08/11(金) 03:20:28 ID:???
>>260
ありがとお!!!
解決しますた!!!
263nobodyさん:2006/08/11(金) 04:36:07 ID:???
>>261
試したことないのであてずっぽだけど、引数をリファレンスで渡してみたらどうよ?

$xmlを丸ごと渡すなら分かるけど、$xml->itemとかいう渡し方をした場合、
$xml->itemの中で$thisとして$xmlのメンバ変数を参照しようとしたとき
$itemしかコピーされてないと正常動作しようがないんじゃないか?って気がした。
264nobodyさん:2006/08/11(金) 05:20:15 ID:???
usleep()で小さい数値を指定した場合に、環境によって待ち時間がバラバラなんですが、そういうものなんでしょうか?

間で処理が遅れる事があるだろうと思うので、少し増えたりするのはうなずけるんですが、
試してみたところ、ある環境では引数に指定した値のの約3倍ずつ待っていたり
またある環境では引数に指定した値より待ち時間が少なかったりしました。

どなたかご存知でしたら教えてください。
265nobodyさん:2006/08/11(金) 07:28:05 ID:???
>>264
<?php
$time1 = microtime();
usleep(3);
$time2 = microtime();
list($m1, $s1) = explode(" ", $time1);
list($m2, $s2) = explode(" ", $time2);
echo $m2 - $m1;
?>
これを繰り返したけど0.003〜0.01程度とばらばら(Win32, PHP5.1.4, Pentium D 930)
CPUのスペックや同時に動いているプロセスの数や種類などでかなり差が出るとは思われる
266nobodyさん:2006/08/11(金) 09:36:05 ID:???
>>264
$time1 = microtime();
$time2 = microtime();
というふうに連続でやってもマイクロ秒付近の偏差はでるんだから、usleepのせいってわけじゃなくね?
267nobodyさん:2006/08/11(金) 11:15:29 ID:???
usleepの精度とかってmanpage見た方がいいと思うんだな
268nobodyさん:2006/08/11(金) 12:11:15 ID:???
>>267
The usleep() function suspends execution of the calling process for (at least) usec microseconds.
The sleep may be lengthened slightly by any system activity or by the time spent processing the call or by the granularity of system timers.
>>264
最低、引数の時間は止まるので少なくなることはない
269nobodyさん:2006/08/11(金) 12:14:53 ID:???
下らない質問ですが

$a = array(1,2,3,);

この最後のカンマってあってもいいのでしょうか?
echo count($a);
とすると 4 になるかと思ったら 3 になりました。

マニュアルのどこかに載ってますでしょうか?
270nobodyさん:2006/08/11(金) 12:36:17 ID:???
>>269
なくてもいい
マニュアルに載っていたかな
Cからの慣習なのかも
271nobodyさん:2006/08/11(金) 12:37:32 ID:???
>>270
>>269の質問に対する答えとしては、あってもいいだな
272nobodyさん:2006/08/11(金) 15:53:56 ID:???
Cだとコンパイル通らんけどな
273nobodyさん:2006/08/11(金) 16:21:47 ID:???
通るだろ
274nobodyさん:2006/08/11(金) 17:20:55 ID:???
>>272
エラーでなかったよ
int main(void)
{
char a[] = {1, 2, 3, };
return 0;
}
275nobodyさん:2006/08/11(金) 17:47:27 ID:???
>>269
http://jp.php.net/manual/ja/function.array.php
一般的ではないですが、 最後に定義された配列エントリの後に
続くカンマがある場合、 これは有効な構文です。

配列要素を修正した時とかに最後のカンマの消し忘れても
エラーにはならない対応なんだろうけど
一般的じゃないと書かれている以上、消し忘れでない限りは
つけない方が個人的にはいいと思う
276234:2006/08/11(金) 18:08:04 ID:Pasm0XSV
解決したので、ご報告しておきます。
mb_send_mail($to,subject,$msg,$header)
これの$headerの中に"from:"って書いておかないと、
ヘッダー情報が本文におくられちゃうみたいです。
234でドコモの情報とか書きましたが、上の条件をみたして、携帯に送ったら
至って普通に受け取れました。
沢山レスくれたみなさん、お騒がせしました。
277nobodyさん:2006/08/11(金) 18:43:28 ID:???
>>276
>>233のレスのが正解だったわけだ。
言われるまで、$headerにFromアドレスをヘッダ識別子なしで
そのまま格納しちゃってることに気付かなかったよ…
278nobodyさん:2006/08/11(金) 19:25:38 ID:???
>>275
$a = array(
  1111111111111,
  2222222222222,
  3333333333333,
);
みたいに行単位で書く場合は最後にもコンマつけられたほうがいいんじゃない?
279nobodyさん:2006/08/11(金) 19:35:45 ID:???
好みの問題
280nobodyさん:2006/08/11(金) 19:41:09 ID:???
俺見たいに、最後だけ意識的に,を外すようにしてるやつもいれば、付けるやつもいるんだろう。

ただSQL文とかでそれやるとエラーだから、PHP使う上では出来るだけ意識的に外したほうが良いかもな。
281nobodyさん:2006/08/11(金) 20:00:10 ID:???
推奨云々で言うなら最終行のカンマは無いのが正しい。
ただ、頻繁に配列内容の変更があるならむしろカンマをつけておいた方がメンテはしやすくなる。
これは
if(式)
 実行文;
っていう1行しかない場合でも、保守性を考慮して
if(式) {
 実行文;
}
と必ず { } をつけるコーディングポリシーに通じる話だと思う。

その辺の兼ね合いを考慮したうえで、後は好みの問題だから好きにすればいい。
282nobodyさん:2006/08/11(金) 21:35:28 ID:???
>>278
おいらは値の追加とか削除した際にも最後に,が残らないように

$a = array(
1111111111111
,2222222222222
,3333333333333
);

って書き方してるな。
283nobodyさん:2006/08/11(金) 21:43:56 ID:???
コンマって言わないでカンマって言うようにしようよ。
なんかエロくて嫌です><
284nobodyさん:2006/08/11(金) 21:45:38 ID:???
>>283
言われて初めて気付いた

俺はカンマ派(どうでもいい
285nobodyさん:2006/08/11(金) 21:59:02 ID:256svcAI
すみません。教えてください。
java scriptで自身を500ms周期でリロードするHTMLを書き、
数時間走らせておくと、web serverが重くなります。
web server(httpd)を再起動すると元通り軽くなります。

httpdのconfig設定等でチューニング可能でしょうか?
また、どこらへんを設定すればいいのでしょうか?

環境;
 OS Linux CENT-OS4.3
 web server apach2
 外部公開せずLAN内でのみ使用。クライアントは上記のアクセス1台のみ。
 HTMLで記述
です。よろしくお願いします。
286nobodyさん:2006/08/11(金) 22:00:48 ID:???
想像力豊かな思春期の方が居るコンマはここですか?

そんな俺はPHPだけは必ず最後にコンマを付けちゃう派。楽すぎて幸せになれる。
他の言語もみんな同じようになればいいのに。
287nobodyさん:2006/08/11(金) 22:14:54 ID:???
>>285
ここはPHPのスレですよ。
288nobodyさん:2006/08/11(金) 22:40:38 ID:???
すいません、文字数がある範囲を超えるとその範囲までを切り取って、
「…続く」というのが付け足されるようにしたいんですが、
下のように書いたら、切り取った最後のところに「?」が追加されてしまいます。
マルチバイトの扱いがちゃんとできてないんでしょうけど、
どのように書くのがいいでしょうか?アドバイスよろしくおねがいします

$byte= mb_strlen($str);
if($byte>300){
 $str=mb_substr($str,0,300)."…続く";
}
289nobodyさん:2006/08/11(金) 22:49:45 ID:???
>>マルチバイトの扱いがちゃんとできてないんでしょうけど
290nobodyさん:2006/08/11(金) 23:12:10 ID:???
>>288
たぶん mbstring.internal_encoding が正しく設定されていない。
それから一応常識だから言っとくけど、PHP(mbstring)で内部エンコーディングSJISは通用しない。
291nobodyさん:2006/08/11(金) 23:18:03 ID:???
>>288
mb_strlenで$byteかよ。
やりたいのはmb_strimwidthじゃないの?
mb_strimwidth:「あああ…続く」「aaaaaa…続く」
288の方法:「あああ…続く」「aaa…続く」
292nobodyさん:2006/08/11(金) 23:29:14 ID:???
あああぁぁ…いくぅっ
293nobodyさん:2006/08/11(金) 23:44:06 ID:???
>>290
>>291
ありがとうございます。
mb_strlenがマルチバイトを2文字として計算してるようなので$byteとかいう変数名にしてしまいました。
ややこしかったですね。
あとphpinfoで調べてみたところmbstring.internal_encodingはno valueになってますね。
これのせいかな、ファイルは全部utf-8で作ってます。

自分のサーバーじゃないんので設定変えたりはできないんですが、
他になにか良い方法があればぜひ…
294nobodyさん:2006/08/12(土) 00:03:14 ID:???
おれは0.3mmを「こんまさんみり」と読むから
, は「かんま」と呼ぶようにしてる。
ま、どでもいい事ではある。
295nobodyさん:2006/08/12(土) 00:04:16 ID:???
mb_internal_encoding('UTF-8');
296nobodyさん:2006/08/12(土) 00:05:12 ID:???
「りみんさまんこ」
297nobodyさん:2006/08/12(土) 00:22:10 ID:???
common
カモン
298nobodyさん:2006/08/12(土) 00:41:38 ID:???
>>286
元々はPerlが明確に「最後にカンマをつけてOK」を標榜しててPHPはそれを真似しただけ。
299nobodyさん:2006/08/12(土) 00:43:56 ID:???
>>293
> mb_strlenがマルチバイトを2文字として計算してるようなので$byteとかいう変数名にしてしまいました。
この時点でmbが正常に動作してないことに気付け。

> 自分のサーバーじゃないんので設定変えたりはできないんですが、
> 他になにか良い方法があればぜひ…
プログラム中でinternal_encodingは設定できる。
mb_strlenの挙動もそうだけど、1度はmb系のリファレンスを読みましょう。
300nobodyさん:2006/08/12(土) 02:44:18 ID:???
失礼します。PHP5です。
Win環境でライブラリ(特にGD2)の関数を使用すると
ソースがshift-jisでなきゃうごかんのはphp.iniがおかしいのでしょうか?
激しく既出でしたらスルーしてください。
301nobodyさん:2006/08/12(土) 04:15:24 ID:???
そんな不思議仕様は聞いたこと有りません。
302nobodyさん:2006/08/12(土) 08:04:13 ID:???
>>295
>>299
ありがとうございます!
ini_set("mbstring.internal_encoding","utf-8");
でいけました
303nobodyさん:2006/08/12(土) 12:42:05 ID:???
オレはマンコ派
304nobodyさん:2006/08/12(土) 12:49:27 ID:???
phpってsetter、getter必要なんでしょうか?
連想配列でもいい気がするんですが、どうなんでしょうか。
305nobodyさん:2006/08/12(土) 12:53:44 ID:???
getter setterと連想配列は全然違うわけだが
306nobodyさん:2006/08/12(土) 12:57:12 ID:???
たとえば、Dto(vo) では、データのみを保持しますが、
この場合もJava同様getter, setterを作る方法がスマートなんでしょうか?
連想配列の方が楽な気がするんですよね。
どうなんだろう。
307nobodyさん:2006/08/12(土) 13:05:10 ID:???
Javaでgetter、setterを使っていたのは何のためだったんだい?
308nobodyさん:2006/08/12(土) 13:08:08 ID:???
そういう作成方法だからという理由でした。

getter、setterごとに制御を入れるってことも滅多になかったもので。
DBのカラム名、画面の部品名称が変わるたびに、変数やメソッドの名前が変更になるので
すごい面倒だとJavaのときも感じていました。

実際、getter、setterを使っていて得したってことはなかったです。
痛い目にあっていないだけからかもしれませんが。
309nobodyさん:2006/08/12(土) 13:42:36 ID:???
その疑問があるなら、むしろjavaのスレッドとかコミュニティに
勇気を出して聞いたほうがいいぞ
とてつもなく、罵倒される可能性もあるが
310nobodyさん:2006/08/12(土) 13:49:37 ID:???
>>309 ということは、309さんはgetter,setterを使っているんでしょうか。

連想配列があるPHPでも実装する利点ってどこにあるのでしょうか?
311nobodyさん:2006/08/12(土) 13:52:48 ID:???
人がやれといえば、何でもやるのか?
その辺を吟味し、自分なりの方法を確立していくのも
プログラムを書いていく上で必要なことだと思うが。
312nobodyさん:2006/08/12(土) 13:57:54 ID:???
>>311

いやたぶん自分なりの方法を確立すると大変なことになります。
だから、デザインパターンなんてものがあるんだし。

ここ人が少ないんですね。
レスが少なくてむなしいw
313nobodyさん:2006/08/12(土) 14:04:48 ID:???
>>312=304?
質問するなら>>1読んで、ID表示くらい守ってくれんかね。
314nobodyさん:2006/08/12(土) 14:05:12 ID:???
private 定義がない PHP4においては、setter、getter の意味は
勧告程度しかない
ようは、setter、getter が定義されていないプロパティに関しては
外部からアクセスするなというルール作りでしかない
一人で、作っているときはそれで問題ないかもしらないが、
複数人で使いまわす処理なんかを作ると、一時領域に使っている
プロパティを勝手に書き換えられて、後の動作がうまく動かなく
なるということは良く起こる
これが一つの理由
315nobodyさん:2006/08/12(土) 14:05:24 ID:???
もう一つは、setter、getter 経由でアクセスしていれば、仕様変更時に
setter、getter 内の変更だけですむ可能性がある

これらの理由は、連想配列があろうがなかろうが関係ない

別の使い方としては、連想配列へのアクセスのためのヘルパーメソッド
として使う程度だろう
316nobodyさん:2006/08/12(土) 14:05:59 ID:???
WebProg番1のスレ速度なわけだが
317nobodyさん:2006/08/12(土) 14:10:30 ID:???
一人で、作っているときはそれで問題ないかもしらないが、
複数人で使いまわす処理なんかを作ると、一時領域に使っている
プロパティを勝手に書き換えられて、後の動作がうまく動かなく
なるということは良く起こる

プロパティ(変数?)を勝手に書き換えられてってありますが、
privateにすれば勝手に書き換えられることはないですよね。

Java板で質問したところ、すごいきっちりとした納得できる内容の
返信をもらいましたので、追記します。
318nobodyさん:2006/08/12(土) 14:12:17 ID:???
●Java板からの返信。回答者さんありがとうございます。

本来はカプセル化のためだし、
getterやsetterにいろいろ仕込む手法もあったのだけど、
最近の流れはそうではないよね。

でも当初の思想がそうだったために、各種開発ツールや
ライブラリやカスタムタグがgetter/setterありきで設計されている。

ってとこが現実かな。

変数名とメソッド名を合わせて変更は、IDEが対応しているでしょ。
データを保持するだけの単純なJavaBeanは手書きするもんじゃないよ。


--
個人的にすごい納得できる内容でした。
319nobodyさん:2006/08/12(土) 14:42:23 ID:???
正直、その答えで納得できる人間がなぜ、今まで悩んでいたのかが
理解に苦しむ

>privateにすれば勝手に書き換えられることはないですよね
まあ、別に変更可能なメンバ変数は public で
それ以外は private って使い方でもいいけど
320nobodyさん:2006/08/12(土) 16:06:12 ID:???
httpsのページにPOSTで送信したいんですが
そういう関数どこかにないですか?
321nobodyさん:2006/08/12(土) 16:21:09 ID:???
標準の関数はない。PEARライブラリ使うか自作。
322nobodyさん:2006/08/12(土) 16:37:42 ID:???
>>321
うまく作れないんですが
どこかにサンプルないですか?
323nobodyさん:2006/08/12(土) 16:50:08 ID:???
自己解決しました
324nobodyさん:2006/08/12(土) 18:39:39 ID:???
>>319
> 正直、その答えで納得できる人間がなぜ、今まで悩んでいたのかが
> 理解に苦しむ
おそらく単に>>318みたいな答が欲しかったってだけの話だろ。
特に「本来は〜だけど、当初の思想が〜」のように「仕方なく使わざるを得ないだけ」みたいな言葉を待っていたって感じ。

俺はsetterとgetterは依然カプセル化に重要な役割を果たしてると思うけどね。
たとえばあるプロパティをpublicにするとどんな値にでも変更し得るけど、setterが毎回呼び出されるなら不正なデータや範囲外のものをチェックしたり修正したりと、整合性をとるのが容易になる。>>315の「仕様変更時に一箇所の変更ですむ」、という話につながる。

setterだけでもプロパティに代入されるものの整合性を保つことはできるけど、そのプロパティをsetすることのほうが多いのかgetすることのほうが多いのかによって、setter/getterの処理の重さを調節することもできる。

まあ、そんなこと考えずにガムシャラに動くものを作れば良いっていう今時の風潮からすれば、俺の言ってることも古い考えってことになるのかねぇ?
325nobodyさん:2006/08/12(土) 19:06:56 ID:???
>>324
みんなどこぞの解説書によくあいてあるようなことを言うが

ちなみに俺の実務経験上では、データのみを保持するオブジェクトDTOなどにsetter,getterごとに範囲チェック処理などを入れることはまずナイ。
エラーチェックはエラーチェックで別の処理で行っている。

Javaの基本概念として、setter,getter使っているってことがホトンドだろう。
場所によりけりだけど。
326nobodyさん:2006/08/12(土) 19:35:08 ID:???
まずデザパタありき、まずgetter/setterありき、みたいな思考停止はダメだろ。
それらの方法論の良い悪いではなく、自分で取捨選択・応用する頭を持たなきゃ、プログラマーではなく、ただのタイピストだ。
327nobodyさん:2006/08/12(土) 19:59:25 ID:???
>>325
DTOの内部でエラーチェックetcをしないのは、オブザーバパターンなりコントローラなり、より広い範囲での例外処理のほうが有用だからってだけでは?
似た処理はなるべく同じところに書いたり隠蔽したほうがいい(=カプセル化)ってのはどういうレベルで見ても一緒だし、setterの目的が基本概念として、っていうだけだったら、publicじゃダメな理由がなくなってくる。
328【閑話休題】:2006/08/12(土) 20:14:04 ID:???
実際のとこ、setterでチェックすることもまず無ければ、仕様変更をsetter/getterで吸収することもまず無くね?
全く無いとは言わないが、相当なレアケースだと思うんだよね。

前者はsetterでやるより入力段階などで処理した方がパフォーマンス上がるしエラー時処理の融通も利かせやすい。
ユーザからの入力処理以外でエラーチェックを行う必要性そのものがまず無いし。無闇に毎回チェックは無駄もいいとこ。
後者は現実問題として、仕様変更入った場合はsetter/getterのメソッド自体を組み直す羽目になるケースが多く、
結局呼び出し元も含めて修正せざるをえないことの方が多い。I/F仕様と中身の実装が食い違ってると後で混乱を招くし。
setter/getterで一括処置できるのは非常に些細なレベルの修正でしかなくて、そのためにメソッドを用意するのは手間の方が大きい。

結局、現時点でsetter/getterを使うメリットって「隣に座っているプログラマがまるで信用できない」場合くらいのもので、
それをコーディング規約やコードレビューやテストなどの事前のチェックでなく、実行時の処理でリアルタイムにチェックしようって
発想そのものが根本的に間違ってると俺は思うんだよな。プログラマの至らなさをユーザに不便として押し付けてるだけ。
大体、メソッドの使い方自体が間違ってるのを実行時に判定できたとして、それでどうフォローすんの?って感じ。
そんなレベルでこけてるってことはロジック全体も含めてそのプログラムは信用ならんわけで、まともに使い物にならんじゃん。
コアダンプみたいにデバッグ情報吐き出させるか、適当にごまかして動いてるように見せかけるか、そのくらいしかできないでしょ。
デバッグ中にはメリットもあると思うが、そんな動的チェックは納品時には外して欲しいもんだと俺は思うよ。
ひょっとすると中にはデバッグ用/納品用でsetter/getterを交換してるようなとこもあるかもしれんけど、まずやらんよね。

関数プロトタイプやデバッグシンボル付きコンパイルとかの仕組みに比べるとsetter/getterの考え方はイマイチだと俺は思うなー。
329nobodyさん:2006/08/12(土) 21:40:56 ID:???
> それをコーディング規約やコードレビューやテストなどの事前のチェックでなく、実行時の処理でリアルタイムにチェックしようって
> 発想そのものが根本的に間違ってると俺は思うんだよな。プログラマの至らなさをユーザに不便として押し付けてるだけ。

コーディングは下流工程だし。
いかに至らないプログラマを効率良く使えるかってのは問題じゃん。

昔GCを自動化しようって流れが出てきたときにも似たようなこと言う奴はいた。
メモリ管理くらいプログラマならできて当然、とか言ってね。
今やメモリ管理を自分でやることほどアホな作業はない罠。
330nobodyさん:2006/08/12(土) 21:49:49 ID:???
>>329
getter/setterとGCの話は全然別問題だろ
331nobodyさん:2006/08/12(土) 21:57:55 ID:???
>>329
それは思いっきり実行時の高度で複雑な処理の話だしなー。
高級言語開発がいいかアセンブラ開発がいいかという議論と同レベル。
OS通さずに低レベルI/FでファイルI/Oや画面表示しようとかいうのと一緒

setter/getterの論議は設計図通りに作れない手抜き工事者がそこらにうようよしてるから、
建物の安全対策は建築時には考えずに監視員雇って定期的に見張らせよう、って話じゃね?
昨今のビルやプールでのトラブル続出を見てるとこれも現実的な選択だろう、ってことだろ。
332nobodyさん:2006/08/12(土) 22:08:57 ID:???
>それをコーディング規約やコードレビューやテストなどの事前のチェックでなく
別にいらないのなら、やらなくてもいいとは思うけど
現実的にそう主張して、仕事が上手くいっているのなら問題ないと思う
333nobodyさん:2006/08/12(土) 22:16:27 ID:???
実際にメソッドI/Fを間違ってバグ出しまくってるやつって、おまいらの会社にどのくらいいるもんなの?
334nobodyさん:2006/08/12(土) 22:31:24 ID:???
>メソッドI/Fを間違って
ってどういう状況?
使い方が間違っているってこと?
335nobodyさん:2006/08/12(土) 22:37:09 ID:???
あ、間違えた。setter/getterを用意しなかったらメンバ変数の扱い方を間違ったやつ、だね。
336nobodyさん:2006/08/13(日) 00:13:38 ID:???
あんたらまだその話してたの。
337nobodyさん:2006/08/13(日) 00:33:32 ID:???
うん。
338nobodyさん:2006/08/13(日) 01:22:57 ID:???
simpleXMLで要素や属性を追加しようとして、
addChildとかを使用するつもりだったんですが、
自分のレン鯖のPHPは5.1.2でそれらのメソッドが使えないことに気づきました。

DOM/XMLの設定もenabledになってるようです。
できればsimpleXMLで実現したいんですが、
何か良い方法はあるでしょうか、どなたかアドバイスおねがいします。
339nobodyさん:2006/08/13(日) 01:59:28 ID:???
PHPと関係ない技術討論はよそでやれ
340nobodyさん:2006/08/13(日) 02:18:32 ID:???
この話ってPHPでクラス設計をやる場合にもsetter/getterでいくべきなのか?って話じゃなかったのか。
341nobodyさん:2006/08/13(日) 02:36:55 ID:???
>>338
使える鯖に引っ越す
342nobodyさん:2006/08/13(日) 02:39:38 ID:???
8割の住人がいい加減にしろと思っていると出ました
343nobodyさん:2006/08/13(日) 07:38:43 ID:???
>>338
管理者に言えば対応してくれるかも知らん
344nobodyさん:2006/08/13(日) 11:39:02 ID:6zieGLC5
DOMNodeクラスのappendChildメソッドのような、XMLの子要素群の末尾に子ノードを追加する処理では無く、子要素群の先頭に新規ノードを追加する処理はどう行えばいいのでしょうか。
345nobodyさん:2006/08/13(日) 13:50:16 ID:???
foreach で 連想配列に格納されている 文字列に関連づいている要素( [ 'abc' ] など ) と、
数字に関連づいている要素( abc[1] など ) の数を別々にカウントしたり、取り出す方法ってないんでしょうか?
346nobodyさん:2006/08/13(日) 13:51:51 ID:???
ループ内で条件分岐させてカウントしていけばいいんじゃない?
347nobodyさん:2006/08/13(日) 14:13:46 ID:???
うーむ もっとすっきりした方法ないんですかね。。
348nobodyさん:2006/08/13(日) 14:33:56 ID:???
>>347
取り出す方法を模索してもいいと思うけど
文字列と数字(内部的には全部文字列だが)のキーが混合になる
連想配列が本当に必要か、取得しやすい配列構成に変えるとか、
そっちを考えてすっきりさせた方がいいんじゃね
349nobodyさん:2006/08/13(日) 14:41:19 ID:???
いや PHPでDBから取得すると自動的にそうなるんですよね。
便利だしなぁ
350nobodyさん:2006/08/13(日) 14:42:05 ID:???
PDO関数使ってどっちかに固定しろ
351nobodyさん:2006/08/13(日) 14:52:08 ID:???
>>349
DBならfetchの方法変えるだけで文字列・数字どっちで取るか固定できる
マニュアル嫁
352nobodyさん:2006/08/13(日) 14:54:15 ID:???
情報後出しすんなよ
353nobodyさん:2006/08/13(日) 15:41:37 ID:???
便利だしなぁ  > 2つとれると便利だから使ってるってだけ
fetchでかえられることぐらいしっとるわw
354nobodyさん:2006/08/13(日) 15:44:05 ID:???
>>353
場面に応じた取捨選択も出来んヤツが知っとっても意味が無い
355nobodyさん:2006/08/13(日) 16:05:19 ID:???
PHPから、HTMLレイアウトコードを吐き出すプログラムを作る場合、HTMLデータはどうやって保持してますか?
それとも、PHPで吐き出すのはやらないんですかね。
356nobodyさん:2006/08/13(日) 16:12:02 ID:???
HTMLレイアウコードってのがどういう特別なものなのかわからんが、
所詮テキストだろうから普通に出力すればいいべ
357nobodyさん:2006/08/13(日) 16:19:07 ID:???
決まったレイアウトを吐き出す共通クラスが作りたいなと思って。

HTMLレイアウトコードを文字列としてPHPクラスに保持しておく場合、改行コード付にしなければ
吐き出した後のソースが汚くなるんですよね。毎回付加するのも見にくい(?)し。
やっぱり別ファイルにHTMLを書いて、それをincludeしてあげるクラスがいいのかな。

ある共通化されたテーブルレイアウトの中に値を書きたい場合は、開始用、終了用のメソッドを作って、
それぞれ別ファイルを作って・・・って面倒でなんか汚いですね。

HTMLのレイアウト情報の共通化ってどうやっているんだろう・・・・?
358nobodyさん:2006/08/13(日) 16:24:30 ID:???
もの凄く不細工な感じがするのですがスマートに出来る関数はありますでしょうか?

$uri = $_SERVER['REQUEST_URI'];
echo substr($uri,$p+1,strlen($uri)-strrpos($uri,'/'))
359nobodyさん:2006/08/13(日) 16:24:32 ID:???
>>357
テンプレートライブラリのことか?
360nobodyさん:2006/08/13(日) 16:25:20 ID:???
>>359

そういうことです。smartyとか参考にすればいいんでしょうか?
361nobodyさん:2006/08/13(日) 16:26:17 ID:???
いまいち何で悩んでるのか具体的にわからん
大枠のテンプレートとなるレイアウトページから
各ページで変化する個別のコンテンツ部分は
includeなりなんなりで読み込むってのは割と常套なやり方だと思うが
362nobodyさん:2006/08/13(日) 16:26:28 ID:???
>>360
素直にSmarty使えばいいと思う

ライブラリを書きたいというなら参考にすればいいだろうし
363nobodyさん:2006/08/13(日) 16:26:57 ID:???
>>355
「HTMLレイアウトコード」って用語を聞いたことないんだけど、
一般的な用語なの?
ググってもヒットしないんだけど。
http://www.google.co.jp/search?q=%22HTML%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89%22

なんとなくテンプレートエンジン作ろうとしてる気はするけど。
364nobodyさん:2006/08/13(日) 16:30:40 ID:???
>>358
echo basename($_SERVER['REQUEST_URI']);
か?
365nobodyさん:2006/08/13(日) 16:31:43 ID:???
>>358
$pてなんだ
366nobodyさん:2006/08/13(日) 16:41:48 ID:???
>>364-365
dirnameの方でした、ありがとうございます
367nobodyさん:2006/08/13(日) 16:43:42 ID:???

1 <table ...>
2 <tr ...>
3 <td ...>
4
5 // ページごとにレイアウトを記述
6
7 </td>
8 </tr>
9 </table>

大雑把に書くと、1〜3行 が新テーブルの開始タグ、 7〜9が新テーブルの終了タグとして
使えたら便利だなぁって思ってます。

そうすると↓のように便利になるかなと。

1 <?PHP Layout::A( パラメータ(任意) ); ?>
2
3 // ページごとにレイアウトを記述
4
5 <?PHP Layout::_A(); ?>

こういう共通化ってどうやってますか?
368nobodyさん:2006/08/13(日) 16:54:21 ID:???
>>367
HTML的に見たらテーブルでレイアウトするテンプレートエンジンなんか存在価値無いだろう
369nobodyさん:2006/08/13(日) 17:05:16 ID:???
>>367
ページのヘッダ・フッタのレイアウトの意味合いじゃなくて
テーブル単位(<table>〜</table>)でって意味合いで言ってるなら
それ全然便利じゃないぜごちゃごちゃするだけだ
そこは普通にtableタグ書きゃいい
370nobodyさん:2006/08/13(日) 17:06:40 ID:???
調べたらカスタムタグっていうやつだった。
テーブルに限らずいろいろ定義して使えるようなものね。
>>368 存在価値ありましたね。

PHPで作っている人いたので流用させてもらうことにしました。
371nobodyさん:2006/08/13(日) 17:28:03 ID:???
脊髄反射イクナイ
372nobodyさん:2006/08/13(日) 19:45:05 ID:???
情報を後だしすんなっての
373nobodyさん:2006/08/13(日) 19:46:25 ID:???
最初はテーブルのことしか言ってないくせに、勝ち誇って偉そうですねw
374nobodyさん:2006/08/13(日) 20:45:44 ID:???
てかここ低レベルなやつ多すぎ
見てると萎えてくる
375nobodyさん:2006/08/13(日) 20:47:25 ID:???
中学生がおおいからな
376nobodyさん:2006/08/13(日) 22:13:08 ID:t3hDjrcl
PHP4をつかって、Json形式のデータをデコードしてパースしたいと思っています。

<?php

require_once('JSON.php');

$json = new Services_JSON();
$js1 = '[{"url":"http://www.yahoo.co.jp/","title":"Yahoo Japan!"}]';
$js2 = '{"url":"http://www.yahoo.co.jp/","title":"Yahoo Japan!"}';

$decoded = $json->decode($js1);

$hoge = $decoded->title;
print "title=".$hoge;

?>

と書いた場合に、$js2をパースした場合はうまく行きますが、$js1をパースした場合はうまくいきません。
"[]"が含まれているからだと思います。[]が含まれていてもうまくいく方法はありませんか?
377376:2006/08/13(日) 22:16:41 ID:t3hDjrcl
自己解決しました。
378nobodyさん:2006/08/13(日) 23:36:15 ID:eyKLaI69
phpって 〜秒待つ みたいな関数ってないの?
処理後3秒待って他の処理したいときとかどうすればいいの
379nobodyさん:2006/08/13(日) 23:39:16 ID:???
ムリ。素直にpython使え。
380nobodyさん:2006/08/13(日) 23:39:45 ID:fTOpOca2
sleep()
381nobodyさん:2006/08/13(日) 23:42:14 ID:???
どこが「素直」なのかと小一時間(ry
382nobodyさん:2006/08/14(月) 01:10:19 ID:???
ワラ
383nobodyさん:2006/08/14(月) 01:41:11 ID:???
>>397-370
プ。激しくレヴェルが低いな。でも、それがこのスレの醍醐味かな?
384nobodyさん:2006/08/14(月) 02:07:14 ID:???
レスアンカーすらまともに打てないレヴェルの君へ。

オマエモナー
385383:2006/08/14(月) 02:16:41 ID:???
>>384
誤)>>397-370
正)>>367-370
オレ、レヴェル低すぎwwwww
386nobodyさん:2006/08/14(月) 02:30:49 ID:???
>>385

正直あんたみたいに釣られてヒョイヒョイ出てくる輩がいるから余計にレベルが低くなる。
387385:2006/08/14(月) 02:38:40 ID:???
>>386
まぁ、そういうあんたもオレに釣られちゃってるけどな。今日は大漁。
388nobodyさん:2006/08/14(月) 02:45:01 ID:???
いい加減ネタはネタでさっさと流せよ…
389nobodyさん:2006/08/14(月) 03:10:13 ID:???
次の質問まだー?
390nobodyさん:2006/08/14(月) 06:49:54 ID:???
mysql の4.0.26はon duplicate key updateって使えないの?
391nobodyさん:2006/08/14(月) 07:48:30 ID:???
4.1からなのかー
替わりのSQL文だれか教えて
392nobodyさん:2006/08/14(月) 08:21:09 ID:???
393nobodyさん:2006/08/14(月) 11:30:35 ID:???
fopenのaモードの場合の動作、phpマニュアルの説明は間違ってますよね?

>ファイルポインタをファイルの 終端に置きます

実際は、オープンした直後のファイルポインタは先頭ですよね。
ファイルポインタがが終端に置かれるのではなく、ファイルポインタがどこを指していても書き込みは終端から行われるという事でしょうか。
394nobodyさん:2006/08/14(月) 11:36:32 ID:???
>>393
どっちでもいいような気はするけど、何か不都合があるの?
395nobodyさん:2006/08/14(月) 11:46:32 ID:???
>>394
不都合というか、公式のマニュアルが、実際の動作と全く真逆の事を言うという事があるのかなぁと思いまして。
翻訳時に表現がややずれてしまったとかでしょうか?
396nobodyさん:2006/08/14(月) 11:47:42 ID:???
>>393
今'a'で開いた直後にftellで調べたら確かに0だったが、

http://jp.php.net/manual/ja/function.ftell.php
ftell() は、("a" フラグ付きでオープンされた) 追加のみ可能な
ストリームに対する結果も未定義です。

ってあるから'a'モードが特殊で
実際はファイルポインタは終端にあるんじゃね?
397nobodyさん:2006/08/14(月) 11:51:57 ID:???
>>396
あぁ、、なるほど。ftell()の方の問題でしたか。私もftell()で調べました。
納得です。
398nobodyさん:2006/08/14(月) 11:54:53 ID:RvQDryMl
kaizoudo.txtが
01:640x480
02:800x600
03:960x600
04:1024x768
05:1600x1200
見たいな感じになってるんですが
番号と解像度を二次元配列に格納するのにうまいこといかないんですけど
どのへんがマズイですかね?
以下ソースです

$kaizoudo = array();
$fp = fopen('kaizoudo.txt', 'r');
for($k = 0;!feof($fp);$k++){
$line = chop(fgets($fp));
 $temp = explode(":", $line);
 $kaizoudo[$k] = array($temp[0], $temp[1]);
 print "$kaizoudo[$k][0]:$kaizoudo[$k][1]<BR>";
}

これを実行すると
Array[0]:Array[1]
みたいなのが出力されちゃいます
399nobodyさん:2006/08/14(月) 12:03:51 ID:???
$kaizoudo[$k]の中には配列が入ってるよな?
だから print "$kaizoudo[$k]";の結果表示は Array だ。
その後ろに[0]ってかいてあるよな?
だから print "$kaizoudo[$k][0]";の結果表示は Array[0] だ。
これが今の状態。
つまりprintが一次元配列か二次元配列か分かってないのが原因。
{}で囲むと大丈夫だよ。
400nobodyさん:2006/08/14(月) 12:07:36 ID:???
おっぱいかっこのことですねw
401nobodyさん:2006/08/14(月) 12:20:14 ID:???
>>399
なるほど!
格納はちゃんとできてたんだけど表示がうまくいってなかったんですね。
分かりやすい解説ありがとうございました。
402nobodyさん:2006/08/14(月) 12:24:56 ID:QXYq1pPL
Windows XP SP2
PHP 5.1.4
の環境で strtolower で誤変換が発生するみたいだが
これってバグかな?

<?php

$str = '検索エンジン';
echo strtolower($str); // 「検索トンヘン」と表示される

?>
403nobodyさん:2006/08/14(月) 12:27:48 ID:???
>>402
「トンヘン」て・・・
404nobodyさん:2006/08/14(月) 12:32:09 ID:???
>>402
マルチバイト文字対応じゃない関数使えば当然
mb_strtolower使え
405nobodyさん:2006/08/14(月) 12:37:44 ID:???
>>402
mb使うのがまず第一だけど、それ以前に文字コードの知識もなしでShift_JIS使っちゃダメだよ。
406nobodyさん:2006/08/14(月) 12:48:46 ID:???
>>402
Shift_JISで「検索エンジン」はアスキーコードで以下のようになる。

140 159 141 245 131 71 131 147 131 87 131 147

でだな、途中の71と87はGとWのアスキーコードなんだよ。
その部分はアルファベットとして見られて、小文字に変換され、103(g)と119(w)になる。

140 159 141 245 131 103 131 147 131 119 131 147

という値が結果として返る。これはShift_JISで「検索トンヘン」となる
407402:2006/08/14(月) 12:49:08 ID:???
>>404
echo mb_strtolower($str, 'SJIS');
で出来ました。ありがとうです
>>405
精進します
408nobodyさん:2006/08/14(月) 13:54:45 ID:???
おっぱい括弧といい、検索トンヘンといい、ここは実に愉快なスレですね。
409nobodyさん:2006/08/14(月) 14:52:12 ID:???
フォームからREQUESTで値を取得するとき、
文字列の末尾に「表」という漢字があるとなぜか「\」が付加されてしまいます。
例えば、フォームに「あいうえお表」と打ったとすると、実際に取得する値は「あいうえお表\」となってしまうのです。
他の漢字やひらがな、カタカナ等では発生しないようです。

該当部分のソースはこのような感じです。
$title = $_REQUEST['title'];
<input name="title" type="text" id="title" value="<?php echo $title; ?>" />

どのようにすればよいのか全く検討もつかず、こちらでお伺いした次第です。
何卒ご指南のほどをよろしくお願いいたします。

サーバー : IIS 5.1
PHP : 5.1.4
410nobodyさん:2006/08/14(月) 14:56:58 ID:???
>>409
Magic Quate GPC を切って下さい。
411nobodyさん:2006/08/14(月) 14:58:46 ID:???
>>409
安易にREQUESTを使わないで下さい
412nobodyさん:2006/08/14(月) 15:00:49 ID:???
>>409
安易にShift_JISを使わないで下さい
413409:2006/08/14(月) 16:47:52 ID:EO88qrv9
先ほどはsageてしまい申し訳ありませんでした。

>>410
既知の問題だったのですね。
ありがとうございます。
>>411
そうですね。REQUESTは危険かもしれません。
変更したいと思います。
>>412
PHP等のスクリプトではやはりShift-JISは適さないのですね。
大人しくUnicodeかUTFにしてみます。

無知なもので、おかしなコーディングもあったようでしたが、見事解決することができました。
質問と関係のない部分まで指摘していただき非常に助かりました。
下らない質問に返答していただき、ありがとうございました。
414nobodyさん:2006/08/14(月) 17:06:51 ID:???
web上からcgiプログラムを保存する方法はありませんでしょうか?
iriaなどを使っても上手く保存できません。
ご教授願います。
415nobodyさん:2006/08/14(月) 17:13:13 ID:???
プログラムって実行前のプログラムコードか?そりゃセキュリティホール突いてクラッキングしたいって話か?
416nobodyさん:2006/08/14(月) 17:14:06 ID:???
久しぶりに聞いたIriaって
417nobodyさん:2006/08/14(月) 17:18:15 ID:???
んーphpにかすってもいないしw

サーバサイドで動くスクリプトがDLできたら俺は恥ずかしい思いをすることになる。
やめてくれ
418414:2006/08/14(月) 17:21:04 ID:???
>>415
やはりそういう事になるんですね。
諦めます。板汚し失礼しました。
419nobodyさん:2006/08/14(月) 17:25:57 ID:???
そんな事されたら$oppaiとか$mankoとかいう変な変数名がばれてしまうじゃないかー
420nobodyさん:2006/08/14(月) 18:28:34 ID:???
phpMyAdminでrootでは入れるのですけど自分で作ったユーザーで入ることができません。
rootで入って権限のところを見るとユーザーはちゃんと作成されていました。
何が原因なのでしょうか・・・
421nobodyさん:2006/08/14(月) 19:06:55 ID:???
>>420
config.inc.phpのauth_type設定がっって程度の話じゃないの?
422nobodyさん:2006/08/14(月) 19:34:50 ID:???
>>420
その自分で作ったDBユーザの権限に
見ようとしてるDBへの権限がないんじゃないの?
423nobodyさん:2006/08/14(月) 20:08:55 ID:???
一定時間内の同一人物による連続投稿をはじくには、
IPアドレスを記録しておくのが良いでしょうか?
424nobodyさん:2006/08/14(月) 20:10:38 ID:FIfhz0i4
あるPHPソースに、
<form action="./" method="POST">
とありました。手ものPHPの入門書には、<form action=のあとにはhoge.phpというふうに
phpファイル名を指定していたのですが、
上記の<form action="./" method="POST">の場合は、どのファイルにPOSTされるのでしょうか?

サーバOS:Windows2000
Webサーバ:Apache2
PHP:5.1.4
です。
425nobodyさん:2006/08/14(月) 20:12:23 ID:???
index.php
426424:2006/08/14(月) 20:29:55 ID:???
残念ながら、そのディレクトリにはindex.phpはありませんでした。
その場合やはり、サーバの設定によるんですかね。
427nobodyさん:2006/08/14(月) 20:30:44 ID:???
>>423
詳細な目的にもよるけど、IPアドレスによる判断はベターだろうね。

>>424
ブラウザ側は/で終わるURLに対してPOSTする。
GETで試せばURLに出るからすぐ分かる。FxのLiveHTTPHeaderでもいい。
受け取るのはApacheで設定したDirectoryIndex
だからindex.cgiかも知れないし、index.htmlかも知れない。
428nobodyさん:2006/08/14(月) 20:40:19 ID:???
>>414

ホームページ丸ごとDLするソフトで出来たよ → Junshu
別にクラッキングじゃないしね

でもセキュリティかかってたらムリだよ
429nobodyさん:2006/08/14(月) 20:50:49 ID:???
$a = "apple,orange,lemon";
$b = explode(",", $a);
echo $b;

としたとき、Arrayとでます。
結果として、appleorangelemonと出したいのですが、
echo $b[0].$b[1].$b[2];
の形式だと、配列の値が増えるに連れて大変になっていまいます。
もっとスムーズに書く方法はありませんでしょうか?
430nobodyさん:2006/08/14(月) 20:57:55 ID:???
join
431nobodyさん:2006/08/14(月) 21:02:26 ID:???
>>430
implodeですか。
explodeと同じものだと思い込んでいたので、見落としてました。
$b = implode("", $a)でいけそうですね。
どうもありがとうございます。
432nobodyさん:2006/08/14(月) 21:35:25 ID:???
>>431
やるなら
$c = implode("", $b);
echo $c;

で、>>429でやりたかったことは
$b = str_replace(',', '', $a);
echo $b;
なんじゃないの?
433nobodyさん:2006/08/14(月) 21:41:03 ID:???
>>432
$aの部分を配列にしました。
書き忘れててすみません。
$a = array("apple", "orange", "lemon");
$b = implode("", $a);

一応配列にいれたものを表示したかったので、
あんな感じのソースになりました。
434nobodyさん:2006/08/14(月) 22:27:53 ID:???
file_get_contentsみたいに一つの変数にHTMLの内容が丸々入ってる場合
その変数から1行1行取り出すにはどうすればいいですか?
435nobodyさん:2006/08/14(月) 22:36:18 ID:???
>>434
fopenしてfgets

fileで配列に格納
436nobodyさん:2006/08/14(月) 22:38:27 ID:???
>>434
strtok
437nobodyさん:2006/08/14(月) 22:43:57 ID:???
>>434
$lines = explode("\n", $file);
438423:2006/08/14(月) 22:54:57 ID:???
>>427殿
ありがd

質問ついでに・・・・
この場合、IPアドレスとホストだと、どっち記録しておくのがよりベターでしょうか?
どっちも変わらないのでしょうか?

439nobodyさん:2006/08/14(月) 22:57:11 ID:???
>>435-437
ありがとうございます。
explodeでいけました。
440nobodyさん:2006/08/14(月) 22:59:09 ID:WuPf1wcI
Web作成板で誘導されたのでこっちへ来ました。

XHTML文書内でPHPを使う時のXML宣言のことなんですが、

<?="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"?>

↑こうやってやってみたのですが、最初の行に改行が入ってしまいます。
最初の行の改行を取り除くにはどうするべきでしょうか?
441nobodyさん:2006/08/14(月) 23:03:33 ID:???
>>440
<?="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"?>
が書かれている前に改行が入ってるない?

違うなら、動作環境教えて
442nobodyさん:2006/08/14(月) 23:04:59 ID:???
>>438
普通はIPアドレスを使うな。
ホスト名は無駄に長いし、サーバーによっては自動で逆引きできないし、
逆引きできたとしてもしない方が負荷は低いし。
443nobodyさん:2006/08/14(月) 23:08:38 ID:???
>>440
BOM が付いてるから、じゃなかった? 最近似た話題があった。
444423:2006/08/14(月) 23:19:01 ID:???
レス早!!
>>442殿
更に詳しくありがd <(_ _)>
445440:2006/08/15(火) 00:05:55 ID:???
>>441
前に改行は入ってません。
鯖はこちら↓
http://www.land.to/shiyou.php

>>443
詳しくないのですがBOMってメモ帳で編集した時に付くんじゃなかったっけ?
ちなみにTeraPadで編集しました。
446nobodyさん:2006/08/15(火) 00:08:38 ID:???
>>445
鯖の使用です
447446:2006/08/15(火) 00:09:10 ID:???
使用→仕様
448nobodyさん:2006/08/15(火) 00:15:31 ID:???
>>445
いや、だから、BOM を付けずに保存してみなよ。
どんなエディタを使っていても BOM を付けることは出来るよ。
449nobodyさん:2006/08/15(火) 00:31:13 ID:???
ちょっとでも開発みたいなことするなら、自分のwindowsに環境作って試してから質問すれば? と禿しく思う
450nobodyさん:2006/08/15(火) 00:54:56 ID:???
禿同
451nobodyさん:2006/08/15(火) 00:56:27 ID:???
改造レベルでも、レンタルサーバーでいちいちテストされるのは迷惑だな。
無限ループでもさせたらどうするんだ。
452nobodyさん:2006/08/15(火) 03:02:08 ID:???
CGIじゃないんだからset_time_limit(0)とかされない限りタイムアウトで終了するだけじゃ?
無限ループよりリソース食いまくりの方がこえー。
453nobodyさん:2006/08/15(火) 07:29:31 ID:tOktgI2K
すみません、くだらな過ぎると思いますが・・・、

定数ってどういうときに使うんですか?変数じゃだめなんですか?
定数の機能(役割?)は変数の機能の一部・・・というか変数に包括されているように感じて。

マニュアルとか解説本を読み始めたばかりなんですが・・・。
454nobodyさん:2006/08/15(火) 07:50:20 ID:???
機能的にはそのとおり。プログラムが実行してしまえば差はない。
ただし、コード中で「値を変えるな」もしくは「値には意味がある」といった意図を込める時に使う。
例えば途中で値が差し替えられてないことを前提にコードが読めるので読みやすくなる。
455nobodyさん:2006/08/15(火) 07:58:29 ID:???
一時保存(tmpfile)した画像を表示したいのですが、
画像がtext形式になってしまいます。
画像として処理してくれる関数などありますでしょうか?

スクリプト

$fp = tmpfile();
fwrite($fp, $img);
rewind($fp);
$temp = fread($fp);

<img src="<?php $temp ;?>">
456453:2006/08/15(火) 08:08:13 ID:???
>>454
レスどうもです。
定数は値が変わらないことを明示させるために使うんですね。
コードの読みやすさとかにまで意識が回りませんでした。
ありがとうございました。
457nobodyさん:2006/08/15(火) 09:59:53 ID:OANfrr1E
MbString関連の質問です。
現在の設定は

Multibyte Supportenabled
Multibyte string enginelibmbfl
HTTP input encoding translationenabled
Multibyte (japanese) regex supportenabled
Multibyte regex (oniguruma) version3.7.1

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

DirectiveLocal ValueMaster Value
mbstring.detect_orderautoauto
mbstring.encoding_translationOnOn
mbstring.func_overload00
mbstring.http_inputSJISSJIS
mbstring.http_outputSJISSJIS
mbstring.internal_encodingEUC-JPEUC-JP
mbstring.languageJapaneseJapanese
mbstring.script_encodingno valueno value
mbstring.strict_detectionOffOff
mbstring.substitute_characterno valueno value

といった感じで設定していて、MySQLはujisを使用してます。
この間まで、MySQLのデータを問題なく表示できたのですが、最近文字化けするようになりました。
おかしくなる前にMySQLを5.0.24にアップしたので、それが原因かもしれませんが・・・

もしご存知の方がいらっしゃったら教えてください
環境はMacOSX10.4.7 Apache2.2.2 PHP 5.1.4 MySQL 5.0.24
です。よろしくお願いいたします。
458nobodyさん:2006/08/15(火) 10:00:22 ID:7B9Fe4ha
フォーム入力されたデータの、DBに入れる前の書式チェックで質問です。

・ブラウザ上のJavascript
・submit後のPHP(Validateクラス等)のメソッド
・INSERT時のDBが履くエラー

↑の3つが主なチェックタイミングだと思うんですが、
2回目のPHPでのチェックを無くして、3つ目のDB登録時に戻ってくるエラーコードで
ケース文で対処するのはセキュリティ上何か問題ありますか?
PDO等の接続抽象オブジェクトのバインド変数使う前提ですが・・・
459nobodyさん:2006/08/15(火) 10:39:55 ID:???
>>457
mysqlは4.0.x系以前とそれ以上はかなり違う
3系や4.0.x系から5.0.24にアップデートしたなら
やっぱmysqlと関連する問題じゃないかな
上記の情報だけで一概に何が原因か特定はできないが
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ#content_1_40
こことか参考にしてみれば
460nobodyさん:2006/08/15(火) 10:44:28 ID:???
>>453
数字などを分かりやすくする場合
定義済みの定数はほとんどそう
LOCK_EXとかSEEK_SETとかよく使うけど実際の数字は知らないし
461nobodyさん:2006/08/15(火) 11:07:13 ID:OANfrr1E
>>459
早速の回答ありがとうございます。
ただ、わたしは5.0.22からのアップデートなので、いわゆる4.1でのcharacter関連の変更とは関係ないと思います。

5.0.22に戻すのもちょっと嫌ですが。
462nobodyさん:2006/08/15(火) 13:14:41 ID:???
PHPをCGIとして動作させている場合、
apache_request_headers()
と同じことを実現するにはどうすればいいでしょうか?
Apacheのモジュールとしてでしかこの関数は機能しないようです。

へるぷみー
463nobodyさん:2006/08/15(火) 13:31:00 ID:???
>>462
一ヶ月以内に同じ質問があったはず。
464nobodyさん:2006/08/15(火) 13:34:31 ID:???
>>462
$_SERVERとか$_ENV見れば大体分かると思うけど
465nobodyさん:2006/08/15(火) 13:35:54 ID:???
>>455
HTMLから勉強しなおせ。

>>458
Javascript → ユーザビリティの向上
Validator → PHPスクリプトが期待するデータ形式かをチェックし、実行時エラーや想定外の動作を回避
他言語構文(SQL, HTMLなど)構築時 → 他言語での特殊文字を排除し、SQLインジェクションやXSSを回避
DBが吐くエラー → DBとの不整合をチェック

Webセキュリティに関する書籍はいくつか出ているので読んでおけ。

>>462
環境変数
466462:2006/08/15(火) 13:42:20 ID:???
<?php
function emu_getallheaders() {
foreach($_SERVER as $h=>$v)
if(ereg('HTTP_(.+)',$h,$hp))
$headers[$hp[1]]=$v;
return $headers;
}
?>

本家でこれが書いてあるんですが、
全く同一の処理でしょうか?
某プログラムでこの関数を利用しても上手くヘッダーを取得できない
ようです。

apache_request_headers って $_ENVも含みますか?
467nobodyさん:2006/08/15(火) 13:51:03 ID:???
>>455
画像出力とHTMLを同じスクリプトで同時に吐けないよ。
ヘッダーが違うからね。
<img src="img.php?<?=$id;?>">
とかにしなさい。
468462:2006/08/15(火) 13:52:51 ID:???
ヘッダーのCONTENT_LENGTH: 部分を取得できていないようです

>>463
探したけどみつからんかったとです
469nobodyさん:2006/08/15(火) 14:02:34 ID:???
>>461
どう考えても、PHPとは関係ない質問だろう
問題はMySQLのバージョンをあげたら発生したということは
十中八九、MySQLの問題だろう

まずは、
SHOW VLIABLES lilke 'char%'
で、文字コードセットがどうなっているか確かめる
それで、character_set_server がこっちの想定してない文字コードで
表示されているのなら
ALTER DATABASE で文字コードを再設定する
character_set_client などが違う場合は
SET NAMES などで文字コードを、PHPから接続するたびに再設定しなおす
470nobodyさん:2006/08/15(火) 14:05:24 ID:???
>>469
関係ないといいながらおまいさんは相当優しい
ホレタ!
471nobodyさん:2006/08/15(火) 15:46:42 ID:???
>>468
Content-Lengthはrequestじゃなくてresponseだろ
472nobodyさん:2006/08/15(火) 17:41:13 ID:cZ5ZgBLv
質問させていただきます。
htmlのデザイン部分はcssで分けて管理しますよね。

phpでは、html部分にスクリプトを入れて、動的な処理ができますが
デザイン部分のcssはそのままですよね。

そこで、phpでhtmlを動的に処理するように、cssをphpで動的に変化させたいと考えたので
htmlの<link rel="stylesheet" type="text/css" href="../style.css">部分を
<link rel="stylesheet" type="text/php" href="../style.php">
のように書き換えたのですが、cssとしての効果を発揮しません。

これはhtmlの仕様で、css部分をphpで処理することはできないのでしょうか?
Apacheの設定を変えて、拡張子がcssでもphpとして処理するようにすれば良いのでしょうが
レンタルスペースだとそれもできませんよね?
473nobodyさん:2006/08/15(火) 17:45:50 ID:???
>>472
style.cssを生成すれば
若しくはhtml内にcssを書く。別ファイルにこだわる必要あるの
474nobodyさん:2006/08/15(火) 17:51:02 ID:???
>>472
いや、CSSのContent-typeはtext/cssだから。
PHP側でheader('Content-type: text/css')吐かせれば問題無いし、linkタグも書き換えろよ。

もうちょっと勉強しろよ
475nobodyさん:2006/08/15(火) 17:51:18 ID:???
>>472
text/php
476nobodyさん:2006/08/15(火) 17:57:56 ID:???
>>473

ありがとうございます。

>style.cssを生成すれば
の意味が良くわからなかったので『php css 生成』で検索したところ
cssのphp化という記事がHITしまして、その方法で満足のいく結果を得ることができました。

別ファイルにこだわる理由としては、作ろうとしているページが30ページくらいになる予定で
その30ページのどのページも記事が違うだけで、デザインは同じにしたかったので
毎回、html内に書くのは面倒くさいなぁ
というだけです。

あとは、管理のしやすさでしょうか?

何はともあれ、>>472さんの『生成』という言葉が解決に結びつきました。
ありがとうございました。
477nobodyさん:2006/08/15(火) 18:01:52 ID:???
>>476
具体的にどう解決したのか手法も書いてください。
同じ疑問を思ってる人のためにならんじゃないか。
478nobodyさん:2006/08/15(火) 18:07:05 ID:???
まぁまぁ。
>>476の内容で十分じゃないか。検索キーワードも書いてるんだし。
479nobodyさん:2006/08/15(火) 18:10:09 ID:???
>>476
>別ファイルにこだわる理由としては、作ろうとしているページが30ページくらいになる予定で
>その30ページのどのページも記事が違うだけで、デザインは同じにしたかったので

普通に外部cssで良いじゃん?
480nobodyさん:2006/08/15(火) 18:20:32 ID:D3BJyJj0
スレ違いかもしれませんが、

fopen(サイズが大きいファイル,"r");
fopen(サイズが小さいファイル,"r");

これって処理速度は変わるんですか?
481nobodyさん:2006/08/15(火) 18:26:27 ID:???
変わらんよ
482nobodyさん:2006/08/15(火) 18:57:49 ID:D3BJyJj0
>>481
開くファイルが大きかろうが、小さかろうがファイル用のバッファの大きさは変わらない、ファイルを開いた時に全てメモリに展開するわけではない という理解でいいんでしょうか?
483nobodyさん:2006/08/15(火) 19:02:04 ID:???
>>482
そもそもファイルオープンという処理は、ファイルをファイルハンドルに結びつける処理に過ぎない。
484472:2006/08/15(火) 19:27:14 ID:???
>>474
精進いたします。
ご迷惑おかけしました。

>>477
----- style.php の方の変更点 -----
拡張子をcss → php
ファイルの一番最初に
<?php header("Content-Type: text/css"); ?>
を追記
これで、このファイルは拡張子がphpなのでphpとして処理され
しかし、htmlからはcssとして解釈してもらえるみたいです。

-----example.phpの方の変更点-----
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="../style.css">
となっていたものを
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="../style.php">
と書き換えるだけです。
すべてのcssをphpに書き換えるわけではなく、あくまでもファイル指定する部分の拡張子だけをphpに直すとうまくいくみたいです。

>>479
普通の外部cssだとphpとして処理してもらえないので
example.php側からの処理を受け取って、cssを書き換えたかったのです。

程度の低い質問に付き合ってくださった方々ありがとうございました。
485nobodyさん:2006/08/15(火) 19:40:18 ID:D3BJyJj0
>>483
バッファ(ストリームであってるかな?)は、いつ作られるんですか?
486nobodyさん:2006/08/15(火) 20:29:25 ID:???
>>485
ストリーム is not バッファ
487nobodyさん:2006/08/15(火) 20:31:05 ID:lK1TSrGk
ごめん457です。
文字化けの原因はmb_convert_encodingだった。

お騒がせいたしました。
488nobodyさん:2006/08/15(火) 20:51:22 ID:D3BJyJj0
>>485
では、ストリームとはなんなんでしょうか?
489nobodyさん:2006/08/15(火) 20:55:06 ID:???
連続した区切りのない入出力のこと
490nobodyさん:2006/08/15(火) 22:39:52 ID:???
>>482
正しい
491nobodyさん:2006/08/16(水) 00:45:48 ID:???
class B
{
 function getB()
 {
  return "nullpo";
 }


class A
{
 var $elements = array();

 function newElement()
 {
  $element[] = new B;
 }

 function getCurrentElement()
 {
  echo end($this->elements)->getB();
 }
}

>  end($this->elements)->getB();
こんな感じで配列にはいってる最終の要素のメソッドを呼び出したいんですが
うまくいかないですー

どこがおかしいかってのと
どうやったらうまくいくかってのをどうかご教授ください
492nobodyさん:2006/08/16(水) 01:05:43 ID:NkNMn0ad
質問させてください。
windowsXP SP2
apache2.0
PHP 5.1.4
という環境です。

アップローダーで、必ず画像とコメントを一緒に表示させたいのですが、どのようにしたらよいでしょうか。
つまり、画像のアドレスを開くと必ず、アップロード時のコメントとセットで表示するようにしたいのです。
以下のような形で試したのですが、画像ではなくバイナリが表示されてしまいます。
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<TITLE></TITLE>
<body>
こめんと<br />
<?PHP
readfile("./files/1/1.jpg");
?>
</body>
<HTML>
・flashでHTMLを読み込んで出力
・javascriptで画像ファイルを読み込んで出力
必死扱いて他の方法を考えて探してみたのですが、やり方がわからずじまいでした。
どうかお力添えをして頂けないでしょうか。
493nobodyさん:2006/08/16(水) 01:29:11 ID:???
>>491
Perlじゃあるまいし、関数の戻り値に直接->なんて演算子は使えないんじゃない?
 function getCurrentElement()
 {
  $e = end($this->elements);
  echo $e->getB();
 }
でどうよ?
494nobodyさん:2006/08/16(水) 01:30:32 ID:???
>>488
ストリームは概念。
データを出力する処理を連続して行う事が出来る相手が出力ストリーム
逆が入力ストリーム。
たとえばコンソールは文字出力を連続して行う事で文字列を表示できるわけだ。

ファイルの場合、ファイル名と位置を指定して読み書きが出来るが、
printで文字列を連続して出力するようなインターフェイスを間にはさむ事
によって、ストリームとして利用することも出来る。
というか、ファイルをストリームとして扱う仕組みを、だれかが作ってくれた
からそれが利用できる。そういうもの。
495nobodyさん:2006/08/16(水) 01:32:56 ID:???
>>492
HTMLの基本として、HTML本文と写真は必ず別ファイルでないといけない。
同じプログラムでいっぺんに両方とも表示させようとしてもムリ
そもそもそのHTMLじゃIMGタグがどこにもないじゃんか。
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<TITLE></TITLE>
<body>
こめんと<br />
<IMG SRC="別のPHPプログラム">
</body>
<HTML>
ってやって、その別のPHPプログラムで画像を出力させなきゃダメかと。
つーかこれ、
<IMG SRC="./files/1/1.jpg">
じゃダメなのか?
496nobodyさん:2006/08/16(水) 01:37:30 ID:???
>493
やっぱそれしか方法がないんですね.

どうもありがとうございました.
497nobodyさん:2006/08/16(水) 01:37:57 ID:???
HTMLすら理解して無い人間がPHPをやろうとするってのが時代の流れなんだなぁ
悪い事だとは思わんが
498nobodyさん:2006/08/16(水) 01:51:44 ID:???
>>497
出典は忘れてしまったが
“HTMLを取得してからプログラムの勉強に取り付け”と言って有名になった人が居たなあ。

実際、ハイパーテキストマークアップ言語はプログラム言語ではないし、何の関係があるんだろう……?
499nobodyさん:2006/08/16(水) 02:09:56 ID:???
>>491
 function newElement()
 {
  $this->element[] = new B;
 }

>>495
過去ログ嫁。>455
500495:2006/08/16(水) 02:13:14 ID:???
>>499
俺かよ!?
501nobodyさん:2006/08/16(水) 02:16:19 ID:???
if(hoge){
 hogehoge
}

if(hoge)
{
 hogehoge
}

どっち派?
502nobodyさん:2006/08/16(水) 02:17:59 ID:???
>>501


Cでも上な書き方してる
503nobodyさん:2006/08/16(水) 02:21:13 ID:???
俺も上
504nobodyさん:2006/08/16(水) 02:22:25 ID:???
>>501
functionやclassならともかくifなら上。Cでもそう。
PEAR他PHPの主要開発系でも上推奨。
505nobodyさん:2006/08/16(水) 02:24:26 ID:???
俺もfunctionとclassは後者。
C言語でも歴史的(というか習慣的?)な理由でそうなってる。
506nobodyさん:2006/08/16(水) 02:24:29 ID:???
functionやclassでも俺は上だけど
507nobodyさん:2006/08/16(水) 02:25:32 ID:???
if(hoge)
{
 hogehoge
}

見やすいのでこっち
508492:2006/08/16(水) 02:37:12 ID:???
>>494
仕組みの解説有り難うございます。

>>495
<IMG SRC="別のPHPプログラム">
こういう方法があったのですね。知りませんでした。
これを使おうと思います。
有り難う御座いました。

画像イメージアドレスへの直リンも防ぎたかったのです。
509nobodyさん:2006/08/16(水) 02:47:53 ID:???
>>508
Content-Typeには気を付けてな。
うっかりするとセキュリティホールになりかねないし。
510nobodyさん:2006/08/16(水) 03:07:20 ID:665idoIE
Shift_JISのWEBページから「〜」の値をスクリプト(UTF-8)に渡すとその時点で
なぜかUnicodeの「〜(もう少し太くてぎざってるやつ」になってしまいます。
スクリプト自体はUTF-8で動いておりUTF-8のページから書き込んだ場合は正常に取得できます。

どういった原因が考えられますか?
511nobodyさん:2006/08/16(水) 03:11:52 ID:???
>501
if (hoge){

}
512nobodyさん:2006/08/16(水) 03:12:05 ID:???
ちなみに文字コードに関してはmb_convert_encodingで変換も試してみましたが駄目でした。
513nobodyさん:2006/08/16(水) 03:58:59 ID:???
>>510
http://pc8.2ch.net/test/read.cgi/php/1153652403/
でも書いたけど、それが有名な「波ダッシュ問題」だ。
個別に置換して対応して下さい。
514nobodyさん:2006/08/16(水) 04:01:00 ID:???
ごめん。番号忘れてた。
http://pc8.2ch.net/test/read.cgi/php/1153652403/822
どうせ見れないだろうけど。
515nobodyさん:2006/08/16(水) 04:10:58 ID:???
>>513-514
29chで見てきた。
ありがとう。
俺の選択が間違っていたとわかりますた。
516nobodyさん:2006/08/16(水) 04:27:21 ID:???
周辺環境が Unicode 化されてきたからってのは分かりますが
Unicode が抱えている諸問題をろくに知りもせずに
安易に UTF-8 を勧める人が最近多いと感じます。
517nobodyさん:2006/08/16(水) 04:42:30 ID:???
Unicodeの諸問題が知られて無いのが気になるならここで広めてください。
最終的にEUC-JPがベストって事?
518nobodyさん:2006/08/16(水) 04:56:14 ID:???
?から"♪"をとるのはわかるんだけど
"♪"から?を得るにはどーすればいいですか?
519nobodyさん:2006/08/16(水) 04:58:21 ID:???
?は & # 9 8 3 4 ; です
520nobodyさん:2006/08/16(水) 05:04:23 ID:???
>>517
自分は結構書いてきたつもり。
「波ダッシュ問題」は文字コード変換が介在しなければ表に出てこない問題なので
UTF-8 で統一してれば問題なし、とでも思っているんでしょう。
自分は EUC-JP が無難だと思いますがね。
ただ、EUC-JP で統一出来ない事例(携帯向けなど)も多々あるので
どれが最適かってのは一概には言えないと思います。
521nobodyさん:2006/08/16(水) 05:06:18 ID:GaCZ9Sq1
あれからぐぐってみたりいろいろしたんですが、
ストリームの理解ってこんな感じでいいんでしょうか?

可変幅のメモリ領域である(そもそも大きさという概念がない??)
ストリームの開始位置がファイルポインタに記憶される
ストリームから実際にファイルにフラッシュする作業は自動的に行ってくれる
522nobodyさん:2006/08/16(水) 06:32:13 ID:???
>>521
様々なリソース(ファイル、文字列、バッファ、ネットワーク上のオブジェクト etc)に対して、
統一された手段で(主にシーケンシャルな)アクセスを提供するのがストリームという概念。
ま、理解出来るか知らんけどがんばれや。
523nobodyさん:2006/08/16(水) 08:10:44 ID:???
セッションについて質問なのですが、
session.cookie_lifetimeを「0」に設定しているのに
時間が経つとセッションが切れてしまいます。
その時によってどれくらいの時間で切れるかはまちまちなのですが、
早いときには20分程度で切れてるようです。

セッションが切れる時間の長さから考えて、
session.gc_maxlifetime(値は1440)あたりが関係していそうな気もしますが、
session.cookie_lifetimeの設定(ブラウザ閉じるまで)はなぜ無視されちゃうのでしょうか・・・。
524523:2006/08/16(水) 08:12:26 ID:???
補足ですが、最後のアクセスから20分程度でセッションが切れる場合もあれば、
24時間経っても切れてない時もあります。
525nobodyさん:2006/08/16(水) 08:30:48 ID:???
>520

UTF-8の問題って何?
526nobodyさん:2006/08/16(水) 09:04:15 ID:???
>>523
ん?
session.cookie_lifetimeっていうのは
session id をcookieに保持しておく時間だったような。
でもって「0」は特殊な意味を持っていて、ブラウザ閉じる
とcookie破棄を意味するから、「0」を設定している限り
「ブラウザを閉じる=セッション切れる」を意味するはず
ですけど?
527nobodyさん:2006/08/16(水) 09:08:31 ID:???
session.gc_maxlifetime は、
session id に結び付けられたセッションデータ
を破棄するまでの時間だったかな
ただ、その時間を経過すれば「必ず」破棄されるわけでは
なかったような。gcなんとかって他に定義あるでしょ?
そこでgcを行う確率を設定できたような
528nobodyさん:2006/08/16(水) 09:09:21 ID:???
>>501
オレは括弧の使い方に統一性を持たせてるんで>>507
529nobodyさん:2006/08/16(水) 09:17:37 ID:???
>>521
ストリームとは プログラミング
とかでぐぐった?
>>522 が書いてる通り
概念だから、まぁ、こんなもんか。ぐらいの理解で
いいんじゃないの。
530nobodyさん:2006/08/16(水) 09:22:13 ID:???
ファイルからデータを読む。ってごくごく普通に言うけど、
実際には、HDDという機械の動きだから、1byte読むと命令
してもすぐには読めない。命令→待ち→データを受取る
というような「制御」を行う必要がある。OSがストリームとか
いう概念で、そのへんをうまくオブラートに包んでくれてる。
OSレベルで言うところのストリームってこんな感じかな
531523:2006/08/16(水) 09:34:15 ID:???
>>526
あ、分かりにくかったかもしれませんが、>>523>>524の状況は全て「ブラウザは一切閉じない」状況です。
ずっとブラウザを開き続けているのに、ときどきセッションが切れてしまうんです。

>>527
gcの確率は1000分の1にしてあり、なおかつ、セッションを使って
同時にログインするユーザー数は2(まだテスト中なのでどちらも自分でログイン)しかないので、
ガーベッジコレクションの影響は無視できる程度、と私は解釈しているのですが・・・
532nobodyさん:2006/08/16(水) 09:57:17 ID:???
>>523
session.cookie_lifetime=0
session.gc_maxlifetime=1440
session.gc_probability=1
session.gc_divisor=1000(確率1/1000)
で、ブラウザを開きっぱなしにしていると約20分程度で
セッションが切れる。ってことですね。
なんでだろ?
ブラウザのcookieの有効期限確認してみるとか
PHPデフォルトであるなら/tmpのセッションデータファイルの
タイムスタンプみてみるとか
あっ、PHP4.2.2以前でWindowsでFatとか条件がハマれば
早く切れるバグってのがあったぽいね
533nobodyさん:2006/08/16(水) 09:58:36 ID:???
ん。。
LinuxとかならCronで/tmpを掃除してる処理が動いてたりして
534nobodyさん:2006/08/16(水) 10:12:18 ID:???
セッションデータファイルが消えちまってるのか
cookieが取得できねーのか
そのあたりを切り分けろ
535nobodyさん:2006/08/16(水) 10:34:55 ID:GaCZ9Sq1
レスありがとうございます。

ストリームは、概念であるという事は理解できました。
ストリームが具体的にどういうものになるかは、状況や環境よって、違うということですよね?

でも、多くの場合、それはメモリ上のバッファのようなものでしょう?
536nobodyさん:2006/08/16(水) 10:37:44 ID:GaCZ9Sq1
ちなみに、ここを参考にしました。
ttp://koho.osaka-cu.ac.jp/~sugi/Clang/C9.html
537523:2006/08/16(水) 11:22:32 ID:???
>>532
おっしゃる通りの設定です。PHPのバージョンは4.3.1です。
また、スクリプトが動いているのはLinuxで、クライアント側はXPです。
で、ブラウザ側になぜかCookieが見当たりません。他のサイトのCookieは確かにあるのですが、
自分が今問題にしている自サイトのCookieファイルが保存されていないようです。

でも実は以前にはセッションを開始すると確かにCookieがブラウザに保存されていたのですが、
あるタイミングから保存されなくなってしまいました。
おそらくクライアント側パソコンの「マシン名」を変更した時からだと思います。

しかし、Cookieファイルが見当たらないにも関わらず、「ieHTTPHeaders」を使って通信内容を確認してみますと、しっかり
「Cookie: test-session=6e24cc246481866c7d52f*********」といった感じで、セッションIDが正しく送信されています。
セッションの動作(ログインやログアウトなど)も期待通りの動作ですが、前述のように時々勝手にセッションが切れてしまうのが唯一の問題です。
もう何がなんだかワケがわかりません・・・。
538nobodyさん:2006/08/16(水) 11:24:18 ID:???
>>535
変な理解に仕方だな
ストリームという概念を、実装するときにメモリを利用するけど
ストリーム=バッファ ではないよ

車を動かすのに、エンジンを使用するけど
「多くの場合、車はエンジンのようなものでしょうか?」
と聞いているようなものだ
539523:2006/08/16(水) 11:24:50 ID:???
>>533
cronでは掃除しておりません。

>>534
セッションが意図しないタイミングで切れてしまった時にsession.save_pathで指定されている
ディレクトリを確認してみましたところ、セッションデータファイル自体が
消えてしまっているようです。
540nobodyさん:2006/08/16(水) 11:49:29 ID:???
>>532
その設定だと、アクセスがあるごとに1/1000の確率で
そのアクセスよりも20分以上前のセッションファイルが消去される。
アクセス数が少なければ消されにくい。
また、例えアクセス数が多くても、確率で動いているので運が悪ければいつまでたっても消されない。

>>537
期限が0のクッキーは保存されない。そういう仕様。
541nobodyさん:2006/08/16(水) 11:50:33 ID:???
>>538
ストリームを実現するために、バッファが使われる事がある という事ですね?
ありがとうございました。
542nobodyさん:2006/08/16(水) 12:34:06 ID:???
>>539
リロードしてるうちに普通にgc起動しちまって
セッションデータが消えてるだけじゃね?

http://jp.php.net/manual/ja/ref.session.php
session.gc_divisorはPHP 4.3.2以降ってなってるけど
使ってるのは4.3.1なんだよな?
543nobodyさん:2006/08/16(水) 13:35:57 ID:???
まず4.3.1というバグありまくりのからバージョンアップ汁
544523:2006/08/16(水) 13:37:07 ID:???
>>540
> そのアクセスよりも20分以上前のセッションファイル
これは「ファイル生成時刻が20分以上前の」セッション・ファイルのことだと解釈して良いのでしょうか?

> 期限が0のクッキーは保存されない
とのことですが、ではその場合ブラウザはどうやってセッションIDを(一時的にでも)保存し、どうやってサーバーに対して送信しているのでしょうか?
前述しましたように「ieHTTPHeaders」で確認しますと、たしかにセッションIDはローカルのどこかに記憶されているようです。
Cookieファイルが見当たらないのに値が保存されているということは、あとはメモリ上に確保されている?というくらいしか思いつきません。
545523:2006/08/16(水) 13:41:27 ID:???
>>542
>リロードしてるうちに普通にgc起動

私もその可能性くらいしか思いつかないのですが、
なにしろgcの確率が1/1000で、しかもアクセス回数は自分だけなので
せいぜい数十分の間に数回〜数十回程度です。

なのに、こうした数字の割には、頻繁にセッション切れが起こっている気がします。

それと、「session.gc_divisorはPHP 4.3.2以降」という記述がそのページに見当たらないのですが…??
念のため私の環境でphpinfoをやってみましたが、たしかに4.3.10でsession.gc_divisorの項目も存在しています。
546523:2006/08/16(水) 13:43:43 ID:???
>>543
実は鯖にPleskが入っておりまして、
なかなか怖くてPHPのバージョンアップに踏み切れません・・・
(Plesk自身がPHPで構築されているため、いろいろ依存関係とかあるらしいです)

どなたかPlesk環境でPHPのバージョンアップを経験された方いらっしゃいますでしょうか?
547nobodyさん:2006/08/16(水) 14:22:32 ID:???
randで1〜20まで乱数を生成して、
10以下の場合は終了で、
11以上の時は10以下になるまで乱数の生成をやりなおし、
10以下になったところで終了し、
何回乱数を生成しなおしたかをカウントしたいのですが、
どのように書いたらいいのかわかりません・・・

$rand = rand(1, 20)
if($rand <= 10) {
echo "終了";
}
elseif($rand >= 11) {
ここでループの処理?
}

どなたかお助けくださいorz
548nobodyさん:2006/08/16(水) 14:41:55 ID:???
function hoge($a, $b) {
$rand = rand($a, $b);
if ($rand <= 10) {
echo $rand;
} else {
hoge($a, $b);
}
}
試行回数調べたいなら静的変数使うといい。
549nobodyさん:2006/08/16(水) 14:42:01 ID:???
>>547
夏休みの宿題か?

while(1) {
// 乱数生成
// 何回生成したかカウントアップ
// 10以下だったらbreak;
}
550nobodyさん:2006/08/16(水) 15:05:19 ID:???
>>548-549
どうもありがとうございます。
早速ソースを参考にさせていただきましたが、
まだ思ったとおりにいかないので、
このソースを元に試行錯誤してみたいと思います。

>夏休みの宿題か?
確率の計算のものがあって、どうしても計算しきれなかったので、
ずっともやもやしていて、シミュレーターでもつくって、
だいたいどのくらいの値か出してみようと思った次第ですorz
551nobodyさん:2006/08/16(水) 15:09:32 ID:???
フォームから渡されたデータを
半角と全角の数字のみ
入力を受け付けるにはどうしたらいいでしょうか?
552nobodyさん:2006/08/16(水) 15:14:20 ID:???
>>551
正規表現、もしくは条件分岐。普通は前者
[0-9][0-9]
553nobodyさん:2006/08/16(水) 16:00:57 ID:oFrHrQOU
この掲示板を荒らして下さい。非力なぼくの代わりにこいつらを懲らしめて下さいhttp://look2.jp/friend2006/
554nobodyさん:2006/08/16(水) 16:03:46 ID:???
>>551
全角数字を半角数字に置換
後は数字かどうかのチェック(正規表現、is_なんたら関数、ctypeなんたら関数)
555nobodyさん:2006/08/16(水) 17:23:22 ID:???
>>551
mb_ereg('[0-90-9]', $_POST['num']);
556nobodyさん:2006/08/16(水) 17:30:47 ID:???
>>550
確率?
n回目に10以下が出る確率
1/2のn乗
てことか?これでPHPを使う意味がわからんw
557nobodyさん:2006/08/16(水) 17:45:27 ID:???
>>550
数学板いって訊いてこればいいだろう
558nobodyさん:2006/08/16(水) 18:40:10 ID:???
実践したいってんだから止める理由も無いだろうに
559nobodyさん:2006/08/16(水) 18:46:29 ID:???
数学板には「King」が居るからヤダ
560nobodyさん:2006/08/16(水) 18:54:51 ID:???
いまだ! 600げっと!
561550:2006/08/16(水) 19:05:28 ID:???
>>556
いいえ。確率と一言でいったので誤解を招きましたが、
実際はもっと複雑な問題なんです。
上のほうのソースは部品として使うだけなので。
他の計算部は別に作ります。
562nobodyさん:2006/08/16(水) 19:18:58 ID:???
既出かもしれませんが一応ググってみて見つけられなかったので質問です。

文字列変数が、マルチバイト文字を含んでいるかどうか、の判定ロジックで
ベター、もしくはベストなものってどうやるんでしょうか?

とりあえず思いつくのはstrlenとmb_strlenで値が違えばマルチバイト含む、
といった判定方法くらいなのですが…
563nobodyさん:2006/08/16(水) 19:22:41 ID:???
>>562
このスレではその方法がベストじゃね?でFAになってるぽい
564nobodyさん:2006/08/16(水) 19:22:51 ID:???
>>562
/[^ -~]/

これに引っかかるならマルチバイト含んでる。
文字コード依存なし。
565nobodyさん:2006/08/16(水) 19:25:15 ID:???
>>563
レスどもです。
とりあえず様子みながらこの方法で行ってみます。
566nobodyさん:2006/08/16(水) 19:31:37 ID:BwdVe+rW


xsasというWAMPパッケージで、php_openssl.dllとphp_curl.dllを「F:\XSAS_XCP\diskw\usr\local\PHP\extensions」へ
置いて、php.iniで;を消しました。 しかし、xsas起動時つまりApache起動時に「・・・モジュールが見つかりません」
となってしまいます。

567nobodyさん:2006/08/16(水) 20:11:39 ID:???
>>564
なにその顔文字ふざけてるの
568nobodyさん:2006/08/16(水) 20:14:19 ID:???
>>564 はmb関数が無くても動くけど、正規表現だから少し重いね
569nobodyさん:2006/08/16(水) 20:21:34 ID:???
>>566
php.iniのextension_dirがその
F:\XSAS_XCP\diskw\usr\local\PHP\extensions
になってる?
570nobodyさん:2006/08/16(水) 20:29:20 ID:???
>>568
mb関数が1文字ずつ全半角を判定するのって正規表現より速いの?
571nobodyさん:2006/08/16(水) 20:29:24 ID:???
>>564
それ、アポストロフィとかあると誤判定になる
572nobodyさん:2006/08/16(水) 20:35:44 ID:???
>>571
なんで?ascii(コントロールコード以外)全部入ってるような気がするけど
573nobodyさん:2006/08/16(水) 21:09:25 ID:???
どこできいたらいいかわからないのでここでききます

PHP + MYSQLで膨大なデータベースから全文検索したいんですが
text like "%検索語%" みたいにすると死ぬほど遅いです。

レンタルサーバー(XREA)を使っているのであまりいじれないんですが
どうすれば高速化できますか?
574nobodyさん:2006/08/16(水) 21:16:26 ID:???
textカラムもlike演算子もチューニングの厳しいネタだなぁ…
少なくともtextにindexは振ってあるんだよな?もちろん。
とりあえずここで聞くよりDB板の方がマシそうだけど…
DB以外での解決方法を模索してるのか?
575nobodyさん:2006/08/16(水) 21:27:10 ID:???
mysqlの場合、like検索で頭に%つけると、indexは使われないんです
ていうかマニュアル見てください
http://mysql.com/doc/refman/4.1/ja/fulltext-search.html
576nobodyさん:2006/08/16(水) 21:31:34 ID:???
ひとまず質問者はsageてID出せ
577nobodyさん:2006/08/16(水) 21:32:50 ID:???
じゃとりあえずsageます
578nobodyさん:2006/08/16(水) 21:33:42 ID:???
>>575
回答者がマニュアル読ませんじゃねーよ
必要な情報がマニュアルにあるなら、お前が抜粋して書いとけ
579nobodyさん:2006/08/16(水) 21:34:12 ID:ShnVBp2+
ハイハイageの間違いだよね
580nobodyさん:2006/08/16(水) 21:56:57 ID:???
>回答者がマニュアル読ませんじゃねーよ

581nobodyさん:2006/08/16(水) 22:40:16 ID:???
> 膨大なデータベースから全文検索

Web鯖と別に、高速なデータベース専用鯖を持つべきです
582nobodyさん:2006/08/16(水) 23:16:41 ID:???
回答するときのマニュアルのリンクはったらいけないの???
583nobodyさん:2006/08/16(水) 23:30:57 ID:???
いや、マニュアルのリンク貼るのは普通。
584nobodyさん:2006/08/16(水) 23:48:40 ID:???
回答者にマニュアル読ませんじゃねーよ
と言いたかったと思われ
585nobodyさん:2006/08/17(木) 00:05:46 ID:lrPl7LqR
http://wolfside.com/i/x/risou.php

これの理想ヒップと理想ウエストを作って欲しいのですが、
phpを作成代行してくれるスレなどはありますか??
586nobodyさん:2006/08/17(木) 00:17:15 ID:???
>>573
1.日本語は単語の区切りが無いのでなんとか分割したい
>形態素解析(Chasen、MeCabとか)して単語に分ける
2.MySQLの全文検索は日本語に対応していない
>1で解析した文を16進とかにして保存する。検索するときも文を
 形態素解析して16進に変換してFullText検索する
連鯖ではいろいろな面でかなり辛そう。
参考サイト:http://www.ironhearts.com/diary/archives/000868.html

連鯖だと全文検索したいフィールドをテキストに落とすことを考えて
テキスト全文検索(kakasiとかNamazuとか)で検索するてのが現実的かー
587nobodyさん:2006/08/17(木) 00:21:35 ID:???
>>585
ヒップやウエストに理想もへったくれもあるか
588nobodyさん:2006/08/17(木) 00:32:15 ID:???
データ型を調べる関数はありますか?

具体的には、ある値のデータ型が「int」かどうかを調べたいのですが……
よろしくです。
589nobodyさん:2006/08/17(木) 00:37:37 ID:???
590nobodyさん:2006/08/17(木) 00:42:23 ID:???
>>589
どうもありがとう。

マニュアルのどこを見てよいのか分からなかったであります。
「変数操作関数」だったのね。

必死に数学関数を見て探していた……orz
591585:2006/08/17(木) 00:47:33 ID:lrPl7LqR
>>587
理想ヒップは身長×0.53
理想ウエストは身長×0.38
らしいです。

>>585のリンク先みたいに作れませんかね??
592nobodyさん:2006/08/17(木) 00:54:05 ID:???
PHPで日付を表示してみたのですが
日本時間が表示されません。
海外の時間+9時間で合わせてみたのですが
それでも時間が合いません。
分とかもずれてるんです
サーバーの時計が合ってないのですか?
どうすれば良いですか?困ってます
教えてください
サーバーはアリゾナにあるらしいのですが
ほんとかどうか知りません
593nobodyさん:2006/08/17(木) 00:57:02 ID:???
>>591
ほれ
<?php
$t = $_GET["t"];
echo <<<EOT
<html><head><title>理想のぼでい</title></head><body>
<form action="/" method="GET">
身長<input type="text" size=4 name="t" value="{$t}"> <br>
<input type="submit" value="compute">
</form><br>
EOT;
if ($t != "") {
echo "身長".$t."cmのばやい<br>";
echo "トップバスト:".($t * 0.525)."cm<br>";
echo "アンダーバスト:".($t * 0.423)."cm<br>";
echo "二の腕:".($t * 0.15)."cm<br>";
echo "ウエスト:".($t * 0.38)."cm<br>";
echo "ヒップ:".($t * 0.535)."cm<br>";
echo "太もも:".($t * 0.30)."cm<br>";
echo "ふくらはぎ:".($t * 0.205)."cm<br>";
}
?>
あとは何とかしろ。つかここはそういう質問はだめだかんな。
自分で作ってわからないことを質問するってのがここの掟
594nobodyさん:2006/08/17(木) 00:59:25 ID:???
>>591
<?php
$niceHip = $_POST['height']*0.53;
$niceWaist = $_POST['height']*0.38;
print "理想のヒップ={$niceHip}cm<br>";
print "理想のウェスト={$niceWaist}cm<br>";
?>
595585:2006/08/17(木) 01:12:26 ID:lrPl7LqR
>>593-594
はつながっているんですか??

・・・それにしてもすごいですね。
こんなにすぐ作れちゃうもんなんですね。
596nobodyさん:2006/08/17(木) 01:23:27 ID:???
>>591
理想ヒップは160cmで84.8cmか…俺はもう少し大きい方が好みだなぁ。
597nobodyさん:2006/08/17(木) 03:25:27 ID:???
パンチ3/5今どうしてるかな
598nobodyさん:2006/08/17(木) 04:35:10 ID:???
>>592
サーバーの時計がずれてるんならサーバーの管理者に頼んで合わせてもらわんと。
599nobodyさん:2006/08/17(木) 09:32:01 ID:???
>>593
bcmath 使わなくていいのか?!(・∀・)
600nobodyさん:2006/08/17(木) 10:22:04 ID:???
>>585
計算系のものならJavaScriptのほうがいいだろ
601nobodyさん:2006/08/17(木) 10:35:16 ID:???
>>599
こんなもんに誰が精度を求めるのか。
602nobodyさん:2006/08/17(木) 11:15:37 ID:???
こんなもんに誰が精交を求めるのか。
603nobodyさん:2006/08/17(木) 11:49:12 ID:???
こんなもんに誰が精液を求めるのか


に見えた
604nobodyさん:2006/08/17(木) 13:00:50 ID:???
>>544
>前述しましたように「ieHTTPHeaders」で確認しますと、たしかにセッションIDはローカルのどこかに記憶されているようです。
>Cookieファイルが見当たらないのに値が保存されているということは、あとはメモリ上に確保されている?

亀レスであれなんだがおそらくその解釈で合ってると思う。
HTTP通信をキャプチャしたらCookieの項目があった=ローカルマシンのどこかにその値がある
・・・ということなので、ファイルが存在しないのならメモリにあるとしか考えられない。
605nobodyさん:2006/08/17(木) 13:53:41 ID:???
>>599
それ使うとどうなるんだっけ??
606nobodyさん:2006/08/17(木) 14:22:03 ID:???
php-bcmath
607nobodyさん:2006/08/17(木) 15:34:52 ID:???
>>605
浮動小数点に伴う誤差がなくなる
608nobodyさん:2006/08/17(木) 15:50:07 ID:???
よくわからんが、1/3*3がきちんと1になるのか?
609nobodyさん:2006/08/17(木) 15:51:54 ID:???
速度が犠牲になることをお忘れなく。
610nobodyさん:2006/08/17(木) 16:13:29 ID:FtiwPZNr
>>593
を設置するには2つファイルが必要ですか??
611nobodyさん:2006/08/17(木) 16:18:16 ID:???
>>608
それはできません
浮動小数点の誤差というのは
echo floor((0.1+0.7)*10);
が8ではなく7になるという現象
612nobodyさん:2006/08/17(木) 16:19:52 ID:???
>>610
あのソースをコピーしてメモ帳とかのエディタに貼り付けて、
test.phpっていう名前で保存して、
サーバにアップロードして、test.phpにアクセスすればOK。
もちろんPHPが使えるサーバじゃないとだめ。
っていうかこのソースパースエラー出るよ。
613nobodyさん:2006/08/17(木) 16:31:54 ID:FtiwPZNr
・・・やってみたんですが変になります。。。
パーミッションとかいじりますか??
614PJP:2006/08/17(木) 16:38:31 ID:Ex5q979l
$logfile='1.log';
$lines = file($logfile);
$countline=count($lines);
これで$countlineが常に1になってしまいます。

データは以下のように保存しています。
$logdata='テスト';
$fp = fopen ($logfile, "w");
fputs ($fp, $logdata);
for($i = 0; $i < $countline; $i++)
fputs ($fp, $lines[$i]);
fclose ($fp);
1.logのファイルの中にはテストが溜まっていってるのですがcount()がいつも1を返します。
ご教授いただければ幸いです。
615nobodyさん:2006/08/17(木) 16:41:46 ID:???
>>613
どう変なのか書かないと状況もなんもわからんのだが
616nobodyさん:2006/08/17(木) 16:55:03 ID:FtiwPZNr
>>612さんがやり方で、
http://www.uploda.org/uporg481980.jpg.html
このようになりました。
617nobodyさん:2006/08/17(木) 17:00:23 ID:???
>>616
拡張子はhtmlじゃなくてちゃんとphpにした?
あとサーバにphpが入ってないと使えないよ。
618nobodyさん:2006/08/17(木) 17:02:50 ID:FtiwPZNr
はい。phpになってます。
infoseekの無料の奴なんですけど大丈夫ですか??
619nobodyさん:2006/08/17(木) 17:13:49 ID:???
やれやれ
620nobodyさん:2006/08/17(木) 17:16:27 ID:???
>>618
infoseekじゃPHPは使えないからJavaScriptかPerlで書くしかない。
621nobodyさん:2006/08/17(木) 17:16:35 ID:???
これが噂に聞く夏厨か?
622nobodyさん:2006/08/17(木) 17:19:44 ID:???
んもー、回答者だって酷いくらい「適当に」書いてあるんだよ。
それでも動くと言えば動くかも知れないが、実用性ゼロ。

しかも質問者も基礎の基礎をすっとばして……
なんでそんな他力本願なの?
623614:2006/08/17(木) 17:21:22 ID:Ex5q979l
count()がいつも1を返します。データはlogを開けると10回書き込みしたら10回分
テスト,テスト,テスト,・・・と10回分のデータが記憶されています。
これをfile()で呼び出しその要素をcount()で数えたら9もしくは10あたりを返すのじゃないのですか?
いつもいくら書き込んでも要素数1を返します。
624nobodyさん:2006/08/17(木) 17:24:17 ID:???
>>614
$logdataを書き込むとき最後に改行も書き込む
ファイルオープンは"w"より"wt"がベター
625614:2006/08/17(木) 17:27:01 ID:Ex5q979l
改行とは\nですか?
626nobodyさん:2006/08/17(木) 17:30:01 ID:???
>>625
そうだよ
"wt"とテキストモードで開けばWindowsなら自動的に\r\nに変換して書き込まれる
読み込みも\r\nが\nに変換されて読み込まれる
Linuxではテキストモードもバイナリモードも関係ないからそのまま無変換で\nのまま読み書きされる
627nobodyさん:2006/08/17(木) 17:32:56 ID:???
わからないうちはwで\nつけた方がいいかもね。まだいらない知識とみた。
628nobodyさん:2006/08/17(木) 17:34:33 ID:???
>>623の内容からするとfile()の動作を誤解してるんじゃないかと思うんだが
629nobodyさん:2006/08/17(木) 17:37:16 ID:fBR2tTe/
質問です
動的なページで、そのページのURLを取得する関数ってありますか?
630614:2006/08/17(木) 17:42:46 ID:Ex5q979l
\nつけても要素増えませんでした。
file()って配列を返すんじゃないんですか?
631nobodyさん:2006/08/17(木) 17:44:20 ID:???
$_SERVER['PHP_SELF'];
632614:2006/08/17(木) 17:52:37 ID:Ex5q979l
\nで解決しました。ありがとうございました。
633ABCオロチ”管理”人:2006/08/17(木) 18:01:23 ID:???
あなたがたが、しばらく前にうちの、掲示板を晒したので厨房だらけに、なってしまいました。
どうにか、してもらえませんか?
http://www.abcoroti.com/~rent/rspace/bbs3/wwwlng.cgi
634nobodyさん:2006/08/17(木) 18:03:05 ID:fBR2tTe/
>>631
$_SERVER['PHP_SELF'];
でやってみました。

たとえば
aaa.php?key=%EF%BC%92%E3%81%A1%E3%82%83%E3%82%93%E3%81%AD%E3%82%8B

だと
aaa.php
までしか取れないのですが
全部取得できる方法無いですか
635nobodyさん:2006/08/17(木) 18:06:16 ID:???
マニュアルを読まない奴はだいっきらいだ
636nobodyさん:2006/08/17(木) 18:06:37 ID:???
>>633
なんか見るからに穴だらけだし、
管理しきれないなら閉鎖すればいいじゃん。
わざわざここに来られてもどうにかできるもんじゃないしスレ違い。
荒らしたやつのIP調べて該当プロバイダに出せばいい。
637634:2006/08/17(木) 18:15:20 ID:fBR2tTe/
早く教えろ!!!
638nobodyさん:2006/08/17(木) 18:18:39 ID:???
phpinfo() でも読んで、どうすれば全体取れるか考えろよ
639nobodyさん:2006/08/17(木) 18:25:24 ID:???
いい回答が返ってこなくて質問者が荒らしになる瞬間
640軟式PHP:2006/08/17(木) 18:30:49 ID:???
>>635
ゲドネタわろたw

>>634
落ち着け。638がいうようにphpinfo()を実行して凝視すれば答えがある。
641634:2006/08/17(木) 18:42:14 ID:DaHzwuB7
出来た!!! ありがとぅぅぅぅぅう
642634:2006/08/17(木) 21:31:43 ID:???
うぅぅ、やっぱり出来ませんでした><
643634:2006/08/17(木) 21:49:08 ID:???
なぁぁぁんだ、簡単ジャンっっ!!!
644nobodyさん:2006/08/17(木) 22:34:25 ID:???
とりあえず>>634は氏ねばいいのに。
645nobodyさん:2006/08/17(木) 23:16:19 ID:???
>>644
スルーしろ。
646nobodyさん:2006/08/17(木) 23:36:48 ID:???
>>633
晒したのはここの住人じゃなくて「拓海」とかいうガキ

晒されたらすぐ荒らされるようなサイト運営に問題があるとしか思えないな
647nobodyさん:2006/08/18(金) 01:51:06 ID:jkLvf1gx
>>621
夏だなぁ厨  【なつだなぁちゅう】

夏に暴れる人を放置ができず、とにかく「夏だなぁ」と言い出し、
それによってなぜか相手より優位に立ってると思い、
荒れの元となりスレ住民全体に迷惑をかける存在。

【特徴】
・とにかく文中に「夏だなぁ」を入れないと気がすまない
・スレの流れや空気を読めず、反応してしまう
・普通のスレ住人は夏厨を放置しているのに自分だけが過剰に反応してしまう
・夏厨に反応している時点で夏厨と同類であることに気づいていない
648nobodyさん:2006/08/18(金) 01:57:56 ID:???
>>647
亀レスでどうでもいいこと書くな
649nobodyさん:2006/08/18(金) 02:05:28 ID:???
>>633
厨房の巣窟になっとるがな。成り済ましOKのヘボイ掲示板使ってるからだよ。
650nobodyさん:2006/08/18(金) 02:33:34 ID:???
$Serial= $this->session->get('UserSerial')

Ethnaで上記のような書き方でセッションに入ってるシリアルをとったりしてるんですが
この「session」っていうのは変数?定数?関数?のどれになるんでしょうか?
651nobodyさん:2006/08/18(金) 02:40:42 ID:???
変数
652nobodyさん:2006/08/18(金) 02:43:52 ID:???
>>651
レスどうもです
$ありの変数とどう違うんでしょうか?
653nobodyさん:2006/08/18(金) 02:50:55 ID:???
オブジェクトの中でユーザ定義した変数かそうでないかの違い
654nobodyさん:2006/08/18(金) 04:51:53 ID:???
>>653
ありがとうございました!
655nobodyさん:2006/08/18(金) 08:13:53 ID:???
&$hoge
みたいに、変数の前に&がついてるのってどういう意味?
656nobodyさん:2006/08/18(金) 08:32:15 ID:???
リファレンス。
657nobodyさん:2006/08/18(金) 08:33:43 ID:???
>>656
参照渡しってこと?
658nobodyさん:2006/08/18(金) 09:13:23 ID:???
>>657
ぃ〜ぇ、違ぃます。
659nobodyさん:2006/08/18(金) 09:25:38 ID:???
>>658
嫁ってこと?&とかで検索できないんだけど
660nobodyさん:2006/08/18(金) 09:34:23 ID:???
661nobodyさん:2006/08/18(金) 09:51:58 ID:???
「リファレンス」とわざわざ書いてあるのに記号で検索ですか
662nobodyさん:2006/08/18(金) 10:18:57 ID:???
リファレンス本を読め、という勘違いでしょう。
正しくは「リファレンス本でリファレンスの章を読め」
663nobodyさん:2006/08/18(金) 11:15:26 ID:/SUvBA3A
YahooやInfoseekの会員登録画面を作りたいのですが
(参考:https://register.www.infoseek.co.jp/RegistConfirm.html
入力エラーの表示がすごく気に入っています
ページ構成方法もさることながら、エラー制御方法で悩んでいます

1)ID、Password、個人情報入力
 ↓
2)登録ボタン
 ↓
3)別htmlに、エラー表示が追加されている(1)のページを表示
 ↓
4)エラーなくなるまで繰り返し
 ↓
5)登録完了

どんな制御方法がいいのでしょうか
また参考になるサイトあればおながいしまつ
664nobodyさん:2006/08/18(金) 11:19:25 ID:???
フィッシングでつか?
665nobodyさん:2006/08/18(金) 11:24:32 ID:/SUvBA3A
>>664
そんなことはしません
データ登録システムのフロント部分で参考にしたかったのです
666nobodyさん:2006/08/18(金) 11:32:32 ID:???
>>665
制御というか、こんなのは関数や構文の問題ではない。
お前にはプログラムは無理だ。あきらめろ。
667nobodyさん:2006/08/18(金) 11:38:27 ID:/SUvBA3A
>>666
俺もそう思ったんだけどさ、実際に書こうとすると難しいのよ
クマっている
668nobodyさん:2006/08/18(金) 11:41:27 ID:???
クマってるってなに?
ふざけてるの?
669666:2006/08/18(金) 11:42:40 ID:???
>>667
最初に、POST内容のエラーチェックをして、
エラーがあるならその内容を上部にまず表示
(strErrorMessage等に書き溜めておいて、後でHTMLを書き出すときに該当箇所に書き出す)
そしてエラーがない項目をフォームにセットしたHTMLを書き出せばいいじゃないか。
670nobodyさん:2006/08/18(金) 11:45:24 ID:???
1.初期処理
2.POST内容のエラーチェック
3.エラーがあるなら、エラー内容を表示した登録画面を書き出し終了。
4.エラーがないなら、登録処理(もしくは一旦確認画面を表示するか)
671nobodyさん:2006/08/18(金) 11:48:34 ID:/SUvBA3A
>>669
いや、そこは問題ない
俺の質問が漠然としすぎたのが問題だった

・入力するテキストフォームの"すぐ下"に「文字数がオーバーしています」と
エラー表示させ、テキストフォームは空白(クリア)

・エラーでないテキストフォームは、入力済みになっている


JavaScriptを使うのはできるだけ回避したい(ブラウザ面倒だから)

672nobodyさん:2006/08/18(金) 11:53:44 ID:???
>>671
それはいい仕様だと思うが、669が問題なくて、なぜそれができないんだ?
673nobodyさん:2006/08/18(金) 11:57:40 ID:???
>>671
その通りの事をプログラムでするだけ…。
入力された値を、エラーのものは消す、エラーでないものは復帰させる。
エラーのものはエラーメッセージを表示する。
そんだけ。
674nobodyさん:2006/08/18(金) 11:59:22 ID:???
if (strlen($message) > MAX_LEN){
 echo "<input type=text name=message value=\"\" maxlength=".MAX_LEN."><br>\n";
 echo "<font color=red>文字数がオーバーしています</font><br>\n";
} else {
 echo "<input type=text name=message value=\"".$message."\" maxlength=".MAX_LEN."><br>\n";
}

エラー含有前提だが、こんな感じではだめなのか?
675nobodyさん:2006/08/18(金) 12:02:21 ID:???
最近のフレームワークなら一瞬でできそうな処理だな
676nobodyさん:2006/08/18(金) 12:05:16 ID:/SUvBA3A
みんなサンクス
だが、そんなところは問題ないんだw

って、俺、整理つかん
俺のソース見ると無限ループおこしている

一度、吊って頭冷やしてみる
677nobodyさん:2006/08/18(金) 12:06:37 ID:???
DBに保存されてるテキスト(たとえば日記とか)を
表示させるときに、通常はhtmlspecialcharでエスケープしてます。

でも、一部の特殊文字(ハートなど)だけはエスケープせずに表示したいのですが、
これを実現するにはhtmlspecialcharをかけた後に、目的の特殊文字のコードだけを
エスケープ前の状態に再変換するような関数を自作しておくしかないでしょうか?
678nobodyさん:2006/08/18(金) 12:07:14 ID:???
お前、頭悪すぎだそりゃw
679nobodyさん:2006/08/18(金) 12:08:37 ID:???
あ、頭悪いのは>>676
680nobodyさん:2006/08/18(金) 12:21:17 ID:???
>>677
preg_replaceなんかを使って置換していくのがベストだと思うぞ
681nobodyさん:2006/08/18(金) 12:47:27 ID:/SUvBA3A
>>678
すまんな。もう頭おかしくなっている
オシムと直志のせいで頭が整理つかん
ちと、仮のやつをこしらえてURLさらすんで暇になったら教えてくださいな
682677:2006/08/18(金) 12:53:11 ID:???
>>680
やはりそうですか。。。

地道に正規表現や置換関数などを使って、
任意の特殊文字だけをエスケープ前の状態に戻す関数を作ろうと思います。
683nobodyさん:2006/08/18(金) 13:01:04 ID:???
入力値チェックで数字のみを使いたいのですが、
preg_match("/^[0-9]/", $hoge)でやった場合、
123gggなんかも123として扱ってしまいます。
どうかいたらいいのでしょうか?
684nobodyさん:2006/08/18(金) 13:08:17 ID:???
>>682
そのくらいは地道とはいえんぞ
685nobodyさん:2006/08/18(金) 13:41:12 ID:???
>>684
いやぁ、特殊文字が一つや二つだけなら簡単ですけど、
全てに対応しようと思うと億劫ですよね。。。
686nobodyさん:2006/08/18(金) 13:41:51 ID:???
納期間にあわなxふじk><
たすけtれwn
687nobodyさん:2006/08/18(金) 14:08:11 ID:???
ちょっとこいつを見てくれ
"一"と"龠"はもちろんいけるが
"募"とか"集"とか漢字を判定できないんだ
どう思う?

  if(ereg("[一-龠]",$name)){
    echo "漢字だよ";
    exit;
  }else{
    echo "漢字じゃないよ";
    exit;
  }
688nobodyさん:2006/08/18(金) 14:19:06 ID:???
>>687
マルチバイトだからな。
689nobodyさん:2006/08/18(金) 14:19:37 ID:???
>>683
その程度なら、正規表現よりもis_int() とか is_numeric()使った方が良いと思う
690nobodyさん:2006/08/18(金) 14:22:42 ID:???
>>688
でもmb_eregにしても反応しないんだ
どう思う?
691nobodyさん:2006/08/18(金) 14:23:22 ID:xIt7iz8d
他のページ(NOT管理下)を取得して、そのページにある好きな文字列を自分が管理するページに表示したいのですが、
詳細が乗っているサイト若しくはやり方を教えて下さい
言語はperlのみ使えます
692nobodyさん:2006/08/18(金) 14:23:33 ID:???
>>690
お前がバカだからだろ
693nobodyさん:2006/08/18(金) 14:28:22 ID:???
>>691
フィッシングですか
694nobodyさん:2006/08/18(金) 14:28:31 ID:???
>>692
納得した、ありがとう
695nobodyさん:2006/08/18(金) 14:30:57 ID:xIt7iz8d
>>693
え?w
違いますよ
翻訳サイトでページ翻訳ってあるじゃないですか
ああいうことがしたいんです
696nobodyさん:2006/08/18(金) 14:34:03 ID:???
>>691
ここ、PHPスレ
697nobodyさん:2006/08/18(金) 14:36:16 ID:???
>>691
webサイト制作初心者板にいたやつだな。
なんでPHPのスレでPerlの質問をするんだハゲ。
698nobodyさん:2006/08/18(金) 14:38:02 ID:xIt7iz8d
>>696-697
すいません、「下らねぇ質問はここに書き込みやがれ」しか見てませんでした^^;
699nobodyさん:2006/08/18(金) 14:39:31 ID:???
>>698
http://beginners.atompro.net/htm/smpcgi/webpsrc.shtml
ほれ
これでわからないならあきらめろ
700nobodyさん:2006/08/18(金) 14:44:51 ID:???
>>683
年齢とか、個数とかの数値であれば、
$hoge = $hoge + 0;
とやって、強制的に数値にしてやるといい。
701nobodyさん:2006/08/18(金) 14:45:02 ID:???
相対パス指定がうまくいきません。

main.php
  require "hoge/Calc.php"

hoge/Calc.php
  require "lib.php"

hoge/lib.php

hoge/test.php
  require "Calc.php"


hoge/フォルダ以下でひとつのシステムを作っています。動作確認のために
hoge/test.php からCalc.phpを呼び出して利用した場合は動くのですが、
トップのmain.phpから相対パスで呼び出そうとすると、lib.phpの場所が
問題となって動きません。
実際にはhoge/Calc.phpはmain.phpだけではなく、いろんなフォルダのいろんな
ファイルから呼び出されるのですが、どうパス指定してやればいいのでしょうか?
702nobodyさん:2006/08/18(金) 14:45:24 ID:???
>>699
関係ないスレで質問したのにわざわざ答えてくれて本当にありがとうございます
そのページを参考にして頑張ってみたいと思います
では失礼いたしました
703nobodyさん:2006/08/18(金) 14:47:50 ID:???
>>701
なるほど main.phpからみるとlibは同一フォルダでないからな。

絶対パスにしてはいけないの?
704nobodyさん:2006/08/18(金) 15:03:16 ID:???
>>701
include_pathに/hogeを追加してやれば
どのファイルからでも/hogeからの相対パスで
/hoge内のファイルをロードできる
705nobodyさん:2006/08/18(金) 15:05:01 ID:???
ユーザー入力されたテキストのうち、
URL部分だけをハイパーリンクにするにはどうしたらいいですか?

いま考え付く方法は、
「httpから始まる文字列を、全角文字が現れるまで正規表現で抽出」
そしてその文字列にリンクを張る・・・という感じですが、
もっと良い実装方法などありますでしょうか?
専用の関数があると便利なのですが。
706nobodyさん:2006/08/18(金) 15:12:05 ID:???
そのへんの掲示板のサンプルソース読めばパターンいっぱいあるだろうに。
707nobodyさん:2006/08/18(金) 15:14:56 ID:???
そもそも「正規表現」で検索すればみつかるんじゃないの?
708701:2006/08/18(金) 15:16:39 ID:???
>>703-704
ありがとうございます。include_pathのほうはいじる権限持ってないので、
絶対パスでなんとかしてみます。
709nobodyさん:2006/08/18(金) 15:18:39 ID:???
>>705
ttp://www.din.or.jp/~ohzaki/perl.htm
Perlでの例だが、正規表現は同じだ。
710nobodyさん:2006/08/18(金) 15:21:40 ID:???
>>708
ini_setでソースから変えられるよ
ini_set('include_path', $path);
711nobodyさん:2006/08/18(金) 15:24:29 ID:Whin3OBF
mkdir関数で新しくディレクトリを作ろうとしているのですが
Warning: mkdir() [function.mkdir]: Permission denied in
とerrorが出て作成できません。
PHPはこれです。
<?php
mkdir ("hoge", 0705);
?>
よろしくお願いします。
712nobodyさん:2006/08/18(金) 15:26:53 ID:???
>>711
そのサーバはmkdir使えるのか?
とりあえずCGIで動かしてみ。
713nobodyさん:2006/08/18(金) 15:32:49 ID:???
>>711
スクリプト自身があるディレクトリのパーミッションを707とかにしないとだめだろ
それとセーフモードはOffかい
714nobodyさん:2006/08/18(金) 15:44:30 ID:Whin3OBF
>>712
xreaのs225なので使えます。
>>713
>スクリプト自身があるディレクトリのパーミッションを707とかにしないとだめだろ
707にしたらできました。ありがとうございました。
715nobodyさん:2006/08/18(金) 16:41:32 ID:???
上にフォームについて引き続き質問です
ようやく整理がついてきました

chinpo.html上のフォーム入力を行い、【登録】ボタンを押す

hoge.phpに飛び、各フォームのエラーチェックスクリプトが動く

hoge.phpが表示されエラー箇所が明示される

修正後、【登録】ボタンを押す

正しければkakunin.htmに飛び確認画面が表示される
もし間違いだったらどこへ飛べばいいのかな?

hoge.phpに今いるわけで、新たにhogehoge.phpに飛ばせると無限にphpファイルが必要になる
だから、再度、hoge.phpに飛ばせるべきなんだが、どのようなスクリプトを書けばいいのでしょう?
716nobodyさん:2006/08/18(金) 16:45:23 ID:???
>>715
お前は何か勘違いしているな。
717nobodyさん:2006/08/18(金) 16:58:08 ID:???
>>715
お前さんがそれをやるには相当早すぎる
718nobodyさん:2006/08/18(金) 16:58:40 ID:???
>>715
あきらかに力不足でしょ。
自己満足で作ってるなら別にいいけど、
何かのシステムに実装するとか、使うつもりならば、
登録した人が悲惨な目にあうのでやめてください。
719nobodyさん:2006/08/18(金) 16:58:48 ID:???
>>715
まずは無限にphpファイル作ってみよう。自分で満足できる所まで
720nobodyさん:2006/08/18(金) 17:00:00 ID:???
>>715
全て、hoge.phpでやってみては?
721nobodyさん:2006/08/18(金) 17:01:33 ID:???
>>715
1ファイルでできるし、とりあえずフローから考えていくこった

if (POSTされたか?) {
 if (エラーがあるか?) {
  if (今入力画面?) {
   確認画面表示
  } else {
   成功画面表示
  }
 }
 入力画面表示(エラー表示)
}
入力画面表示
722nobodyさん:2006/08/18(金) 17:03:05 ID:???
>>715
大人気だな
723nobodyさん:2006/08/18(金) 17:09:43 ID:???
>>715
まず参考になるかわからんが、フォームに hiddenで現在のモードを入れておくことにする。

一番最初の登録を行う画面では、
<input type=hidden name=mode value=first>
を仕込んでおき、

登録しますか?の確認画面では、
<input type=hidden name=mode value=second>
とでもしておく。

そして、スクリプトの初期の段階で、
if ($mode == 'first'){
// エラーチェック処理
// エラーなら再度登録用画面を表示
// エラーがないなら確認画面を表示
} elseif ($mode == 'second'){
// 一応もう一度エラーチェックをする。   < ここは結構重要
// エラーなら登録用画面を表示
// エラーがないなら登録処理&登録できました画面を表示
}

こんな感じがよい。
724nobodyさん:2006/08/18(金) 17:15:54 ID:???
みんな優しいな
725723:2006/08/18(金) 17:23:21 ID:???
すまん○。こっちの方がシュールだな。

// エラーチェック処理
// エラーなら再度登録用画面を表示して終了

if ($mode == 'first'){
// 確認画面を表示
} elseif ($mode == 'second'){
// 登録処理&登録できました画面を表示
}
726nobodyさん:2006/08/18(金) 17:29:37 ID:???
シュールの使い方間違ってるよ。
727nobodyさん:2006/08/18(金) 17:31:14 ID:/SUvBA3A
>>716-724
みんな優しい
ありがとう(泣

>>723
if ($mode == 'first'){
// エラーチェック処理            ←ここまでできています!!
// エラーなら再度登録用画面を表示  ←問題は、ここなんです!!
// エラーがないなら確認画面を表示

再度登録用画面には"header"で飛ばせばいいと思いますが、その際、

・エラーがでなかったテキストフォームには「入力データを残す」
・エラーがでたテキストフォームには「空白」にする

という処理を組み込ませたいのです
そうなると頭がふにゃふにゃになってしまっています
728nobodyさん:2006/08/18(金) 17:31:23 ID:???
×シュール
○スマート
729nobodyさん:2006/08/18(金) 17:34:08 ID:???
>>690
亀スマソ。文字コードがあってねーんだろうね。
なんか正規表現のコードを指定する関数があったけど忘れた。
mb_なんちゃら
このスレか前スレ、もしかしたら前々スレあたりに、ひらがなにマッチしない、みたいな質問と回答あるはず。
730nobodyさん:2006/08/18(金) 17:34:16 ID:???
入力画面がhtmlなのがいけないのだよ
731nobodyさん:2006/08/18(金) 17:34:18 ID:???
>>727
>再度登録用画面には"header"で飛ばせばいいと思いますが

そこが違うんだよ。
hoge.phpの中から、直接HTML文を書き出す。
ちょっと面倒だろうが地道に入力していけ。

工夫次第では、初期登録画面を書き出す(おそらくあなたは別HTMLファイルでやってるだろうけど)処理を
活用することができるが。
732nobodyさん:2006/08/18(金) 17:41:26 ID:???
<input name="onamae" value="<?=$input["onamae"]?>">
最初の入力画面では$inputは空に、エラーが出たら
この中に入力した文字が入ってるようにする。
最後の確認画面は別のHTML用意した方が良いね。
733nobodyさん:2006/08/18(金) 17:43:16 ID:???
ついでにヘッダーで飛ばしたいなら、セッションでも使わないと無理よ。
734nobodyさん:2006/08/18(金) 17:44:52 ID:6myYxIuc
入力フォームなどから受け取ったデータが、複数行にわたる場合に
その複数行のうち、3行目だけを抜き取るみたいな処理を行いたいのですが

fgets()は、fopen()されたファイルしか処理できないんですね・・
なんとか、これでやろうと思えば、一回受け取ったデータをファイルに保存して
それから、ファイル処理としてfgets()を使うなども考えたのですが、ずいぶん面倒と思いまして

それで、今度はexplode()を使って、\nで区切って改行ごとに、配列に入れていって
必要な行だけを取り出そうと思ったのですが
改行を\nでは、判別してくれないんですかね・・

いろいろ考えているのですが、何か良い方法があったらアドバイスお願いします。
735nobodyさん:2006/08/18(金) 17:46:33 ID:/SUvBA3A
>>730-731
なるほど、、、もっとも避けたかった方法が答えでしたか(涙

例えば

print("<h1>monster()</h1>");
print "<input type=\"submit\" value=\"2ch大好きだぜ\">";
print "<input type=\"submit\" value=\"でもVIPはな\">";

とな感じでprint使って1つのphpで表現する方法ですね

むー頑張ってみる
また質問します!!

みんなありがとう
736nobodyさん:2006/08/18(金) 17:49:16 ID:/SUvBA3A
>>732
そうですね
一応MySQLにぶちこむので最終確認画面はphpファイルでいこうと思います!!

>>733
フォーム認証後の画面なのでセッションは貼っていますが
これ以上、複雑にするのは俺には無理のようです・・・
737nobodyさん:2006/08/18(金) 17:54:15 ID:???
>>736
なんか出来るんだか出来ないんだかよくわからんやつだな。
738nobodyさん:2006/08/18(金) 17:56:43 ID:???
>>734
ttp://jp.php.net/manual/ja/function.explode.php
このマニュアルで
$exploded = explode("\n",$words);
と使っているので、\nで区切れないということはないはず。
739nobodyさん:2006/08/18(金) 18:03:38 ID:/SUvBA3A
>>737
いかんせん、まわりに相談する人が誰もいない
最初はMySQL5.0に6000万レコードを書き込むスクリプトから開始し
次にMD5に変換させるスクリプトを走らせると、途中で地獄のdump吐くは

オシムが代表監督になるわ、直志が召集されるわ
MLはNifty時代から好きになれず
2chでいじめられながら頑張るのが大好きだ!!

これからもよろしくおながいしまつ
740nobodyさん:2006/08/18(金) 18:37:45 ID:???
>>735
> print("<h1>monster()</h1>");
> print "<input type=\"submit\" value=\"2ch大好きだぜ\">";
> print "<input type=\"submit\" value=\"でもVIPはな\">";
> とな感じでprint使って1つのphpで表現する方法ですね
せめて

<?php
プログラム
?>
<h1>monster()</h1>
<input type="submit" value="2ch大好きだぜ">
<input type="submit" value="でもVIPはな<?php echo $変数 ?>">

みたいにPHPモード抜けて普通にHTML書こうよ。
しかしすでにセッション使ってて前の入力内容を復元させることが難しい、
ってやつも相当珍しい気がするんだが。
741nobodyさん:2006/08/18(金) 18:39:30 ID:???
>>734
explodeで正解だよ。
ちょっと自分で書いたexplodeのとこ見せてみ。それ多分書き方間違ってるだけ。
742nobodyさん:2006/08/18(金) 18:42:41 ID:IH/AT+iL
すいません、本質的にはPHPとは関係無いのですが、
適切なスレが見つかりませんでした。

PHPでAmazonのWebサービスを使ってプログラミングしているのですが、
Amazon API でBooks の情報を取得した時、
ItemAttributesが通常はオブジェクトなのですが、
まれに配列変数になってて、要素のAutherとかが、0から始まる配列変数になってる事がありますよね?
つまり、var_dumpすると以下のようになっているはずのものが、
["ItemAttributes"]=> &object(stdClass)(13) { ["Author"]=> string(16) "ほげ ほげお"
以下のようになっている。
["ItemAttributes"]=> array(16) { [0]=> string(16) "ほげ ほげお"

これを回避する方法があればお教え下さい。

0から始まる配列変数が全て、Autherなどのデータなら良いのですが、
間に本の種類(単行本)などが入っているので、もし回避出来ないのなら、本の種類全てをプログラムに入力して、
「本の種類の前はAuther、本の種類の後はCreator」というような事をしないとダメでしょうか?

環境など:
PHP4.3.10
PearのSOAP(var0.9.4)ライブラリ
Amazon ECS 4.0
743734:2006/08/18(金) 18:47:03 ID:???
>>738,>>741

お二方アドバイスありがとうございました。
>>738氏が示してくださった、
>$exploded = explode("\n",$words);
>と使っているので、\nで区切れないということはないはず。
という、ことからきっと区切りが、\nではないのだと思いはじめ、まずそこを調べたところ
私が改行だと思っていたものは、<br />でした。
\nの代わりに<br />としたところ満足のいく結果を得られました。

非常にくだらなく、低レベルな質問になってしまって失礼しました。
お騒がせ致しました。
744nobodyさん:2006/08/18(金) 19:10:58 ID:???
>>742
クラス定義より前にセッションなりからデータを読み出しちゃってる、ってことはない?
マニュアルのセッションの辺りに説明があると思うけど、セッションを自動スタートで使うと
クラス定義の前に変数展開をしちゃうからクラスの形で定義できない問題とかがあるよ。
745nobodyさん:2006/08/18(金) 20:34:36 ID:???
>>692
あなたが私をバカと言ってくれたおかげで事故解決できました^^
ありがとうございました^^
746nobodyさん:2006/08/18(金) 20:37:04 ID:???
1.馬鹿だから諦めて解決ってことにした
2.悔しかったのでがんばって自分で調べた

後者ならお前は伸びる
747nobodyさん:2006/08/18(金) 20:37:14 ID:???
与えられた日付が実在するかどうか(うるう年も含めて)を
あまり重くない処理で判定するにはどうしたら良いでしょうか??

うるう年や、その月毎の日数などをその都度計算して、与えられた日付と比較する関数などを
作ることも考えましたが、どうにも効率が悪くてスマートじゃないと思ったもので・・・
748nobodyさん:2006/08/18(金) 20:38:41 ID:???
>>747
checkdate()
749nobodyさん:2006/08/18(金) 20:43:40 ID:EScfbsFP
こんなスクリプトを探してます!
情報をお願いしますm(_ _)m

http://imona.jp/news/
http://kabubu.net/sub/news/news.php
750nobodyさん:2006/08/18(金) 20:48:34 ID:???
>>749
確かにくだらない質問だがな、
ここは何かを探してくださいといったことはしていない。
自分で作るっていうなら話は別だが、
探してるっていうなら他のスレをあたりなさい。
751nobodyさん:2006/08/18(金) 20:59:21 ID:???
>>749
自動でやるのならRSSがもっとも確実だろ
752nobodyさん:2006/08/18(金) 21:25:14 ID:???
>>746
mb_internal_encoding("Shift_JIS");
mb_regex_encoding("Shift_JIS");

これ書いたらいけました^^
調べるのに2時間もかかりましたよ^^
753nobodyさん:2006/08/18(金) 21:34:58 ID:???
>>748
うわ!!
リファレンス本も持ってるというのに、
そんな関数はハナっから無いと思い込んで見落としてました・・・。

ありがとうございます。
754nobodyさん:2006/08/19(土) 00:33:54 ID:???
>>753
ちなみにmktime()も日付チェックの機能を備えてて、
不正な日時が入力されたら補正して返すから
入力 != 出力 で妥当性をチェック可能。
755nobodyさん:2006/08/19(土) 01:22:52 ID:???
>>754
チェックするだけなら、checkdate() の方が速いけどね。
これを機にソースも読んでみたけど、checkdate() は大した事してないし。
mktime() は当然いろいろやってるが。
756nobodyさん:2006/08/19(土) 01:44:00 ID:+xxPG0V/
socket_connect(socket_create(AF_INET, SOCK_DGRAM, SOL_UDP), $addr, 2050);

Warning: socket_connect() [function.socket-connect]: unable to connect [13]: Permission denied
という接続時のエラーによりこの後のデータ送信ができないのですが、
このエラーの解決方法をご存知の方、教えてもらっていいですか?
757nobodyさん:2006/08/19(土) 03:44:33 ID:01c3DaJf
すいません、基本的な疑問で今まで出来ないと思い込んでいたことを聞きたいんですが、
foreachで配列をループにかけている最中に、
今配列の中の何番目かということを知ることって出来ないんでしょうか?

いままでそれを知る必要がある時は
foreachじゃなくてforでループまわして現在の配列のナンバーを取得してたんですが、
もしかしてforeach中でもそれを簡単に知る方法があるんじゃないかと思ったので
質問してみます。

よろしくおねがいします
758nobodyさん:2006/08/19(土) 04:02:07 ID:???
>>757
foreach($array as $key => $value) {
 echo "$value は $key の位置にあります<br>"
}

連想配列で何番目なのかを知ろうと思ったら
$no = 0;
foreach($array as $key => $value) {
 echo "$value は $no番目にあります<br>"
 $no ++;
}
ってするしか無いと思う。
759nobodyさん:2006/08/19(土) 05:11:13 ID:???
>>758
なるほど
ありがとうございます!

ただSimpleXMLで取得したオブジェクトに対しては
根本的に連想配列になっているのか、
使えないみたいですね

これはちょっと残念ですが、他についてはおかげさまで随分楽になりそうです
760nobodyさん:2006/08/19(土) 05:49:04 ID:???
連想配列になってるもので何番目なのかを意識する必要ってあまり無いからな。
761nobodyさん:2006/08/19(土) 07:20:46 ID:???
>>714
次の質問はmkdirで作ったディレクトリにファイルが作れませんだな
762nobodyさん:2006/08/19(土) 07:50:57 ID:???
画像が存在するかどうか確認するにはどんな関数があるでしょうか?
ユーザからわたってきた
hoge.jpg
というデータが存在するかしないかをチェックしたいのです。
763nobodyさん:2006/08/19(土) 07:55:24 ID:???
>>762
そもそもユーザからどういう風に渡されたのさ
764nobodyさん:2006/08/19(土) 08:07:38 ID:???
URLで渡されると仮定していただけると分かりやすいかと。
is_fileやfile_existsだとfalseが返されてしまいます
765nobodyさん:2006/08/19(土) 08:49:32 ID:???
・URLで指定したファイルが本当に存在するか確認したい
・外部の鯖のURLなので、is_fileやfile_existは使えない事は確認済み
ってことかい?
766nobodyさん:2006/08/19(土) 08:50:07 ID:???
>>764
そういうのは普通「渡す」とは言わないけどな。
ま、file_exists()は自分のサーバー内のファイルを調べる関数だから当然だな。

んじゃfile()で読み込んでみれば?allow_url_openがOnの環境限定だけど。
ホントはHEADアクセスで確認する方が負荷かからなくていいんだけどお手軽でしょ。
767nobodyさん:2006/08/19(土) 09:22:55 ID:???
$temp_file = md5_file($temp_file);

$temp_file はテンポラリに入っています。書き出す前です。
この様な段階でmd5_file する事は無理なのでしょうか?

現在は move_uploaded_file chmod で一度書き出し md5_file した後 unlink で消しています。
この様な面倒な方法以外の方法があればご教示ください。

>>762
前スレで上記の様な質問をした者ですがこれと同じ事?
768nobodyさん:2006/08/19(土) 09:49:17 ID:???
>>767
>>762はアップロードしてるわけじゃないから全然別。
他所のサーバに置いてある画像をURL有効チェックしたいだけらし。
769nobodyさん:2006/08/19(土) 09:57:10 ID:???
チャット相手の女の子の顔をみるPHPはどう書けばいいですか?
770nobodyさん:2006/08/19(土) 10:00:46 ID:???
LOCK_EX中でもfileは読み込めるのでfopen 'w' とかは注意
とか見たような気がするんですが、その場合、同様に配列に読み込みたい場合は
fgetsを使うんでしょうか?
771nobodyさん:2006/08/19(土) 10:03:35 ID:???
>>770
ごめん。日本語が解読できなかったorz
772nobodyさん:2006/08/19(土) 10:04:29 ID:???
>>769
チャットって何のチャットさ
773nobodyさん:2006/08/19(土) 10:09:01 ID:???
>>770
'w' を使いたい処理の場合も、 '+r' で開き、ファイルロックしてから、トランケイトして
ファイルサイズを0にし、ファイル先頭から書き出すのがもっともよいとされている。
これは、fopen を w で開いた直後、ロックの処理をする前にファイルサイズが0になってしまうため、
この間に別プロセスがファイルをreadすると、空のファイルを読んでしまうことになるからだ。

+r で開いてからロックすれば、この間はファイルのデータは保たれているため、
上記のようなデータの損失が発生することはない。
774nobodyさん:2006/08/19(土) 10:11:52 ID:???
fopen 'w'したらファイルが空になるから
r+とかa+使った方が無難ってだけじゃないの?
あとバッファはset_file_bufferで0にしたほうがいいね

fileは読み込むだけでファイルの更新自体はしないし関係ないと思うよ
775nobodyさん:2006/08/19(土) 10:12:48 ID:???
あら、先にかかれてた?
776nobodyさん:2006/08/19(土) 10:20:51 ID:???
>>774
まあ表示だけならデータが表示されないだけで問題なさそうかと思われるけど、
どうせだったらそんなことが起こらない方法で書いた方がいいに決まっている。

HTMLにデータ込みのフォームを書き出す処理の中でデータが抜けて、
そのままそのフォームを登録してしまう(必須でない項目が抜ける可能性)や、

rで読んでレコードを編集したあと、あらためて wで開いてレコードを書き出す、
その上に処理のロックをかけていない、などの Let's PHP みたいな不備のあるソースを書くと
データが消えてしまう恐れがあるね。
777nobodyさん:2006/08/19(土) 10:50:04 ID:???
>>772
なんのチャットでもいいです。
778nobodyさん:2006/08/19(土) 11:10:07 ID:???
>>777
じゃあ、ムリ
779nobodyさん:2006/08/19(土) 11:45:54 ID:???
>>769
PHPじゃ無理だからJAVAにしとけ。
780nobodyさん:2006/08/19(土) 11:49:35 ID:9NEEnAjJ
[a]http://hogehoge.com[/a]という自作タグをphpで正規のアンカータグに置き換えて表示するような仕組みをつくったのですが、閉じる側の[/a]を謝って変形(]を消しちゃったり)した場合に、以下の全文がアンカー対象になってしまします。
当然といえば当然なのですが、こういったタグを置き換えるような仕組みを作った場合に、上のような現象を回避する方法はありますか?
781777:2006/08/19(土) 11:56:01 ID:???
3レスしか釣れなかったか。
撒き餌がたらなかったらしい。
782777:2006/08/19(土) 11:56:39 ID:???
>>780
ある
783(^ω^):2006/08/19(土) 11:59:26 ID:???
>>780
タグとして正しいか検査する。
たとえば、[a]と[/a]の数が同じかどうか。
784nobodyさん:2006/08/19(土) 13:02:53 ID:???
>>780
どういう正規表現使ったんだ?
普通に [a] と [/a] ではさまれた文字列を<a>タグのhref属性に変えるような仕組みであればそんなおかしなことにならないはずだが。
785nobodyさん:2006/08/19(土) 13:41:59 ID:???
>>780
たぶん、//を||で挟めば良いような・・・
786nobodyさん:2006/08/19(土) 14:04:04 ID:???
>>780
適当だけど

$str = "[a]http://www.test.com/[/a][/a][a]aaaa[/a";
var_dump($str);
$str = preg_replace("/\[a\](http:\/\/.+?\..+?)\[\/a\]/", "<a href=\"$1\">$1</a>", $str);
var_dump($str);
787nobodyさん:2006/08/19(土) 14:46:12 ID:kKZJT4No
教えてください。

1.shift-jisのファイルを用意する
2.print mb_convert_encoding( file_get_contents( そのファイル ) ,'EUC-JP');

こういうのを作ってブラウザで再読み込みを続けると、どういうわけか
入力もプログラムも全く変えてないのに、ちゃんと変換したり、しなかったりと動作が変わります。
これじゃ危なっかしくて怖いんですけど、こういうものなのですか?

winXPとPHP 5.0.3 (cli) (built: Dec 15 2004 08:07:57)です。
788nobodyさん:2006/08/19(土) 14:49:16 ID:???
>>787
そういうものです。
ヤフーのトップページでさえ、たまに文字化けして表示されることがあります。
ブラウザ側のバグでしょう。
789nobodyさん:2006/08/19(土) 14:50:17 ID:???
>>787
>これじゃ危なっかしくて怖い

ブラウザに何か出力する前にきちんとヘッダを送信してやれボケ。
HTTPの知識もPHPの知識もロクに勉強もせず、危なっかしいのはお前のほうだチンカス。
790nobodyさん:2006/08/19(土) 14:51:10 ID:???
>>788
いい加減なウソはイカンザキ。
791780:2006/08/19(土) 14:51:58 ID:9NEEnAjJ
たくさんレスありがとうございます。
正規表現はよくわからないので、str_replaceを使いました。
[a]があったら<a href="に置き換えて、[/a]があったら">〜〜</a>にしてとか、そんなしょぼい実装です。
783さんのような、検査のロジックを組み込みたいと思います。
ありがとうございました。
792nobodyさん:2006/08/19(土) 14:52:32 ID:???
>>790
ほんとだってば。ヤフーもたまに文字化けしてることあるぜ。
793nobodyさん:2006/08/19(土) 14:53:13 ID:???
>>789
ごめんなさい。でも私は女なので、それでいけばむしろマンカスです。
794nobodyさん:2006/08/19(土) 14:53:19 ID:???
>>787
mb_convert_encodingの「変換前のエンコーディング」の引数もサボらず書けよウンコ野郎。
795787:2006/08/19(土) 14:59:16 ID:kKZJT4No
>788
いや、ソースを読むとソースが化けている(というか元のままだったり、変換されてたり)で。
ブラウザの問題はとりあえずないものとして。
>794
そこ…なのかな?
それにしても、再実行ごとに毎回違った結果がでてくるものなのですか?
796nobodyさん:2006/08/19(土) 14:59:29 ID:???
>>794
ありがとうございます。
でも、ウンコ野郎じゃなくてむしろ、ウンコ女郎です。
797nobodyさん:2006/08/19(土) 15:00:37 ID:???
>>795
化けたときに、ブラウザのエンコードが何になってるか確認してみろ。
798764:2006/08/19(土) 15:09:12 ID:???
HEADアクセスってどういったものでしょうか?
ググってみたのですが、分かりませんでした
できれば負荷のかからない方法で検討したいです
お願い致しますm(_ _)m
799nobodyさん:2006/08/19(土) 15:16:58 ID:???
5.1.5がリリースされたのでうpデートするためにコンパイルすると下記でエラーがでました。

FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #16069 [ext/iconv/tests/bug16069.phpt]
iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]

#16069は「ミリバールミリバール(°Д°)」ていう文字が沢山入ってて何かEUC-JPのテスト?のようなファイルでした。

ググると同じファイルでfailedを出してるものが見つかりましたので特に気にする必要はないファイルでしょうか。
よろしくお願いします。

環境:FedoraCore3 PHP5.1.4→5.1.5へ変更中に発生
800nobodyさん:2006/08/19(土) 15:24:26 ID:???
ttp://bugs.php.net/bug.php?id=16069
よくわからん

ミリバールミリバール(°Д°) ってwwwww誰だよ犯人はwwwwww
801nobodyさん:2006/08/19(土) 15:52:26 ID:???
5.1.5ダウンロードしようと思ったんだけどミラーサーバ一覧に繋がらないんだよね・・・
802nobodyさん:2006/08/19(土) 15:53:07 ID:???
mmmm
803nobodyさん:2006/08/19(土) 15:54:06 ID:???
レスありがとうございます。
結局そのままインストールしました。

とりあえず無事にバージョンがあがりましたので気にしないことにします。

一応証拠?です。
つ【http://vista.xii.jp/img/vi5597040543.gif
804nobodyさん:2006/08/19(土) 15:54:51 ID:???
ext/iconv/tests/bug16069.phptに確かにあるね…ミリバール(°Д°)
エラーは出なかったけど
なぜギコ猫を使ったのかと小一時間(ry
805nobodyさん:2006/08/19(土) 15:56:35 ID:???
もう5.1.5まででてるのか。
6まだー?

PHP6の主な変更点
Javaと統一されますた。以降Javaをお使いください。
806803:2006/08/19(土) 16:00:02 ID:???
iconv関数を用いたエンコードのテストでしょうか?
イマイチよくわかりませんがセットで
>iconv stream filter [ext/iconv/tests/iconv_stream_filter.phpt]
も失敗しているのでやや気になります。

試しにphpinfoを開くとiconv関数は「enabled」でした。
何が原因なのかソースを見た限り皆目検討がつきません。。。モナーではなくギコ猫なのが原因なのでしょうか。
807nobodyさん:2006/08/19(土) 16:19:51 ID:???
simpleXMLのxpathを記入してphpを実行したら、
サーバーが見つからないとエラーが出るようになりました。
しかしローカルで実行するとエラーがでず、原因がわかりません。

$xml = simplexml_load_string($content);
$xml->registerXPathNamespace('aws', 'http://webservices.amazon.com/AWSECommerceService/2006-05-17');
$result = $xml->xpath('//aws:RequestId');

phpのバージョンはレンタルサーバーが5.1.4でローカルも5.1.4です。一体何が原因なんでしょうか?
808nobodyさん:2006/08/19(土) 16:54:36 ID:???
>>798

$host = "example.com"
$uri = "/bar/foo.txt"
$header = "Host: ${host}\r\n";
$header .= "Connection: Close;\r\n\r\n";

$fp = fsockopen($host, 80, $errno, $errstr);
if (!$fp) {
exit;
}

fputs($fp, "HEAD ${uri} HTTP/1.1\r\n");
fputs($fp, $header);
while (!feof($fp)) {
echo fgets($fp, 128);
}

こんなの
809nobodyさん:2006/08/19(土) 16:55:21 ID:???
セミコロンがいくつか抜けているや
810nobodyさん:2006/08/19(土) 16:59:52 ID:???
>>808
なぜわざわざ難しい方法で説明するんだ?
811nobodyさん:2006/08/19(土) 17:08:04 ID:+ytFUBf1
質問です。
fopen() でテキストファイルを作っていくプログラムを作りたいのですが、
htmlフォームからユーザーにテキストを入力させ、その内容をファイルに反映せさたいのです。
$fp = fopen("./test.txt","w");
fwrite($fp,"This is file write test.\n");
fclose($fp);
ここまでは理解できるのですが、
問題はこれをどうやってhtmlフォームと連携させるのかということです。
どの当たりを勉強したらよいか解らず、苦戦しています。
解るかた、ヒントだけでも頂けたらと思います。
よろしくお願いします。
812nobodyさん:2006/08/19(土) 17:11:01 ID:???
<form>と<input>
813nobodyさん:2006/08/19(土) 17:13:33 ID:???
814nobodyさん:2006/08/19(土) 17:24:32 ID:???
いきなりテキストファイルに出力するよりも
いったん配列なりに入れて
チェック入れろ
815nobodyさん:2006/08/19(土) 17:31:25 ID:???
>>795
>そこ…なのかな?

人様のアドバイスを実行・確認もせずに批判するぐらいなら
質問なんかしないで自分で解決しろボケカス。
816nobodyさん:2006/08/19(土) 17:38:38 ID:???
開発環境に関する質問です。

現在、クライアントPC(Windows)にDreamweaverをいれて、そこからFTPで
ローカルの開発環境サーバー(linux)に直接
アクセスして開発しています。チェックは直接ブラウザからローカルIPを
叩いて確かめています。サービスが動いている本番サーバはまた別に存在します。

ただ、開発効率の悪さを実感しています。そこで

eclipse+phpeclipse に開発環境を変えようと思っていますが

クライアントPCにもphp+mysql+apacheをいれる必要があり、そうすると
ローカルのlinuxサーバーの意味があまりありません。

できれば、テストサーバ側のファイルを直接いじりつつ
デバック等もできればと思っていますが、こんな私に向いている
開発環境はなんでしょうか。

eclipse+phpeclipse+PHP/dbg というものもあるらしいですが。

# smarty+phpフレームワークも導入予定。
# バージョン管理はsubversion予定。
817811:2006/08/19(土) 17:42:37 ID:+ytFUBf1
ありがとうございました、$_POST ですね。
813を勉強してきます。
>>814
解らなければまた質問させてもらうかもしれません。
818nobodyさん:2006/08/19(土) 18:00:02 ID:???
>>816
>>ローカルのlinuxサーバーの意味があまりありません。
んなことないでしょ、チームで開発するんだったら
担当部分を自分のPC内でまずコーディング・テストして
全員が利用するテストサーバで結合テストするのがいいんじゃないの

逆にテストサーバで直接いじってて他の人がテストしようとしたら
いじってたせいで動かない、とかで開発効率が悪くなってたりしない?
開発環境はソフト変えりゃいいってもんじゃない、やり方の問題と思う
819nobodyさん:2006/08/19(土) 18:01:19 ID:yXlsOUGI
質問なのですが、PHPで顧客の登録など入力フォームの数が
多い場合TEXTのNAMEなどを簡単に管理できる方法ってありますでしょうか??
皆さんはどのようにしていますか?ご教授お願い致します。
820nobodyさん:2006/08/19(土) 18:15:30 ID:???
うちはフレームワークを使わない時は一覧のファイルを作って
smartyを噛ませてジェネレートしてる。
フォーム、DBアクセス、詳細表示のページで同じ一覧のファイル
を使うようにしとけばらくちん。

便利なツールやライブラリは他の人の解説に譲るます。
821nobodyさん:2006/08/19(土) 18:31:52 ID:???
smarty使える?
なんかメンドイだけであんまり使えるような気がしない
822nobodyさん:2006/08/19(土) 19:11:56 ID:???
smartyはいろいろ詰め込みすぎてて・・・Flexyの方が好き
823nobodyさん:2006/08/19(土) 19:40:53 ID:m4Ae+hcO
if文で0と""を見分ける方法で悩んでいます。
ttp://php.s3.to/man/types.comparisons.html
これを読むとempty()とisset()では、見分けることができません。

$x = "";---->FALSE
$x = NULL--->FALSE
$x = 0;----->TRUE
$x = 1;----->TRUE

のように見分けるには、どうしたらよいのでしょう。
824nobodyさん:2006/08/19(土) 19:46:34 ID:???
>>823
ん? そのページに書いてある === による厳密な比較では駄目なの?
825nobodyさん:2006/08/19(土) 19:46:39 ID:???
if (is_int($x))
if (strlen($x))
826nobodyさん:2006/08/19(土) 19:48:11 ID:???
>>823
===を使え。
827nobodyさん:2006/08/19(土) 19:51:36 ID:ZWmQboUX
>>820
>>821
>>822
ありがとうございます。smartyとFlexy試してみます。
828nobodyさん:2006/08/19(土) 20:04:45 ID:m4Ae+hcO
>>824>>826
ありがとうございます。
要は""とNULL以外はTRUEを返すのを、簡単に表記したかったんです。
===を使うと

if (!($x === "" or $x === NULL)) {

こんな感じになって冗長かなぁと、、、

>>825
下のを使うと

if (strlen($x) != 0) {

こんな感じですか?
829nobodyさん:2006/08/19(土) 20:08:35 ID:???
冗長でもなんでもないだろ
830nobodyさん:2006/08/19(土) 20:30:15 ID:???
>>828
if (strlen($x) != 0)
if (strlen($x))
一緒、strlenの戻り値はint
831nobodyさん:2006/08/19(土) 20:31:14 ID:???
ページを見た人のIPとホストを表示させるにはどうすればいいの?
832831:2006/08/19(土) 20:32:36 ID:h+QG0TQi
idわすれ
833nobodyさん:2006/08/19(土) 20:51:20 ID:???
会員登録が必要なサイト作ってますが、
id を メルアドにするか 任意な文字列にするか迷ってます。

メルアドのほうが管理がらくだと思いますが、どちらが良いでしょうか。
834nobodyさん:2006/08/19(土) 21:00:54 ID:???
>>833
メアドをIDってアホか、こいつ
835nobodyさん:2006/08/19(土) 21:12:39 ID:???
>>833
・任意の文字列
サイト側としては個人情報を入力させたりDBに持たなくても済む
ユーザ側としては登録はしやすいが忘れやすい
ID忘れちゃうとリマインダはメール送ってもらうしかない

・メールアドレス
ユーザ側としては忘れにくい
ただ信用できるかどうか微妙なサイトには入力したくない
個人情報を抱えるリスクは生じる(メリットもある)

ちょっとしたツール的なサイトなら文字列ID、
ECとかメールアドレス必要前提のサイトならメアドかなあ
836nobodyさん:2006/08/19(土) 21:18:27 ID:???
配列の先頭や末尾ではなく、指定した位置に追加することは出来ないんでしょうか?

$hoge[5]="追加";

とかやると元々あった要素が削除されちゃいますよね?
http://210.143.110.132/~php/man/ref.array.html
ここを読んでも実現できそうな関数は見あたらなかったのですが…
837nobodyさん:2006/08/19(土) 21:23:14 ID:???
>>836
array_splice()
838nobodyさん:2006/08/19(土) 21:28:20 ID:???
>>837
ありがとうござます!
839nobodyさん:2006/08/19(土) 21:32:12 ID:???
下らない質問ですが・・・宜しければ意見を下さい。

setXXXやgetXXXなどのメソッド名はよく有りますが、
あるプロパティの値をtrueにする為のメソッド名はどのようにつけるべきだと思いますか?

とりあえずsetXXX(true)としてますが、デフォルトがfalseのためそのメソッドを呼べばtrueになるようにしたいのです。
引数でtrueを渡さないとなると、やはりsetXXXでは変な気がします。

そのプロパティをpublicにすればいいのですが、今回の場合それは微妙な感じですので。
840nobodyさん:2006/08/19(土) 21:35:09 ID:???
enableXXX とか
841nobodyさん:2006/08/19(土) 21:36:59 ID:???
俺もenable/disableだな
842770:2006/08/19(土) 23:01:09 ID:???
>>773-776
なるほど!
原因から対策まで、すごい分かりやすかったです。ありがとー
843839:2006/08/19(土) 23:20:58 ID:???
enableXXX それです!

なんでそれが頭に浮かばなかったのか・・・あぁ、やっぱり頭が悪い。
本当にありがとうです。
844nobodyさん:2006/08/20(日) 01:41:59 ID:???
>>816
eclipse+phpeclipse+PHP/dbg+Samba+subversionでやってます。
一人自宅でだけど。
統合開発環境スレは無くなっちゃったのかな?
845nobodyさん:2006/08/20(日) 02:31:52 ID:???
846nobodyさん:2006/08/20(日) 09:30:48 ID:???
ファイルの更新日時を表示したいのですが
ファイルの更新日時の取得ってどうやるんですか?
847nobodyさん:2006/08/20(日) 09:32:11 ID:???
848nobodyさん:2006/08/20(日) 12:35:12 ID:???
一般的にBBQってどんなPHPにも入れれるんでしょうか?
849nobodyさん:2006/08/20(日) 12:38:20 ID:???
BBQってなに?
850nobodyさん:2006/08/20(日) 12:38:49 ID:???
BBQはキャンプ地でやるもんであって、PHPでやるもんじゃないですねー。
851nobodyさん:2006/08/20(日) 12:40:10 ID:O6c5lrE6
include,requireするとゴミが付きます
test.php
<?php
echo "<!-- test -->\n";
?>

index.php
<?php
require('test.php');
?>

で、実行すると
<!-- test -->
と出力されるはずが
?<!-- test -->
となってゴミが付いてしまいます
レンタルサーバでもテスト環境でも結果は同じです
バージョンはともに4.4.2
852nobodyさん:2006/08/20(日) 12:51:23 ID:O6c5lrE6
質問になってかった(汗
実害は無いのですが、精神衛生上よろしくないので
回避する方法、間違い等あれば教えてください
853(^ω^):2006/08/20(日) 12:54:40 ID:???
ヒント: UTF-8 BOM
UTF-8じゃなかったらごめんね
854nobodyさん:2006/08/20(日) 13:07:49 ID:???
ビンゴです!
べつの作業でツールの文字コード設定変えたままでした
ありがとうございました
855nobodyさん:2006/08/20(日) 13:22:45 ID:???
>>848
gethostbynameはコアに含まれるのでPHP的には使える。
ただし、サーバからniku.2ch.netに向かってのDNSポートが閉じていると当然使用不可能
856nobodyさん:2006/08/20(日) 13:44:58 ID:???
BBQはDNSの仕組みを利用してぁゃしぃホストをチェックする
大抵の言語はDNSにアクセスできるでしょ?
つまり言語に依存しないってこと
857nobodyさん:2006/08/20(日) 13:47:02 ID:???
僕のちんこもぁゃしぃホストにアクセスされそうです
858nobodyさん:2006/08/20(日) 13:50:18 ID:???
早くポートを閉じるんだ
859nobodyさん:2006/08/20(日) 15:37:42 ID:SEQXzGDk
やばい!SQLインジェクションを利用してきた!
860nobodyさん:2006/08/20(日) 16:51:11 ID:???
861nobodyさん:2006/08/20(日) 17:19:57 ID:???
>>859
IDが今にも侵入されそうだw
862nobodyさん:2006/08/20(日) 17:55:18 ID:SEQXzGDk
セッキュス
863nobodyさん:2006/08/20(日) 18:17:57 ID:???
PHPのクラスパスってどうなってるんでしょうか?

hoge
└hoge1
 └foo1.php
└hoge2
 └foo2.php

というフォルダの構成だとして、foo1.phpから
foo2.phpに書かれたクラスを利用するには
foo2.phpをfoo1.phpでrequireしないとだめでしょうか?
php.iniでパス設定しないという前提で。
864nobodyさん:2006/08/20(日) 18:29:26 ID:???
>>863
なんでそんな依存関係のあるクラスがhoge1とhoge2で分けられてるんだろ、という気がするが、
foo1をrequireするプログラムでfoo2もお約束としてrequireする、というのはダメか?
865nobodyさん:2006/08/20(日) 18:58:00 ID:???
>>864
クラスのことが全然わかってないんですが、そもそも
PHPのクラスパスってどうなってるんでしょうか?

基本的にrequireしてからじゃないとクラス利用できない…なんてことは
ないようですし、php.iniのincludeで設定したパスのところに
置かないとクラスを読み込めないんでしょうか?

ほんとにくだらないレベルで申し訳ないですが、この辺説明した
書籍ってなかなかなくて…
866nobodyさん:2006/08/20(日) 19:08:16 ID:???
>>865
いや、基本的にrequireしてからじゃないと
そのクラスは利用できないと思うが
867nobodyさん:2006/08/20(日) 19:14:58 ID:???
>>866
え、まじすか。
フレームワークとかはphp.iniで定義してるから使えるだけですか。
868nobodyさん:2006/08/20(日) 19:17:53 ID:???
そのフレームワークとやらも内部でrequireしている筈です。
869nobodyさん:2006/08/20(日) 19:43:21 ID:???
>>868
ほー!
ちょっとわかった、ありがとう!
870nobodyさん:2006/08/20(日) 22:23:49 ID:???
>>867-869
フレームワークで自動で読み込まれるのは
http://www.php.net/manual/ja/language.oop5.autoload.php
を利用したり、iniで設定されたものを事前に読み込んだりしている。
871nobodyさん:2006/08/21(月) 00:59:41 ID:???
誰か「PHP on Rails」開発してくんないかな?
872nobodyさん:2006/08/21(月) 01:03:13 ID:???
セッション変数って、セッションが切れるまでずっとメモリに記憶されてるの?

それともプログラム中から呼び出すor書き込む等、必要に応じて
その都度セッション・ファイルから読み出し・書き込みされて、
スクリプトの終了と共にメモリから解放されるの?
873nobodyさん:2006/08/21(月) 01:32:07 ID:???
>>871
Railsを参考にしたフレームワークは結構開発されてる。
詳しくは専用スレでドウゾ。
http://pc8.2ch.net/test/read.cgi/php/1151706907/

>>872
このスレで答えになる話題でてるぞ。探せ。
874742:2006/08/21(月) 10:34:33 ID:bnVaTE3o
>>744
返答ありがとうございます。またせっかく回答をして頂いたのに返事が遅くなって、申し訳ないです。
クラス定義より前にデータを読み出しているという状態が、どんな状態か
ちょっとよく分からないのですが、以下の状態が同じ配列に並列にならんでいます。
object(stdClass)(11) {
["ItemAttributes"]=> &object(stdClass)(13) { ["Author"]=> string(16) "ほげ ほげお"
(略)
["ItemAttributes"]=> array(16) { [0]=> string(16) "ほげ ほげお"
}

毎回同じ本のデータがこの状態になります。
しかし本家Amazonのページで同じ本を検索すると問題なく著者が表示されているので、
私の方に何か問題があると思えるのですが、見当も付きません。
875715:2006/08/21(月) 11:26:33 ID:Xr9Z9Klv
おはようございます
早速、金曜日の続きを以下のスクリプトで表現してみました
「確認画面」を押すと、別のphpファイルに飛ばしたいのですが、どうするのがベターなのでしょう?

<?php
$zz = $_POST['number1'];
if(mb_strlen($zz) == 6){
$ab ="OK";
}else{
$ab ="英数字で6文字";}
?>
<form method="post" action="test1.php">
<TABLE border="1">
<TBODY>
<TR>
<TD><INPUT size="6" type="text" maxlength="6" name="number1"
value="<?php print($zz); ?>">
</TD>
<TD>
<?php print($ab); ?>
</TD>
</TR>
</TBODY>
</TABLE>
<?php
if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" value=\"確認画面\">";
}else{
print "<input type=\"submit\" value=\"登録\">";
}
?>
</form>
876nobodyさん:2006/08/21(月) 11:39:44 ID:???
>>875
if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" name=\"preview\" value=\"確認画面\">";
}else{
print "<input type=\"submit\" name=\"regist\" value=\"登録\">";
}
と区別可能な識別子を設定した上で
if(isset($_POST['preview'])) {
 require("preview.php");
 exit;
}
と指定された識別子があれば別のPHPファイルを読み込む。
877715:2006/08/21(月) 11:41:38 ID:Xr9Z9Klv
>>876
ありがとうございます!!
なるほど、nameで分けて、再度、IF文ですね
やってみまつ
878nobodyさん:2006/08/21(月) 11:46:13 ID:???
他には
1.POSTされたデータをセッションなどに格納した上で、
 header("Location: /preview.php?sessid=セッションID");
 exit;
 とLocationヘッダで別ページに遷移する。
2.print "<input type=\"submit\" value=\"確認画面\" onclick=\"this.form.action='preview.php'\">";
 として確認画面をクリック時にJavaScriptで遷移先を切り替える。
などもある。
879715:2006/08/21(月) 12:07:18 ID:???
>>878
ぬおーこれはコピペしておきます!!
880nobodyさん:2006/08/21(月) 12:40:23 ID:???
自作したWebアプリを公開したい(オープンソース化…と言うのかな?)のですが、
どうしたらいいんでしょうか?

単純にソースコードを自分のサイトからDLできるようにしとけばいいのか、
それともsourceforgeみたいなところに登録(?)すべきなのか。

著作権などは維持しつつ、皆に無料で使ってもらうにはどういう方法がベストでしょうか。
881nobodyさん:2006/08/21(月) 12:55:16 ID:???
どっちでも好きな方でいいんじゃないのか。
著作権についてはドキュメントで明示すればよし。
882715:2006/08/21(月) 13:20:52 ID:???
>>876
今回のところは、こうしました

<?php
if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" name=\"preview\" value=\"確認画面\">";
}else{
print "<input type=\"submit\" name=\"reverse\" value=\"登録\">";
}
if(isset($_POST['preview'])){
header("location:summer.php");
exit;
}
?>

次はCookieを使ってみます
883nobodyさん:2006/08/21(月) 14:07:03 ID:???
>>882
確認画面って何を表示してるんだ??
送信された入力内容を表示してるんじゃないのか?
884nobodyさん:2006/08/21(月) 14:15:14 ID:Dzmazm0+
脆弱なパスワードを検知する関数を作ったのですが、動作が変です。

function is_yowai_pass($str) {
$regex = "(.{0,7}|[a-z]+|[A-Z]+|[0-9]+)";
if (ereg($regex,$str) == TRUE){
return TRUE;
} else {
return FALSE;
}
}

if (is_yowai_pass($password) == TRUE){
echo "脆弱だよ";
}

このとき、$passwordに「12345678」とか「abcdefgh」が入っていれば「脆弱だよ」と表示されて、
それはもちろん期待通りの動作なのですが、$passwordに「pass1234」など英数字を混ぜたものが
入っていても「脆弱だよ」が表示されてしまいます。英字と数字が混じっていれば
「脆弱だよ」と表示されないように作ったつもりなのですが、どこがおかしいのでしょうか??
885nobodyさん:2006/08/21(月) 14:31:02 ID:???
>>884
正規表現に「^」と「$」をつけとかないと文字列全体をチェックできない。
今の状態だと「英字1文字」か「数字1文字」があれば必ず脆弱となる。
886nobodyさん:2006/08/21(月) 14:33:17 ID:???
関数名にワラタ
887軟式PHP:2006/08/21(月) 15:17:34 ID:???
yowai_passて。とてつもないセンスを感じるぜ。
888nobodyさん:2006/08/21(月) 15:37:14 ID:???
>>884
天才的関数名だなw
関数名以外の変数名とかはしっかりしてるというか、上級者らしいのに
is_yowai_passとは・・・「分かっててやってる」天才にしか出来ない技だぜ。
889nobodyさん:2006/08/21(月) 16:25:41 ID:???
マインドはびんびんつたわってくるからいいんじゃね?
890nobodyさん:2006/08/21(月) 16:36:13 ID:???
function is_love_me( $my_konomi_type, $partner_konomi_type )
{
    if ($my_konomi_type === $partner_konomi_type) {
        return TRUE;
    } else {
        return FALSE;
    }
}
891nobodyさん:2006/08/21(月) 16:41:45 ID:???
>>890
$my_konomi_type === $partner_konomi_type だと、お互いに同じ性質を持つ人間でなければなりませんが。
892nobodyさん:2006/08/21(月) 16:47:14 ID:???
>>890
こ、これは……!! 天才的な関数だw
893715:2006/08/21(月) 17:03:41 ID:???
セッションでの受け渡し版を書いてみたお //俺のような初心者は使うといいお

test1.php
----------
<?php
session_start();
$zz = $_POST['number1'];
if(mb_strlen($zz) == 6){$ab ="OK";}else{$ab ="英数字で6文字";}?>

<form method="post" action="test1.php">
<TABLE border="1"><TBODY><TR>
<TD><INPUT size="6" type="text" maxlength="6" name="number1" value="<?php print($zz); ?>"></TD>
<TD><?php print($ab); ?></TD></TR></TBODY></TABLE>

<?php
if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" name=\"preview\" value=\"確認画面\">";
}else{print "<input type=\"submit\" name=\"reverse\" value=\"登録\">";}
if(isset($_POST['preview'])){
$_SESSION['zz'] = $zz;
header('Location: test2.php');
exit;}?></form>

test2.php
----------
<?php
session_start();
if($_SESSION['zz']){
$zz = $_SESSION['zz'];
print($zz);
exit;}
?>
894nobodyさん:2006/08/21(月) 18:48:19 ID:???
s
895nobodyさん:2006/08/21(月) 18:51:10 ID:???
PHP5で、クラスに定義していない変数にアクセスできてしまうんですが、
どうにかならないんでしょうか?

あと、メンバ変数に文字列を格納するときに . でつなぐ方法ってないんでしょうか。

PHP4が最悪だったので、5に移行したけど、やっぱあいまいすぎるこの言語・・・・泣
896nobodyさん:2006/08/21(月) 19:16:33 ID:???
>>895
__set() __get() で定義してください
文字列は普通に . で連結できる
897nobodyさん:2006/08/21(月) 19:26:52 ID:???
windowsヘルプ形式のマニュアル落としたけど使えないです。
なんも表示されない。

なぜだかかわかる方いたますか?
898nobodyさん:2006/08/21(月) 19:33:47 ID:???
>>895
perl よりかはマシって言う程度だからな
こういうスクリプト言語ではユニットテストがかなり重要
C++とかなら、コンパイラが出すエラーをユニットテストで見つける
ほかない
899nobodyさん:2006/08/21(月) 19:43:28 ID:???
>>890

function is_love_me( $my_value, $partner_konomi_type )
{
if ($my_value === $partner_konomi_type) {
return TRUE;
} else {
return FALSE;
}
}

だろうが。
900nobodyさん:2006/08/21(月) 21:06:21 ID:???
>>897
誰もメンテナンスしてないから。
901nobodyさん:2006/08/21(月) 21:13:43 ID:???
>>900
そうなんですか。
別のミラーとかから落としても駄目でした。
もう、ユーザー会のサイトの前文検索使わせてもらおうと思います。
902nobodyさん:2006/08/21(月) 21:56:23 ID:???
>>896

ありがとうございます。
__set, __getで制御できるようですが、PHPの通常のエラーのように発生させたかったため
うまい方法が見つかりませんでした。

あとメンバの初期値設定時に、 . を使って文字列をつなぐとエラーがでてしまいます。
マニュアルにはphp4 ではムリと書いてあるけど、5については何も書いてないんだよなぁ・・・・
ムリならムリと5もかいてほしい・・・・
903nobodyさん:2006/08/21(月) 23:23:47 ID:???
MySQLのコマンドプロンプトではちゃんとINSERTできるのに、その文をそのままコピーしてPHPで
mysql_queryしようとするとなぜが成功しません。
select文は成功しました。
どこが原因なんでしょうか?
904nobodyさん:2006/08/21(月) 23:29:20 ID:???
ユニットテストって何??
何の必要があるの?

普通にブラウザでアクセスしてスクリプト走らせてデバッグするのと何が違うの?
905nobodyさん:2006/08/21(月) 23:36:52 ID:???
ブラウザとかではなくて、デバッグする単位の違いだと思うよ。
プロジェクトによってその単位とか、テストの方法もろもろ変わってしまうけど、

単体テスト⇒結合テストと行うことで、バグの発見をしやすくするんだと思う。

通常単体テストでは、1画面を1つの単位としてテストを行うと思うけど(自分の経験では)
そのときは、ブラウザを使おうが、デバッガを使おうが、単体テストだよ

906nobodyさん:2006/08/21(月) 23:40:22 ID:???
>>903
本当にまんま同じSQLを発行しているかPHPでデバッグプリントして味噌
でも分からなければ問題無い範囲でここに貼りなされ
907nobodyさん:2006/08/21(月) 23:43:02 ID:???
>>906
すいません。いまちょっといろいろためして見たら日本語が入ったらダメなことに気づきました。
文字セットの問題だとは思うのですが、php.iniをいじったら直るのかな。。。
908nobodyさん:2006/08/21(月) 23:56:44 ID:???
>>904
たいていは、メソッド一つづつ、成功と失敗をする条件を与えて
期待通りに動くかテストする方法
早期にバグを見つけて、その処理の精度を高める

いきなり結合テストから始めると、バグが見つかったときに
解決をするのが時間かかったり、めったに出ない条件によって
引き起こされるバグを見落としたりする
909nobodyさん:2006/08/21(月) 23:57:31 ID:???
>>907
MySQLと日本語はかなり、バージョンによって問題がでるから
気をつけたほうが良い
910nobodyさん:2006/08/22(火) 00:00:05 ID:???
>>905
う〜ん、、、おっしゃっている意味がよく分かりません。
俺が普段行っているデバッグ作業は、「単体テスト」というのを繰り返して、
結果的に「結合テスト」というものになっているんでしょうか・・・。

>>908
メ、メソッド・・・・
あの、実はOOP理解できないのでクラスとか全く使ってないんだけど、
それでもユニットテストというのは必要?&有効?
911nobodyさん:2006/08/22(火) 00:15:56 ID:???
>>909
PHPでサーバーに接続した直後に
mysql_query("SET NAMES SJIS");
と、やったら表示されるようになりました。
(参考)http://tag.oops.jp/wordpress/archives/5

おっしゃる通り、PHPとMySQLはバージョンによって設定がかなり異なってきますね。
むやみに新しいバージョンを入れるのは控えたほうがいいかもしれません。

てか、設定に何分無駄な時間を費やしたんだよ俺ww
912nobodyさん:2006/08/22(火) 00:36:10 ID:???
>>910
まず設計時点で機能を細かく分けてシンプルな関数の集合体にする。これが大前提。
その上で関数単位にテストを行いデバッグした上で、関数の集合であるプログラムのテストを行う。
さらにシステムは大抵の場合複数のプログラムの集合体になるから最終的に全体でのテストを行う。
それが単体テスト→結合テスト→総合テストの流れ。

オブジェクト指向を使わなくても、昔からある構造化設計でもこれはプロとして当たり前の作り方。
>>904みたいなテストしかしてないんなら、テストがどうこう以前に設計自体が素人レベルなんでしょう。
単体テストはブラウザ上でもコマンドラインでもどっちでもできるよ。
大抵はこれを行うために「ドライバ」や「スタブ」といった、上位・下位部分を担うテストプログラムを作成する。
このテストプログラムで多種多様なテストケースを実行し、通常の操作ではなかなか発生しないような
レアケースなデータでの挙動などもテストするわけだ。
913nobodyさん:2006/08/22(火) 01:03:18 ID:???
やたらでかい関数を大量に生産する人間ができる原因はK○NTと○ッツPHP
914nobodyさん:2006/08/22(火) 01:36:54 ID:???
>>912
俺はクラスは全く使わず、自作関数も数えるほどです。
あとはいわゆる「ベタ書き」と呼ばれるヤツなんだと思いますが、
そういうわけで単体テストというものの意味やイメージが湧きません。
PHPの標準関数ばかり使ってるから、その時点で「単体テスト」は終わってると見なしていいんでしょうか?

いわゆる「ベタ書き」の場合、ブラウザからアクセスしてのテスト(すなわち実運用と同じことをやってみる)しか
考え付かないのですが・・・。
915nobodyさん:2006/08/22(火) 01:47:07 ID:???
>>914
だからそもそも設計が素人レベルなんだって。
その設計では単体テストは「不可能」で「無駄」。
そもそも「単体テストができるように作る」ことに意義があるの。
それができない時点で、一定率以上の品質は保てないんだよ。

ただ、ちっこいプログラムしか作ってない分には品質が多少低くても
それほど問題になることはないだろうから、必要はないんじゃない?
下手に中規模以上のシステムを作ってみようとか思わなきゃおっけー。
916nobodyさん:2006/08/22(火) 02:58:21 ID:???
ユーザ関数は可読性を上げるためにも使ったほうがいい気もするが。
べた書きで困っていないんならそれでいいのかな
それである程度の規模のを作ってるんだとしたら引き継ぎたいとは思わんが・・・
917nobodyさん:2006/08/22(火) 03:11:44 ID:???
>>914
いや、それもちゃんとしたテストだよ。
例えば顧客管理という機能があったとして、もうちょっと細かく分けると顧客の登録、削除、更新って言う機能が
必要だってのはなんとなく分かるでしょ?
で、登録、削除、更新って言う機能を別々に作ってそれぞれがちゃんと動くかテストする。これが単体テスト。
それが上手く行けば次はそれぞれをくっつけて全体としてちゃんと動くかテストする。これが結合テスト。

本当はさらに顧客の登録だけでも細かく分けるから上記の例が100%正しい訳では決して無いけど、とりあえずイメー
ジとしてはこういうもんだって把握しとけ。
918nobodyさん:2006/08/22(火) 03:13:48 ID:???
可読性の高いプログラムってどんなのだ?俺は未だに答えが見つからん・・・
ユーザ関数とか使われるといちいちその関数を探すのがメンドクサイ。
919nobodyさん:2006/08/22(火) 04:22:34 ID:???
関数やクラスは入出力のみ明確にされたシンプルな機能をブラックボックスに閉じ込めることで
・呼び出し側ではその中身まで意識しなくても全体の動作を読める
・関数側では自身のみに着目して機能と実装を検討できる
という可読性のメリットがはじめて得られるわけで、そもそもは全体をまとめて読む必要を無くすもの。
しかし、正しい設計で作られた関数でなければそれらのメリットは生まれない。

いちいち関数を呼んでる場所毎にその中身を追っかけなきゃいけないんなら
それは関数の設計自体がどっかおかしいんだろう。
920nobodyさん:2006/08/22(火) 07:17:40 ID:???
>>914
まったくもって、それでOKですよ
逆に、それが一番望ましいのです

テスト用のアクションリストを作成して
UI経由で人間が直にテストしていく行為を行わないベンダーが多くてね
まぁ丸投げの世界じゃ、口頭で「テストしたか?」程度が現実w

システムっていってもさ
小規模も中規模も大規模もかわらないって
ぶっちゃげネットワークが大きいか小さいか、ノード数が多いか、少ないかだよ
だからパフォーマンスチェックは、どのベンダーも意外と真面目ねw

なので考えに間違いがないので安心してね
921nobodyさん:2006/08/22(火) 09:00:10 ID:???
>>918
機能追加のしやすさを考えれば自然と流れの読みやすいものになるよ。
関数名探すのが面倒ってのはエディタが悪い。
もしくは関数をどのファイルに関連付けるか整理できてない。
922nobodyさん:2006/08/22(火) 09:22:16 ID:???
ってかPHPごときで、そんな大規模なプログラムにはならなんでしょ。
923nobodyさん:2006/08/22(火) 09:44:42 ID:???
blog辺りかそれ以上の規模くらいで十分考慮しなきゃいけないレベルだと思うが。
まさか埋め込みメールフォームとかのレベルの話じゃないだろうな。
924軟式PHP:2006/08/22(火) 09:58:06 ID:???
>>922
それが大企業から降りてきたプロジェクトなどは、
CI > 単体テスト > 結合テストとか結構ややこしい手順を踏まないといけないことがあるよ。
925nobodyさん:2006/08/22(火) 10:03:00 ID:???
規模の大小にかかわらず、ユニットテストはしてもらいたいものだが
少なくとも、コアになるような処理に関してはね
926nobodyさん:2006/08/22(火) 11:17:50 ID:???
PukiWikiのソースをちょっと見てみたけど、あれは参考に……なる?
処理ごとに細かくユーザ定義関数が用意されているんだけど。
927nobodyさん:2006/08/22(火) 11:47:11 ID:???
読む力が十分に備わった人なら。
928914:2006/08/22(火) 12:10:13 ID:???
>>915
そうですね。確実に素人の考えです。でも「プロ」のやり方が正しいかどうかは分かりません。
俺は複数人数で開発してるわけじゃないので、プロのやり方がひどく無駄で非効率に感じてしまう時があります。
なぜ単体テストと品質が直結するのか、いまいち納得がいきません。そのやり方が全てではないと思います。

>>916
可読性という点では、ベタ書きですがかなり気をつけて書いています。
ただそれは「自分が分かりやすい」というものでしょうから、
たしかに誰かに引き継ぐとなると、引き継いだほうは多少大変かもしれません。
ただベタ書きとはいっても、一つ一つの処理は、だいたい一つの流れでまとまっているわけで、
その近辺だけを読めばだいたい分かるようになっています。
929914:2006/08/22(火) 12:35:40 ID:???
>>917
なるほど、そういうイメージなんですね。分かりやすいです。
ちなみに俺はベタ書きですが、「顧客の登録、削除、更新」があったとして、
それぞれの機能の終わりの部分にexit;を挿入してテストしてますので、結果的に単体テスト…になってるのかな??

>>920
そうなんですか、ちょっとホッとしましたw
俺の考えでは、要するに最終的に実際の運用で想定されるあらゆる操作・アクションを
漏れなく実行してみるテストをすればそれでいいのでは?・・・という感じです。
930914:2006/08/22(火) 12:37:15 ID:???
>>925
たとえば自作関数が期待通りの動作をするかどうかは当然チェックしてるので、
たぶん、みなさんが言うところの「ユニットテスト」に当たるものは
無意識にやってるんだと思います。
931nobodyさん:2006/08/22(火) 13:16:45 ID:???
>>929
> 俺の考えでは、要するに最終的に実際の運用で想定されるあらゆる操作・アクションを
> 漏れなく実行してみるテストをすればそれでいいのでは?・・・という感じです。

たぶん網羅してるつもりでも出来てない気がする。
テストすべき条件が3つある処理が2つあったとして、それを同じ関数に入れると
3の2乗個の条件になる。入れれば入れるほど条件は増えるが、必ず全てを網羅できるか?
932nobodyさん:2006/08/22(火) 13:33:55 ID:???
予算と時間がしっかり与えられてればテスト書くんだけどね。
実際はそんな暇ない。
フリーでやってたりすると、お客さん(発注側)がかなり無理を言うので。
普通の企業で2人月の仕事を2週間でやってくれとか、
納品まで数日しか無い所で呼ばれるとか…。
テストファーストとか言っても、まるで書いてる暇がない。
933nobodyさん:2006/08/22(火) 13:44:45 ID:???
>>931
関数個別の入出力のテストはそれはそれでやっています。
あと、条件を網羅できてるかどうかは、テストの手法に関わらず気をつけるべき
ポイントであり、テストの手法には直接関係ないですよね?

あと、ユーザ入力の値(範囲)チェックやバリデートを厳密にやっているので、
関数に入れてテストすべき条件はさほど多くならないようにしています。
934nobodyさん:2006/08/22(火) 13:53:57 ID:???
>>933
そこまで断言できるならここで意見を求める事もないだろう。
独自の道を進めばいいんじゃないか。

けど経験則で言うと、別に劣ってないからやらなくて良いでしょって言う時は
やらなくて良い口実を探してる事が多いんだよな。
935nobodyさん:2006/08/22(火) 14:05:19 ID:???
>>934
それは違うんじゃね??
下請けチームで歯車作業をやる時の手法は、あくまでも歯車用だろ。
936nobodyさん:2006/08/22(火) 14:11:12 ID:???
>>930
ユニットテストは初期開発時以外でも、リファクタリングするときにも使う
テスト用の条件をテキストに書き残して、機能を変更したときにそれをもう一度
手で行うのはめんどうなので、自動的に行ってくれるユニットテストツールが
重宝される
937nobodyさん:2006/08/22(火) 14:19:21 ID:???
test
938【みらくる】な電波ソング(w:2006/08/22(火) 14:29:06 ID:???
天使のスプーンですくったら
ほっぺがおちるよミラクルワールド

カモーネカモネ ミラクルかもね
作って美味香 ナンバーワン
ビビンバ ズッパ タンタンメン
クスクス カタプラーナでポイ!

味にうるさいクレオパトラも
食わず嫌いのナポレオンも
みんな大好き魔法の呪文
とっておきの呪文だよ

天使のスプーンですくったら
魔法の呪文を ハリラハリラハラリー(ハイ!)

カモーネカモネ ミラクルかもね
作って美味香 ナンバーワン
ビビンバ ズッパ タンタンメン
クスクス カタプラーナでポイ!

(NHK教育 18:00 - 18:10)
http://www.youtube.com/watch?v=tmELQUsLu2o
939914:2006/08/22(火) 14:41:38 ID:???
>>936
なるほど、それは一理あるというか、説得力がありますね。
940nobodyさん:2006/08/22(火) 14:46:14 ID:???
>>935
歯車になる気は無いし、複雑な問題を単純化しなくても解けるし、
忘れた頃に自分の書いたコードを読み返してもすぐ理解できるし、
もしかしたら二度と忘れる事はないんでしょう。
941nobodyさん:2006/08/22(火) 14:50:21 ID:???
夏っぽいな
チーム開発した事なく自己過信気味の駆け出し君に
ユニットテストの恩恵なんか説明しようとしても無駄
質問者と回答者のやり取りも微妙に噛みあってない
禅問答やってる暇があったらコード書いてた方がいい
942nobodyさん:2006/08/22(火) 14:51:47 ID:???
コード書いて教えてくれればいいじゃん。
時間がもったいないだろ p
943nobodyさん:2006/08/22(火) 15:05:42 ID:???
じゃ情報オリムピックの問題をPHPで解いてみよう
944nobodyさん:2006/08/22(火) 15:29:48 ID:???
945nobodyさん:2006/08/22(火) 15:31:53 ID:???
946nobodyさん:2006/08/22(火) 17:24:08 ID:???
>>943
の口車に乗って
ttp://www.ioi-jp.org/joi/2005/2006-m1-prob_and_sol/2006-m1-t1.html
をやってみてるんだが

入力例23 4 52 1 26 3 41 2 31 1 1
出力例23 1 1 1

って
出力例24 1 1 1
じゃないか?
947946:2006/08/22(火) 17:25:02 ID:bNxpCiwi
>>946
あーみにくくなった
出力例2は
4 1 1 1
じゃ無いかって事
948nobodyさん:2006/08/22(火) 17:46:54 ID:???
>>946
例は間違ってないよ
三角不等式について調べてみるといい
949nobodyさん:2006/08/22(火) 17:48:09 ID:???
>>948
あーごめん、問題文をきちんと把握出来てなかった。
途中で処理止めずに全部判定してたわテヘ
950946:2006/08/22(火) 17:49:10 ID:bNxpCiwi
ちなみにforeachを抜け出すっていうか終了させる方法って無いんだっけ?
ユーザ関数化しちゃえばいいんだけどさ
951nobodyさん:2006/08/22(火) 17:57:28 ID:???
あるよ
952nobodyさん:2006/08/22(火) 18:05:04 ID:???
>>943
先生!PHP却下です!!
>本選ではC/C++とJavaだけが使えます
953nobodyさん:2006/08/22(火) 18:09:08 ID:???
だからあえてPHPで解くんじゃないの
954nobodyさん:2006/08/22(火) 18:16:11 ID:???
>>952
はきっと自己判断が出来ないって言われるタイプなんだろうな
955nobodyさん:2006/08/22(火) 18:27:18 ID:???
>>950
foreachを抜け出す処理をするユーザ関数を見てみたい
956nobodyさん:2006/08/22(火) 18:33:58 ID:???
>>955
function hogehoge
{

foreache($hoge as $var)
{
return $var;
}


}
957nobodyさん:2006/08/22(火) 18:45:39 ID:???
百歩譲ってそれ何に使うの
958nobodyさん:2006/08/22(火) 18:52:24 ID:???
>>957
無理して使う必要は無いんじゃない?
959nobodyさん:2006/08/22(火) 18:55:23 ID:???
>>941
そりゃチーム開発にはOOPだのユニットテストだの必須だが、
別にそれが必ずしも優れてるとか絶対とかってわけじゃないだろう

自己過信気味で頭が硬直化してるのはむしろ喪前では?
960nobodyさん:2006/08/22(火) 19:10:44 ID:???
文法ミスりまくりだし
ただ一つ目の要素返して終わりで何をしたいのかわからない
961nobodyさん:2006/08/22(火) 19:13:55 ID:???
>>949
うそこくでねえだ
全部判定したら4 1 2 1だ
962nobodyさん:2006/08/22(火) 19:52:15 ID:???
途中である条件を満たしたら中断したいようなループは
while使いたいな。
963(^ω^):2006/08/22(火) 20:01:16 ID:???
解答書くお
964(^ω^):2006/08/22(火) 20:04:57 ID:???
<?php
$file_name = "01.txt";
/* ここからプログラム */
$tri = 0; // 三角形
$r_tri = 0; // 直角
$a_tri = 0; // 鋭角
$o_tri = 0; // 鈍角
$fp = fopen($file_name, "r") or die("ファイル読めねーよ馬鹿");
while(true) {
 $res = sscanf(rtrim(fgets($fp)), "%d %d %d");
 //値の数が3以下なら終わり
 if (count($res) != 3)
  break;
 sort($res);
 // 三角形でなければ、さようなら
 if ($res[0] + $res[1] <= $res[2])
  break; // 終わり
 ++$tri;
 // 直角三角形
 if ($res[0] * $res[0] + $res[1] * $res[1] == $res[2] * $res[2])
  ++$r_tri;
  continue;
 // 鋭角三角形
 if ($res[0] * $res[0] + $res[1] * $res[1] > $res[2] * $res[2])
  ++$a_tri;
  continue;
 ++$o_tri;
}
fclose($fp);
echo join(" ", array($tri, $r_tri, $a_tri, $o_tri));
?>
965(^ω^):2006/08/22(火) 20:07:23 ID:???
ごめん、直角三角形と鋭角三角形の部分に{ }が必要だった
966nobodyさん:2006/08/22(火) 20:14:52 ID:???
DOMDocumentでファイルにXMLツリーを書き出すときの排他制御は
どうやるんですか?
967nobodyさん:2006/08/22(火) 21:07:08 ID:???
そういえば、WinのApache 2.2.3でPHP5は使えるようになったのでしょうか?
968nobodyさん:2006/08/22(火) 22:00:57 ID:???
開発のテストだけどさ、テストを行う根本的な理由はさ、運用開始したときにバグが発生してまいったなこりゃ
ってことにならないように行うものだよ

だからさ、バグがありませんよって示せるようなテスト結果があればいいってことだよ

単体テスト、結合テストってプロジェクトの規模によって複数階層別になるし
ほかのみんなが言っている単体テストを質問者のプログラムに直接対応させるのは
おかしいと思う

単体テスト=個々の機能テスト
結合テスト=複数の連携テスト

ようはバグがあとあとでてこないように、発生しうるルートをすべて網羅できるように、
小さい機能から先にテストしておきましょうってことかな

複数の機能が連動するようなテストだと、すべて網羅することは難しいからね
969nobodyさん:2006/08/22(火) 22:35:57 ID:pY0h5YuJ
質問でございます〜  環境はPHP5, Mysql5, Fedora5

クライアントの要望で、PHP、SQLの環境で、スプレッドシート(セル)形式のUIを作って欲しいと。
なぜか? と聞いたら、取引先のxlsからコピーできたりしたら、素晴らしいことでしょ? それとライセンスの関係でエクセルが無いPCがあるので、エクセルに依存してるのは駄目だと。
との答え。
はい。 途方にくれました。

まず、エクセル以外のスプレッドシート… 思い浮かびません。色々調べたけど、英語過ぎて分からなかった。ライセンス激高いソフトは発見したけど、SQLの兼ね合いがまるで不明。
それになんらかのスプレッドシートを作ってもSQLから出力できるのかと。

明日一日調べる予定だけど、英語てんでだから、難しいだろうなぁ;;
皆さんお知恵があれば、助けてください;;

970nobodyさん:2006/08/22(火) 22:39:53 ID:???
>>969
それ、いくらで作るの?100万とかじゃないよね。
まぁ、そんなあなたに
つ Google Spreadsheets
971nobodyさん:2006/08/22(火) 23:18:42 ID:pY0h5YuJ
>970
100ってことはないと思いますね。PMと営業にまだ聞いてないので、詳しくは知りません。
Google Spreadsheetsですか〜 ちょっと調べてみます〜
HTMLにさえ入れられれば… ☆(ゝω・)vキャピ
972nobodyさん:2006/08/23(水) 00:07:29 ID:???
CSRF対策で、リファラのチェックってどうやるのがベストですか??

一応考え付いた方法は、$_SERVER['HTTP_REFERER']と$_SERVER['HTTP_HOST']を
取得して、$_SERVER['HTTP_REFERER']の文字列の中に$_SERVER['HTTP_HOST']が
含まれてるかどうかをチェックするというもの。

これだと何かマズイ点とかありますでしょうか?
973nobodyさん:2006/08/23(水) 00:17:37 ID:???
>>972
リファラのチェックはそれでも良いだろうが、リファラなんて
簡単に偽装出来てしまうぞ。
974nobodyさん:2006/08/23(水) 00:24:27 ID:???
>>973
CSRF対策での話なので、リファラ偽装は関係ないと思いますが・・・。

CSRFによる被害を受けちゃう本人がリファラを偽装してる分には
その人自身の責任ですからね。
975nobodyさん:2006/08/23(水) 00:40:33 ID:???
リファラなんて返さない人も多いのに、対策でアテになんのかそれ。
976nobodyさん:2006/08/23(水) 01:01:54 ID:???
次スレ:


【PHP】下らねぇ質問はここに書き込みやがれ 27
http://pc8.2ch.net/test/read.cgi/php/1156262092/
977nobodyさん:2006/08/23(水) 01:16:21 ID:???
PHPでメールを送るときにmail関数を使ってるんだけどなぜか件名だけ文字化けする・・・
=?iso-2022-jp?B?".base64_encode(mb_convert_encoding("ここに日本語の件名","JIS","EUC-JP"))."?=";
って言う指定をしたらある程度文字化けを防げるようになったんだけど、一部の人間はまだ文字化けしてるって言ってる。

誰かヒントください!
978nobodyさん:2006/08/23(水) 01:42:08 ID:???
>>975
リファラを返さないようなキモヲタには
そもそもシステムを使わせませんので大丈夫です。
979nobodyさん:2006/08/23(水) 02:12:57 ID:???
>>978
ノートン入れて標準の設定で使ってたらキモオタかよ…頭大丈夫か?
980nobodyさん:2006/08/23(水) 02:14:11 ID:???
>>969
話からすると、会社的にもうその仕事は受けちゃってるんだね。乙。
自分なら断るけど。
981nobodyさん:2006/08/23(水) 02:28:49 ID:???
>>969
そのクライアントがスプレッドシートに何を期待してるんだか分からん。
単に縦横にカラムが並んでればそれだけでいいのか?
982nobodyさん:2006/08/23(水) 02:54:17 ID:???
>>979
まあノートン自体がキモいというかウザいけどね。
983nobodyさん:2006/08/23(水) 02:56:31 ID:???
でもノートンをウザがるのがむしろオタクだよな。普通の人はそんなの気にしない。
984nobodyさん:2006/08/23(水) 03:02:58 ID:???
>>983
それはあるな。
ただ、一番最初のIEの起動でさえ止めようとするあの男気には天晴れというほか無い。

>>977
あんまりメール系やらないから分からないけどmb_send_mailとかじゃダメなの?
985nobodyさん:2006/08/23(水) 03:59:18 ID:???
>>977
この話題 1 ヶ月に 3 度は出るね。
MIME エンコードしろ。
986nobodyさん:2006/08/23(水) 06:01:23 ID:???
>>985
ここ最近の過去スレでこの質問出てたっけ??
987nobodyさん:2006/08/23(水) 06:09:20 ID:???
>>986
少なくとも 7/21 に出てた
988nobodyさん:2006/08/23(水) 06:10:44 ID:???
1ヶ月以上前じゃないか
989nobodyさん:2006/08/23(水) 06:13:19 ID:???
>>988
範囲の起点が違うんじゃね?
どーでもいい。とにかく FAQ だ。
990nobodyさん:2006/08/23(水) 06:15:02 ID:???
次スレ
【PHP】下らねぇ質問はここに書き込みやがれ 27
http://pc8.2ch.net/test/read.cgi/php/1156262092/
991nobodyさん:2006/08/23(水) 07:45:29 ID:???
WEBの1画面で、実行するSQLの数ってどのくらいだろう

カテゴリを表示する処理で、
カテゴリA10 x カテゴリB10(カテゴリA1つの付10個存在) で = 100回もの
SQLを発行することになったんだけど、これって効率悪いですよね

最終的には下のように表示したいので、それぞれカテゴリA、カテゴリBの配列があればいいかな
って思ってこうやったんですが、何かうまい方法ってないんでしょうか

カテゴリA名1
  カテゴリB名1、 カテゴリB名2、 カテゴリB名3 ....

カテゴリA名2
  カテゴリB名1、 カテゴリB名2、 カテゴリB名3 ....

992nobodyさん:2006/08/23(水) 08:08:35 ID:???
>>991
SQLの内容にもよるよ。軽いSQLなら100回くらいやっても別に問題ない。
回数よりトータルの待ち時間と、実行中のDBサーバー負荷が肝心。

それが過負荷になってるならカテゴリBの取得をまとめてやっておいて
PHPの配列処理で分配する方法も効果があるが、そういうのは
現物でベンチマークでも取りながらチューニングしないと何とも言えんよ。

で、とりあえず質問するならカテゴリAとBがDBのテーブルにどういう風に格納されてて
どんなSQLで拾ってるのか書いてくれんことにはアドバイスのしようがない。
多分、カテゴリBのSQLと配列への格納の仕方を手直しすれば一発で引けるとは思うが。
993nobodyさん:2006/08/23(水) 08:12:43 ID:???
>>991
> カテゴリA名1
>   カテゴリB名1、 カテゴリB名2、 カテゴリB名3 ....
> カテゴリA名2
>   カテゴリB名1、 カテゴリB名2、 カテゴリB名3 ....
カテゴリA名1内のカテゴリB名1と、カテゴリA名2内のカテゴリB名1ってのは同じなのか?別物なのか?
994nobodyさん:2006/08/23(水) 09:55:52 ID:???
>981
>単に縦横にカラムが並んでればそれだけでいいのか?
そういうニュアンスのことを言われました〜。
Google Spreadsheets ちょっと見てみたけど、ヒントをくれた方は、JavaScriptでHTMLの中に入れてやれってことだったのかなぁ。
色々やってみたけど、上手い使いまわしはできなかたぁ〜。
995nobodyさん:2006/08/23(水) 10:05:03 ID:???
>>994
そういうニュアンスだと「xlsからコピーできたら素晴らしい」とはならん気がするんだが…
どうやってコピーする気なんだよ、それ。
なんかクライアントが壮絶な勘違いと過大な期待をしてるような気がして仕方がない。
996nobodyさん:2006/08/23(水) 11:13:00 ID:???
>>995
俺もそう思う
お馬鹿な客っぽいから、グラフなんかもCOPYさせろとか言われそうw

素直にxlsファイル読み込みで、テーブルに表示させて、ゴリ押しだな
997nobodyさん:2006/08/23(水) 11:30:10 ID:???
>>969
欲しいものがクライアントも理解できていない、典型的な例に見えるね

好意的に解釈するのなら
・スプレッドシート形式のUIが欲しい
・xlsファイルのインポート機能も欲しい
・だからと言って、まずxlsファイルを編集して、インポートする機能だけのものは駄目だ
 また、エクセルをインストールしないと使えない処理も不可
と言うことじゃないかな

それでも、まともなスプレッドシート機能を実現するのはかなりめんどうだとは思うが
動的な列や行の追加やらなんやら…
998nobodyさん:2006/08/23(水) 11:35:53 ID:???
>>997
OpenOfficeをお薦めすればいい
まぁかなり使い勝手悪いけどな
999軟式PHP:2006/08/23(水) 11:54:09 ID:???
すれ違いだが、どっかの役所はOpenOffice使ってるって前TVで見たなぁ。
1000(^ω^):2006/08/23(水) 12:11:06 ID:???
1000なら明日PHP5.2.0発表
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。