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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/08/07(月) 13:11:50ID:???
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カテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0002nobodyさん2006/08/07(月) 13:12:33ID:???
【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/
0003nobodyさん2006/08/07(月) 13:12:53ID:???
【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/
0004nobodyさん2006/08/07(月) 13:13:19ID:???
関連リンク
■本家マニュアル   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/に変えてみたら日本語があるかもしれません。
0005nobodyさん2006/08/07(月) 13:13:42ID:???
関連スレ
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/
0006nobodyさん2006/08/07(月) 13:13:59ID:???
【簡易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プログラムとして実行された結果になる。
0007nobodyさん2006/08/07(月) 13:14:19ID:???
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に保存?
 → 好きにしてください
0008nobodyさん2006/08/07(月) 14:08:49ID:???
おっぱい括弧にワラタ
0009nobodyさん2006/08/07(月) 15:14:11ID:???
>>前スレ997
ttp://wiki.2chx.net/php/
0010nobodyさん2006/08/07(月) 16:53:13ID:2T37Evsi
すいません
自分が頭悪いだけなんですが

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

これを

>>72

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

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

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

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

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

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

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

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

preg_replace("/>>(\d{1|2|3|4})+/","<a href=\"#log\\1\">>>\\1</a>",$str);  ね
0107nobodyさん2006/08/09(水) 01:13:20ID:???
>>106
なんだ? (\d{1|2|3|4})+ って? (\d{1,4}) のこと? 最後の + が意味不明。
0108nobodyさん2006/08/09(水) 01:17:24ID:???
>>106
{1|2|3|4}って意味わからんぞ。何をしようとしている?
で、(\d+)と、+の部分もカッコに含めないと数字全桁は取れないだろ。
0109nobodyさん2006/08/09(水) 01:36:59ID: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できることは確認。。
誰か助けてください。
0110nobodyさん2006/08/09(水) 01:40:35ID:???
>>109
header('Content-Type: image/png');
0111nobodyさん2006/08/09(水) 01:42:39ID:???
>109
ブラウザで文字化けしてるってことか?
どんなレスポンス返してるのか全部見てみなよ
content-typeがtext/htmlになってるだけじゃないの?
0112nobodyさん2006/08/09(水) 01:44:13ID:???
>>109
ここのサイトってどういう設定にしてるんだ??
<?php
の次の行に
header("Content-type: image/png");
って足せば動かない?
01131122006/08/09(水) 01:45:14ID:???
なんだ、元のサイトでもちゃんとheader出力してんじゃん。
ttp://masago.kir.jp/phpsc.php?s=php2004010301.php
0114nobodyさん2006/08/09(水) 01:52:00ID:???
あれだな
http://example/のときはリンクを貼る
http://example/img.jpgのときは画像を表示させる

こういうのってできないんだよな
0115nobodyさん2006/08/09(水) 02:01:15ID:???
は?
0116nobodyさん2006/08/09(水) 02:04:17ID:???
109のサイトあぶねーなぁ
register globalがonだから、XSSがおきるよ
ttp://masago.kir.jp/php20030111s.php?msg=%3Cscript%3Ealert%28document.cookie%29%3B%3C/script%3E
0117nobodyさん2006/08/09(水) 02:04:37ID:???
>>114
言ってる意味が分からんぞ
分からないことは恥ずかしいことじゃない。お前の考えを正直にぶちまけてみろ
0118nobodyさん2006/08/09(水) 02:09:08ID:???
>>117
すんません、教えてください。

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

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

>>117
>>118
0122nobodyさん2006/08/09(水) 03:21:02ID:???
index.php?hogehoge=test#5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://jp.php.net/manual/ja/function.preg-match.php
0155nobodyさん2006/08/09(水) 13:53:50ID:???
すいません、本来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 です。
0156nobodyさん2006/08/09(水) 14:16:58ID:???
>>155
そのソース上には問題はない
しいて言うなら、
$smarty->dispya("index.tpl")
の文末に ; がないくらいだけど、エラーメッセージの内容からして
コピペミスだろうと思うから関係ないだろう

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

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

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

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

よくわからんがその関数で読みこんだオブジェクトは$xmlであって引数にしてる$itemではないのではないか?
01661092006/08/09(水) 21:52:49ID: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
はいブラウザでサイト上で文字化けしてます。。
0167nobodyさん2006/08/09(水) 21:58:01ID:???
どうせブラウザのキャッシュだろうけど
imagepngでファイルに出力してみて、正しい画像ならブラウザの問題
01681092006/08/09(水) 22:01:31ID:???
ブラウザはIE6でキャッシュも削除しますた・・
0169nobodyさん2006/08/09(水) 22:09:15ID:???
俺のIE6、Opera8.5では表示できた。
PHP5.1.4
0170nobodyさん2006/08/09(水) 22:35:53ID:???
>>168
先に改行とかBOMとか余計なもの出力してない?
0171nobodyさん2006/08/09(水) 22:39:17ID:???
>>164
funcitonはPHP8以降じゃないと使えないから。
0172nobodyさん2006/08/09(水) 22:44:50ID:???
>>166
それ動かしてるサーバーってレンタルスペース?
ひょっとして広告とか入ってるとこで、PHPでいくらheader出力しようと思っても無駄なとこだったりしない?
0173nobodyさん2006/08/09(水) 22:46:19ID:???
>>164
それは何年後に使えるようになるのですか?
01741092006/08/09(水) 23:12:13ID:XkNwEDtZ
>>170
はい余計なものは出力していないです。。
>>172
はいレンタルスペースです。下部にテキスト広告が入っています。。
header出力に関しての記載はないので管理者に聞いてみようと思います。

ちょっと他の所でも試してみます。。
何度もすみませんでした。
0175nobodyさん2006/08/09(水) 23:20:44ID:???
>>174
広告入ってるサーバーの多くではプログラムで画像出力とかできないよ。
その自動で動く広告挿入のプログラムが、出力内容をHTMLとして扱っちゃうので。
一部のサーバーでは自動的に広告OFFにするための仕組みを用意してるので(ディレクトリや拡張子の変更など)
それがあるなら使ってみることだ。
0176nobodyさん2006/08/09(水) 23:27:13ID:???
すいません、間違って?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関数で文字を置き換えようとしても上手くいきません。
(\をなんとか消しても、今度は "(ダブルコーテーション)に置き換わってしまいます。)

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


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

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

gpc()←訂正

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

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

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

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

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

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

> PHPと組み合わせるDBで特に易しいもの等はあるんでしょうか?
MySQLは特に易しいよ。機能少なめでかつ高速で。あんまり悩む必要がない。
0212nobodyさん2006/08/10(木) 12:33:05ID: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とも同じ結果です。
0213nobodyさん2006/08/10(木) 12:37:32ID:???
>>212
関数へ渡してる部分も含めてもう少し全体を見せれ。
多分、どっかに余分な改行がある。
メールのヘッダーと本文は1行の空行で区切られてるが、
ヘッダーの途中に空行が余分に入ったことでヘッダー後半が
本文扱いになってしまってるわけだ。
0214nobodyさん2006/08/10(木) 12:38:11ID:???
最近classを勉強しています。
ソース中によくreturn文を使っているのを見るのですが、
どういうときに使っているのか、何をしているのかがよく理解できません。
マニュアルを見てもいまいちピンとこないのですが、
これはPHPを学ぶ上で必須となるものでしょうか?
0215nobodyさん2006/08/10(木) 12:46:16ID:???
PHPに限らず多くの言語の基本中の基本事項です
クラス以前の問題
0216nobodyさん2006/08/10(木) 12:49:53ID:???
>>214
オブジェクト指向学ぶ前に言語構文覚えれ
0217nobodyさん2006/08/10(木) 12:53:27ID:???
>>214
絶対必須。
それ覚えるまでクラスなんていじるな。
0218nobodyさん2006/08/10(木) 12:56:06ID:???
>>214
classの前にまずfunctionを覚えましょう
0219nobodyさん2006/08/10(木) 13:04:06ID: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);
?>

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

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

SJIS使いたければ、内部エンコードUTF-8とかにして出力時に自動変換がお勧め
0226nobodyさん2006/08/10(木) 13:27:35ID:???
>>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
とする
0227nobodyさん2006/08/10(木) 13:33:18ID:???
>>219
> $subject = "お問い合わせがありました。\n";
の."\n"を外せ。
「改行コードが余分だ」と言ったのに何を聞いてたんだ。
ttp://www.php.net/manual/ja/function.mail.php
> subject
> 送信するメールの表題。
> 注意
> 改行を含んではいけません。含めてしまうとメールが正しく送信できません。
0228nobodyさん2006/08/10(木) 13:37:33ID:???
>>227
ほんっとにアホだよな
0229nobodyさん2006/08/10(木) 14:15:48ID: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になったという以外、大きな変化はありませんでした。
0230nobodyさん2006/08/10(木) 14:16:46ID:83OIGtyl
$msg = ""; です。すみません。
0231nobodyさん2006/08/10(木) 14:25:41ID:???
認証の関係でサブスクライバIDを取得したいのですがuser_agentでは取得できませんでした(当然といわれれば当然ですが)
どのような関数で取得できるでしょうか?
下らない質問で申し訳ありませんがお願い致します
0232nobodyさん2006/08/10(木) 14:26:53ID:83OIGtyl
みなさんすみません。こんなのを見つけてしまいました.....orz

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

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

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

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

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

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

ソケットオープン

ヘッダー送信

データ受信

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

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

http://jp2.php.net/manual/ja/function.fsockopen.php
0248nobodyさん2006/08/10(木) 17:21:56ID:???
松田・・・・かわいそうな子!
0249nobodyさん2006/08/10(木) 17:31:33ID:???
ちゃんとphp-usersでも解決報告したのはえらいぞ。松田。マルチの鑑だね。
0250nobodyさん2006/08/10(木) 22:05:54ID:???
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の勧告に即していないということでしょうか?
0251nobodyさん2006/08/10(木) 22:10:12ID:???
>>250
<input type="checkbox" name="q[]" value="1">
<input type="checkbox" name="q[]" value="2">
<input type="checkbox" name="q[]" value="3">
でお願いします。
0252nobodyさん2006/08/10(木) 22:17:30ID:???
その文面からだと確かにそのように読めるね。
一応こうならば何とか動くけど。

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

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

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

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

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

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

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

どなたかご存知でしたら教えてください。
0265nobodyさん2006/08/11(金) 07:28:05ID:???
>>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のスペックや同時に動いているプロセスの数や種類などでかなり差が出るとは思われる
0266nobodyさん2006/08/11(金) 09:36:05ID:???
>>264
$time1 = microtime();
$time2 = microtime();
というふうに連続でやってもマイクロ秒付近の偏差はでるんだから、usleepのせいってわけじゃなくね?
0267nobodyさん2006/08/11(金) 11:15:29ID:???
usleepの精度とかってmanpage見た方がいいと思うんだな
0268nobodyさん2006/08/11(金) 12:11:15ID:???
>>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
最低、引数の時間は止まるので少なくなることはない
0269nobodyさん2006/08/11(金) 12:14:53ID:???
下らない質問ですが

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ってとこが現実かな。

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ライブラリを書きたいというなら参考にすればいいだろうし
0363nobodyさん2006/08/13(日) 16:26:57ID:???
>>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

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

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(); ?>

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

PHPで作っている人いたので流用させてもらうことにしました。
0371nobodyさん2006/08/13(日) 17:28:03ID:???
脊髄反射イクナイ
0372nobodyさん2006/08/13(日) 19:45:05ID:???
情報を後だしすんなっての
0373nobodyさん2006/08/13(日) 19:46:25ID:???
最初はテーブルのことしか言ってないくせに、勝ち誇って偉そうですねw
0374nobodyさん2006/08/13(日) 20:45:44ID:???
てかここ低レベルなやつ多すぎ
見てると萎えてくる
0375nobodyさん2006/08/13(日) 20:47:25ID:???
中学生がおおいからな
0376nobodyさん2006/08/13(日) 22:13:08ID: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をパースした場合はうまくいきません。
"[]"が含まれているからだと思います。[]が含まれていてもうまくいく方法はありませんか?
03773762006/08/13(日) 22:16:41ID:t3hDjrcl
自己解決しました。
0378nobodyさん2006/08/13(日) 23:36:15ID:eyKLaI69
phpって 〜秒待つ みたいな関数ってないの?
処理後3秒待って他の処理したいときとかどうすればいいの
0379nobodyさん2006/08/13(日) 23:39:16ID:???
ムリ。素直にpython使え。
0380nobodyさん2006/08/13(日) 23:39:45ID:fTOpOca2
sleep()
0381nobodyさん2006/08/13(日) 23:42:14ID:???
どこが「素直」なのかと小一時間(ry
0382nobodyさん2006/08/14(月) 01:10:19ID:???
ワラ
0383nobodyさん2006/08/14(月) 01:41:11ID:???
>>397-370
プ。激しくレヴェルが低いな。でも、それがこのスレの醍醐味かな?
0384nobodyさん2006/08/14(月) 02:07:14ID:???
レスアンカーすらまともに打てないレヴェルの君へ。

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

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

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

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

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

ってあるから'a'モードが特殊で
実際はファイルポインタは終端にあるんじゃね?
0397nobodyさん2006/08/14(月) 11:51:57ID:???
>>396
あぁ、、なるほど。ftell()の方の問題でしたか。私もftell()で調べました。
納得です。
0398nobodyさん2006/08/14(月) 11:54:53ID: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]
みたいなのが出力されちゃいます
0399nobodyさん2006/08/14(月) 12:03:51ID:???
$kaizoudo[$k]の中には配列が入ってるよな?
だから print "$kaizoudo[$k]";の結果表示は Array だ。
その後ろに[0]ってかいてあるよな?
だから print "$kaizoudo[$k][0]";の結果表示は Array[0] だ。
これが今の状態。
つまりprintが一次元配列か二次元配列か分かってないのが原因。
{}で囲むと大丈夫だよ。
0400nobodyさん2006/08/14(月) 12:07:36ID:???
おっぱいかっこのことですねw
0401nobodyさん2006/08/14(月) 12:20:14ID:???
>>399
なるほど!
格納はちゃんとできてたんだけど表示がうまくいってなかったんですね。
分かりやすい解説ありがとうございました。
0402nobodyさん2006/08/14(月) 12:24:56ID:QXYq1pPL
Windows XP SP2
PHP 5.1.4
の環境で strtolower で誤変換が発生するみたいだが
これってバグかな?

<?php

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

?>
0403nobodyさん2006/08/14(月) 12:27:48ID:???
>>402
「トンヘン」て・・・
0404nobodyさん2006/08/14(月) 12:32:09ID:???
>>402
マルチバイト文字対応じゃない関数使えば当然
mb_strtolower使え
0405nobodyさん2006/08/14(月) 12:37:44ID:???
>>402
mb使うのがまず第一だけど、それ以前に文字コードの知識もなしでShift_JIS使っちゃダメだよ。
0406nobodyさん2006/08/14(月) 12:48:46ID:???
>>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で「検索トンヘン」となる
04074022006/08/14(月) 12:49:08ID:???
>>404
echo mb_strtolower($str, 'SJIS');
で出来ました。ありがとうです
>>405
精進します
0408nobodyさん2006/08/14(月) 13:54:45ID:???
おっぱい括弧といい、検索トンヘンといい、ここは実に愉快なスレですね。
0409nobodyさん2006/08/14(月) 14:52:12ID:???
フォームからREQUESTで値を取得するとき、
文字列の末尾に「表」という漢字があるとなぜか「\」が付加されてしまいます。
例えば、フォームに「あいうえお表」と打ったとすると、実際に取得する値は「あいうえお表\」となってしまうのです。
他の漢字やひらがな、カタカナ等では発生しないようです。

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

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

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

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

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

サーバサイドで動くスクリプトがDLできたら俺は恥ずかしい思いをすることになる。
やめてくれ
04184142006/08/14(月) 17:21:04ID:???
>>415
やはりそういう事になるんですね。
諦めます。板汚し失礼しました。
0419nobodyさん2006/08/14(月) 17:25:57ID:???
そんな事されたら$oppaiとか$mankoとかいう変な変数名がばれてしまうじゃないかー
0420nobodyさん2006/08/14(月) 18:28:34ID:???
phpMyAdminでrootでは入れるのですけど自分で作ったユーザーで入ることができません。
rootで入って権限のところを見るとユーザーはちゃんと作成されていました。
何が原因なのでしょうか・・・
0421nobodyさん2006/08/14(月) 19:06:55ID:???
>>420
config.inc.phpのauth_type設定がっって程度の話じゃないの?
0422nobodyさん2006/08/14(月) 19:34:50ID:???
>>420
その自分で作ったDBユーザの権限に
見ようとしてるDBへの権限がないんじゃないの?
0423nobodyさん2006/08/14(月) 20:08:55ID:???
一定時間内の同一人物による連続投稿をはじくには、
IPアドレスを記録しておくのが良いでしょうか?
0424nobodyさん2006/08/14(月) 20:10:38ID: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
です。
0425nobodyさん2006/08/14(月) 20:12:23ID:???
index.php
04264242006/08/14(月) 20:29:55ID:???
残念ながら、そのディレクトリにはindex.phpはありませんでした。
その場合やはり、サーバの設定によるんですかね。
0427nobodyさん2006/08/14(月) 20:30:44ID:???
>>423
詳細な目的にもよるけど、IPアドレスによる判断はベターだろうね。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

スクリプト

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

<img src="<?php $temp ;?>">
04564532006/08/15(火) 08:08:13ID:???
>>454
レスどうもです。
定数は値が変わらないことを明示させるために使うんですね。
コードの読みやすさとかにまで意識が回りませんでした。
ありがとうございました。
0457nobodyさん2006/08/15(火) 09:59:53ID: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
です。よろしくお願いいたします。
0458nobodyさん2006/08/15(火) 10:00:22ID:7B9Fe4ha
フォーム入力されたデータの、DBに入れる前の書式チェックで質問です。

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

↑の3つが主なチェックタイミングだと思うんですが、
2回目のPHPでのチェックを無くして、3つ目のDB登録時に戻ってくるエラーコードで
ケース文で対処するのはセキュリティ上何か問題ありますか?
PDO等の接続抽象オブジェクトのバインド変数使う前提ですが・・・
0459nobodyさん2006/08/15(火) 10:39:55ID:???
>>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
こことか参考にしてみれば
0460nobodyさん2006/08/15(火) 10:44:28ID:???
>>453
数字などを分かりやすくする場合
定義済みの定数はほとんどそう
LOCK_EXとかSEEK_SETとかよく使うけど実際の数字は知らないし
0461nobodyさん2006/08/15(火) 11:07:13ID:OANfrr1E
>>459
早速の回答ありがとうございます。
ただ、わたしは5.0.22からのアップデートなので、いわゆる4.1でのcharacter関連の変更とは関係ないと思います。

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

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

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

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

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

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

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

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

まずは、
SHOW VLIABLES lilke 'char%'
で、文字コードセットがどうなっているか確かめる
それで、character_set_server がこっちの想定してない文字コードで
表示されているのなら
ALTER DATABASE で文字コードを再設定する
character_set_client などが違う場合は
SET NAMES などで文字コードを、PHPから接続するたびに再設定しなおす
0470nobodyさん2006/08/15(火) 14:05:24ID:???
>>469
関係ないといいながらおまいさんは相当優しい
ホレタ!
0471nobodyさん2006/08/15(火) 15:46:42ID:???
>>468
Content-Lengthはrequestじゃなくてresponseだろ
0472nobodyさん2006/08/15(火) 17:41:13ID: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として処理するようにすれば良いのでしょうが
レンタルスペースだとそれもできませんよね?
0473nobodyさん2006/08/15(火) 17:45:50ID:???
>>472
style.cssを生成すれば
若しくはhtml内にcssを書く。別ファイルにこだわる必要あるの
0474nobodyさん2006/08/15(火) 17:51:02ID:???
>>472
いや、CSSのContent-typeはtext/cssだから。
PHP側でheader('Content-type: text/css')吐かせれば問題無いし、linkタグも書き換えろよ。

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

ありがとうございます。

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

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

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

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

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

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

これって処理速度は変わるんですか?
0481nobodyさん2006/08/15(火) 18:26:27ID:???
変わらんよ
0482nobodyさん2006/08/15(火) 18:57:49ID:D3BJyJj0
>>481
開くファイルが大きかろうが、小さかろうがファイル用のバッファの大きさは変わらない、ファイルを開いた時に全てメモリに展開するわけではない という理解でいいんでしょうか?
0483nobodyさん2006/08/15(火) 19:02:04ID:???
>>482
そもそもファイルオープンという処理は、ファイルをファイルハンドルに結びつける処理に過ぎない。
04844722006/08/15(火) 19:27:14ID:???
>>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を書き換えたかったのです。

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

お騒がせいたしました。
0488nobodyさん2006/08/15(火) 20:51:22ID:D3BJyJj0
>>485
では、ストリームとはなんなんでしょうか?
0489nobodyさん2006/08/15(火) 20:55:06ID:???
連続した区切りのない入出力のこと
0490nobodyさん2006/08/15(火) 22:39:52ID:???
>>482
正しい
0491nobodyさん2006/08/16(水) 00:45:48ID:???
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();
こんな感じで配列にはいってる最終の要素のメソッドを呼び出したいんですが
うまくいかないですー

どこがおかしいかってのと
どうやったらうまくいくかってのをどうかご教授ください
0492nobodyさん2006/08/16(水) 01:05:43ID: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で画像ファイルを読み込んで出力
必死扱いて他の方法を考えて探してみたのですが、やり方がわからずじまいでした。
どうかお力添えをして頂けないでしょうか。
0493nobodyさん2006/08/16(水) 01:29:11ID:???
>>491
Perlじゃあるまいし、関数の戻り値に直接->なんて演算子は使えないんじゃない?
 function getCurrentElement()
 {
  $e = end($this->elements);
  echo $e->getB();
 }
でどうよ?
0494nobodyさん2006/08/16(水) 01:30:32ID:???
>>488
ストリームは概念。
データを出力する処理を連続して行う事が出来る相手が出力ストリーム
逆が入力ストリーム。
たとえばコンソールは文字出力を連続して行う事で文字列を表示できるわけだ。

ファイルの場合、ファイル名と位置を指定して読み書きが出来るが、
printで文字列を連続して出力するようなインターフェイスを間にはさむ事
によって、ストリームとして利用することも出来る。
というか、ファイルをストリームとして扱う仕組みを、だれかが作ってくれた
からそれが利用できる。そういうもの。
0495nobodyさん2006/08/16(水) 01:32:56ID:???
>>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">
じゃダメなのか?
0496nobodyさん2006/08/16(水) 01:37:30ID:???
>493
やっぱそれしか方法がないんですね.

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

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

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

if(hoge)
{
 hogehoge
}

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


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

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

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

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

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

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

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

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

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

>>527
gcの確率は1000分の1にしてあり、なおかつ、セッションを使って
同時にログインするユーザー数は2(まだテスト中なのでどちらも自分でログイン)しかないので、
ガーベッジコレクションの影響は無視できる程度、と私は解釈しているのですが・・・
0532nobodyさん2006/08/16(水) 09:57:17ID:???
>>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とか条件がハマれば
早く切れるバグってのがあったぽいね
0533nobodyさん2006/08/16(水) 09:58:36ID:???
ん。。
LinuxとかならCronで/tmpを掃除してる処理が動いてたりして
0534nobodyさん2006/08/16(水) 10:12:18ID:???
セッションデータファイルが消えちまってるのか
cookieが取得できねーのか
そのあたりを切り分けろ
0535nobodyさん2006/08/16(水) 10:34:55ID:GaCZ9Sq1
レスありがとうございます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

具体的には、ある値のデータ型が「int」かどうかを調べたいのですが……
よろしくです。
0589nobodyさん2006/08/17(木) 00:37:37ID:???
>>588
まぬある見てくれ
http://jp.php.net/manual/ja/ref.var.php
0590nobodyさん2006/08/17(木) 00:42:23ID:???
>>589
どうもありがとう。

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

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

>>585のリンク先みたいに作れませんかね??
0592nobodyさん2006/08/17(木) 00:54:05ID:???
PHPで日付を表示してみたのですが
日本時間が表示されません。
海外の時間+9時間で合わせてみたのですが
それでも時間が合いません。
分とかもずれてるんです
サーバーの時計が合ってないのですか?
どうすれば良いですか?困ってます
教えてください
サーバーはアリゾナにあるらしいのですが
ほんとかどうか知りません
0593nobodyさん2006/08/17(木) 00:57:02ID:???
>>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>";
}
?>
あとは何とかしろ。つかここはそういう質問はだめだかんな。
自分で作ってわからないことを質問するってのがここの掟
0594nobodyさん2006/08/17(木) 00:59:25ID:???
>>591
<?php
$niceHip = $_POST['height']*0.53;
$niceWaist = $_POST['height']*0.38;
print "理想のヒップ={$niceHip}cm<br>";
print "理想のウェスト={$niceWaist}cm<br>";
?>
05955852006/08/17(木) 01:12:26ID:lrPl7LqR
>>593-594
はつながっているんですか??

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


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

亀レスであれなんだがおそらくその解釈で合ってると思う。
HTTP通信をキャプチャしたらCookieの項目があった=ローカルマシンのどこかにその値がある
・・・ということなので、ファイルが存在しないのならメモリにあるとしか考えられない。
0605nobodyさん2006/08/17(木) 13:53:41ID:???
>>599
それ使うとどうなるんだっけ??
0606nobodyさん2006/08/17(木) 14:22:03ID:???
php-bcmath
0607nobodyさん2006/08/17(木) 15:34:52ID:???
>>605
浮動小数点に伴う誤差がなくなる
0608nobodyさん2006/08/17(木) 15:50:07ID:???
よくわからんが、1/3*3がきちんと1になるのか?
0609nobodyさん2006/08/17(木) 15:51:54ID:???
速度が犠牲になることをお忘れなく。
0610nobodyさん2006/08/17(木) 16:13:29ID:FtiwPZNr
>>593
を設置するには2つファイルが必要ですか??
0611nobodyさん2006/08/17(木) 16:18:16ID:???
>>608
それはできません
浮動小数点の誤差というのは
echo floor((0.1+0.7)*10);
が8ではなく7になるという現象
0612nobodyさん2006/08/17(木) 16:19:52ID:???
>>610
あのソースをコピーしてメモ帳とかのエディタに貼り付けて、
test.phpっていう名前で保存して、
サーバにアップロードして、test.phpにアクセスすればOK。
もちろんPHPが使えるサーバじゃないとだめ。
っていうかこのソースパースエラー出るよ。
0613nobodyさん2006/08/17(木) 16:31:54ID:FtiwPZNr
・・・やってみたんですが変になります。。。
パーミッションとかいじりますか??
0614PJP2006/08/17(木) 16:38:31ID: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を返します。
ご教授いただければ幸いです。
0615nobodyさん2006/08/17(木) 16:41:46ID:???
>>613
どう変なのか書かないと状況もなんもわからんのだが
0616nobodyさん2006/08/17(木) 16:55:03ID:FtiwPZNr
>>612さんがやり方で、
http://www.uploda.org/uporg481980.jpg.html
このようになりました。
0617nobodyさん2006/08/17(木) 17:00:23ID:???
>>616
拡張子はhtmlじゃなくてちゃんとphpにした?
あとサーバにphpが入ってないと使えないよ。
0618nobodyさん2006/08/17(木) 17:02:50ID:FtiwPZNr
はい。phpになってます。
infoseekの無料の奴なんですけど大丈夫ですか??
0619nobodyさん2006/08/17(木) 17:13:49ID:???
やれやれ
0620nobodyさん2006/08/17(木) 17:16:27ID:???
>>618
infoseekじゃPHPは使えないからJavaScriptかPerlで書くしかない。
0621nobodyさん2006/08/17(木) 17:16:35ID:???
これが噂に聞く夏厨か?
0622nobodyさん2006/08/17(木) 17:19:44ID:???
んもー、回答者だって酷いくらい「適当に」書いてあるんだよ。
それでも動くと言えば動くかも知れないが、実用性ゼロ。

しかも質問者も基礎の基礎をすっとばして……
なんでそんな他力本願なの?
06236142006/08/17(木) 17:21:22ID:Ex5q979l
count()がいつも1を返します。データはlogを開けると10回書き込みしたら10回分
テスト,テスト,テスト,・・・と10回分のデータが記憶されています。
これをfile()で呼び出しその要素をcount()で数えたら9もしくは10あたりを返すのじゃないのですか?
いつもいくら書き込んでも要素数1を返します。
0624nobodyさん2006/08/17(木) 17:24:17ID:???
>>614
$logdataを書き込むとき最後に改行も書き込む
ファイルオープンは"w"より"wt"がベター
06256142006/08/17(木) 17:27:01ID:Ex5q979l
改行とは\nですか?
0626nobodyさん2006/08/17(木) 17:30:01ID:???
>>625
そうだよ
"wt"とテキストモードで開けばWindowsなら自動的に\r\nに変換して書き込まれる
読み込みも\r\nが\nに変換されて読み込まれる
Linuxではテキストモードもバイナリモードも関係ないからそのまま無変換で\nのまま読み書きされる
0627nobodyさん2006/08/17(木) 17:32:56ID:???
わからないうちはwで\nつけた方がいいかもね。まだいらない知識とみた。
0628nobodyさん2006/08/17(木) 17:34:33ID:???
>>623の内容からするとfile()の動作を誤解してるんじゃないかと思うんだが
0629nobodyさん2006/08/17(木) 17:37:16ID:fBR2tTe/
質問です
動的なページで、そのページのURLを取得する関数ってありますか?
06306142006/08/17(木) 17:42:46ID:Ex5q979l
\nつけても要素増えませんでした。
file()って配列を返すんじゃないんですか?
0631nobodyさん2006/08/17(木) 17:44:20ID:???
$_SERVER['PHP_SELF'];
06326142006/08/17(木) 17:52:37ID:Ex5q979l
\nで解決しました。ありがとうございました。
0633ABCオロチ”管理”人2006/08/17(木) 18:01:23ID:???
あなたがたが、しばらく前にうちの、掲示板を晒したので厨房だらけに、なってしまいました。
どうにか、してもらえませんか?
http://www.abcoroti.com/~rent/rspace/bbs3/wwwlng.cgi
0634nobodyさん2006/08/17(木) 18:03:05ID: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
までしか取れないのですが
全部取得できる方法無いですか
0635nobodyさん2006/08/17(木) 18:06:16ID:???
マニュアルを読まない奴はだいっきらいだ
0636nobodyさん2006/08/17(木) 18:06:37ID:???
>>633
なんか見るからに穴だらけだし、
管理しきれないなら閉鎖すればいいじゃん。
わざわざここに来られてもどうにかできるもんじゃないしスレ違い。
荒らしたやつのIP調べて該当プロバイダに出せばいい。
06376342006/08/17(木) 18:15:20ID:fBR2tTe/
早く教えろ!!!
0638nobodyさん2006/08/17(木) 18:18:39ID:???
phpinfo() でも読んで、どうすれば全体取れるか考えろよ
0639nobodyさん2006/08/17(木) 18:25:24ID:???
いい回答が返ってこなくて質問者が荒らしになる瞬間
0640軟式PHP2006/08/17(木) 18:30:49ID:???
>>635
ゲドネタわろたw

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

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

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

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

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

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

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

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

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


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

0672nobodyさん2006/08/18(金) 11:53:44ID:???
>>671
それはいい仕様だと思うが、669が問題なくて、なぜそれができないんだ?
0673nobodyさん2006/08/18(金) 11:57:40ID:???
>>671
その通りの事をプログラムでするだけ…。
入力された値を、エラーのものは消す、エラーでないものは復帰させる。
エラーのものはエラーメッセージを表示する。
そんだけ。
0674nobodyさん2006/08/18(金) 11:59:22ID:???
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";
}

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

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

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

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

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

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

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だけではなく、いろんなフォルダのいろんな
ファイルから呼び出されるのですが、どうパス指定してやればいいのでしょうか?
0702nobodyさん2006/08/18(金) 14:45:24ID:???
>>699
関係ないスレで質問したのにわざわざ答えてくれて本当にありがとうございます
そのページを参考にして頑張ってみたいと思います
では失礼いたしました
0703nobodyさん2006/08/18(金) 14:47:50ID:???
>>701
なるほど main.phpからみるとlibは同一フォルダでないからな。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例えば

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

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

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

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

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

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

これからもよろしくおながいしまつ
0740nobodyさん2006/08/18(金) 18:37:45ID:???
>>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書こうよ。
しかしすでにセッション使ってて前の入力内容を復元させることが難しい、
ってやつも相当珍しい気がするんだが。
0741nobodyさん2006/08/18(金) 18:39:30ID:???
>>734
explodeで正解だよ。
ちょっと自分で書いたexplodeのとこ見せてみ。それ多分書き方間違ってるだけ。
0742nobodyさん2006/08/18(金) 18:42:41ID: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
07437342006/08/18(金) 18:47:03ID:???
>>738,>>741

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

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

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

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

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

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

ありがとうございます。
0754nobodyさん2006/08/19(土) 00:33:54ID:???
>>753
ちなみにmktime()も日付チェックの機能を備えてて、
不正な日時が入力されたら補正して返すから
入力 != 出力 で妥当性をチェック可能。
0755nobodyさん2006/08/19(土) 01:22:52ID:???
>>754
チェックするだけなら、checkdate() の方が速いけどね。
これを機にソースも読んでみたけど、checkdate() は大した事してないし。
mktime() は当然いろいろやってるが。
0756nobodyさん2006/08/19(土) 01:44:00ID:+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
という接続時のエラーによりこの後のデータ送信ができないのですが、
このエラーの解決方法をご存知の方、教えてもらっていいですか?
0757nobodyさん2006/08/19(土) 03:44:33ID:01c3DaJf
すいません、基本的な疑問で今まで出来ないと思い込んでいたことを聞きたいんですが、
foreachで配列をループにかけている最中に、
今配列の中の何番目かということを知ることって出来ないんでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

rで読んでレコードを編集したあと、あらためて wで開いてレコードを書き出す、
その上に処理のロックをかけていない、などの Let's PHP みたいな不備のあるソースを書くと
データが消えてしまう恐れがあるね。
0777nobodyさん2006/08/19(土) 10:50:04ID:???
>>772
なんのチャットでもいいです。
0778nobodyさん2006/08/19(土) 11:10:07ID:???
>>777
じゃあ、ムリ
0779nobodyさん2006/08/19(土) 11:45:54ID:???
>>769
PHPじゃ無理だからJAVAにしとけ。
0780nobodyさん2006/08/19(土) 11:49:35ID:9NEEnAjJ
[a]http://hogehoge.com[/a]という自作タグをphpで正規のアンカータグに置き換えて表示するような仕組みをつくったのですが、閉じる側の[/a]を謝って変形(]を消しちゃったり)した場合に、以下の全文がアンカー対象になってしまします。
当然といえば当然なのですが、こういったタグを置き換えるような仕組みを作った場合に、上のような現象を回避する方法はありますか?
07817772006/08/19(土) 11:56:01ID:???
3レスしか釣れなかったか。
撒き餌がたらなかったらしい。
07827772006/08/19(土) 11:56:39ID:???
>>780
ある
0783(^ω^)2006/08/19(土) 11:59:26ID:???
>>780
タグとして正しいか検査する。
たとえば、[a]と[/a]の数が同じかどうか。
0784nobodyさん2006/08/19(土) 13:02:53ID:???
>>780
どういう正規表現使ったんだ?
普通に [a] と [/a] ではさまれた文字列を<a>タグのhref属性に変えるような仕組みであればそんなおかしなことにならないはずだが。
0785nobodyさん2006/08/19(土) 13:41:59ID:???
>>780
たぶん、//を||で挟めば良いような・・・
0786nobodyさん2006/08/19(土) 14:04:04ID:???
>>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);
0787nobodyさん2006/08/19(土) 14:46:12ID: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)です。
0788nobodyさん2006/08/19(土) 14:49:16ID:???
>>787
そういうものです。
ヤフーのトップページでさえ、たまに文字化けして表示されることがあります。
ブラウザ側のバグでしょう。
0789nobodyさん2006/08/19(土) 14:50:17ID:???
>>787
>これじゃ危なっかしくて怖い

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

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

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

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

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

試しにphpinfoを開くとiconv関数は「enabled」でした。
何が原因なのかソースを見た限り皆目検討がつきません。。。モナーではなくギコ猫なのが原因なのでしょうか。
0807nobodyさん2006/08/19(土) 16:19:51ID:???
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です。一体何が原因なんでしょうか?
0808nobodyさん2006/08/19(土) 16:54:36ID:???
>>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);
}

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

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

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

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

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

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

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

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

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

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

便利なツールやライブラリは他の人の解説に譲るます。
0821nobodyさん2006/08/19(土) 18:31:52ID:???
smarty使える?
なんかメンドイだけであんまり使えるような気がしない
0822nobodyさん2006/08/19(土) 19:11:56ID:???
smartyはいろいろ詰め込みすぎてて・・・Flexyの方が好き
0823nobodyさん2006/08/19(土) 19:40:53ID: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

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

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

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

>>825
下のを使うと

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

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

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

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

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

$hoge[5]="追加";

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

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

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

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

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

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

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

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

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

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

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

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

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

毎回同じ本のデータがこの状態になります。
しかし本家Amazonのページで同じ本を検索すると問題なく著者が表示されているので、
私の方に何か問題があると思えるのですが、見当も付きません。
08757152006/08/21(月) 11:26:33ID: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>
0876nobodyさん2006/08/21(月) 11:39:44ID:???
>>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ファイルを読み込む。
08777152006/08/21(月) 11:41:38ID:Xr9Z9Klv
>>876
ありがとうございます!!
なるほど、nameで分けて、再度、IF文ですね
やってみまつ
0878nobodyさん2006/08/21(月) 11:46:13ID:???
他には
1.POSTされたデータをセッションなどに格納した上で、
 header("Location: /preview.php?sessid=セッションID");
 exit;
 とLocationヘッダで別ページに遷移する。
2.print "<input type=\"submit\" value=\"確認画面\" onclick=\"this.form.action='preview.php'\">";
 として確認画面をクリック時にJavaScriptで遷移先を切り替える。
などもある。
08797152006/08/21(月) 12:07:18ID:???
>>878
ぬおーこれはコピペしておきます!!
0880nobodyさん2006/08/21(月) 12:40:23ID:???
自作したWebアプリを公開したい(オープンソース化…と言うのかな?)のですが、
どうしたらいいんでしょうか?

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

著作権などは維持しつつ、皆に無料で使ってもらうにはどういう方法がベストでしょうか。
0881nobodyさん2006/08/21(月) 12:55:16ID:???
どっちでも好きな方でいいんじゃないのか。
著作権についてはドキュメントで明示すればよし。
08827152006/08/21(月) 13:20:52ID:???
>>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を使ってみます
0883nobodyさん2006/08/21(月) 14:07:03ID:???
>>882
確認画面って何を表示してるんだ??
送信された入力内容を表示してるんじゃないのか?
0884nobodyさん2006/08/21(月) 14:15:14ID: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」など英数字を混ぜたものが
入っていても「脆弱だよ」が表示されてしまいます。英字と数字が混じっていれば
「脆弱だよ」と表示されないように作ったつもりなのですが、どこがおかしいのでしょうか??
0885nobodyさん2006/08/21(月) 14:31:02ID:???
>>884
正規表現に「^」と「$」をつけとかないと文字列全体をチェックできない。
今の状態だと「英字1文字」か「数字1文字」があれば必ず脆弱となる。
0886nobodyさん2006/08/21(月) 14:33:17ID:???
関数名にワラタ
0887軟式PHP2006/08/21(月) 15:17:34ID:???
yowai_passて。とてつもないセンスを感じるぜ。
0888nobodyさん2006/08/21(月) 15:37:14ID:???
>>884
天才的関数名だなw
関数名以外の変数名とかはしっかりしてるというか、上級者らしいのに
is_yowai_passとは・・・「分かっててやってる」天才にしか出来ない技だぜ。
0889nobodyさん2006/08/21(月) 16:25:41ID:???
マインドはびんびんつたわってくるからいいんじゃね?
0890nobodyさん2006/08/21(月) 16:36:13ID:???
function is_love_me( $my_konomi_type, $partner_konomi_type )
{
    if ($my_konomi_type === $partner_konomi_type) {
        return TRUE;
    } else {
        return FALSE;
    }
}
0891nobodyさん2006/08/21(月) 16:41:45ID:???
>>890
$my_konomi_type === $partner_konomi_type だと、お互いに同じ性質を持つ人間でなければなりませんが。
0892nobodyさん2006/08/21(月) 16:47:14ID:???
>>890
こ、これは……!! 天才的な関数だw
08937152006/08/21(月) 17:03:41ID:???
セッションでの受け渡し版を書いてみたお //俺のような初心者は使うといいお

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;}
?>
0894nobodyさん2006/08/21(月) 18:48:19ID:???
s
0895nobodyさん2006/08/21(月) 18:51:10ID:???
PHP5で、クラスに定義していない変数にアクセスできてしまうんですが、
どうにかならないんでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(NHK教育 18:00 - 18:10)
http://www.youtube.com/watch?v=tmELQUsLu2o
09399142006/08/22(火) 14:41:38ID:???
>>936
なるほど、それは一理あるというか、説得力がありますね。
0940nobodyさん2006/08/22(火) 14:46:14ID:???
>>935
歯車になる気は無いし、複雑な問題を単純化しなくても解けるし、
忘れた頃に自分の書いたコードを読み返してもすぐ理解できるし、
もしかしたら二度と忘れる事はないんでしょう。
0941nobodyさん2006/08/22(火) 14:50:21ID:???
夏っぽいな
チーム開発した事なく自己過信気味の駆け出し君に
ユニットテストの恩恵なんか説明しようとしても無駄
質問者と回答者のやり取りも微妙に噛みあってない
禅問答やってる暇があったらコード書いてた方がいい
0942nobodyさん2006/08/22(火) 14:51:47ID:???
コード書いて教えてくれればいいじゃん。
時間がもったいないだろ p
0943nobodyさん2006/08/22(火) 15:05:42ID:???
じゃ情報オリムピックの問題をPHPで解いてみよう
0944nobodyさん2006/08/22(火) 15:29:48ID:???
http://123#a,s
0945nobodyさん2006/08/22(火) 15:31:53ID:???
http://a
0946nobodyさん2006/08/22(火) 17:24:08ID:???
>>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
じゃないか?
09479462006/08/22(火) 17:25:02ID:bNxpCiwi
>>946
あーみにくくなった
出力例2は
4 1 1 1
じゃ無いかって事
0948nobodyさん2006/08/22(火) 17:46:54ID:???
>>946
例は間違ってないよ
三角不等式について調べてみるといい
0949nobodyさん2006/08/22(火) 17:48:09ID:???
>>948
あーごめん、問題文をきちんと把握出来てなかった。
途中で処理止めずに全部判定してたわテヘ
09509462006/08/22(火) 17:49:10ID:bNxpCiwi
ちなみにforeachを抜け出すっていうか終了させる方法って無いんだっけ?
ユーザ関数化しちゃえばいいんだけどさ
0951nobodyさん2006/08/22(火) 17:57:28ID:???
あるよ
0952nobodyさん2006/08/22(火) 18:05:04ID:???
>>943
先生!PHP却下です!!
>本選ではC/C++とJavaだけが使えます
0953nobodyさん2006/08/22(火) 18:09:08ID:???
だからあえてPHPで解くんじゃないの
0954nobodyさん2006/08/22(火) 18:16:11ID:???
>>952
はきっと自己判断が出来ないって言われるタイプなんだろうな
0955nobodyさん2006/08/22(火) 18:27:18ID:???
>>950
foreachを抜け出す処理をするユーザ関数を見てみたい
0956nobodyさん2006/08/22(火) 18:33:58ID:???
>>955
function hogehoge
{

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


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

自己過信気味で頭が硬直化してるのはむしろ喪前では?
0960nobodyさん2006/08/22(火) 19:10:44ID:???
文法ミスりまくりだし
ただ一つ目の要素返して終わりで何をしたいのかわからない
0961nobodyさん2006/08/22(火) 19:13:55ID:???
>>949
うそこくでねえだ
全部判定したら4 1 2 1だ
0962nobodyさん2006/08/22(火) 19:52:15ID:???
途中である条件を満たしたら中断したいようなループは
while使いたいな。
0963(^ω^)2006/08/22(火) 20:01:16ID:???
解答書くお
0964(^ω^)2006/08/22(火) 20:04:57ID:???
<?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));
?>
0965(^ω^)2006/08/22(火) 20:07:23ID:???
ごめん、直角三角形と鋭角三角形の部分に{ }が必要だった
0966nobodyさん2006/08/22(火) 20:14:52ID:???
DOMDocumentでファイルにXMLツリーを書き出すときの排他制御は
どうやるんですか?
0967nobodyさん2006/08/22(火) 21:07:08ID:???
そういえば、WinのApache 2.2.3でPHP5は使えるようになったのでしょうか?
0968nobodyさん2006/08/22(火) 22:00:57ID:???
開発のテストだけどさ、テストを行う根本的な理由はさ、運用開始したときにバグが発生してまいったなこりゃ
ってことにならないように行うものだよ

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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