2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :nobodyさん:2008/01/27(日) 18:17:59 ID:jK32tI//
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 62
http://pc11.2ch.net/test/read.cgi/php/1199956159/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで

2 :nobodyさん:2008/01/27(日) 18:19:14 ID:jK32tI//
【簡易FAQ】 (1/3)
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり

3 :nobodyさん:2008/01/27(日) 18:20:07 ID:jK32tI//
【簡易FAQ】 (2/3)
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照


4 :nobodyさん:2008/01/27(日) 18:20:39 ID:jK32tI//
【簡易FAQ】 (3/3)
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください


5 :nobodyさん:2008/01/27(日) 18:21:11 ID:jK32tI//
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://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/
■PECL本家(英語) http://pecl.php.net/

6 :nobodyさん:2008/01/27(日) 18:22:00 ID:jK32tI//
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 62
http://pc11.2ch.net/test/read.cgi/php/1199956159/
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1198002831/
【PHP】下らねぇ質問はここに書き込みやがれ 60
http://pc11.2ch.net/test/read.cgi/php/1196511516/
【PHP】下らねぇ質問はここに書き込みやがれ 59
http://pc11.2ch.net/test/read.cgi/php/1195204145/
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1194084457/
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
【PHP】下らねぇ質問はここに書き込みやがれ 56
http://pc11.2ch.net/test/read.cgi/php/1192092941/
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
【PHP】下らねぇ質問はここに書き込みやがれ 54
http://pc11.2ch.net/test/read.cgi/php/1189309377/
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/

7 :nobodyさん:2008/01/27(日) 18:24:19 ID:???
まあ一応使うけども

8 :nobodyさん:2008/01/27(日) 18:30:46 ID:Nkn4j03s
1000 名前:nobodyさん 投稿日:2008/01/27(日) 18:30:02 ID:Nkn4j03s
1000Get!!

9 :nobodyさん:2008/01/27(日) 18:33:32 ID:???
前スレ
>>997
国名でいいならAPNICのサイトからJPのIP割り当て範囲を調べ、
そのリストを作成してその範囲にマッチするか総当りチェック。
県名の場合は各プロバイダによるが、ホスト名から地域が推測できるので、
それのリストを作成してチェックする。

10 :nobodyさん:2008/01/27(日) 18:34:22 ID:???
で、スレ番61になってるが本来ここは63ね。

11 :nobodyさん:2008/01/27(日) 18:39:08 ID:???
> 991 名前:nobodyさん 投稿日:2008/01/27(日) 18:22:16 ID:IHMN/Cyj
> ああ埋まってしまう。
> >>983
> それでOKです。串さされたらどうしようもないですし。
> 方法を教えてもらえませんか?
> 専用の変数があるんでしょうか?

漏れ串でなければ、追いかけるのは不可能。その串のログでも
参照しない事には無理。
>>9が言うように、推測でやるしかないので、専用の変数(←これは
関数のことをいいたかったのかな?)というものももちろん無い。

12 :nobodyさん:2008/01/27(日) 18:44:53 ID:IHMN/Cyj
>>9
前もってリストが必要なんですね。
ご回答ありがとうございます。

>>11
HTTP_REFERER や HTTP_USER_AGENT みたいに
クライアントが発信する国名を
(もちろん情報発信はクライアント依存なんで正確性はアレですけど)
一発で取ってくれる方法があるかと思ってたんです。
そもそも国名なんかはこっちで推測するしかないんですね。
ご回答ありがとうございます。

13 :nobodyさん:2008/01/27(日) 18:47:52 ID:???
   _,,....,,_  _人人人人人人人人人人人人人人人_
-''":::::::::::::`''>   ゆっくりしていってね!!!   <
ヽ::::::::::::::::::::: ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
 |::::::;ノ´ ̄\:::::::::::\_,. -‐ァ     __   _____   ______
 |::::ノ   ヽ、ヽr-r'"´  (.__    ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
_,.!イ_  _,.ヘーァ'二ハ二ヽ、へ,_7   'r ´          ヽ、ン、
::::::rー''7コ-‐'"´    ;  ', `ヽ/`7 ,'==─-      -─==', i
r-'ァ'"´/  /! ハ  ハ  !  iヾ_ノ i イ iゝ、イ人レ/_ルヽイ i |
!イ´ ,' | /__,.!/ V 、!__ハ  ,' ,ゝ レリイi (ヒ_]     ヒ_ン ).| .|、i .||
`!  !/レi' (ヒ_]     ヒ_ン レ'i ノ   !Y!""  ,___,   "" 「 !ノ i |
,'  ノ   !'"    ,___,  "' i .レ'    L.',.   ヽ _ン    L」 ノ| .|
 (  ,ハ    ヽ _ン   人!      | ||ヽ、       ,イ| ||イ| /
,.ヘ,)、  )>,、 _____, ,.イ  ハ    レ ル` ー--─ ´ルレ レ´


14 :nobodyさん:2008/01/27(日) 18:50:21 ID:???
環境変数だとaccept-langが参考になるくらいだな
そういうデータ売ってるとこもあるかも知れんが
まあ必要なら答えてもらえばいい

15 :nobodyさん:2008/01/27(日) 18:57:43 ID:???
相手の国や県名を表示させるのって、それ自体が
製品となっているからな。今はそれを買うか、
全部自分で作るかの段階だろう。

16 :nobodyさん:2008/01/27(日) 19:02:00 ID:IHMN/Cyj
>>14
おお、これクライアントの希望指定言語を取得できるんでしょうか。
いいですね。
日本からのアクセスか、それ以外かで
英語表記と日本語表記を切り替えたいので、
こっちのほうが処理も軽そうです。

17 :nobodyさん:2008/01/27(日) 19:11:35 ID:???
>>16
それだけの目的ならHTTP_ACCEPT_LANGUAGE見るだけでいいよ
英語と日本語なら、jp以外を英語にしとけばいいんじゃない?
あとは切り替え用によくみる国旗のリンクみたいの用意しとけばOK

18 :nobodyさん:2008/01/27(日) 19:15:43 ID:???
>>16
クライアントで設定されているWebサイト閲覧の言語の優先順位情報だから適宜だね。
複数設定されてる場合はja,en-US;q=0.7,ko-KR;q=0.3とかになるんで留意の程。

19 :nobodyさん:2008/01/27(日) 19:16:48 ID:???
県って方言まで分けるつもりだったのかよ

20 :nobodyさん:2008/01/27(日) 20:21:13 ID:???
そのとおりだにょ

21 :nobodyさん:2008/01/27(日) 21:00:26 ID:IHMN/Cyj
>>17-18
アドバイスありがとうございます。
最初の二文字を切り取って判定するとよさそうですね。

>>19
言語判定だけじゃなくても保存しておけばソースとして有効でしょう。
情報は多いにこしたことはないかと。

22 :nobodyさん:2008/01/27(日) 22:49:36 ID:???
PHPを隠蔽するため、.htaccessで拡張子.htmlでも動くように設定しました。
.htmlで動くようにはなったのですが、404 NotFoundのエラーを返すときに完全な白紙になってしまいます。
これはなぜでしょうか。また解決法はないのでしょうか。ご教授お願いします。

CentOS5 , Apache2.1 , PHP5.1.6

-.htaccess-
AddType application/x-httpd-php .html
ErrorDocument 404 /error/404.html

-/error/404.html-
純粋なhtmlファイル


23 :nobodyさん:2008/01/27(日) 23:10:47 ID:???
>>22
エラーログにはなんか出てるの?


24 :スレ”管理”人:2008/01/27(日) 23:11:01 ID:???
このごろスレが荒れ気味なので、夜は私がこのスレの仕切り役をさせて頂きます。
昼は仕事で忙しいので、昼は誰か良心的な方が仕切って下さい。

宜しくお願いします。

25 :nobodyさん:2008/01/27(日) 23:24:13 ID:???
>>22
>>1

26 :nobodyさん:2008/01/27(日) 23:25:25 ID:???
  シュッ
      シュッ
 シュッ   ハ,,ハ  シュッ
 ハ,,ハ彡( ゚ω゚ ),ハ
( ゚ω゚ )彡ミ( ゚ω゚ ) >>24 お断りします
_(__つ/ ̄ ̄ ̄/_
  \/      /


27 :スレ””管理””人:2008/01/27(日) 23:37:50 ID:???
明日は仕事なので、今日はもう上がります。
昼の人、あとはよろしくお願いします。

28 :スレ”管理”人:2008/01/27(日) 23:49:18 ID:???
>>27
偽者ご苦労さまです。しかも、名前をそのままコピペしたのがバレバレですよ。

29 :nobodyさん:2008/01/27(日) 23:50:30 ID:JQB2UzdY
すみません、教えて頂きたいのですが、

本クラス
 private 名前
 private 値段

本棚クラス
 private 本を入れる配列

部屋クラス
 private 本棚を入れる配列


こういったクラスがあるとします。(ゲッター、セッターとかメソッドあり)
この時、部屋にある本の一覧を表示とかさせたい場合、どういった方法でやればいいのでしょうか?
foreachだとpublic以外取得出来ないみたいで、やり方がわからないんです。
よろしくお願いします。

30 :nobodyさん:2008/01/27(日) 23:52:15 ID:???
>>29
誰が取り出すんだ?

31 :nobodyさん:2008/01/27(日) 23:56:40 ID:???
ゲッターあるならそれで取り出せばいいじゃn

32 :nobodyさん:2008/01/28(月) 00:01:46 ID:2wjTZIh4
cent osを使っています。
http://centossrv.com/ では
mysqlとphpの連結は書いてありますが、
php+postgresqlの連結が書いてありません。
書いているサイトとかしっていたらよろしくです。
文字コードはmysqlはutf8でpostgresqlはEUC-JPを使いたいのですが
これでいいですか?
default_charset = EUC-JP
mbstring.http_output = EUC-JP
mbstring.internal_encoding = EUC-JP
mbstring.http_input = ASCII,JIS,EUC-JP,SJIS
mbstring.detect_order = ASCII,JIS,EUC-JP,SJIS
mbstring.substitute_character = none
もし板違いなら誘導をお願いします。
linux板で書いていたんですが、答えもらえず
ここにきました。
よろしくです。


33 :nobodyさん:2008/01/28(月) 00:07:57 ID:???
>>29
イテレータを定義すればforeachでも回るよ
詳しくは↓の奴が答えるから

34 :nobodyさん:2008/01/28(月) 00:09:51 ID:???
タンスの角に小指をぶつけて
いてれーたー。

35 :nobodyさん:2008/01/28(月) 00:26:09 ID:???
Javaじゃないんですうううううう

36 :nobodyさん:2008/01/28(月) 00:27:40 ID:???
>>32
mysqlとphpの連結ってのがどこに書いてあるのか分からんわ

入出力を自動でEuc-jpにしたい、ということなら encoding_translation=On が必要
ただこうしてもDBへのInsertなんかが勝手にEuc-jpになるわけじゃないからね
自前でmb_convert_encodingすることが必要で、これはアプリの実装次第

あとdefault_charsetでeuc指定すると、出力がUtf8決めうちの奴は化けるので夜露死苦

http://jp2.php.net/mbstring

37 :nobodyさん:2008/01/28(月) 00:44:29 ID:???
Iterator を implements して rewind(), valid(), key(), current(), next() あたりを作れば private でも foreach できる
この場合部屋クラスで IteratorAggregate を実装し、getIterator() によって Iterator を実装した自動回転式本棚クラスを返すようにすれば・・・

って PHP でわざわざそんなことするやつがおるかバカチン!

38 :nobodyさん:2008/01/28(月) 00:46:58 ID:???
ワロタw 本末転倒だなJavaって。

39 :nobodyさん:2008/01/28(月) 00:52:51 ID:???
もう全部publicでいいじゃんw

40 :nobodyさん:2008/01/28(月) 00:56:45 ID:???
何でオブジェクト指向プログラミングの話をPHPスレに来て
質問するのか良く分からないが、本棚クラスにPrivateで
今どの本を取り扱っているのかを管理する変数を置いてない
から、出来ないだけだろ。
これはPHPが悪いのではない。オブジェクト指向の理論を
理解していない方が悪いのだ。

41 :29:2008/01/28(月) 01:03:27 ID:???
すみません、オブジェクト指向はまだ理解してないです。

>イタレーション
http://www.shigeweb.jp/php/project_p/?section=php5oop&page=iteration
ここら辺りでいいんですかね、ちょっと読んでみます。

>PHP でわざわざそんなことするやつが
普通に配列でやった方がいいってことですよね?

42 :nobodyさん:2008/01/28(月) 01:14:30 ID:???
本当に勉強をする気があるのならば、PHPから離れて
「デザインパターン オブジェクト指向」とかでぐぐって
見た方がいいかと。
オブジェクト指向を学ぼうとしているのか、それとも
今目の前にある問題を解決出来ればそれでいい、
という考えなのか、良く分からないのだが。

43 :nobodyさん:2008/01/28(月) 01:14:57 ID:???
まあ本の一覧を取得するゲッターを書けばそれで終わる話だからね

44 :nobodyさん:2008/01/28(月) 01:19:07 ID:???
/error/ 内だけ AddTypeを戻してもだめ?

45 :nobodyさん:2008/01/28(月) 01:20:52 ID:???
>>22あてだった。

46 :質問:2008/01/28(月) 01:24:42 ID:CLWaFVui
phpでIMAPをやろうとしています。今

$arybox = imap_listmailbox($stream, $server, "*");

for ($i = 0; $i < count($arybox); $i++) {

list(,$name) = explode("}", imap_utf7_decode($arybox[$i]));

$line = explode(".", $name);
print ($line[count($line)-1]); ←この辺適当ですがw
}


のような感じでメールボックスの名前を表示させようとしています。
英語は問題ないのですが日本語のボックス名では文字化けと言うか
きちんと表示されません。
どのようにエンコードしても上手くいきません。
日本語できちんと表示させるにはどうしたらいいのでしょうか?
最終的にはUTF8で表示させたいのですが
よろしくおながいします。

47 :32です。:2008/01/28(月) 01:54:25 ID:2wjTZIh4
ってことはmysqlもeuc-jpにしたほうがいいかな?
;; 出力バッファリングを無効にする
output_buffering = Off

;; HTTP charsetヘッダを設定
default_charset = EUC-JP

;; デフォルトの言語を日本語にする
mbstring.language = Japanese

;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On

;; HTTP 入力エンコーディング変換を auto に設定
mbstring.http_input = auto

;; HTTP 出力を EUC-JP に設定
mbstring.http_output = EUC-JP

;; 内部エンコーディングを EUC-JP に設定
mbstring.internal_encoding = EUC-JP

;; 無効な文字を出力しない
mbstring.substitute_character = none

でいくもんね。
でもmysqlをeuc-jpに変えることってできるんですか?
パッケージインストールでも。


48 :nobodyさん:2008/01/28(月) 02:03:38 ID:???
>>47
なんかDB的に意味ない設定してるけど、運がよい場合に限り不具合は出ないだろう
mysqlの糞うざい自動コンバートの問題などもう少し調べたほうがいいかと思う

49 :29:2008/01/28(月) 02:11:46 ID:???
>>42
前もオブジェクト指向的な質問をしてJavaを勧められました。

何がやりたいのかというと、
処理を実行して作られたデータ(DBから取ってくるとか)を1つのオブジェクトに入れておいて、
表示する時にそのオブジェクトからデータを取って表示したいんです。
オブジェクトが1つならいいんですが、オブジェクトの中にオブジェクトとかになると…。
その辺りをどう処理したらいいのかわかなくて質問させて頂きました。


50 :nobodyさん:2008/01/28(月) 02:45:10 ID:???
>>49
結局あと何が問題なんだ?
自作クラスなんだからどうとでも好きなように作れるじゃん。
正しいポリモーフィズムで実装したいってなら話は別だが

51 :nobodyさん:2008/01/28(月) 02:58:13 ID:???
まずデータオブジェクトとそれに対する操作を分離して設計することを考える
データに対して「それを操作する」というアルゴリズムをオブジェクト見なす
データセットを舐めていく操作を最も汎用的な形にするとイテレータと呼ばれるものになる
これらをinterfaceや抽象クラスとして定義して利用する
データに操作を組み込みため、操作したいデータにinterfaceのメソッドを実装する

OO的思考

52 :29:2008/01/28(月) 03:04:19 ID:???
>>50
イテレータでいけそうです。
なんかオブジェクトの中のオブジェクトをとって、またその中の〜って感じで値を得るのが
いけてるのかな?と、もっと便利なやり方があるんじゃないのかと思ったのです。

質問に答えてくれた方々、ありがとうございました。

53 :nobodyさん:2008/01/28(月) 03:08:49 ID:???
>ブジェクトの中のオブジェクトをとって、またその中の

後学のためにRecursiveIteratorとかGoFのCompositeパターンを見ておくといいかも。
しかし部屋-本棚-本の場合はそういう発想にはあわないと思うね。

54 :29:2008/01/28(月) 03:12:14 ID:???
>>53
おお、ありがとうございます。
参考になりそうです。
やっぱりデザインパターンは大事なのですね。
勉強したいと思います。

55 :nobodyさん:2008/01/28(月) 03:29:30 ID:???
array $room->getShelf(pos)->getBooks([pos]) でいいんじゃないの

56 :nobodyさん:2008/01/28(月) 04:33:31 ID:???
PHPで共用メモリが使えるってんで鼻息を荒くしたんですが、
借りてるスペースでは使えないことが分かりがっかりしました。

どうすればいいでしょう?

57 :nobodyさん:2008/01/28(月) 04:54:15 ID:???
射精して落ち着いてください

58 :nobodyさん:2008/01/28(月) 07:50:37 ID:???
部屋に居る人間が、本棚を特定する場合、どういうやり方に
なるのか決めてるのかなぁ。
「1番目、2番目の本棚」という感じでやるんだろうか。
本棚に収まっている書籍の特定も、何番目という数値で
いいのか、それとも名前がつけられるのかによって書き方は異なる。
前者でよければ、本棚とか何とか言うのは辞めて、
おとなしく配列でやった方がコーディングや処理が
早い場合も多数ある。

59 :nobodyさん:2008/01/28(月) 08:41:43 ID:bzu6tb73
PHPのオブジェクト指向の考え方について質問させてください

class name($value) {
var $aaa = "hoge";
var $bbb = 100;
function getTotal($value2) {
$tax = $this->price * 0.05;
return $this->price + $tax;
}
}

こんな感じのスクリプトがあったとき(構文自体は間違いがあるかも)
$value や $value2 と引数?が入ってることがありましたけれども
これは例えばどこからこれらの変数に値が渡されて、
結果どのような変数に値がわたっていくのでしょうか?



60 :nobodyさん:2008/01/28(月) 08:51:21 ID:???
>>59
めちゃくちゃすぎで答えようがないっす

61 :nobodyさん:2008/01/28(月) 09:07:27 ID:bzu6tb73
60様
すみません。
質問の形を少し変えまして、$valueをこのクラスで活かすには
どのような形に書き換えればよろしいのでしょうか?
適当な例文などを示して頂ければ幸いです。

62 :nobodyさん:2008/01/28(月) 09:09:27 ID:bzu6tb73
重ねてもうしわけありません。
私が示しておりました文は確かにめちゃくちゃでした。
訂正いたします

class name($value) {
var $mono = "hoge";
var $price = 100;
function getTotal($value2) {
$tax = $this->price * 0.05;
return $this->price + $tax;
}
}

63 :nobodyさん:2008/01/28(月) 09:17:33 ID:???
>>60ではないけどひとつ言うと
classに引数は渡せない。

だから
class name
{
  var $aaa = "hoge";
  var $price = 100;

  function getTotal($value2)
  {
    $tax = $this->price * 0.05;
    return $this->price + $tax;
  }
}

なら分かるけど正直関数内で$value2が使われてないから無駄です。
$this->がついてるのはクラス内変数
何もついてないのは関数内変数(含 引数)。

64 :nobodyさん:2008/01/28(月) 09:20:01 ID:???
>>62
いいや・・・

まず1点。1行目の
>class name($value)
ここはクラス名の宣言やら継承するクラスなどの指定をするだけ。
引数があるのはおかしい。
class Name {
とするのが正しい。

>function getTotal($value2) {
引数に$value2を指定しているのにもかかわらず、
このスコープ内において一度も出てきていない=不要。

65 :nobodyさん:2008/01/28(月) 09:23:45 ID:???
それぞれの変数や関数が何をしようとしているのか推測しづらいので、レスも付きにくいかと。

クラスname : 商品を扱うクラス。商品名・単価をセットしたり、消費税を計算したりする。
$value : ?
$mono : 商品名
$price : 単価
getTotal : 消費税を加えた金額を取得する
$value2 : ?

パッと見では、クラスをnewする時に商品名・単価を設定したくて、それが$valueに入ってる?
$value2は分からん・・・getTotalの呼び出し元で一々代入せずに直接変数を設定してるつもりなのかな?

66 :nobodyさん:2008/01/28(月) 09:31:55 ID:???
class name {
  var $mono = null;
  var $price = 0;
  function setMono($butsu) {
    $this->mono = $butsu;
  }
  function getMono() {
    return $this->mono;
  }
  function setPrice($nedan) {
    $this->price = $nedan;
  }
  function getPrice() {
    return $this->price;
  }
  function calc($tax) {
    return $this->price * $tax + $this->price;
  }
}

$obj = new Name();
$obj->setMono("ペン");
$obj->setPrice(100);
echo $obj->getMono()."の定価は".$obj->getPrice()."円で、税込み".$obj->calc(0.05)."円です";

67 :nobodyさん:2008/01/28(月) 09:56:26 ID:???
>>66
なんでコンストラクタ使わないんだよ・・・。

function name($mono, $price)
{
$this->setMono($mono);
$this->setPrice($price);
}

って入れるだろ。

68 :nobodyさん:2008/01/28(月) 09:56:34 ID:bzu6tb73
63様、64様、65様、66様
私の文を訂正して頂きましてありがとうございました。
$value については、構文上正しくない書き方であることが分かりましたし
皆々様よりご丁寧な説明文とともに、納得のいく説明を頂きましたお陰で、正しく理解できたと思います。

$value2 についてなのですが、どうしてもこの変数(メンバ変数?)を使いたい場合は
66様の構文で言うところのどこに$value2を使ってあげるとよろしいのでしょうか?

重ね重ね至らぬ質問をいたしまして恐縮です。


69 :nobodyさん:2008/01/28(月) 10:03:03 ID:bzu6tb73
67様
お礼が遅れまして申し訳ありません。
ありがとうございました。

そのような構文の書き方ならば、functionの横に(引数)という形で書き入れても良いのですね。
参考になりました。
コンストラクタというのは、PHP5できちんと実装されたものだとマニュアルか何かで拝読いたしました。
私が使っている環境は、インターネット上のサーバに合わせている事もありPHP4.4.4をインストールしております。
そのような書き方でも大丈夫なのでしょうかと質問したいところなのですが
これは、自身で調べることにいたします。お手数かけまして恐縮いたします。



70 :nobodyさん:2008/01/28(月) 10:04:57 ID:???
>>68

>function calc($tax) {
> return $this->price * $tax + $this->price;
> }

で$value2の代わりに$taxつかってるだろ。
ちゃんと嫁。
$taxを$value2って名前にしても同じ。



#因みにcalcって変数名はどうかと思う。

71 :nobodyさん:2008/01/28(月) 10:15:37 ID:???
>>70
なんか横から聞いてて参考になった。thx!!

72 :nobodyさん:2008/01/28(月) 10:16:51 ID:???
ttp://www.scollabo.com/banban/php/php_11.html
このあたりに書いているのを自分なりにアレンジしようとしたのか?

73 :nobodyさん:2008/01/28(月) 10:57:17 ID:bzu6tb73
70様
ご指摘ありがとうございます。
お陰様で不明点がひとつ解決いたしました。

72様
実はそうなのです。
「コンピュータ」の部分や、「価格」の部分を変数から受け取る形を作りたくて
試行錯誤しておりました。
66様のように書いておけば、66様の下4行という形で「ペン」「100」「0.05」の値を
変数で渡すようにすることで実現可能なのだということがわかりました。

皆々様、ありがとうございました。


74 :nobodyさん:2008/01/28(月) 12:08:34 ID:???
>>73
見てるサイトが悪いと思う。あんな意味のない例題普通出さないわ。
まぁがむばれ。

75 :nobodyさん:2008/01/28(月) 12:22:18 ID:bzu6tb73
74様
励ましのお言葉ありがとうございます。
よろしければ、例題としてよい事例が挙げられているお勧めのサイトなど
ご存知でしたら、ご教授願えませんでしょうか?
質問にご回答頂いた上に厚かましい次第ですが、お聞き入れくだされば幸いです。

76 :nobodyさん:2008/01/28(月) 12:29:04 ID:???
>>75
とりあえず〜〜様ってのやめれ
安価に汁、激しく読みにくい

77 :nobodyさん:2008/01/28(月) 12:33:38 ID:???
>>76
様と殿と御中を使い分けるのは、匿名では不可能

78 :nobodyさん:2008/01/28(月) 12:41:20 ID:???
殿が貴方様を欲しております。御中

79 :nobodyさん:2008/01/28(月) 12:49:30 ID:???
ウォンチュ!

80 :nobodyさん:2008/01/28(月) 13:01:19 ID:???
最近のサイトはアフィがくっついてるからな。
URL出すと宣伝乙といわれるから、自分にあったのを探せとしかいえないね。
Javaのほうが説明上手いとこが多い。PHPと構文はほぼ一緒なので理解できるはず。

81 :nobodyさん:2008/01/28(月) 13:02:52 ID:???
>Javaのほうが説明上手いとこが多い。PHPと構文はほぼ一緒なので理解できるはず。

は???

82 :nobodyさん:2008/01/28(月) 13:18:47 ID:???
オブジェクト指向をやろうと思うのであれば、解説サイトを探す他に、
ソースを読むという方法もある。それ以外には自分なりに課題を決めて
やってみるのも手だな。
(例)認証をしてメインメニューに入るまでの過程のプログラムで、
認証をするオブジェクトと、メインメニューのオブジェクトを作り、
コーディングしなさい。IDとパスワードの確認は別ファイルにある
リストと一致するかを確認するものとする。

83 :nobodyさん:2008/01/28(月) 13:21:20 ID:wIYhLBDU
$varには、1と2しか値が入っていないこないと想定されるとき、

if ($var == 1) {

} else if ($var == 2) {

}

とするべきか、

if ($var == 1) {

} else if ($var == 2) {

} else {
// ここにエラー処理
}

とするべきかよく分かりません。
全てに後者の方法でやるとコードが冗長になるし、
「// ここにエラー処理」に何を書くべきかよく分かりません。

ご教授よろしくお願いします。

84 :nobodyさん:2008/01/28(月) 13:23:25 ID:???
つかマニュアル読めよ・・・。ありえん。

85 :nobodyさん:2008/01/28(月) 13:26:28 ID:???
84はbzu6tb73への言葉ね
>>83
俺だったらswitch-case

86 :nobodyさん:2008/01/28(月) 13:27:12 ID:???
>>83
上のほうで十分。あと、phpの場合は「elseif」と書く。
場合によっては下のほうも書くが、君がそれを何処で知ったのか。
その理由は何であるのか。を理解していないのであれば、
書くだけ無駄。

87 :nobodyさん:2008/01/28(月) 13:29:02 ID:???
>>83
$varが適切かどうかをチェックすれ

88 :nobodyさん:2008/01/28(月) 13:34:10 ID:???
例外処理を冗長とか言うなよw

89 :nobodyさん:2008/01/28(月) 13:35:14 ID:???
例外じゃないだろ

90 :nobodyさん:2008/01/28(月) 13:36:01 ID:???
>>86
別にelse ifでも良いだろ。

91 :nobodyさん:2008/01/28(月) 13:38:12 ID:???
>>90
>>86じゃないがPHPでもelse ifでかけるんだな。知らんかったわ。

92 :nobodyさん:2008/01/28(月) 13:39:12 ID:???
>>83
ここのような初心者向けスレで聞くと、その答えは前者になる。が、普通は後者。
動けばいい、安全性より速さ、落ちたらその時に考えればいいというなら、前者の方がベスト。

93 :nobodyさん:2008/01/28(月) 13:39:35 ID:???
>>89
1と2しか値が入っていないこないと想定されるときに1と2以外が入ってきた場合の処理は例外処理だろ。
try〜catchだけじゃ無いぞ。

94 :nobodyさん:2008/01/28(月) 13:42:46 ID:???
いないこない、がチョトカワイイw

95 :nobodyさん:2008/01/28(月) 13:43:40 ID:???
すいません確認したいのですが
$text = '0x41';
echo preg_replace( '/0x[0-9a-f]{2}/ie', 'chr($0)', $text);
のようなことは ereg_replace ではできないと考えてよいのでしょうか?

96 :nobodyさん:2008/01/28(月) 13:45:29 ID:???
外から入ってくるものならifの前に$varが1か2じゃなかったらexit
中からのものならelse{echo '$varがおかしいぞー';print_r($var);}
とかデバッグ用にやってる 本番には消す 俺たいていプリントデバッグだし

97 :nobodyさん:2008/01/28(月) 13:50:04 ID:???
チェック用のコードを本番で消すのか。俺は怖くてできんな。

98 :nobodyさん:2008/01/28(月) 13:50:24 ID:???
>>95
http://jp.php.net/manual/ja/reference.pcre.pattern.modifiers.php

> e (PREG_REPLACE_EVAL)
> この修飾子を設定すると、preg_replace() は、(略)…
> この修飾子を使用するのは、preg_replace()のみです。 他の PCRE 関数では無視されます。

99 :nobodyさん:2008/01/28(月) 13:53:49 ID:???
言葉が足りなかった 本番には(デバッグ用の定数読んで表示を)消す ね

100 :nobodyさん:2008/01/28(月) 14:00:11 ID:???
たま〜に出るものだけど、何かのアプリ使ってると「予期しないエラー」
と表示されるでしょ?それは、この場合のelseになった場合だよ。

>>90
それは知らなかった。でも、公式マニュアルはスペース無しだw

101 :nobodyさん:2008/01/28(月) 14:12:20 ID:???
>>98
オプションのeそのものが使えないのはわかるのですが
i の代わりになる regi のような文もあるかと思ったんですがなさそうですね。

102 :nobodyさん:2008/01/28(月) 14:41:06 ID:???
>>101
ケース無視ってことなら
http://jp.php.net/manual/ja/function.eregi-replace.php
とかあるけども。

103 :nobodyさん:2008/01/28(月) 14:45:36 ID:???
あ、ereg関連でeオプションに相当する機能があるのかなと疑問に思ったんですが
できないならできないで納得したので問題ないです。

104 :nobodyさん:2008/01/28(月) 14:47:10 ID:???
わざわざありがとうございました。
自由度が高いし高速らしいのでやっぱりpreg使ったほうがよさそうですね。

105 :nobodyさん:2008/01/28(月) 15:09:28 ID:???
eregはいらない子

106 :nobodyさん:2008/01/28(月) 15:10:10 ID:jMMNIxRZ
楽天APIのXML取得について教えてください。
<Response>
  <Args>
  〜中略〜
</header:Header>
<Body>
  <itemSearch:ItemSearch xmlns:itemSearch="〜">
   <count>151517</count>
   <page>3</page>
   <first>11</first>
   <last>15</last>
   <hits>5</hits>
   <carrier>0</carrier>
   <pageCount>100</pageCount>
  <Items>
<Item>
〜以下略〜

このXMLにある <count>から<pageCount>までの値を取得する方法を教えてください。
PHP5対応です。商品情報は取得出来たのですがここが出来ません。
ご指導お願いします。

107 :nobodyさん:2008/01/28(月) 15:10:35 ID:21Z67c9t
<A href="005.html" target="top">テスト</A>
<A href="a/031.php?test=1">hoge</A>
<A href="http://yahoo.co.jp">ヤフー</A>

こういうソースがあったとして、
これを、URLとテキストそれぞれを配列で取得するにはどうやったらいいのでしょうか

$url[0] = "005.htm";
$url[1] = "a/031.php?test=1";

$title[0] = "テスト";
$title[1] = "hoge";

上記のように取り出したいです

108 :nobodyさん:2008/01/28(月) 15:13:59 ID:???
拳銃についているサイレンサーを、サイレンを鳴らすものだと勘違いしてる馬鹿をどう処分しようかwww

109 :nobodyさん:2008/01/28(月) 15:18:46 ID:???
その拳銃でそいつを撃てばいいんじゃね?

110 :nobodyさん:2008/01/28(月) 15:29:08 ID:???
>>109
殺人教唆で通報します

111 :nobodyさん:2008/01/28(月) 15:41:06 ID:???
>>106
simplexml+xpathで抜き出すのがよろしかろう

>>107
preg_matchで抜き出すのがよろしかろう

112 :nobodyさん:2008/01/28(月) 15:41:57 ID:???
>>106
DOM

113 :nobodyさん:2008/01/28(月) 15:42:28 ID:???
>>111
htmlだってsimpleXMLやDOMで抜き出したほうが楽なのでわ?

114 :107:2008/01/28(月) 15:44:26 ID:21Z67c9t
>>111
ありがとうございます
調べてみます

115 :106:2008/01/28(月) 15:47:44 ID:???
$xml = simplexml_load_file($url);
$pageCount = $xml->Body->ItemSearch->pageCount;
echo $pageCount

上記のようにやってみましたがページが表示されません。
何か抜けているのでしょうか?
ちなみに商品データの方は

foreach($xml->Body->ItemSearch->Items->Item as $item){
  中略
}

このような形で取得が出来ました。

116 :nobodyさん:2008/01/28(月) 15:49:23 ID:???
>>114
preg_match_allだったわ
マッチ結果をforeachでぐるぐるすればOk

>>113
現実のサイトのhtml/xhtmlはxmlパーザで処理できないことはままある

117 :nobodyさん:2008/01/28(月) 15:53:12 ID:???
>>107
<html><body>
<?php
$str = '<A href="005.html" target="top">テスト</A>
<A href="a/031.php?test=1">hoge</A>
<A href="http://yahoo.co.jp">ヤフー</A>';
$a = split("\n", $str);
$a0 = split('"', $a[0]);
$url[0] = $a0[1];
$a1 = split('"', $a[1]);
$url[1] = $a1[1];
$a2 = split('"', $a[2]);
$url[2] = $a2[1];

$b0 = ereg_replace(">", "", $a0[4]);
$b0 = ereg_replace("</A", "", $b0);
$title[0] = $b0;
$b1 = ereg_replace(">", "", $a1[2]);
$b1 = ereg_replace("</A", "", $b1);
$title[1] = $b1;
$b2 = ereg_replace(">", "", $a2[2]);
$b2 = ereg_replace("</A", "", $b2);
$title[2] = $b2;

echo "$url[0] : $title[0]<br>";
echo "$url[1] : $title[1]<br>";
echo "$url[2] : $title[2]<br>";

?>
</body></html>

118 :nobodyさん:2008/01/28(月) 15:59:24 ID:???
ぉぃぉぃw

119 :nobodyさん:2008/01/28(月) 16:02:20 ID:???
さすがにネタだよな

120 :nobodyさん:2008/01/28(月) 16:04:36 ID:???
>>115
> $pageCount = $xml->Body->ItemSearch->pageCount;

×ItemSearch
○itemSearch

視力検査的な回答で悪いけど

121 :nobodyさん:2008/01/28(月) 16:08:59 ID:???
>>115
ページが表示されないとは?
echoに ; が無いようだけど

$pageCountに希望のデータが入ってないということなら
var_dump($xml->Body)するなどして変数の中身をチェック
基本は大事だよ〜

122 :106:2008/01/28(月) 16:10:50 ID:???
>>120
レスありがとうございます。
ご指摘いただいた所は承知しています。
小文字にしても表示出来ません。

ちなみに商品データのところも ItemSearch と大文字にしてありますが
これを itemSearch と小文字にするとエラーがでてしまうようです。

123 :nobodyさん:2008/01/28(月) 16:16:45 ID:???
>>122
そういえばsimplexmlはchildren()で名前空間の子要素を引っ張り出してから
処理しないと駄目だったかもw
まあぐぐって自己解決して

124 :nobodyさん:2008/01/28(月) 16:30:27 ID:???
$is = $xml->Body->children( namespace uri );
$pageCount = $is->children("")->pageCount;

めんどくさいな

list($pageCount) = $xml->xpath("//pageCount");

のほうが読みやすいと思う

125 :nobodyさん:2008/01/28(月) 16:40:11 ID:???
>>124
デフォルトの名前空間も引き継がないのか
おそるべしSimpleXML・・・

126 :106:2008/01/28(月) 16:48:49 ID:???
皆さんいろいろとアドバイスありがとうございます。
どの方法を試してみてもやはり駄目のようです。

もう少し調べて頑張ってみます。

127 :107:2008/01/28(月) 16:50:02 ID:21Z67c9t
>>116
できました!!!!!
ありがとうございます

>>117
例文ありがとうございます

128 :nobodyさん:2008/01/28(月) 16:52:00 ID:z4N7eEQg
<?php
Html("テスト");

function Html($test){
print <<< DOC
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
<html lang="ja">
<head>
<title>$test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>テスト</p>
</body>
</html>
DOC;
}
?>

このようなスクリプトがあるとして、ブラウザで見るとshift_jisと解釈されてしまいます。
metaとtitle要素の位置を入れ替えるとUTF-8で解釈されるようになるのですが
別のスクリプトではmeta、title要素の並びがこのままでもUTF-8と解釈されているものがあります。

スクリプトファイル自体は両方ともUTF-8で書いてありますしソースにも差異が見られないと思うのですが
(別のスクリプトからコピペしてきたものなので)
何か心当たりのある方はご教示頂けるとありがたいです。

phpのバージョンは5.2.5、ブラウザはIE系、サーバはhttpdを使ったlocalhostです。

129 :質問:2008/01/28(月) 16:56:05 ID:CLWaFVui

phpでIMAPをやろうとしています。今

$arybox = imap_listmailbox($stream, $server, "*");

for ($i = 0; $i < count($arybox); $i++) {

list(,$name) = explode("}", imap_utf7_decode($arybox[$i]));

$line = explode(".", $name);
print ($line[count($line)-1]); ←この辺適当ですがw
}


のような感じでメールボックスの名前を表示させようとしています。
英語は問題ないのですが日本語のボックス名では文字化けと言うか
きちんと表示されません。
どのようにエンコードしても上手くいきません。
日本語できちんと表示させるにはどうしたらいいのでしょうか?
最終的にはUTF8で表示させたいのですが
よろしくおながいします。

130 :nobodyさん:2008/01/28(月) 16:57:21 ID:???
>>128
ファイルはUFT形式で保存してる?
ソースでUTF-8を指定してもShiftJIS形式で保存していたら意味ないし。
と言うか実際にそう言うミスをしているヤツが会社にいたから。

131 :nobodyさん:2008/01/28(月) 17:15:33 ID:???
>>128
そのまま試したらブラウザではUTF8に解釈されたが

132 :nobodyさん:2008/01/28(月) 18:00:11 ID:???
>>128
http://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/charset.html#h-5.2.2
> META宣言は、少なくともそのMETA要素がパースされるまでの間はASCIIの範囲内のバイト値が
> ASCIIと同じ文字を表すような文字符号化方法が使われている場合にのみ用いることができる。
> META宣言は、 HEAD要素の、可能な限り先頭の方に現れねばならない。

というかheader()でcontent-type吐いてやるのがベストだと思うけど

133 :nobodyさん:2008/01/28(月) 18:01:44 ID:z2UAw/tw
>>130
ソースもUTF-8で保存しています。

>>131
あら、ちゃんと解釈されましたかorz
こちらはIE系だとダメでしたがFxだとUTF-8で解釈されていました。
もうちょっと調べてみます。

134 :nobodyさん:2008/01/28(月) 18:02:58 ID:z2UAw/tw
>>132
header()を使うのがベストなのはわかるのですが
同じように書いたのに挙動が2通りあるのが釈然としないのです。

135 :nobodyさん:2008/01/28(月) 18:04:41 ID:z2UAw/tw
あ、ID変わってますが128=133,134です

136 :nobodyさん:2008/01/28(月) 18:07:39 ID:???
>>128
html的には
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
のメタタグに関してはtitleより先にもってこないといけない

あとapacheとかphp側で吐いてるheaderによって文字コードが設定されてしまう事が多々ある
なので明示的にmb_http_outputで出力文字コードを設定してやれば
文字化けを起こすことはかなり低くなると思うけど

137 :nobodyさん:2008/01/28(月) 18:12:42 ID:???
>>134
わざわざ引用したけど全く読んでないみたいだな

138 :nobodyさん:2008/01/28(月) 18:38:13 ID:z2UAw/tw
>>136
サーバ側とかphp側の設定にもよるかもしれないですね・・・

>>137
meta要素が解析されるまで同じASCIIコードの文字コードが使われている時に
meta宣言ができるという解釈でいいですか?
この場合いきなりhtmlソースになったから文字コードの解析がおかしくなった、ということでしょうか。

139 :nobodyさん:2008/01/28(月) 19:14:11 ID:???
>>129
これで出来た。
mb_convert_encoding($val, "utf8", "utf7-imap")

imap_utf7_decodeは一体何のために・・・


140 :nobodyさん:2008/01/28(月) 19:18:01 ID:???
何のためにって西洋人のために決まってるだろ

141 :nobodyさん:2008/01/28(月) 19:18:56 ID:???
fsockopenを使ってSMTPサーバーからメールを送信したいんですがPOP BEFORE認証はどのようにやればいいんですか?

142 :nobodyさん:2008/01/28(月) 19:26:00 ID:???
>>141
ぐぐりまくれ

143 :nobodyさん:2008/01/28(月) 19:26:54 ID:???
>>141
前スレでも同様の質問があったな

788 nobodyさん [sage] Date:2008/01/24(木) 18:15:08  ID:??? Be:
    >>783
    http://phpspot.org/blog/archives/2005/12/pop_before_smtp.html
    これ読んでpopbeforsmtpで送れば?



144 :nobodyさん:2008/01/28(月) 19:33:43 ID:???
まずは理屈を知ってから。
http://mizushima.ne.jp/MailStructure/MailStructure.php


145 :nobodyさん:2008/01/28(月) 22:11:24 ID:hM6vuV4g
配列の中に配列を入れた場合がどうも苦手です。

$array1 = array('男','女','その他');
$array2 = array($array1,$array1,$array1);
print_r ($array2);
if(in_array('男',$array2))
{
echo "あり";
}
else
{
echo "なし";
}
として検索すると「なし」が出ます。
実行結果
Array ( [0] => Array ( [0] => 男 [1] => 女 [2] => その他 ) [1] => Array ( [0] => 男 [1] => 女 [2] => その他 ) [2] => Array ( [0] => 男 [1] => 女 [2] => その他 ) ) なし
どうすればいいでしょうか。

146 :nobodyさん:2008/01/28(月) 22:20:24 ID:???
$array1 = array('男','女','その他');
if(in_array('男',$array1)) 

echo "あり"; 

else 

echo "なし"; 



147 :nobodyさん:2008/01/28(月) 22:23:15 ID:???
phpは、ナルシスト言語だろ。
どういうことか、分かるよね。

148 :nobodyさん:2008/01/28(月) 22:26:18 ID:???
in_array()は配列中の値を調べるが、1次元の配列までしか調べることはできない。
$array2を1度分解して1次元の配列にすれば解決。

149 :nobodyさん:2008/01/28(月) 22:27:49 ID:???
>>145
$array1 = array('男','女','その他');
$array2 = array($array1,$array1,$array1);
print_r ($array2);
foreach ($array2 as $key => $ary1) {
  if(in_array('男',$ary1))
  {
    echo "あり index=>".$key."\n";
  }
  else
  {
    echo "なし";
  }
}

150 :nobodyさん:2008/01/28(月) 22:33:39 ID:hM6vuV4g
>>148-149 なるほど、そうだったのですか。どうもありがとうございました。

151 :nobodyさん:2008/01/28(月) 22:36:43 ID:E8VxvVW/
Header locationやjavascript出力でページ遷移させるときに、
そのURLにGETメソッドの形でパラメータつけていって、遷移先のページで
その情報をキーにしてページを生成させる場合があると思います。

そういう場合、移動先のページでユーザがブラウザのURL欄を編集して
こちらの想定外のページを表示させることがあると思うんですが、
こういう対処どうしたらいいんですか?
そんなバカなことする奴は無視?
それしきの細工で致命的な想定外動作を生むようなプログラム書くやつがアホ?
結構悩んでしまいます GETメソッドまったく使わないわけにいかないし

152 :nobodyさん:2008/01/28(月) 22:39:26 ID:???
>>151
ユーザは何するか分ったもんじゃないってことを前提にやっていかないとダメでふ。
要するに対策しないとダメってことでふ。

153 :nobodyさん:2008/01/28(月) 22:41:17 ID:???
>>151
そこまでは責任持たなくていいよ
xss対策だけしっかりしとけば

154 :nobodyさん:2008/01/28(月) 22:42:21 ID:???
>>152
なんでも、ユーザーのせいにするのは頭が悪い設計者の考え。
設計者は、あらゆるケースを想定して対策を講じなければいけないし、
そのようにしないと、一定のセキュリティーは保てない。

155 :nobodyさん:2008/01/28(月) 22:46:46 ID:???
>それしきの細工で致命的な想定外動作を生むようなプログラム書くやつがアホ?
致命的想定外を起こさないために当然チェックはしてるんでしょ?
必要な変数が渡されてるか、渡された変数が正しいものかとか。
おかしかったらページを生成せずに警告かえしとけばいいわけで。

156 :nobodyさん:2008/01/28(月) 22:55:36 ID:???
つまり、>>152は低脳ってことでFA??

157 :nobodyさん:2008/01/28(月) 22:56:40 ID:hM6vuV4g
すいません、もう1つ質問させてください。
phpからコマンド叩いて「rootユーザとしてログイン」して作業を行いたいんですが、
そもそもphpからrootユーザでのログインはできるんでしょうか。

158 :nobodyさん:2008/01/28(月) 22:58:22 ID:???
そんなバカなことする奴は無視? →無視
それしきの細工で致命的な想定外動作を生むようなプログラム書くやつがアホ? →アホ

お前の書いてるとおりだよ 両方

159 :nobodyさん:2008/01/28(月) 22:58:50 ID:???
コマンドってことは、BASIC認証のことでしょうか?
それをphpからっていうと、ソケットで送信することになりますが、可能です。

160 :152:2008/01/28(月) 23:02:52 ID:???
だから対策しないとダメって言ってんじゃんwwwww
叩いてる奴同一人物だろ?頭悪いな。

161 :nobodyさん:2008/01/28(月) 23:04:26 ID:???
>>157
sudoとか使えばいいんじゃない
基本的にそのままじゃ無理だと思うけど


162 :nobodyさん:2008/01/28(月) 23:06:15 ID:hM6vuV4g
いえ、例えば以下のような類のプログラムです。
<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?>

163 :nobodyさん:2008/01/28(月) 23:06:43 ID:eFFy9q14
ちょっとPHPとは違うんだけどさPHPをウインドウズ環境で開発してるんだけど・・・。

現在ウインドウズサーバに、VNCをインストールしてリモート操作しているが、やはり、これで接続して操作しようとすると、スクロール動作など反応が遅くやりづらいので、tera termなどの通信ソフトを使ってサーバをリモート操作しようと思います。
しかしこのソフトって本来リナックスサーバ用のソフトですよね。
私のように、ウインドウズをサーバにして使っているような環境でも動作するものなのかな?

164 :nobodyさん:2008/01/28(月) 23:09:27 ID:???
>>163
FTP鯖立てるんじゃだめなの?

165 :nobodyさん:2008/01/28(月) 23:11:51 ID:???
まったくPHPと関係ないですね。
普通の人はWindowsXPあたりで開発もするし、デバッグもApacheを入れて同じPC上で行う。

166 :nobodyさん:2008/01/28(月) 23:12:07 ID:hM6vuV4g
>>161 sudoでroot権限を与えていないユーザが踏んでもコマンドを叩くようにしたいのですが、

167 :nobodyさん:2008/01/28(月) 23:13:59 ID:hM6vuV4g
あれ、混乱してきた。。。そもそもexec系のプログラムでコマンドを叩く場合、誰が叩いていることになるんだ?スクリプトが置かれているところのユーザ?

168 :nobodyさん:2008/01/28(月) 23:14:34 ID:???
>>163
同一のローカルネットワーク内なら
ファイル共有しちぇばいいんじゃ?
というか激しくスレ違いな

>>162
ただのコマンドうちたいだけならそれでいいと思うんだけど
別にrootにならなくてもどーとでもできるよ?


169 :nobodyさん:2008/01/28(月) 23:17:48 ID:???
rootで作業するとはおそろしい

170 :nobodyさん:2008/01/28(月) 23:18:05 ID:hM6vuV4g
ルートにならなければできないコマンド、例えばユーザの管理とか。そういうこともrootにならずともできますか?

171 :nobodyさん:2008/01/28(月) 23:20:41 ID:???
>>167
apacheだったと思う

172 :nobodyさん:2008/01/28(月) 23:21:59 ID:???
apacheが動いてるユーザーじゃないの?

173 :nobodyさん:2008/01/28(月) 23:22:15 ID:???
そーゆことをphpでやる状況が想像できない

174 :nobodyさん:2008/01/28(月) 23:26:51 ID:???
apacheをrootで動かす状況が想像できない

175 :nobodyさん:2008/01/28(月) 23:33:33 ID:???
>>170
一応できる
まぁ
http://jp.php.net/manual/ja/ref.ssh2.php
こういうのいれてやる方がいいのかもしれない


176 :nobodyさん:2008/01/28(月) 23:40:25 ID:???
COMを使ってPHPからExcelファイルを作成しています。
そんで、改ページを挿入したいんですが、やり方が判らないです。
HPageBreaksメソッドを使えば出来ると思うのですが・・・

Ver等ですが、PHP5.1.2+Win2003です。


177 :nobodyさん:2008/01/28(月) 23:41:28 ID:5bZSpkHc
おっと、質問者はsage禁止か!

178 :nobodyさん:2008/01/28(月) 23:46:57 ID:hM6vuV4g
>>175 おーなんかいけそうな気がしてきました。ありがとうございます。

179 :質問:2008/01/29(火) 00:46:04 ID:8zOSMWfb
phpでIMAPをやろうとしています。今

$arybox = imap_listmailbox($stream, $server, "*");

for ($i = 0; $i < count($arybox); $i++) {

list(,$name) = explode("}", imap_utf7_decode($arybox[$i]));

$line = explode(".", $name);
print ($line[count($line)-1]); ←この辺適当ですがw
}


のような感じでメールボックスの名前を表示させようとしています。
英語は問題ないのですが日本語のボックス名では文字化けと言うか
きちんと表示されません。
どのようにエンコードしても上手くいきません。
日本語できちんと表示させるにはどうしたらいいのでしょうか?
最終的にはUTF8で表示させたいのですが
よろしくおながいします。

180 :nobodyさん:2008/01/29(火) 01:00:58 ID:???
>>139嫁よタコ

181 :nobodyさん:2008/01/29(火) 01:15:18 ID:???
>>180
ただの定期スパムだ気にするな


182 :nobodyさん:2008/01/29(火) 02:08:47 ID:???
何から何まで一発でやってくれる関数ってないもんかね

183 :nobodyさん:2008/01/29(火) 02:27:03 ID:???
>>182
つ「プログラマ」

184 :nobodyさん:2008/01/29(火) 06:29:06 ID:???
  ,'. : : : .::::/. : .', ::::::. : : : :l:i
  !: : : .::::;:'. : : : :' ,::::::. : : :l.:|
  ',: .::::::/. : : : : : :.ヽ:::::. : :l、!
   ト、:::/: : : : i : : : : ヽ::::::/ l
   ヽ. l: : : : : l : : : : : :lノ' ノ!
      l: : : : :ハ: : : : : :.lテ´ |'
      ,!: : : :i l:: : : : : l  /
     /!: : .::lーl:: i: : : :|            トトト---- 、
   _ /」: : :l:|  l:: |: : : :l- 、_         」        ヽイ
  /l l l: l: :|:l  l: |i: : : l l l ヽ      ミ   rn     〈
  ! l l !:l|: l!l  j/ l: : /l //  |    ス  ,ィ7」j l77¬. }¬、
  ! ヽヽ|! l:| | / /:.イ///  l  _rー┘lV t:::/ ! V z::: lー{ / _,\ >>182 頼む!一発やらせてくれ!!
  | | `l|ヽl! ___/'´/'´イ   l /'´/┴---- ' | ' ----┴ヘ ヽ.|
  l  !    | ┬/ '´   |   |{|_l_____/\_____| ヽ_〕
  ! :.l      !       !:.  l l/    | />  ̄` <ヽ__\ L「
  | ::.',     |       !:.  |      lハ  |  lc | / | |ヽ|
  ! ::::}     !       !::  l       l V l 、 l   !./ー' i
 / .:/    i      |:: |       i cV!_!_|'    |


185 :nobodyさん:2008/01/29(火) 07:27:13 ID:AL6Mrzhd
おしえてください

<td>
あいうえお 123456 </td>
<td>

数字だけを抽出したいのですがうまくいきません

preg_match('/<td>\n\s*.*\s([0-9]+)\s<\/td>\n<td>/', $buf,$match);

echo $match[1];

こういう場合は一旦全部抽出させてereg_replaceで「あいうえお」を削除したほうがいいのでしょうか

よろしくおねがいします



186 :nobodyさん:2008/01/29(火) 07:50:35 ID:???
>>185
状況によりけりだろ。「あいうえお」しかないのならばそれでいいけれど、
漢字とか含んでいたらどうする?

187 :nobodyさん:2008/01/29(火) 07:57:57 ID:???
ereg使うんじゃないの?


188 :nobodyさん:2008/01/29(火) 08:08:41 ID:???
>>185
もうちょっと条件を厳密にしないとちゃんとした正規表現作れないよ


189 :nobodyさん:2008/01/29(火) 08:50:53 ID:ak6dtF+8
>>185
$match = preg_replace("/[^0-9]/", "", $text);

190 :nobodyさん:2008/01/29(火) 08:59:06 ID:???
<td>
あいうえお 123456 </td>
<td>

html 自体おかしいな
http://w3g.jp/xhtml/dic/td

191 :nobodyさん:2008/01/29(火) 09:23:39 ID:AL6Mrzhd
レスありがとうございます
文字は固定なので一旦抽出してから削除する方法にしました




192 :nobodyさん:2008/01/29(火) 09:30:48 ID:rqLkKeN0
下記のようなリクエストをヘッダーで送信して、そのページで結果を表示させたいのですが。
-----------------------------------------
POST http://localhost/Project/POST_TEST/index2.php HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencode
Content-Length: 16

新宿 居酒屋
-----------------------------------------
これを$requestに入れて、
header($request);
header("Location: index2.php");
のようにしても、
「Header may not contain more than a single header, new line detected」
のようなエラーが出力されます。
どのようにしてPOSTを送信して、送信先のページに結果を表示させることができるのでしょうか?

193 :nobodyさん:2008/01/29(火) 12:38:45 ID:???
エラーの意味がわかれば答えが出そうなもんだが

194 :nobodyさん:2008/01/29(火) 12:57:49 ID:???
ソフトハウスに依頼すれば全部やってくれるぞ。

195 :nobodyさん:2008/01/29(火) 13:01:58 ID:???
しまった>>182へのつもりで送ってた。
作業してる間にログかなり流れてたわ。

196 :nobodyさん:2008/01/29(火) 13:04:59 ID:3emMDaRd
すんません教えてください
$a=123456;
$aをlong(4バイト整数)とした場合にこれの
上位ワード、下位ワードを取得して更に上位バイトと下位バイトにわける方法を教えてください
CでAPIを使ったイメージで言うと
awh=HIWORD(a);
awl=LOWORD(a);
abl=LOBYTE(a);
みたいな関数があったら教えてください・・

197 :nobodyさん:2008/01/29(火) 13:10:28 ID:???
若干スレ違いかもしれないけど、一応PHPの関数なんで質問。

chmod()でファイルをアップロード後に、特定のパーミッションにしてるんだけど
レンタルサーバーで試すと、エラーが出てしまう。
しかし、エラーが出ていてもちゃんとそのファイルのパーミッションは変更されているので
現在は@つけてエラー無視してるんだけど、何が原因なのかわからない・・
chgrp()、chown()などは利用することが出来ないレベルの権限です。

フォルダ構成は
[public_html/0755] - index.php
- [img/0777] - アップされた画像ファイル(これの権限)
- image.php(アップを実行しているファイル)
環境:
Server:FreeBSD/ PHP4.4.2 /スーパーユーザーの権限はなし。

よろしくお願いします。

198 :nobodyさん:2008/01/29(火) 13:11:11 ID:???
>>197
スレ違い以前の問題
まずは>>1を読め
あと何のエラーかぐらい表記しろ

199 :197:2008/01/29(火) 13:17:56 ID:R+uUiaBI
失礼しました。

該当箇所でのエラーは下記です。
Warning: chmod(): Operation not permitted in /エラーを出したファイルへのパス/


200 :nobodyさん:2008/01/29(火) 13:18:56 ID:???
>>199
chmod使わなくても勝手にパーミッション設定されたりしてない?

201 :nobodyさん:2008/01/29(火) 13:21:49 ID:???
>>198
知らないならレスしないでください。うざいです

202 :197:2008/01/29(火) 13:23:26 ID:R+uUiaBI
>>200
試しに該当箇所のソースをコメントし、ただ単純に
アップしてみたところ644になってました。

なぜ今回PHP上からパーミッションの変更がしたかったかと
いいますと、ユーザーが画像やテキストファイルなどをアップした場合
後に削除要望がある場合を想定して、ファイルの権限やパーミッションを
削除可能な権限にしておきたいと思ったからです。

203 :nobodyさん:2008/01/29(火) 13:25:36 ID:???
>>202
644でも削除可能だと思うんだが

204 :197:2008/01/29(火) 13:31:40 ID:???
>>203
ありがとうございます。おっしゃるとおりなんですが、
なぜエラーが出ているのに、変更は出来ているのかというのが
疑問でして・・
自分自身が設定希望のパーミッションは0755です。
0644でも問題はないのですが、パーミッションが変更出来ないなら
出来ないでいいんですが、出来ているのが気持ち悪いというか・・
よくわからない質問ですみません。

205 :nobodyさん:2008/01/29(火) 13:36:15 ID:???
>>196
直接Cのintのバイト列にはさわれないし、無理じゃないかなぁ。
それとも、単純にビットシフトをサボりたいだけ?
エンディアンはどーしたいの


206 :nobodyさん:2008/01/29(火) 13:39:07 ID:3emMDaRd
>>205
シフトできるんですか?できるならシフトでもかまいません。
Cみたいに普通に
$b=($a>>8)&0xFFFF;
ってできますか?

207 :nobodyさん:2008/01/29(火) 13:51:52 ID:???
やってみりゃわかる

208 :nobodyさん:2008/01/29(火) 14:04:23 ID:3emMDaRd
あ、できましたね・・・
HPみてもこれ載ってなかったからできないものと思い込んでました・・
ちなみにこれ知らなかったのでわざわざHEX文字にしてsubstrで2バイトとって
それをintvalでってめんどいことしてました。
あー!

209 :nobodyさん:2008/01/29(火) 14:08:03 ID:???
>>196
$long = 0xab1fe22;
printf("%08xh\n", $long);
printf("%08xh\n", $long & 0xffff);
printf("%08xh\n", ($long & 0xffff0000)>>16);
みたいのではだめ?
関数でやりたいんなら自作して使うとか。

210 :nobodyさん:2008/01/29(火) 14:08:33 ID:???
1ビットの右シフトは2で割ることと同じなわけで…

211 :nobodyさん:2008/01/29(火) 14:12:43 ID:???
質問です。

windows xpにApache2 + php4 + pear標準のみの環境で
XML UnserializerとXML Parserを制作しているphpプログラムの
libsディレクトリ内に配置して

ini_set('include_path', 'libs' . PATH_SEPARATOR . ini_get('include_path'));

っとインクルードパスを設定しているのですが

Fatal error: Class xml_parser: Cannot inherit from undefined class pear in 〜libs\XML\Parser.php on line 96

のようなエラーが出てしまいます。

これはPEAR.phpをインクルードできていないのでしょうか?
それとも他に原因があるのでしょうか?


212 :nobodyさん:2008/01/29(火) 14:16:33 ID:???
>>211
>>1

213 :nobodyさん:2008/01/29(火) 14:23:36 ID:3emMDaRd
>>209
すんません。
普通にシフトが使えたのでそれでできました。

214 :nobodyさん:2008/01/29(火) 14:41:58 ID:3emMDaRd
すんません。更に教えてください
例えば、
$b = sprintf( "%c%c%c%c%c", 1, 2, 3, 4, 5 );
としたときに、$b[2]の値(ここでは3)を取り出したいのですがどうすればいいでしょうか?
一応Cのバイトの配列をイメージしているのですがうまくいきません・・・

215 :nobodyさん:2008/01/29(火) 14:47:08 ID:???
>>214
ord($b[2])とかすりゃ出来るけどそんなことせんでも普通の数値配列ではダメなんか。
細々と質問するより全体として何をしたいのか書いたほうが良いんじゃないかな。

216 :nobodyさん:2008/01/29(火) 15:00:13 ID:3emMDaRd
>>215
嗚呼、またそういう便利なのがあるんですね数値配列とかって
そうです、まさにそれがほしかったのです・・・
それはどのようにしたらいいのですか?
ちなみに、やりたいことはというと、LANでバイナリデータを送信したいのですが
最初に送信すべきデータを$bufにぶちこんで、そのデータ和を求めてそれを最後に送信みたいな・・・
その和を求めるところでひっかかっています。

217 :nobodyさん:2008/01/29(火) 15:08:57 ID:3emMDaRd
>>215
ordでざっくりできました。
ありがとうございました。

218 :nobodyさん:2008/01/29(火) 15:27:08 ID:???
>>216
数値配列って言ったのはバイト配列型が専用にあるわけじゃなくてただ単に汎用配列型に数値を入れるという意味だったんだけどね。
なるほどそれなら文字列バッファのが都合がいいかもね。
http://jp.php.net/manual/ja/function.pack.php
http://jp.php.net/manual/ja/function.crc32.php
とりあえずこの辺も参考にはなるだろうか。

219 :nobodyさん:2008/01/29(火) 16:03:55 ID:3emMDaRd
>>218
ありがとうございます。
参考にさせていただきます。

220 :nobodyさん:2008/01/29(火) 16:47:11 ID:???
SQLでFROMにテーブル名.フィールド名って指定できなかったんだ/(^o^)\

221 :nobodyさん:2008/01/29(火) 16:48:44 ID:???
そこでフィールドまで指定しちゃったら何をSelectするんだよw

222 :nobodyさん:2008/01/29(火) 16:50:21 ID:???
>>221
いや、普通に検索すると糞重たいから
せめて付加減らそうとフィールドのみ読み込んでみたり・・・

1000万件もあるとやはり時間かかるなぁ・・・

223 :nobodyさん:2008/01/29(火) 16:51:41 ID:???
>>222
そのレコード数でインデクス貼ってないとかネタかよ
DB板でやれ

224 :nobodyさん:2008/01/29(火) 16:53:02 ID:???
>>223
DB板めんどいからいいや
INDEXの張り方がわからんから調べ中

225 :nobodyさん:2008/01/29(火) 16:53:43 ID:???
正規化せずに無駄なフィールドまで読んでるとかねたかよ
ドラゴンボール板でやれ

226 :nobodyさん:2008/01/29(火) 16:57:17 ID:???
じゃあ俺はシャア専用でやるぞ。

227 :nobodyさん:2008/01/29(火) 17:07:15 ID:???
ど、どうぞどうぞ

228 :nobodyさん:2008/01/29(火) 20:28:15 ID:???
今まで、PEARがインストールできなくて途中で諦めていたんだけど、
今日ふとしたキッカケで出来た。こんなに便利なものがあるなんて・・・
ぜひ使ってみることをお勧めします。

いや、宣伝ではないです。

229 :nobodyさん:2008/01/29(火) 20:30:09 ID:???
CakePHPを使ってからというもの
PEARのお世話にほとんどなっていない。
フレームワークとライブラリは違うものなはずなのになぜだろう?

230 :nobodyさん:2008/01/29(火) 21:09:38 ID:???
>>229
どうでもいいようなものしか使ってなかったって事だろ


231 :nobodyさん:2008/01/29(火) 21:11:07 ID:5qvQ61c2
mixiの日記で画像を一緒にアップすると
C:\Documents and Settings\Administrator\My Documents\11.3.jpg
みたいに保存されてたファイル先を表示してくれるけど
どうやったらでますか?
教えてくださいえらい人

232 :nobodyさん:2008/01/29(火) 21:14:23 ID:t20Dm/Gk
phpのインストールに関する質問です。今ソースから
./configure --with-apxs2=/usr/sbin/apxs --enable-magic-quotes --with-xml --enable-mbregex --enable-mbstring --enable-zend-multibyte --with-mysql=/usr/ --enable-ftp --with-zlib
インストールしようとしたのですが、
configure: error: Cannot find MySQL header files under /usr/.
Note that the MySQL client library is not bundled anymore!
xmlやらzlibやらのエラーは解決できたのですが、このエラーの解決方法だけ分かりません。
mysqlは/usr/下にあるのに。。。

233 :nobodyさん:2008/01/29(火) 21:16:08 ID:t20Dm/Gk
参考までに
find / -name mysql/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/var/spool/mail/mysql
/var/lib/mysql
/var/lib/mysql/mysql
ググってみると皆さんmysqlを/usr/local/mysqlディレクトリにインスコしているようで、、、
実はmysqlだけは手間省くためにパッケージマネージャからDLしたんです。

234 :nobodyさん:2008/01/29(火) 21:18:28 ID:???
>>231
ソースは見れないから本当の仕組みは分からないけれど、
ファイルをアップロードする時に、画像ファイルのパスもPOSTしていて、
それを表示しているんじゃないの?

235 :nobodyさん:2008/01/29(火) 21:18:48 ID:???
>>229
人がやっとPEARが使えるようになって大喜びしているときに、
水を差すような米しやがって、士ね。

236 :nobodyさん:2008/01/29(火) 21:25:09 ID:???
>>235
じゃ、そのまま知らない方が良かったの?w

237 :nobodyさん:2008/01/29(火) 21:41:12 ID:5qvQ61c2
>>234

POSTしてないようですね
javascriptかなんかかな
move_uploaded_fileじゃとれないんだよね


238 :nobodyさん:2008/01/29(火) 21:46:13 ID:???
>>232
devが入ってないんじゃないの

239 :nobodyさん:2008/01/29(火) 21:47:09 ID:???
>>236
PEARでこれだけの関数を提供しているんだから、それで十分だろ。
うるめいわし黙れ

240 :nobodyさん:2008/01/29(火) 21:50:21 ID:ez1qkwY6
すみません。
mb_encode_mime_header()について質問なのですが。

メールを送信するスクリプトがたまに送信に失敗するので調査していたところ
どうやら、送信先アドレス(to)がこちらが意図しない文字に
変換されていることに気づきました。

具体的には、文字の中に、'_'(アンダーバー)が入っているときに
エンコードしているようです。

この関数は必要なときだけエンコードする、と思っていたのですが
そうではないのでしょうか?


以下、試したことです。

kruser@saga /tmp]$ php -v
PHP 4.4.7 (cli) (built: Jan 5 2008 18:39:15)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

[kruser@saga /tmp]$ php -r "echo mb_encode_mimeheader( 'abc@example.com' ) ;"
abc@example.com

そのまま

[kruser@saga /tmp]$ php -r "echo mb_encode_mimeheader( 'a_bc@example.com' ) ;"
=?ISO-2022-JP?B?YV9iY0BleGFtcGxlLmNvbQ==?=

変換されてる


241 :nobodyさん:2008/01/29(火) 22:05:54 ID:???
>>237
いまいち話の流れが分からないので、具体的にソース書いてみる。

ファイル名:test.php
<html><body>
<?php
echo "<hr>";
echo $_POST["TENSOU"];
echo "<br><hr>";
?>
<form method="POST" action="test.php">
ファイル:<input type=file name="TENSOU"><br>
<input type=submit value=" 送信 ">
</form>
</body></html>


「POSTしてないようですね。」の意味もよく分からない。
そのmixiにPOSTが全く見当たらないという意味?

242 :232:2008/01/29(火) 22:40:52 ID:t20Dm/Gk
>>238 dev・・・というと?すいません、かなり低レベル初心者なもので。。。ちなみにmysql本体は動きます

243 :nobodyさん:2008/01/29(火) 22:44:42 ID:???
>>240
こちらの環境ではそういう問題は起きなかった。
なので、私にははっきりとした原因が分からない。
一度、違うバージョンのPHPで試してみるとかやってみるといいかもしれない。

あと、検索してて見つけたものを貼っておく。このあたりが関係しているかもしれない。
ttp://www.akiyan.com/blog/archives/2006/03/phpmb_encode_mi.html

244 :nobodyさん:2008/01/29(火) 22:53:29 ID:???
フレームワーク使ってPEARで開発すればいいだろ
なんで混同してるんだ?

245 :nobodyさん:2008/01/29(火) 22:57:32 ID:???
未だに、納得のいくフレームワークに落ち着かない。
もう自社開発しかねえな。

246 :nobodyさん:2008/01/29(火) 22:57:54 ID:???
>>242
俺は>>238ではないが、諦めてXAMPPを入れるとかどうかな?w
ttp://www.apachefriends.org/jp/xampp-linux.html
devというと、開発パッケージか、デバイスのことを意味するんだと
思うけれど、具体的には私も分からない。

247 :nobodyさん:2008/01/29(火) 22:59:45 ID:???
>>244>>245
続きはこちらのスレでどうぞ。

PHP総合雑談スレ
http://pc11.2ch.net/test/read.cgi/php/1200314111/

248 :nobodyさん:2008/01/29(火) 23:34:27 ID:ez1qkwY6
>>243

レスありがとうございます。
4系最新版の4.4.8と
5系最新版の5.2.5でそれぞれ発生することを確認してます。

また、少し前のバージョン(4.3だったかな?)の
mbstringのバグは知ってましたが
日本語のエンコードがおかしいわけではないので違うかな、と思ってました。
今は試せる環境にないので、明日にでも確認してみます。


ところで、そちらでは起きないとのことですが
バージョンはいくつでしょうか??


249 :nobodyさん:2008/01/29(火) 23:41:49 ID:RmUTKffD
聞きたいんですが、アップロードされた音声ファイルのフォーマットを変換したり、
任意のサイズまでダウンさせたり出来るプラグインとかないですかね?
画像のフォーマットを変えることが出来るんだしそんなのもひょっとしてあるかなぁーと
思って質問しました

250 :nobodyさん:2008/01/30(水) 00:11:06 ID:???
>>242
どこのディストリか知らんがヘッダーファイルをまとめた開発用パッケージが提供されているだろう
/usr下にインスコしたならヘッダは/usr/inclue/mysql*あたりにあるはずだからそこを指定してconfigure

251 :nobodyさん:2008/01/30(水) 00:13:23 ID:???
>>249
そういうコンソールアプリを拾ってきてphpから実行すればOk

252 :nobodyさん:2008/01/30(水) 00:29:20 ID:???
>>248
チラッとソース見た感じ仕様っぽいけど。
届かないってことは、もしかしてメールアドレスをmb_encode_mimeheader()にかけてるの?

253 :nobodyさん:2008/01/30(水) 00:40:07 ID:???
>>231
とりあえずmixiの画像アップページ(html)を何処かにアップしてみ。
それで答えが分かる。

254 :242:2008/01/30(水) 00:44:10 ID:e4VjwXRY
mysqlのソースから作り直すことにしました。
(mysql.comのmysql5.1downloadのページの一番下のsourceってやつでいいんですよね、、、ここが一番不安)
カイトーして./configureしてmakeしてmake installまで、けっこうつまづきましたが、できました。

で、データベースをインストールしようとしてmysql_install_dbを実行したもののエラー。
保留してデータベースにアクセスすると前パッケージマネジャでインスコしたときに作ったデータベースが残ってた。
てかパッケージからインスコしたsqlをアインストールするの忘れてたw
で、パッケージの方のsqlは削除できたんだが、ソースからのsqlはどうやって削除するのだ?

255 :242:2008/01/30(水) 00:45:58 ID:e4VjwXRY
初心者だけどwindowsにmysqlを導入するのは2時間かからなかった、つまづいたけど。
でもlinux(fedora)にソースから導入しようとすると、、、もうかれこれ半日は経ってる。。。

256 :nobodyさん:2008/01/30(水) 00:51:27 ID:???
Rubyのまつもとさんが、ブログでまたPHPをdisってるね。
毎度のことだけどさ。

257 :nobodyさん:2008/01/30(水) 00:55:07 ID:???
どっか天然だよなあの人

258 :nobodyさん:2008/01/30(水) 00:58:06 ID:???
>>254
--prefix つけた? /usr/local/mysqlとか

259 :nobodyさん:2008/01/30(水) 00:59:23 ID:???
だって モルモン教徒(笑) だもの

街中でヘルメットかぶって自転車にのっている
二人組みの外人。みたことあるでしょ?あれ。

260 :nobodyさん:2008/01/30(水) 01:01:42 ID:9pKjffNB
>>252

情報が小出しになって申し訳ありません。
実際のスクリプトではmb_send_mail()を使ってます。

内部ではmb_encode_mimeheader()を使っている、みたいなのを見て
テストのためにmb_encode_mimeheader()を使いました。
実際にメールが送られたら困ると思って^^;


よくよくマニュアルを見てみると
私が>>240で書いてる
「必要なときだけエンコードする」というのが間違いのようですね。
http://www.php.net/manual/ja/function.mb-encode-mimeheader.php
を見ると、日本語部分とアドレス部分が分けて処理されていました。

ご指摘の件、mb_send_mail()に渡されている"to"をもう一度確認してみます。


261 :nobodyさん:2008/01/30(水) 01:02:27 ID:???
>>256
読んできたけどなんか八つ当たりみたいな感じだなw

262 :232:2008/01/30(水) 01:20:25 ID:e4VjwXRY
>>258 つけてないっす。。。org

ずっとPCに張り付いててわけがわからなくなってきた、ここで整理。

windowsからlinux環境に移していて、linuxでデータベース(mysql)がうまく起動していないことが判明。
→phpinfo()を見てみると「--without-mysql」が指定されていることを発見。
→PHP再コンパイル試みるも./configureコマンドを叩くと「mysqlのheader fileが無い」と怒られる。
→血迷ったのかいきなりmysqlをソースからコンパイルし始めて5、6時間を潰す。。。
→整理していて泣けてきたので誰かエラー直してください org...

ちなみに>>250さんのいってたように/usr/include/ファイル探してみたんですが、mysql関連のものは無かったです。俺の半日...

263 :232:2008/01/30(水) 01:23:26 ID:e4VjwXRY
自己解決できない点がもう1つ。全部消したあとにもう1度インストールしてみても前のパスワードが残ってる。うーん

264 :nobodyさん:2008/01/30(水) 01:30:08 ID:???
→phpinfo()を見てみると「--without-mysql」が指定されていることを発見。
→PHP再コンパイル試みる ← 間違い

・mysql/mysqliのdsoをコンパイルする ← おしい!mysqlのdevelパッケージが必要
・yumでphp-mysqlを入れる ← せいかい!一番簡単!

あとはよそでやれ

265 :nobodyさん:2008/01/30(水) 01:37:29 ID:???
面白いからここでやれw

266 :232:2008/01/30(水) 01:53:02 ID:e4VjwXRY
php-mysql入れたんですが、、、いまだにwithout mysql かつ動かない

267 :nobodyさん:2008/01/30(水) 02:11:23 ID:???
>>256
PHPは現代では害悪
ttp://www.rubyist.net/~matz/20080126.html

失笑w

268 :nobodyさん:2008/01/30(水) 02:17:20 ID:???
こいつらの中ではプログラムが世界なんだな。なんかな。

269 :nobodyさん:2008/01/30(水) 02:23:29 ID:???
てかrubyって何?

270 :nobodyさん:2008/01/30(水) 02:37:20 ID:???
今まで知らなかったんならそのままのほうがいいよ
どうせ仕事にゃ使えないしw

271 :nobodyさん:2008/01/30(水) 02:53:41 ID:???
C>PerlときてPukiWikiいじるために今週からPHP始めたけど特に予備知識もなく使えるようになったのはすげーと思ったよ。
いい意味で敷居が低く、悪い意味で適当。
そりゃこんな楽なら普及するわと納得したよ。
楽過ぎて他のができなくなりそうなくらいにw

272 :nobodyさん:2008/01/30(水) 03:19:00 ID:???
わざわざ日記にレスするようなことするなよ。
漢は黙って放置だ。
PHPはきえるべきと主張してる人は少なくないけど、
そんな嫌われ言語を良い方向へ導いていこうぜ。

273 :nobodyさん:2008/01/30(水) 03:25:56 ID:???
駄目アプリが量産されるってしょっちゅう言ってるけど
ようするにエリートとしての自意識から善意で言っちゃうんだろうな

274 :nobodyさん:2008/01/30(水) 03:32:03 ID:???
こんな人間にはなりたくないと思った

275 :nobodyさん:2008/01/30(水) 04:51:54 ID:???
だったらPHPが良くなる方法を考えればいいのに

276 :nobodyさん:2008/01/30(水) 07:50:12 ID:???
PHP設計者曰く、PHPは言語じゃなくツールらしいな

277 :nobodyさん:2008/01/30(水) 08:09:50 ID:???
質問とその回答以外はこちらへどうぞ。

PHP総合雑談スレ
http://pc11.2ch.net/test/read.cgi/php/1200314111/

278 :nobodyさん:2008/01/30(水) 09:07:58 ID:Pk8IBekk
質問です
postが成功するまでwhileする物を作ったのですが
breakをbreaと書いてしまい永久ループになってしまいました。
このphpを閉じても30分ほど作動したままなのですが………
もしかしてサーバーサイド側でしか止められないのでしょうか?
それとも光速にpost命令が溜まっているだけでしょうか?


279 :nobodyさん:2008/01/30(水) 09:26:36 ID:???
Ruby開発者ってまだ生きてたんだ
てっきり歴代の人物かと思ってた

280 :nobodyさん:2008/01/30(水) 09:27:46 ID:???
readdir () でうpしたファイルが、古い順に上から表示されるのがうざい

281 :nobodyさん:2008/01/30(水) 09:28:37 ID:???
Rubyが普及しなくて焦っているのはわかるが、
他の言語・・・PHPが一番普及しているからって
たたいても何も変わらないぞ。

まず、Rubyは初心者にとっても使いやすい簡単な言語だと
認知させなきゃ。そして初心者が大量に増えて
セキュリティ問題で苦しめw

282 :nobodyさん:2008/01/30(水) 09:28:48 ID:???
>>278
php.iniの設定によると思う
PHPのタイムアウト値がデフォルトならそのうちとまる
タイムアウトが無効になってるならとっととアパッチ止めれ

283 :nobodyさん:2008/01/30(水) 09:29:36 ID:???
ふたばちゃんねるで使っているスクリプトを使って画像掲示板を試運転しているのですが、
スパム投稿には弱そうだと感じています

そこで、captchaのような機能を付加したり、そもそも本流のスクリプトがバージョンアップ
していればそういったものを使いたいと思っているのですが、この板内で探してみても
検索しても適当な場所が見つからずに困っています

該当するような機能の実装に付いて説明していたり該当するような強化版のような
スクリプトを配布しているところをご存知でしたらお教えいただけますでしょうか?
よろしくお願いいたします

284 :nobodyさん:2008/01/30(水) 09:35:17 ID:???
>>283
適当なcaptcha落とせばサンプルコードも付いてくるでしょ
経験的にあの手のスパムは手動だから、BBQで串はじいて、あとは管理スクリプトを自前で用意するしかないね
ブログだと、投稿IPとか指定単語で根こそぎデリるアドオンとかある

285 :nobodyさん:2008/01/30(水) 09:40:36 ID:???
スパム対策のスレ無かったっけ?
色々あるからぐぐれ

286 :nobodyさん:2008/01/30(水) 09:47:42 ID:???
レスありがとうございます

>>284
captcha側からコードを読んで実装するのが面倒なので、ふたばのスクリプトがバージョン
アップしていて、かつ配布されていないかと思って質問したのですが該当しそうなところは
ないものでしょうか?

>>285
上記のことに関連しますが、スパム対策のコードを埋め込んでというのが面倒なのです


該当するようなところは既に検索(Google)してみたのですが、
どこも2005年くらいでバージョンアップが止まっているようでして…

287 :nobodyさん:2008/01/30(水) 09:48:57 ID:???
一応webprog板なんだからもう少し歯に衣着せようよw

288 :nobodyさん:2008/01/30(水) 10:38:33 ID:9nM+3WHh
フォームの検索で、□円〜□円まで という仕様にした場合、
検索結果として「100円〜」「〜1000円まで」「100円〜1000円まで」
という3パターンがあるかと思います。(※値は仮です)

これをMySQLのWHERE部分として検索する場合、

if(!empty($price1) && empty($price2)){ //price1のみ
$search_key = "price>='$price1'";
}elseif(empty($price1) && !empty($price2)){ //price2のみ
$search_key = "price<='$price2'";
}elseif(!empty($price1) && !empty($price2)){ //両方
$search_key = "price BETWEEN '$price1' AND '$price2' ";
}

としているのですが、ソースが長くなりすぎて困っています。
何か良い書き方はないでしょうか?

289 :nobodyさん:2008/01/30(水) 10:47:38 ID:???
>>288
最小の場合を0、最大の場合を99999999とか決めておけばよくね?

290 :nobodyさん:2008/01/30(水) 10:53:39 ID:???
>>288
いいじゃんそれくらい

291 :288:2008/01/30(水) 11:27:38 ID:???
>>289
そうすると、それようのソースも検索項目毎に必要になるので
ソースの簡略化にはならないと思うんです。
>>290
もちろん、出来るから良いのですが、同じような範囲検索項目があると、
ソースが長く成りすぎるので、それが何とか出来ないものか?と思い、質問しました。

292 :nobodyさん:2008/01/30(水) 11:29:06 ID:???
>>291
> それようのソースも検索項目毎に必要になるので

クラス化しとけばいいじゃん
あと、ID出せカス

293 :288:2008/01/30(水) 11:37:35 ID:???
>>292
クラスかですか。クラスというか、多少関数化しているのですが
もう少し考えてみます。

あと、一度質問した後はsageにするのがルールだと思うので、
なにもカス呼ばわりしなくても・・・

294 :nobodyさん:2008/01/30(水) 11:39:02 ID:???
>>293
>>1を100回読んでから死ね

295 :nobodyさん:2008/01/30(水) 11:44:59 ID:???
ageたらsageろと言われ、sageたらID隠すなと言われる。

それが2ちゃんクオリ(ry

296 :nobodyさん:2008/01/30(水) 11:45:08 ID:???
前から必死にID出せと煽るおかしな人がいるので無視でいいよ

297 :nobodyさん:2008/01/30(水) 11:46:38 ID:???
>>295
各スレにテンプレあるのはご存知で?

>>296
あれ?
> ・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)

これ読めないの?

298 :nobodyさん:2008/01/30(水) 11:47:24 ID:???
if (!$price1) $price1 = "0";
if (!$price2) $price2 = "0";
$search_key = "price BETWEEN '$price1' AND '$price2' ";

299 :nobodyさん:2008/01/30(水) 11:48:11 ID:???
>>297
KY

300 :nobodyさん:2008/01/30(水) 11:52:03 ID:???
>>298
> (!$price1)

実際この書き方ってどうなのかな?
Noticeエラーでも気になってしまうから、ついついisset使ってしまう

301 :nobodyさん:2008/01/30(水) 11:53:17 ID:???
>>288がIDかくして暴れていると聞いて飛んできました

302 :278:2008/01/30(水) 11:59:09 ID:???
>>282
そのphpを閉じた場合のセッション、タイムアウトがあるんですね
30分続いているということはタイムアウトは長いというより、無効ですよね…


303 :nobodyさん:2008/01/30(水) 11:59:49 ID:???
>>302
>>1

304 :nobodyさん:2008/01/30(水) 12:06:19 ID:???
>>300
いきなり使うなら、issetとか、@とか使うのもOKだろうけど、
この場合あらかじめ $price1 = $_POST["foo"] とかで、あらかじめ何らかの値が代入されているという条件があると思って書かなかった。
>>302
デフォルトなら、max_execution_time以上のCPU時間を使うとdieされるし、
そもそもbreaなんて書いたらコンパイル時にはじかれて、実行できないと思うのだが。

305 :nobodyさん:2008/01/30(水) 12:07:39 ID:???
>>304
あれ?
$price1 = $_POST["foo"]
これでPOSTが空でもNotice出なかったっけ・・・
勘違いかな

306 :nobodyさん:2008/01/30(水) 12:16:51 ID:Pk8IBekk
>>304
>コンパイル時にはじかれて、

そういえばそうですよね……あれ?
max_execution_timeを見てきます

307 :nobodyさん:2008/01/30(水) 12:56:50 ID:iTZE6D8S
PHPで処理にかかったCPU時間を計測する方法ってないですか?
手軽にパフォーマンス測定したいだけなんだけど、デスクトップだと色々とノイズが多いので。

使ってる PHPは Ver5.2です。

308 :nobodyさん:2008/01/30(水) 13:01:26 ID:???
>>307
> デスクトップだと色々とノイズが多いので
この部分がいまいち良く分からない。
デスクトップ上ですべてを動かすんじゃなくて、
サーバを別にするしかないんじゃないの?

309 :nobodyさん:2008/01/30(水) 13:05:17 ID:iTZE6D8S
>>308
手軽に試したいだけ。

たとえば、頻繁に呼ばれる関数内で、要素が数個の配列を毎回生成するのはコスト的に
どうだろうかとか、そんなレベルの話。

デスクトップで実行して実時間を計測しても、イマイチ信用できないし。


310 :nobodyさん:2008/01/30(水) 13:09:35 ID:???
>>309
実行時間の計測にはPEAR::Benchmark_Timerとかかなぁ。
PHP以外のプログラムを使って計測したいのならば、別な板の
話になると思うけど。。。

311 :nobodyさん:2008/01/30(水) 13:15:21 ID:???
>>309
Xdebugのプロファイラとかでも使えば?

312 :nobodyさん:2008/01/30(水) 13:27:39 ID:iTZE6D8S
>>310
http://pear.php.net/manual/ja/package.benchmarking.benchmark.timer.php

これですか、すばらしい。
ぐぐったら、 http://www.1x1.jp/blog/2006/10/php_source_tips.html も見つかったんだけど、
array_push が [] = より 60%も遅いというのは、ちょっとショック。
array_push の方が変数名間違えたときに警告メッセージが出るから好きなんだけどなぁ。

>>311
こちらも調べて見ます。


どうも、ありがとうございました。



313 :nobodyさん:2008/01/30(水) 14:22:33 ID:02p0qHbL
printよりechoのほうが軽いのか
まぁ、何も返さないからかな?
今までmicrotime()で頑張って計算してたが、PEAR::Benchmark_Timerが便利すぎて泣いた

314 :nobodyさん:2008/01/30(水) 16:39:05 ID:???
>>313
だから、CakePHPなんかよりPEARのライブラリーの方が使い勝手がいいってことだよ。
だって、PEARは日本語に直すと、梨。問題なし、なんちゃって(核爆)

315 :nobodyさん:2008/01/30(水) 16:42:07 ID:???
           ,. - ── - 、
       r'つ)∠───    ヽ
      〆⌒  ̄ ̄ ̄ \__r 、  \
     ,.イ      ,イ    \ヽ,\rv-,
    ヾイ    /{ { ヽ、ト、  \Y <ノノ\
    {  .ト{\ヽ',  メ __\  } ⌒ヽ }へ
     ゝ  |"ひ)  \  イびゞ \ ヽ- 、ノ   // >=
     ノ  ト、"´,.     ー ノ ///\/ /    \
    /.  {   ゝ     /  レ//  } Y´      \
    {   ヽ  ヽ⌒>  /    レ´TTア⌒>、_    \
    V{   \ └ ´  / ,.イ/  /ll |   /≦__    }
      V{   >ー┬|/  ! ,.イノ || |  /   ̄ ̄ ̄  /
       リヽイ|   /:| l _|' '´  || |  |     _/
        /{{ |   |===|    || |   __/
       /し|| |   |== /   // | /,.イ
      /  ヽヽ  l==|  / /    l
     /    イ\  \=|  ///    〃
    〈  ≧ー <   ミ  ヾ| //      ト
     \    \  \>∠、     /\
      \    \ <〆ハ ゝ  _/   \
        {  / ̄> X〜ヾ´ ー'´       \
         ̄</⌒Y         \     ',
            \/        ノ   |     ',
          _/       / /  |/    ト、
        /   /  \     /   |ー    } ヽ
        \/         /    l       /
          ト、        /   _ l      /
          / ヽ/____/┬─ 、____/
           /       ノ   |        /
           /      /    l       /


316 :nobodyさん:2008/01/30(水) 17:07:21 ID:???
北京オリンピックだな

317 :nobodyさん:2008/01/30(水) 18:26:07 ID:???
class Hogehoge{
public function __set($name, $value){
echo "Hogehoge::__set".$value;
}
}
class SimpleXMLElement2 extends SimpleXMLElement{
public $obj;
public function __set($name, $value){
echo "SimpleXMLElement2::__set".$value;
}
public function setObj($obj){
$this->obj = $obj;
}
}
$hogehoge = new Hogehoge();
$hogehoge->hoge = '11111';

$simpleXMLElement2 = new SimpleXMLElement2('<?xml version="1.0" encoding="utf-8"?><hoge></hoge>');
$simpleXMLElement2->hoge = '22222';
$simpleXMLElement2->obj = $hogehoge;
$simpleXMLElement2->setObj($hogehoge);

出力結果:
X-Powered-By: PHP/5.2.5
Hogehoge::__set11111<br />
<b>Warning</b>: It is not yet possible to assign complex types to properties in <b>*****</b> on line <b>20</b><br />
<b>Warning</b>: It is not yet possible to assign complex types to properties in <b>*****</b> on line <b>13</b><br />

最終的な目的はSimpleXMLElementを継承したクラスのプロパティにオブジェクトを格納したい。
string以外なのでWarningが出るので、__set()をオーバーライドしてしまえと思ったが、どうもSimpleXMLElement2::__set()が機能してないようだ。
何かが悪いのか、__setを使わない方法があるのか、別な実装方法があるのか・・・
手が空いている方がいましたら、お手数ですが教えていただければと思います。

318 :nobodyさん:2008/01/30(水) 18:27:32 ID:???
PEARの日本語マニュアルなんてあったんだ…

319 :nobodyさん:2008/01/30(水) 20:04:09 ID:???
>>314
> だから、CakePHPなんかよりPEARのライブラリーの方が使い勝手がいいってことだよ。

両方組み合わせ使うもんだろw
フレームワークとライブラリじゃ役目が違う。

全体的な構造にCakePHP(やそのほかのフレームワーク)を使い
局所的な部分にPEARなどのライブラリを使う。

320 :nobodyさん:2008/01/30(水) 20:31:55 ID:???
xmlのノードにオブジェクトを追加してどうすんのさ

321 :nobodyさん:2008/01/30(水) 20:54:23 ID:???
>>319
ずばり言うわよ。

Smartyを使いなさい。

322 :nobodyさん:2008/01/30(水) 21:32:04 ID:???
すみません。現在携帯向けのホームページを作っていまして、トップページでは以下PHPのUA判別でPCページへ振り分けしているのですが

<?php
$ua = $_SERVER["HTTP_USER_AGENT"];
if(ereg("DoCoMo|J-PHONE|Vodafone|MOT|SoftBank|UP\.Browser|~ /^KDDI/|DDIPOCKET|WILLCOM",$ua)){
header("Location: モバイルページURL");
exit;
} else {
?>

<HTML>
PC用ページhtml
</HTML>

<?
exit;
}
?>


それ以外のページで同様に携帯以外(上記PHP内UA以外)からのアクセスを全てトップページ(PC用ページ)に飛ばすようにするにはどうすればよろしいでしょうか?
このPHP自体は以前に検索で見つけたものなのですが、今検索するとどのページで見たものかわからず困っております。(-.-;
どうかよろしくお願い致します。


323 :nobodyさん:2008/01/30(水) 21:38:41 ID:???
>>322
!でif文を反転させればいい

324 :nobodyさん:2008/01/30(水) 21:42:37 ID:???
smarty最新版落としたいんだけど、www.smarty.netが
昨日から死んでるだわ。どっかで最新版落とせるところない?

325 :322:2008/01/30(水) 21:50:30 ID:???
>>323
すみません、PHP全くわからなくて申し訳ないのですが
どこに"!"をつければよろしいでしょうか?

326 :nobodyさん:2008/01/30(水) 21:56:03 ID:???
>>325
ちょっとは調べろ屑が

327 :nobodyさん:2008/01/30(水) 21:56:51 ID:???
全くわからなすぎるな

328 :322:2008/01/30(水) 21:58:05 ID:???
すみません!自分でやってみて上手くいきました。
どうもありがとうございます!

329 :nobodyさん:2008/01/30(水) 22:00:02 ID:???
>>325
if(!ereg("DoCoMo|J-PHO ...

header("Location: http://www.example.com/pc.html");

ここはプログラム書く人の板なんでそういう質問は嫌われるよ
丸投げスレに持ってくると誰かやるけど

330 :nobodyさん:2008/01/30(水) 22:04:41 ID:???
>>317
何でObjectが突っ込めると思ったのか理解できない
永続化が必要ならJSON使うなりSerializeするなり汁

331 :nobodyさん:2008/01/30(水) 22:25:08 ID:???
>>321
> Smartyを使いなさい。
CakePHPを使ってから、Smartyに興味がなくなったな。
PHPという言語自体がテンプレートに近いものだから、
ロジックとビューがちゃんと分かれていれば、そのままで問題が無いことに気づいた。

332 :nobodyさん:2008/01/30(水) 22:31:46 ID:k3DrvwtH
http://zapanet.info/blog/item/1217

> PHP使ってるヤツらって
> htmlspecialchars($_GET['text']);
> こんなコード書いてる!
> m9(^Д^)プギャー

とありますが、上のコードの何が問題なんでしょうか?
教えて下さい。

333 :nobodyさん:2008/01/30(水) 22:32:21 ID:???
cakeおすねぇ

>PHPという言語自体がテンプレートに近いものだから、
>ロジックとビューがちゃんと分かれていれば、そのままで問題が無いことに気づいた

同感

334 :nobodyさん:2008/01/30(水) 22:32:36 ID:???
スレ違いだがSmartyもCakeもあんま好きくないな
Smartyは協業する上で何かしら標準が必要だから使ってるだけ
これはCakeを使おうが代替できない機能

やっぱフォーム-ロジック-DBの操作を楽にしてくれてウィジットを
サポートするモダンなFWじゃないと
ルール縛りだけではやはり時間が掛かるよ、柔軟性もないし

335 :nobodyさん:2008/01/30(水) 22:36:49 ID:???
> Smartyは協業する上で何かしら標準が必要だから使ってるだけ
> これはCakeを使おうが代替できない機能

なんで?Cakeの方が幅広く協業できると思うけど?
SmartyはCakeのビューの部分だけでしょ。協業できるのは。


> やっぱフォーム-ロジック-DBの操作を楽にしてくれてウィジットを
> サポートするモダンなFWじゃないと
それなら、Smartyなんて問題外じゃん。


336 :nobodyさん:2008/01/30(水) 22:37:24 ID:???
>>332
正しいエスケープの方法は誰も知らないから適当でいいよw
HTML用とMySQL用ではやり方違うしwww

337 :nobodyさん:2008/01/30(水) 22:38:56 ID:???
ロジックとビューを分けるのってやっぱ物理的にファイルを分けてる?
そうするとポストバックが結構面倒だけど、なんかいい方法無いかね。

338 :nobodyさん:2008/01/30(水) 22:39:48 ID:???
>>332
読んでないけど、システムの抽象度が低いとかいうことかな
そういうコードをいちいち書くのはうっかりミスという脆弱性の温床になる
しかし標準出力がかってにエスケープされる言語なんて存在しないわけで
小さいアプリじゃごく自然な対応だと思うけどね
あるいはhtmlspecialcharsはNULLですり抜けられた時代に書かれた文章かな

339 :nobodyさん:2008/01/30(水) 22:40:34 ID:???
>>335
よく読んでからレスしてね

340 :nobodyさん:2008/01/30(水) 22:43:08 ID:???
>>337
> ロジックとビューを分けるのってやっぱ物理的にファイルを分けてる?
> そうするとポストバックが結構面倒だけど、なんかいい方法無いかね。

だから、そのいい方法(の一つ)がCakePHPのやり方なんだってw

341 :nobodyさん:2008/01/30(水) 22:43:48 ID:???
>>339
レスは意見のみ受け付けます。さようなら。

342 :nobodyさん:2008/01/30(水) 22:47:07 ID:???
>>335
貴方はオブジェクト指向病にかかっていると思われ
自力学習の間は時間が無限大なのでそれでやっていけるが
社会に出るとその時間がなくなりスパゲッティーコードを生産する作業に変わりますw

343 :nobodyさん:2008/01/30(水) 22:47:32 ID:???
>>341
めんどくさいから正直に書いちゃうけど、バカなワナビー君には理解できないんだねえ
だからその上での議論も成り立たない、言いっぱなしで生産性もない、と
反省しなさいよ

344 :nobodyさん:2008/01/30(水) 22:49:09 ID:???
>>340
やっぱりフレームワークに頼るしかないかぁ。

345 :nobodyさん:2008/01/30(水) 22:49:54 ID:???
>>342-343

どう思いますか?このレス。

勝手な想像ばかりで
中身が無いと思ったあなたは正常です。

346 :nobodyさん:2008/01/30(水) 22:52:04 ID:???
>>345
自分の意見と同意以外は受け付けない、自分の意見に反する相手に攻撃的になる
これは立派なオタクの症状ですw

347 :nobodyさん:2008/01/30(水) 22:52:23 ID:???
>>345
やっぱ簡単な皮肉でさえ文意が取れないのね、バカはいやだねえ

348 :nobodyさん:2008/01/30(水) 22:52:56 ID:???
そんなにSmartyが使いたければ、
CakePHPの一部のビューの部分にSmartyを使えばいいだけのこと。
CakePHPはSmartyなんかよりも幅広いものを対象としているので、
それでCakePHPを使わないという理由にはならない。

349 :nobodyさん:2008/01/30(水) 22:53:18 ID:???
>>346
必死だぞw

350 :nobodyさん:2008/01/30(水) 22:53:37 ID:???
>>347
必死だぞww

351 :nobodyさん:2008/01/30(水) 22:54:54 ID:???
ごめん
CakePHP使ってみようと思ったがなんかキモい奴になりそうでやめたわw

352 :nobodyさん:2008/01/30(水) 22:55:30 ID:???
議論はこちらでどうぞ。

PHP総合雑談スレ
http://pc11.2ch.net/test/read.cgi/php/1200314111/

353 :nobodyさん:2008/01/30(水) 22:55:54 ID:???
>>349
世の中の全ての人間が、自分と同じ意見を持つという期待は持たない方がいい

354 :nobodyさん:2008/01/30(水) 22:56:26 ID:???
>>348
だれがそんなにSmarty使いたいのか知らんけど
幅広いと言ってもCakePHP⊃Smartyでないことはすでに指摘されてる
CakePHPを使わずSmartyを使えと言うレスは見当たらないけど?

355 :nobodyさん:2008/01/30(水) 22:56:29 ID:???
>>351
もったいないw まあ他人事だからいいが、
お前は他人のせいで道を踏み外したなw

356 :nobodyさん:2008/01/30(水) 22:56:47 ID:???
まあ端から見てると、罵り合う同士、一緒に仕事したくない人間の典型だな
お互い持論を主張して俺様が正しい、って奴ばっかだなw
この業界、こんな人間しかいないのか?w

357 :nobodyさん:2008/01/30(水) 22:57:30 ID:???
>>356
持論を主張してるのはCake馬鹿だけじゃん

358 :nobodyさん:2008/01/30(水) 22:59:00 ID:???
>>357
お前みたいに「Cake馬鹿」っていって時点で同類だろ
Cake馬鹿程度も受け入れられないんじゃ程度がしれてるわ

359 :nobodyさん:2008/01/30(水) 22:59:36 ID:???
>>358
何をどうして欲しいわけ?

360 :nobodyさん:2008/01/30(水) 23:01:09 ID:???
ずばり言うわよ

CakePHPを忘れなさい

361 :nobodyさん:2008/01/30(水) 23:01:32 ID:???
>>340
CakePHPではコードジェネレータがついている。
といっても一アクション(一ページ)あたりほんの20行程度の短いものだが。

コードジェネレータの出力、もしくはチュートリアルのコードをベースに
そのアプリ独自のロジックを書いていくわけだが、
この標準のやり方が、ポストバックになっているぞ。
(もちろんそうじゃないやり方もできる。)


362 :nobodyさん:2008/01/30(水) 23:02:40 ID:???
>>360
忘れてどうするんだw
そのほかのフレームワークを使うっているのなら話はわかるが
ライブラリだけじゃ、この先やっていけないよ?

363 :nobodyさん:2008/01/30(水) 23:08:27 ID:???
>>362
CakePHPってコード規約つきのライブラリー集じゃんw

364 :nobodyさん:2008/01/30(水) 23:09:31 ID:???
でかいディスプレイを使えばよろしい

365 :nobodyさん:2008/01/30(水) 23:10:33 ID:???
何かよくぁからないが必死さは伝わったからCake使ってみるわw

366 :nobodyさん:2008/01/30(水) 23:13:12 ID:???
話しぶった切ってすみませんが、
コードをロジックとテンプレートに分けようと思っています。
そのときなるべく面倒なことはしたくないので、
たとえば、http://localhost/controller/action/123
というアドレスにアクセスしたいとき、
contorllerクラスのactionメソッドを呼ぶようにしたいです。
またそのときに使用するテンプレートを/views/controller/action.ctp ファイルに使用と思っています。

これらは必要に応じて、柔軟に変更できるようにしたいです。
たとえば設定しだいで、http://localhost/123 でもデフォルトの動きとして controller/actionが実行されたりです。

いい関数ありませんか?

367 :nobodyさん:2008/01/30(水) 23:13:59 ID:???
そういう関数はありませんのでCakePHPなどのフレームワークを使ってください。

368 :nobodyさん:2008/01/30(水) 23:14:53 ID:???
>>366
CakePHPを使うべき

369 :nobodyさん:2008/01/30(水) 23:17:50 ID:???
なんと都合のいい質問タイミングw
CakePHPの信者共が出張して宣伝活動していることだけはわかった
いいからCakeBBSに帰れw

370 :nobodyさん:2008/01/30(水) 23:19:55 ID:???
PEARは基礎。CakePHPは応用。
PEARは知識。CakePHPは実践。

371 :nobodyさん:2008/01/30(水) 23:23:02 ID:???
学生グループ開発かj会社のプロジェクトでCakePHPを勧めたら周りから否定されて
もっと知れ渡るように布教活動でもしてるのか?

372 :nobodyさん:2008/01/30(水) 23:25:22 ID:???
抵抗勢力がんばれw

373 :nobodyさん:2008/01/30(水) 23:28:41 ID:???
Cakeを使える人vs使えない人

374 :nobodyさん:2008/01/30(水) 23:28:43 ID:???
>>366
最初に仕様を決めてしまえば変更する必要がないぞ
コロコロと仕様を変えるのは良くない

375 :nobodyさん:2008/01/30(水) 23:31:59 ID:???
たまには、Smartyのことも思い出してあげて下さい

376 :nobodyさん:2008/01/30(水) 23:34:46 ID:???
いつまでやってるんだ。それ専用でスレを作ってやったらどうだ

377 :nobodyさん:2008/01/30(水) 23:38:34 ID:9rDWoCR8
くだらないこと聞きますが、PDOってバグってます?

環境はmysql 5.0.54、PHP 5.1.6で実行しました。
例えば、
$res = $pdo->query('SELECT avg(column) FROM table');
を実行するとどこかで失敗しているとおもわれます。(エラーは何もない)
このavgを含むとfalseが返されます。
その後に$pdoの中を見ると、通常ではクエリ実行後にはqueryStringプロパティに実行したクエリがセットされるはずですがセットされていません。

もちろん、直接mysqlにこのクエリを打つと正しく返ってきます。

検索してもPDOにそれっぽいバグ報告ありませんが、ご存知の方いませんか?

378 :nobodyさん:2008/01/30(水) 23:43:00 ID:???
>>377
CakePHPを使えば解決します
今すぐに導入すべきです

379 :377:2008/01/30(水) 23:44:52 ID:9rDWoCR8
>>378
CakePHPでダメでした。

380 :nobodyさん:2008/01/30(水) 23:45:44 ID:???
>>379
それはあなたが駄目だからです
プログラマーに向いていないと思います

381 :nobodyさん:2008/01/30(水) 23:48:37 ID:???
>>377
group by

382 :nobodyさん:2008/01/30(水) 23:54:52 ID:9rDWoCR8
>>380
PDOがavgを含むクエリに失敗する理由がわかりますか?

>>381
クエリ自体に問題はありませんが、PDOはいかなるときもgroup byが必要ということでしょうか?
知ってる人が見つかってよかったです。
ありがとうございます。

383 :nobodyさん:2008/01/30(水) 23:58:02 ID:9rDWoCR8
>>381
うそつき、ハゲ!

意味なくgroup by入れたけどやっぱりダメでした。
コマンドラインでは成功しました。

PDOはダメってことですか?

384 :nobodyさん:2008/01/30(水) 23:59:22 ID:???
delete from テーブルを実行してみて、どのようになるか教えてもらえますか?

385 :nobodyさん:2008/01/31(木) 00:05:13 ID:???
>>382
MySQLのバージョンが未来すぎるのが失敗する理由です

386 :nobodyさん:2008/01/31(木) 00:07:26 ID:???
http://jp.php.net/manual/ja/ref.pdo.php#pdo.error-handling
とりあえずこれ。

387 :nobodyさん:2008/01/31(木) 00:08:15 ID:???
>>377

$stmt = $pdo->prepare("select avg(col) ...");
$stmt->execute();
$rows = $stmt->fetchAll();
$stmt->closeCorsor();

だとどう?

388 :nobodyさん:2008/01/31(木) 00:16:07 ID:???
>>382
I just recompiled pdo_mysql and the problem was solved.


389 :nobodyさん:2008/01/31(木) 00:26:05 ID:???
>>383
せっかくその他の解決法教えてやろうと思ったがもう教えてやらん

390 :nobodyさん:2008/01/31(木) 00:30:42 ID:REX6IFqd
>>377
$stmt = $pdo->prepare("select avg(col) ...");
の時点でfalseが返ってきます。

>>388
ありがとうございます。
やっとまともな方に答えていただきました。

解決したわけではありませんが、Bug #8045ってことで納得しました。

391 :nobodyさん:2008/01/31(木) 00:36:22 ID:???
こうしてまた可哀相なヤツが生まれる…

392 :nobodyさん:2008/01/31(木) 00:57:53 ID:???
俺も>>332と同じ疑問持ったけど様子見てた。
<>"&あたりしか退避しないからurlencodeでもしとけってことかな。
まあ汚染については厳密にやるとCでもPerlでもきりがないし大げさに取り上げるほどのことではない気はした。

393 :nobodyさん:2008/01/31(木) 01:08:58 ID:???
htmlspecialcharsとurlencodeは全く用途が違うわけだが。
明示的にエスケープが必要なのがプギャーなのかな。

394 :nobodyさん:2008/01/31(木) 01:26:32 ID:???
用途違うんだけどまだ%xxの形なら直で囲っても問題ないかなと。

395 :nobodyさん:2008/01/31(木) 02:04:47 ID:???
http://zapanet.info/blog/item/1217

> PHP使ってるヤツらって
> htmlspecialchars($_GET['text']);
> こんなコード書いてる!
> m9(^Д^)プギャー

とありますが、上のコードの何が問題なんでしょうか?
教えて下さい。

396 :nobodyさん:2008/01/31(木) 02:14:41 ID:???
>>395
お言葉を返すようですが、人間的に失格です。

397 :nobodyさん:2008/01/31(木) 02:14:53 ID:???
本人に聞けよ

398 :nobodyさん:2008/01/31(木) 02:21:25 ID:???
これもなんかすげえな。
ttp://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html

より良いWebアプリケーション設計のヒント
開発基盤選定における考慮事項の例
(1) プログラミング言語の選択
1) 例えば、PHPを避ける
2) 大規模システムにはJavaや.Netを使う

399 :nobodyさん:2008/01/31(木) 02:27:58 ID:4JBYr2L1
はじめまして、質問です。

PHPでサイトを作ったのですが、
自分は普通にBBSに書き込めるのに、他の人からBBSに書き込めないという情報をもらい困っています。

下手なソースをアップしてもいいのですが、長いだけにそれも無理そうです。
ログを取ってみたところ、自分は書き込みチェックのフェーズまで進んでいるのに、他の人は書き込み(エラーチェック)フェーズにまでいっていないように見受けられました。
(あくまでも推測)
しかし、次のフェーズへの移行はhiddenで指定しているため、両者に差異はないはずなのです。
環境の違いでもないようでした。

情報が少ないので難しいと思いますが、こういった場合どのような理由が考えられるでしょうか?
もしくは、チェックツールや、どこかソースのミスを判定してくれるところなどはありませんでしょうか。

なにか解決の糸口となりえる情報をよろしくお願いします。

400 :nobodyさん:2008/01/31(木) 02:30:45 ID:???
どのポイントで想定外の動きになっているか特定する
エラーメッセージを表示する

401 :nobodyさん:2008/01/31(木) 02:32:46 ID:???
>>399
そんな便利なもんはないです。
こっちにソースの要所だけでも書いたほうがはやいと思う。
もしくは、分岐ごとに全部条件を出力して相手にどの経路まで進んだか聞いて調べる。

402 :399:2008/01/31(木) 02:46:27 ID:4JBYr2L1
<form method="POST" action="">
<td><input type="submit" name="submit" value="書き込む"> 名前 <b>:</b> <input type="text" name="name" size="25" value="">
 E-mail <font size="1">(省略可)</font> <b>:</b>
<input type="text" name="mail" size="25" value=""></td>
</tr><tr><td><textarea name="bbsfor__text1" rows="8" cols="75"></textarea></td></tr>
</table><input type="hidden" name="userid" value="SS0001">
<input type="hidden" name="bbsid" value="7">
<input type="hidden" name="mode" value="bbs">
<input type="hidden" name="step" value="toukou">
<input type="hidden" name="close" value="0">
<input type="hidden" name="write" value="free">
<input type="hidden" name="ticket" value="6">
</form>

一番怪しそうなところはここの部分です。
書き込めなかったという人の報告によると、書き込みボタンを押したあとに画面がそのままになって、テキストエリアに入力した文字などが消えているそうです。
ただし自分以外にも書き込める人もいます。

403 :nobodyさん:2008/01/31(木) 02:47:12 ID:???
>>398
簡単に作るにはいい言語といった上でのことだし
セキュリティがメインのとこだからまだ新しい言語であるphp避けるべきってのはあってる。

404 :nobodyさん:2008/01/31(木) 02:47:49 ID:???
いやそれだけ見せられても分かるわけないって

405 :nobodyさん:2008/01/31(木) 02:49:49 ID:???
>>402
これだけじゃわからんがACTIONが空だけどこれはいいのかな。

406 :nobodyさん:2008/01/31(木) 02:50:22 ID:???
ポストバックだろ

407 :nobodyさん:2008/01/31(木) 02:51:30 ID:???
action空だから今のリファラに飛ばしたいんだろ
ダチにはノートンのリファラ返すように言っとけ

408 :399:2008/01/31(木) 02:51:47 ID:4JBYr2L1
>>405
セキュリティ上、空のほうがいいそうです。と本に書いてありました。

>>406
ポストバック?

409 :nobodyさん:2008/01/31(木) 02:55:41 ID:???
なんじゃそりゃ

410 :nobodyさん:2008/01/31(木) 03:16:49 ID:???
ここのやり取りを読んでいると、物事を難しく考え過ぎているような嫌いがある。

phpもwebという仕組みも究極的には、OnとOffの電気信号をやり取りをしているに
過ぎないというベースの考え方から、考える癖をつけた方がいいよ。

枝葉ばかりの方法論に固執せずに、仕組みから考えていく方が応用が利くと思う。

411 :nobodyさん:2008/01/31(木) 03:23:30 ID:???
postbackにするのとセキュリティってどういう関係があるんだ。。。

412 :nobodyさん:2008/01/31(木) 03:38:32 ID:???
ファイル名を隠したいってことかな?
セキュリティが向上するとも思えんが

413 :399:2008/01/31(木) 03:52:32 ID:4JBYr2L1
まだ確定ではりませんが、事前にリファラーブロックをかけてたのでそれが原因かもしれません。
解除してみてテストしてもらいます。

>>411
XSS対策です。詳しくは【PHP サイバーテロの技法 防御と攻撃の実戦】という本に書いてあります。
この本もここの人に推奨されたので勉強のために買いました。

414 :nobodyさん:2008/01/31(木) 03:55:42 ID:???
リファラ要求するならERROR:referer情報が変です。(ref1)的なものが必要だろ

415 :nobodyさん:2008/01/31(木) 07:30:54 ID:???
思い切ってセキュリティーに関する部分をコメントアウトしてみたらどうかな。
もしくは、1つの項目をログファイルに追記で書き込むだけの簡潔なプログラムを
書いてみるとか。

416 :nobodyさん:2008/01/31(木) 09:55:14 ID:no07dFZM
すみません、駄質なんですが
connect()とpconnect()の違いはなんでしょう?
p-が継続的だとはマニュアルに書いてあるんですが、これはclose()しないと
サーバに付加がかかり続けるということでしょうか?
closeしないで次のページに移動してまたpconnectしたらまた付加がかかって、
それもcloseしないで次のぺーじでpconnectしたらまた… みたいになるのですか?

どうもよくわかりません
そうならないとしても、「継続的」であることでの具体的なメリットって
どんな場合ですか?

417 :nobodyさん:2008/01/31(木) 09:56:56 ID:???
pconnectは、おなじ接続があったらさっきのを再利用、だよ。
イメージが逆だな。

418 :nobodyさん:2008/01/31(木) 10:14:03 ID:no07dFZM
>>417 ありがとうございます!
イメージが逆ってのは、再利用するから接続しなおす負荷(?)がかからないって
ことですね? じゃ、いいことみたいですね
あと、続けて質問ですみませんが、マニュアルを読んでるとclose()してるサンプルって
見たことありません。しなくていいものなんですか?
ブラウザを閉じたら勝手にクローズ。だけど、ページ移動なら接続は
キープされるってことでしょうか?(pconnectの場合)

同一ページで何度も同じ接続処理を書くことってあまりないと思うので、
ページ遷移で持ち越せる位の機能じゃないとpconnectって意味薄そうな気がするのですが…

419 :nobodyさん:2008/01/31(木) 10:34:31 ID:???
cgiと違って終了してもプロセスは残るから再利用可能になるんだよ。
ttp://www.php.net/manual/ja/features.persistent-connections.php

420 :nobodyさん:2008/01/31(木) 11:00:34 ID:???
>>330
最終的には特定のxmlやらiteratorから別のxmlを作るのが目的。
modelの作成にSimpleXMLElementが使えないかなーと。

生成元からxpathで抽出して生成ノードがコンテナなら抽出元のノードの生成ノードの下にぶら下げる。
次に先程生成したノードをxpathで抽出してぶら下がったノードに相対パスを突っ込んでさらにノード作成、みたいな。

ちとややこしいけど・・・

421 :nobodyさん:2008/01/31(木) 11:04:56 ID:???
>>418
pconnect()の対になるclose()は意味が無い。
connect()の対になるclose()はスクリプトの終了の際に
自動的に行われるので大抵の場合はしなくても構わない。
HTTPリクエストで実行されるスクリプトの場合、
接続時間が短く、リソースを掴んだままでも影響が少ないからね。
因みにリソースにはそこでSELECT等して取得したデータも含まれる。
(MySQLの場合)

あとpconnect()によるリソースの再利用だけど
接続文字列が同じだから必ずしも再利用されるとは限らない。
再利用のためのプールが1つではなく、プロセスで1つで
プロセス間でそれを共有しないため。
だから接続をタイムアウトまで最悪上限まで保持してしまう
pconnect()はかえって効率が悪くなる(不具合)場合もあるよ。
httpdの設定とか絡んで要調整。

422 :nobodyさん:2008/01/31(木) 11:17:14 ID:???
>>420
SimpleXMLObjectのプロパティ≠子要素だから上のコードには無理がある
addNode()とか定義して自分でXMLオブジェクトを展開して追加するしかないと思うが
SimpleXMLを投げ捨てる、という手も

423 :nobodyさん:2008/01/31(木) 11:24:17 ID:???
addChild()のユーザ投稿だと、一旦Domオブジェクトにしてから追加してるのがあるね。

424 :nobodyさん:2008/01/31(木) 12:00:56 ID:???
>>722
__set使ってればオーバーライドすれば誤魔化せるかなーとか思ったけど見てのとおりの惨敗。
投げ捨てるか、xpathを取得して保管するか、xpathをキーにしてarrayでも作るか、どうするか思考中。

>>723
なんと。情報ありがとうございます。
調べてみて試してみます。

425 :nobodyさん:2008/01/31(木) 12:06:11 ID:VNDK0Dvo
Magpie RSSで日付を取得する方法について教えて下さい

最新バージョンの0.72を使っています
phpはバージョン5系です。

$date = date("Y/n/j G:i", $item['date_timestamp']);
このようにしてRSSの時間を取得するようにしてるのですが、

echo "<li>$date<a href=\"$url\">$title</a> ($p_title)</li>\n";
このように書いて実行してるのですが、なぜか時間表示が全部1970/1/1 9:00になってしまいます。

アドバイスお願いします。
公式サイトではdate_timestampで取得することを進めているのですがどうもうまくできません。



426 :nobodyさん:2008/01/31(木) 12:11:55 ID:???
>>425
1970/1/1てことは$item['date_timestamp']が空だね
変数をダンプしてデバグしましょう

427 :nobodyさん:2008/01/31(木) 12:15:47 ID:???
>>426
レスありがとうございます。
変数をダンプしてみたいと思います。
助かりました!

428 :nobodyさん:2008/01/31(木) 12:27:27 ID:???
>>423
SimpleXML使えないわー

429 :nobodyさん:2008/01/31(木) 12:36:27 ID:???
function xxx(&$c1=null) {
$c1 =100;
}
xxx();


素朴な疑問なんだけどPHP5では
上の例のように参照渡しでかつその変数を省略できるけど
その省略した変数に関数内で値を変更しても大丈夫なのだろうか?

今はパラメータ数を判定して
省略されてない場合にだけ値を変更してるんだけど
そんなの必要ないのかな?

いろいろ探したけど確証が得られなくて・・・



430 :nobodyさん:2008/01/31(木) 12:50:08 ID:???
>>424
シリアル化してつっこんでやるってのは?

431 :416:2008/01/31(木) 13:12:48 ID:???
>>419>>421
詳しい説明ありがとうございます
かなり深いですね、、適当やってると痛い目見そうだし
もっと参考書でこういうの説明して欲しいんですが、してないですよねー

プロセスとかの基本用語から理解なきゃダメですね  ありがとう

432 :nobodyさん:2008/01/31(木) 13:55:27 ID:???
>>429
質問するときはID表示、これこのスレの掟
とりあえず>>1を読め、読めない・実行できないなら質問するな

433 :nobodyさん:2008/01/31(木) 14:06:44 ID:???
http://zapanet.info/blog/item/1217

> PHP使ってるヤツらって
> htmlspecialchars($_GET['text']);
> こんなコード書いてる!
> m9(^Д^)プギャー

とありますが、上のコードの何が問題なんでしょうか?
教えて下さい。


434 :nobodyさん:2008/01/31(木) 14:08:50 ID:???
>>433
お前は直前のレスも読めないのかと

435 :nobodyさん:2008/01/31(木) 14:48:21 ID:???
質問させてください。

・test1.php
・test2.php
・entry.php


http://test.com/test1.php?a=1

このtest1.phpの中に以下のimgタグを
埋め込んでtest2.phpを呼び出しているとします。

<img src='http://test.com/test2.php?a=<?php echo $a; ?>' width='0' height='0'>

で、このtest2.phpの中にさらに
下記のようなimgタグを埋め込んでいるのですが、

<img src='http://test.com/entry.php?a=<?php echo $a; ?>' width='0' height='0'>

当然動作しません。

このtest2.phpの中でなんらかの方法でentry.phpを
呼び出して、aの値を登録したいのですが
どのようにすればよいのでしょうか・・・

そのやり方を教えて欲しいです。
よろしくお願いいたします。



436 :nobodyさん:2008/01/31(木) 14:49:56 ID:???
>>435
質問するな死ね

437 :nobodyさん:2008/01/31(木) 14:53:10 ID:89mDm5mU
ID表示ですか・・・
失礼しました。


で、質問させてください。

・test1.php
・test2.php
・entry.php


http://test.com/test1.php?a=1

このtest1.phpの中に以下のimgタグを
埋め込んでtest2.phpを呼び出しているとします。

<img src='http://test.com/test2.php?a=<?php echo $a; ?>' width='0' height='0'>

で、このtest2.phpの中にさらに
下記のようなimgタグを埋め込んでいるのですが、

<img src='http://test.com/entry.php?a=<?php echo $a; ?>' width='0' height='0'>

当然動作しません。

このtest2.phpの中でなんらかの方法でentry.phpを
呼び出して、aの値を登録したいのですが
どのようにすればよいのでしょうか・・・

そのやり方を教えて欲しいです。
よろしくお願いいたします。


438 :nobodyさん:2008/01/31(木) 15:08:35 ID:???
>>437
何がしたいのかわからん
entryにtest2の画像のimgタグ、test2にtest1の画像のimgタグを入れてるってこと?

439 :nobodyさん:2008/01/31(木) 15:10:37 ID:???
>>437
外部ファイル呼び出したいだけだろ?
file_get_content(URL);
で゙呼び出せるよ


440 :429:2008/01/31(木) 15:22:24 ID:qO0TdOQJ
失礼しました。再度お願いします。

function xxx(&$c1=null) {
$c1 =100;
}
xxx();


素朴な疑問なんだけどPHP5では
上の例のように参照渡しでかつその変数を省略できるけど
その省略した変数に関数内で値を変更しても大丈夫なのだろうか?

今はパラメータ数を判定して
省略されてない場合にだけ値を変更してるんだけど
そんなの必要ないのかな?

いろいろ探したけど確証が得られなくて・・・

441 :437:2008/01/31(木) 15:29:08 ID:???
>>439

ありがとうございます。
その関数を調べてもう少しテストしてみます。

442 :nobodyさん:2008/01/31(木) 15:30:35 ID:xq4Ruxkp
セッション管理について質問です。

1:$_SESSION変数で、それぞれのデータを全て持ち回す方法
(例)
$_SESSION['name'] = 'name';
$_SESSION['email'] = 'test@example.com';

2:セッションキーを生成して、$_SESSION['session_key']にキーのみ持ち回して
データはオブジェクトをシリアル化して、キーをファイル名とする一時ファイルに保存する方法
(例)
$_SESSION['session_key'] = '4hak2ajh8adjkeubz'; //実際はユーザごとにユニークな値を生成
$file = file("/tmp/" . $_SESSION['session_key']);
$data = unserialize(base64_decode($file['0']));

3:$_SESSION['data']にオブジェクトをシリアル化して、1つの$_SESSION変数だけ持ち回す方法
(例)
$_SESSION['data'] = base64_encode(serialize($data));
$data = unserialize(base64_decode($_SESSION['data']));

どれが一般的なのでしょうか?

443 :nobodyさん:2008/01/31(木) 15:43:16 ID:???
>>442
一般的は1
2は自作セッション
3は関数や実行結果を保存しすぐリストアしたい時

444 :nobodyさん:2008/01/31(木) 15:48:45 ID:???
>>440
別に問題ないんじゃね?
初期値もいれてんだしreturn後に$c1を参照したいときにゃたまにやる

445 :nobodyさん:2008/01/31(木) 16:28:44 ID:???
>>444
変数の不変性から言って多いに問題があるのだけど、
そんなの関係ねーと小島よしおを信仰しているなら、
それも一興といわざるを得ない。

446 :nobodyさん:2008/01/31(木) 16:43:09 ID:???
変数の不変性?

447 :nobodyさん:2008/01/31(木) 16:49:35 ID:???
そりゃ定数なら問題だが変数だろ?

448 :nobodyさん:2008/01/31(木) 17:20:24 ID:Zzvt9fFU
エスケープシーケンスを置き換えたるため以下のように書きました。
testesc の $char に\に続く一文字だけ該当するように想定していますが
何故か \"のときだけ " ではなく \" 2文字が引数に渡されてしまいます。
これはどこに問題があるのか教えてください。

<?php
$in = '\\\\abc\tdef\\"';
$out = preg_replace('/\\\\(.)/e', "testesc('$1')", $in);
echo 'input [' . $in ."]\n";
echo 'output [' . $out ."]\n";
function testesc($char){
    if($char=='"'){
        return '"';
    }elseif($char=='\\"'){
        return '?';
    }elseif($char=='\\'){
        return '\\';
    }elseif($char=='t'){
        return "\t";
    }else{
        return '';
    }
}
?>
実行結果
input [\\abc\tdef\"]
output [\abc def?]

449 :445 :2008/01/31(木) 17:22:23 ID:???
ことば足らずだったかもしれないが、指摘されていることは違います。
私が言いたいのは、返すことが予定されている変数を呼び先で勝手に変えてはいけないという意味で不変性と言っている。
OOP志向から自明の理であるが、使用貸借契約と消費貸借契約における客体を想像すれば分かりやすい。

450 :nobodyさん:2008/01/31(木) 17:25:32 ID:???
参照で渡してる時点で変えられる事が前提だと思うのだが・・・

451 :nobodyさん:2008/01/31(木) 17:31:15 ID:B+pFj7HJ
本当のクローラーとは違うかもしれませんが、
プログラム練習として自分なりのクローラーを作ろうとしています


現在はネットワークを縦横無尽に走るものではなく、
自分で用意した一つのサイトのトップページを指定し、
そこから同サイト内の全ページをDBに登録するプログラムを作っています

流れ的にはこうです
1. file ()でトップページを取得
2. 1.で取得したページからurlを抽出しリスト化
3. 2.で取得したurlからリンク先のページ内容を取得
4. DB(MySQL)にurlと対応するページ内容を追加、または更新
 (レコードが追加か更新かは、DBにそのurlがあるかないかで判断する)
5. 3と4をループ

ここまではうまくいっていますが、質問があります

もしurlから取得したページがたまたま503だった場合、追加も更新も行わないようにしたいのです
その場合、分岐させていけばいいのだと思い、下のようなものを考えました

if(ページ内容が空じゃない){
ページ内容をデータベースに登録する
}

しかし、自分のページが503になったことがないので試せないのです
これで合っているのでしょうか?

452 :445:2008/01/31(木) 17:33:33 ID:???
>>450
OOPは、現実の世界で考えれば分かりやすい。それが本質だし。

居酒屋で下駄箱の鍵を店員に預かってもらったら、
店員に勝手に開けられて「靴を磨いておきました」って言われたら、
それが正常な行為であっても、予想に反した動作だと思うだろ。
要はそういうこと。

453 :429:2008/01/31(木) 17:48:14 ID:???
>>452
なんか勘違いしてるみたいだけど
値を渡したつもりなのに参照渡しなってしまうという
PHP5の仕様のことを問題にしてるのではなく、
参照渡しである変数を呼び元が省略した場合に
関数内ではその変数の参照先はどこになるんだろうということです。

ローカル変数になるならいいのだけど
どこかにそのへんの詳しい情報がないだろうか。

454 :nobodyさん:2008/01/31(木) 17:49:38 ID:???
>>451
レスポンスヘッダのコード見ればいいんじゃね?

455 :nobodyさん:2008/01/31(木) 17:56:07 ID:???
ttp://gihyo.jp/dev/serial/01/php-security/0005?page=3
を参考にテストしてみたんですが、再現出来ません。
php4です。
このサイトに書いてある、この正規表現では二行目は無視するっていうのは本当なのでしょうか?

/*----------------------------------
<?php
$_GET['id'] = "6666". PHP_EOL . "aaa";

var_dump($_GET['id']);
if (preg_match('/^[0-9]+$/', $_GET['id'])) {
var_dump($_GET['id']);
}
?>
----------------------------------*/

456 :nobodyさん:2008/01/31(木) 18:01:43 ID:???
本当だよ。一行ずつ正規表現で表したい時もあるべ

457 :nobodyさん:2008/01/31(木) 18:03:54 ID:B+pFj7HJ
>>454
すると404とかも判断できるということですね!
レスポンスヘッダとかわからないので調べてきます
ありがとうございました

458 :455:2008/01/31(木) 18:04:48 ID:5Z05+qC0
すいません、id表示忘れていました

>>456
だとすると>>455のコードでは再現出来ていないという事でしょうか・・。
このコードでTRUEが得られるつもりで書いたのですが、駄目なようです。

459 :nobodyさん:2008/01/31(木) 18:15:18 ID:???
>>458
ずばり言うわよ。

Smartyを使えば、もっと簡単。

460 :nobodyさん:2008/01/31(木) 18:17:40 ID:5Z05+qC0
>>459
smartyも興味あるのですが。
何故再現できないか知りたいんです・・。

461 :nobodyさん:2008/01/31(木) 18:20:59 ID:???
>>452
参照で渡してるんだろ?
お前の好きな現実の世界に例えると
クリーニング屋にシャツ出したのに
汚れが落ちてるとブツブツ言ってるようなもの。


462 :nobodyさん:2008/01/31(木) 18:34:36 ID:???
いつのまにか$が改行関係なく最後のにしかマッチしなくなってんな
PCRE_DOLLAR_ENDONLYがどーとか書いてあったからその辺かもね

463 :nobodyさん:2008/01/31(木) 18:37:12 ID:5Z05+qC0
>>462
なるほど、昔の仕様ということですね。
ありがとうございます。

こういう細かい仕様変更はちょっと怖いですね・・。

464 :nobodyさん:2008/01/31(木) 19:13:51 ID:???
Smarty厨うぜえw オールドタイプは市ね

465 :448:2008/01/31(木) 19:51:16 ID:Zzvt9fFU
>>448 の正規表現を /\\\\(.)/ から /\\\\(\C)/ や /\\\\(.{1})/
に変えたり、関数名を全てシングルクオートの 'testesc(\'$1\')' 囲んだりもしましたが
やはり文字の \" が分割されず $1 に \" が2文字渡されてしまいます。
\ に続くASCIIコードの半角記号も一通り試してみましたが \" のときだけ2文字になります。

原因どなたか分かる方おられないでしょうか。

466 :nobodyさん:2008/01/31(木) 20:50:27 ID:VNDK0Dvo
再度質問申し訳ありません。

php4で動作するスクリプトをphp5でも動かせるようにソースを書き換えてくれるソフトなどないでしょうか?
ソースが長いので書き換えるのが。


467 :nobodyさん:2008/01/31(木) 20:54:16 ID:???
こんばんは。
ブラウザをリロードさせる関数ってありますか?
よろしくです。

468 :nobodyさん:2008/01/31(木) 21:00:25 ID:???
>>467
>>1

469 :nobodyさん:2008/01/31(木) 21:03:01 ID:???
>>466
ない

というかphp4で動作するならphp5でも動作するだろ
逆は動かない場合もあるが

470 :nobodyさん:2008/01/31(木) 21:04:12 ID:???
>>466
普通に書いてたら5でも動くよ。

>>467
reload()

ブラウザを操作できたら嫌がらせやり放題やん


471 :nobodyさん:2008/01/31(木) 21:06:27 ID:VNDK0Dvo
>>469-470
レスありがとうございます。
関数の問題で動いてないみたいです。

$rssurl = array() ;
$rssurl[] = "○○";
$rssurl[] = "○○";

arrayと[]はphp5では読みこまないと記事にありました。
この関数をどのように変えてあげればいいのでしょうか?
○○はrssのURLになります。

472 :nobodyさん:2008/01/31(木) 21:07:48 ID:???
どこの記事だよw

473 :nobodyさん:2008/01/31(木) 21:15:27 ID:???
>>471
さっきから普通に4を書いてたら5でも動くって言われてるのに。
釣りか。。。

474 :nobodyさん:2008/01/31(木) 21:21:29 ID:???
文字列から特定の文字があるか分からない状態でもしあったらそれを置換するには何の関数がいいかな?

475 :nobodyさん:2008/01/31(木) 21:23:39 ID:VNDK0Dvo
http://gihyo.jp/dev/feature/01/php-migration/0002
ここですよ 記事は

476 :nobodyさん:2008/01/31(木) 21:32:26 ID:???
>>475
>>471のコードとそこのコードの違いってわかる?

477 :nobodyさん:2008/01/31(木) 21:42:44 ID:???
わかってないだろ。記事もロクに読んでないと思う。

478 :nobodyさん:2008/01/31(木) 21:50:45 ID:???
        ∬ ∬    ∬ ∬    ∬ ∬  +
   +     人      人      人     +
         (__)    (__)    (__)
  +    (__)   (__)   (__)     +
.   +   ( __ )  ( __ )  ( __ )  +
      ( ´∀`∩ (´∀`∩) ( ´∀`)
 +  (( (つ   ノ (つ  丿 (つ  つ ))  +
       ヽ  ( ノ  ( ヽノ   ) ) )
       (_)し'  し(_)  (_)_)


479 :nobodyさん:2008/01/31(木) 21:52:14 ID:MssSyn6A
質問です。
http://○○○○○.jp/php?a=1&b=2
とあったとしてお気に入りからアクセスするのとhtmlページからアクセスするので
サーベーへの負荷が変わったりするんですか?
前に「負荷がかかるから直でくるな」みたいなことを書いてあるのを見たのですが。

480 :nobodyさん:2008/01/31(木) 21:56:55 ID:???
日本語でおk

481 :nobodyさん:2008/01/31(木) 22:04:18 ID:???
その質問の答えだけならかわらん。

482 :nobodyさん:2008/01/31(木) 22:08:12 ID:???
>>479
一般論としては、直でアクセスしても、htmlからアクセスしても同じ。
だけど、そのプログラム自体がリファラの取得をし、何らかの処理を
している場合は、負荷は違うだろう。

483 :479:2008/01/31(木) 22:15:38 ID:MssSyn6A
うまくまとまってなくて済みません。

>>482
うちに置いてあるものでは
a=1ならコンテンツのXXでb=2ならページの2を読む(XXの2ページ目を表示)
のようにしています。

484 :nobodyさん:2008/01/31(木) 22:20:01 ID:???
日本語でおk

485 :nobodyさん:2008/01/31(木) 22:31:57 ID:???
> 前に「負荷がかかるから直でくるな」みたいなことを書いてあるのを見たのですが。
いっているやつがバカ。

2ちゃんねるでもhttpをttpとか書くやつがいるが、
あれもばか。

2ちゃんねるブラウザ使うと直リンクになっている。

486 :nobodyさん:2008/01/31(木) 22:37:37 ID:???
ブラウザ依存の振舞いを当然のように語る人の方が馬鹿かと

487 :nobodyさん:2008/01/31(木) 22:38:06 ID:???
http://zapanet.info/blog/item/1217
> PHP使ってるヤツらって
> htmlspecialchars($_GET['text']);
> こんなコード書いてる!
> m9(^Д^)プギャー

とありますが、上のコードの何が問題なんでしょうか?
教えて下さい。

488 :nobodyさん:2008/01/31(木) 22:41:13 ID:???
>>487
引数にENT_QUOTESがない

489 :nobodyさん:2008/01/31(木) 22:42:19 ID:???
「htmlspecialchars 危険」とかですぐ見つかる質問をするってのも問題の一端ではある気がする

490 :nobodyさん:2008/01/31(木) 22:47:30 ID:???
>>487
ずばり言うわよ。

Smartyを使っていないから。

491 :nobodyさん:2008/01/31(木) 22:49:30 ID:???
それだけ?

492 :nobodyさん:2008/01/31(木) 22:51:06 ID:???
それだけ、ってどんだけぇ〜

493 :nobodyさん:2008/01/31(木) 22:52:19 ID:???
フレームワークが使えないSmarty厨はほっとけw

494 :nobodyさん:2008/01/31(木) 22:53:36 ID:VNDK0Dvo
php4で動いたありますがphp5では動きませんでしたよw
なんでだろう
真白だよ;;
arrayがおかしいと思ったんだけど、arrayで外部記事をひっぱってきてるだけなので;;

495 :nobodyさん:2008/01/31(木) 22:55:57 ID:???
ちゃんとdebugしませう

496 :nobodyさん:2008/01/31(木) 22:56:45 ID:???
>>494
全角でセミコロン書くから真白だよ

497 :nobodyさん:2008/01/31(木) 22:57:16 ID:???
>>487
CakePHPを使っていないことが問題です


498 :nobodyさん:2008/01/31(木) 22:58:39 ID:???
最近CakePHPを推していたのは私ですが、>>497は私ではありません。
Smarty厨でしょう?w

499 :nobodyさん:2008/01/31(木) 22:58:51 ID:???
>>494
CakePHPで
htmlspecialchars($_GET['text']);
って書いたけど脆弱性ありまくりでした

500 :nobodyさん:2008/01/31(木) 22:59:25 ID:???
>>494
とりあえずstrictでログを出せ
話はそれからだ

501 :499:2008/01/31(木) 23:00:03 ID:???
>>494>>497
やってもた

502 :498:2008/01/31(木) 23:02:52 ID:???
Smarty厨のいうことを聞くからですよw
あいつは何もわからずに適当に言っているだけです。

503 :nobodyさん:2008/01/31(木) 23:07:17 ID:???
>>487のレスって4回目だけど
やっとENT_QUOTESが出た。
けど、文字コードの問題とか、
そもそも$_GET['text']にhtmlspecialcharsって
違和感を感じないのか?



504 :nobodyさん:2008/01/31(木) 23:09:50 ID:???
>>487のレスって4回目だけど
やっとhtmlspecialcharsがわかってないやつがきた

505 :nobodyさん:2008/01/31(木) 23:10:15 ID:???
後出しジャンケン大会w

506 :nobodyさん:2008/01/31(木) 23:11:10 ID:???
>>487のレスって4回目だけど
やっとつれた

507 :nobodyさん:2008/01/31(木) 23:11:31 ID:???
くだスレでそんなこと言ってたら生き残れなねーぞおめー

508 :nobodyさん:2008/01/31(木) 23:12:39 ID:VNDK0Dvo
coreサーバー事態がおかしいのかも知れません。
どなたかphp5の環境で私のソースが動くかチェックしてもらえる方いないでしょうか?
YAHOOニュースのRSSをMagpieRSSを使って取得しているだけです。

どうかお願いします。

509 :nobodyさん:2008/01/31(木) 23:15:15 ID:???
>>503
シングルクオートをhtmlエンティティ化しないとどんな脆弱性があんの?

510 :nobodyさん:2008/01/31(木) 23:20:42 ID:VNDK0Dvo
ごめんなさい 違う鯖では動作しました。
サーバーが原因だったようです。
なんだよcore鯖

511 :nobodyさん:2008/01/31(木) 23:21:49 ID:???
>>508
ソースがないのにどうやってできる
その前に普通に書けば動くって!

512 :nobodyさん:2008/01/31(木) 23:21:51 ID:???
>>503
その例題を書いた奴が部分的すぎる
後からどうにでも上げ足をとれるように、作為的なものを感じるが

一旦、変数に取り込んでから加工したいのだろうが、コーディング規約で決める部分で作法の範疇じゃね?

513 :nobodyさん:2008/01/31(木) 23:22:13 ID:???
core鯖って何?

514 :nobodyさん:2008/01/31(木) 23:24:13 ID:???
CORESERVER.JP Part8
http://pc11.2ch.net/test/read.cgi/hosting/1201260968/

これです。


515 :nobodyさん:2008/01/31(木) 23:25:58 ID:???
鯖が原因って、、、それは原因を知ったことにはならないだろ
まずE_NOTICE、E_STRICTレベルのログくらい読むべき
変数に期待する値が来てないなら、どこでコケてるのかエコーしながら
遡って探っていく、そうやってコードのどこで問題が起きてるか特定する
そうすれば状況が見えてくるし、質問するにしても回答が得やすくなる

516 :nobodyさん:2008/01/31(木) 23:27:16 ID:???
>>514
そこの>>1
お前はお断りって書いてあるよ。

517 :nobodyさん:2008/01/31(木) 23:28:18 ID:???
うっせいよぼけどもしばくぞ

518 :nobodyさん:2008/01/31(木) 23:28:53 ID:???
>>513
よくわからんけど、
Googleでの検索結果
Fedra Core鯖 946件
hard Core鯖 962件
ハードゲイ 鯖 54,500件
ってことでハードゲイのことと思われ

519 :nobodyさん:2008/01/31(木) 23:29:15 ID:???
PHP5でMySQLも5なのか
値段もなかなかw

520 :nobodyさん:2008/01/31(木) 23:29:23 ID:???
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
おまえ100点>>513

521 :nobodyさん:2008/01/31(木) 23:30:46 ID:???
じゃあ後はxreaのサポートBBSで回答を待つということで

522 :nobodyさん:2008/01/31(木) 23:35:13 ID:???
わからんなぁ、どっちも同じじゃん。
ENT_QUOTESすることで何を防げるんだ?

<a onclick="alert('&#39;+alert(4989)+&#39;')">CLICK</a>

<a onclick="alert(''+alert(4989)+'')">CLICK</a>

523 :nobodyさん:2008/01/31(木) 23:45:32 ID:???
>>509
textをhtml中に出力している、という前提だと

・HTMLのタグの内側かつ属性値の引用符の外側を出力中である
・HTMLのタグの内側を出力中で、属性値を引用符でくくっていない
・HTMLの属性値の出力中かつ、引用符にシングルクウォートを採用している

こういうケース以外では無問題?

524 :448:2008/01/31(木) 23:58:27 ID:Zzvt9fFU
PHP総合雑談スレ
http://pc11.2ch.net/test/read.cgi/php/1200314111/

525 :nobodyさん:2008/02/01(金) 00:03:13 ID:???
$txt = htmlsp..($_GET["text"]);
echo "<a href='#hoge' $txt>"; //そりゃ死亡だろ。
echo "<a href='#hoge' title='$txt'>"; //うっかり死亡。
あとはjsコードジェネレーション中に同様の問題あり
htmlspecialchars忘れる可能性のほうがずっと高い気がしてきたw

あと、>>487の元記事はENT_QUOTESしてないとか、その断片的なコードの問題を
指摘してるものじゃないから、「コードの問題は何か」という質問自体が回答側の
ミスリードをさそってる。

526 :nobodyさん:2008/02/01(金) 00:14:33 ID:???
シングルクオーテーションもタグやJavaScriptの囲みに使われるからこれも退避しないと悪用可能って話か。

527 :nobodyさん:2008/02/01(金) 00:17:35 ID:???
いや、JavaScriptの囲みに使われるからと
囲みの中の'を&#39;にしたところで
何も変わってないよ。

>>522を見ればわかるけど、囲みの中を&#39;にしても
動作は変わらない。

528 :nobodyさん:2008/02/01(金) 00:20:44 ID:???
括弧やセミコロンや演算子禁じたほうがよさげだな。

529 :nobodyさん:2008/02/01(金) 00:24:48 ID:???
>>528
もうこうなってくると
htmlspecialchars の問題じゃなくて
使い方の問題だな。

んで、大本のmatzの記事には使い方が書いていない。

530 :nobodyさん:2008/02/01(金) 00:35:01 ID:???
>>529
そういう表層的な問題じゃないと思うよ。
長男は嫌だとか、年収は1000万円以上じゃないと嫌だと女がいるが、
そういう女は本気の恋愛をしてことがない女。


531 :nobodyさん:2008/02/01(金) 00:35:35 ID:???
要するに釣りってことか

532 :nobodyさん:2008/02/01(金) 00:43:40 ID:???
いっそ英数字以外全部?nnn;にするくらいでないと起きそう。
そしてそこまでやってるのは言語に関わらずろくにいないだろうな。
文字の退避はしてても文字コード指定しない方がはるかに多いだろうし。

533 :nobodyさん:2008/02/01(金) 00:45:10 ID:???
釣りも社会勉強の一つで、色々な釣りにどのような反応を示すかを見て、
社会復帰のための勉強をしている人も俺を含めて結構居ると思うよ。
いつか、社会復帰できるようお付き合い下さい。

534 :nobodyさん:2008/02/01(金) 00:45:46 ID:???
いきなり定義されてないかもしれない変数渡すなやΗεΗεΗε

てこと

535 :nobodyさん:2008/02/01(金) 00:48:43 ID:???
どこから引用したコードか知らんが、100行程度のトイアプリでPHPで語ってたら笑うな

536 :nobodyさん:2008/02/01(金) 00:49:51 ID:???
トイアプリって何のこと?

537 :nobodyさん:2008/02/01(金) 01:17:24 ID:???
トイ=おもちゃ

538 :nobodyさん:2008/02/01(金) 01:20:47 ID:???
PHPSPOTってサイトに
htmlspecialcharsを使いましょうって書いてあった。
それだけでいいのか?
matzの思うつぼw

539 :nobodyさん:2008/02/01(金) 01:53:10 ID:7ncIvXJm
質問させてください
プルダウンのオプション部分を自動生成するプログラムを書いてて
makePullDown(){
$option="";
for($i=0;$i<47;$i++){
 $option.="<option value=\"";
 $option.=setVal($i);//valueを呼び込む関数
 $option.="\">"
 $option.=setNamae($i);//名前を呼び込む関数
 $option.="</option>\n";
}
return $option;//この返り値を<select>{$pd}</select>のようにして使う
}
というようなものを作っています
が、「$option.="<option value=\"";」の行に対して、unexpected '.'というエラーが
標準出力されてしまいます。
同じ構造のプログラムを他の場所で作っていて正常に動いているので、それを元にして
作ったのですが、今回なぜエラーになるのかわかりません。
どこが問題そうというのがあったらご指摘いただけないでしょうか? すみませんがお願いします

540 :nobodyさん:2008/02/01(金) 02:11:58 ID:???
>>539
$option.="\">";

541 :nobodyさん:2008/02/01(金) 02:18:47 ID:???
>>539
質問するなら再現するコードをもってこい

542 :nobodyさん:2008/02/01(金) 02:36:44 ID:6ktoEY5E
質問です。正規表現による置換がどうしてもうまくいきません。。。
<?php
$comment = "aabb/*ccdd*/eedd*/";
?>
<HTML><BODY>
<?php
$ok = preg_replace("/\*.*?\*/","!",$comment);
$ng = preg_replace("/\*.*?dd" ,"!",$comment);

printf("OK:" . $ok . "<BR>NG:" . $ng . "<BR>");
?>
</BODY></HTML>

$okには/*...*/を!に置き換え、$ngには/*...ddを!に置き換えるつもりのコードです。
出力結果は
OK:aabb/!/eedd*/
NG:
となってしまいます、
$okのほうは正しく/* */が最小一致で置き換えられていますが、
/* ddのほうがなぜか文字列が返りません。何か特別なルールがあるのでしょうか?

543 :nobodyさん:2008/02/01(金) 03:13:35 ID:???
>>539
$option.="\">" ←セミコロンがない

544 :nobodyさん:2008/02/01(金) 03:17:15 ID:???
よくある凡ミスだがIDE入れればそんなミス起こらない
というわけでIDEで開発しれ

545 :nobodyさん:2008/02/01(金) 03:34:06 ID:ShuZZjDk
PHPもある程度わかってきたので、SmartyとPEARを勉強したいと考えています。
オススメのサンプルサイトもしくは、推奨の本を教えてください。
よろしくお願いします。

546 :nobodyさん:2008/02/01(金) 03:45:16 ID:???
>>545
公式サイトのマニュアルと各ライブラリのドキュメント

547 :nobodyさん:2008/02/01(金) 03:45:37 ID:???
Smarty PEAR フレームワークの話題は>>1を100万回読んでからしてくださいね

548 :nobodyさん:2008/02/01(金) 08:21:40 ID:7ncIvXJm
やっぱりみんなpearって使ってるんですか?


549 :nobodyさん:2008/02/01(金) 09:00:49 ID:???
>>548
ずばり言うわよ



550 :nobodyさん:2008/02/01(金) 09:03:11 ID:???
Smartyはアフォ

551 :nobodyさん:2008/02/01(金) 09:05:08 ID:???
smartyのサイトが数日前から落ちてるようなのですが、
どこかでDLできるところ知りませんでしょうか?
smartyスレも落ちてるし…

552 :nobodyさん:2008/02/01(金) 09:06:15 ID:???
使うなってことだろw

553 :nobodyさん:2008/02/01(金) 09:06:45 ID:???
>>551
鉄の掟ローカルルールに従いなさい

554 :nobodyさん:2008/02/01(金) 09:37:10 ID:???
落ちてるなら立てればいいじゃない

555 :nobodyさん:2008/02/01(金) 13:03:40 ID:???
>>542
Warningとか出てないかい?
$ng = preg_replace("/\*.*?dd/" ,"!",$comment);
ddの後ろに/

556 :nobodyさん:2008/02/01(金) 14:53:57 ID:wTHzZE81
書き込みスレが間違っていたらすみません。
質問があります。

SWFファイルを、Linuxサーバー上でスクリーンセーバー(SCR)に変換できるようなプログラム/サーバーソフトというものは、ありますでしょうか?
開発言語はPHPなのですが、PHPで可能でしょうか?

どなたかお知りでしたら、何卒ご教示をお願い致します。



557 :nobodyさん:2008/02/01(金) 15:17:47 ID:???
mysql_pconnect が機能しているかどうか
どうやって確認したらよいでしょうか
持続的接続がどこかにあるのかな

それとも、コマンドラインからの起動だと
mysql_connectと何も変わらないとか?

558 :nobodyさん:2008/02/01(金) 15:19:41 ID:???
かわらない

559 :nobodyさん:2008/02/01(金) 15:38:49 ID:???
>>556
PHPで可能
win鯖なら簡単だがLinux鯖なら少し手を加える必要がある
手っ取り早く拡張モジュールで作成することもできる
拡張モジュールの作り方はググれ
ただし蔵側にはFlashPlayerがインスコされていることが条件

560 :nobodyさん:2008/02/01(金) 16:05:35 ID:wTHzZE81
>>559
素早いご回答、ありがとうございます。
貴重な情報、とても助かります。
ググッて、色々調べてみます。

561 :nobodyさん:2008/02/01(金) 18:23:13 ID:???
>>560
最初からググレカス

562 :nobodyさん:2008/02/01(金) 18:31:55 ID:???
>>561
スレタイ嫁カス

563 :557:2008/02/01(金) 18:47:24 ID:???
>>558
そうですか。かわらないですか。

ところで、CLIでなくCGIのときに
mysql_pconnectが有効に機能していることを
確認する手段はありますか?

564 :nobodyさん:2008/02/01(金) 18:58:06 ID:???
http://jp.php.net/manual/ja/features.persistent-connections.php
これでも読んでくれたまへ。

565 :557:2008/02/01(金) 19:09:22 ID:???
>>564
ちゃんと再利用しているかどうかを知る方法
がわかんないんです(><)

566 :nobodyさん:2008/02/01(金) 20:12:47 ID:AYOwH3yN
imagickを使いたいんですが
機能が多すぎて何がなんだか・・・
わかりやすく説明してるサイトがあれば教えて下さい

567 :nobodyさん:2008/02/01(金) 20:20:44 ID:???
>>566
マヌアル

568 :nobodyさん:2008/02/01(金) 20:34:02 ID:WTHcD/an
<A href="1.html">テスト1</A>
<A href="../menu.html" target="_self">
  テスト2</A>
<A href="5.html" target="top">テスト3</A>
<A href="34.html" target="top">

テスト4</A>
_______________________________________________
上記のようなソースをあり、<A>タグで囲まれた部分だけを抽出したいのですが、、

preg_match_all("/<a.*> ?(.*) ?.?<\/a>/i", $str, $matchtitle);

これで取得すると、
テスト1とテスト3だけしか取得できません
テスト2と4はソース上で改行しているせいだと思いますが、
改行部分を含んで取得するにはどうしたらいいでしょうか

569 :nobodyさん:2008/02/01(金) 20:36:22 ID:???
>>568
s


570 :nobodyさん:2008/02/01(金) 20:39:04 ID:???
>>568
先に開業コード痴漢しちゃえば?
考えんのめんどくせ

571 :568:2008/02/01(金) 20:54:45 ID:WTHcD/an
<A href="1.html">テスト1</A>
<A href="../menu.html" target="_self">
  テスト2</A>
<A href="5.html" target="top">テスト3</A>
<A href="34.html" target="top">

テスト4</A>
_______________________________________________
test.txt



<?php
$str = implode (file ( "test.txt" ));
preg_match_all("/<a.*> ?(.*) ?.?<\/a>/i", $str, $matchtitle);
$i=0;
foreach($matchtitle[1] as $title[$i]){
print $title[$i]."<br>\n";
$i++;
}
?>

ソースはこうです
>>569さんの意見を参考に
preg_match_all("/<a.*> ?(.*) ?.?<\/a>/i", $str, $matchtitle);
preg_match_all("/<a.*> ?(.*) ?.?<\/a>/is", $str, $matchtitle);
に変えてみましたがだめでした

572 :nobodyさん:2008/02/01(金) 21:06:49 ID:???
俺は基本Umsにしてる

573 :nobodyさん:2008/02/01(金) 22:40:59 ID:WPh0v7gm
>>571
preg_match_all("/<a.*?>(.*?)<\/a>/is", $str, $matchtitle);

574 :nobodyさん:2008/02/01(金) 22:51:30 ID:???
http://atress.kensyou.org/upload/up167.jpg

575 :nobodyさん:2008/02/01(金) 23:01:18 ID:oS+/fqhr
PHPからシェルプログラムを実行させることは可能?

576 :nobodyさん:2008/02/01(金) 23:05:00 ID:???
yes

577 :nobodyさん:2008/02/01(金) 23:11:44 ID:oS+/fqhr
PHPから受け取った変数をもとにシェルプログラムを実行させることは可能?ってnoだよな。何言ってんだ、、、

578 :nobodyさん:2008/02/01(金) 23:15:51 ID:???
普通にできるよっていうかマニュアルみろカス

579 :nobodyさん:2008/02/01(金) 23:16:21 ID:oS+/fqhr
くだらねぇ質問でスマソ

580 :nobodyさん:2008/02/01(金) 23:19:26 ID:???
>>1を読んだ上でくだらない質問をすること

581 :568:2008/02/01(金) 23:24:59 ID:WTHcD/an
できました!
本当にありがとうございます
とても助かりました!

582 :nobodyさん:2008/02/01(金) 23:57:45 ID:4fv7t71O
smartyでデータベースから引っ張ってきた値だけ文字化けするんですがどうすればいいですか?
var_dump()で出力した結果は文字化けせず、assignしたら文字化けするんですが・・・。
あと、Smarty内でceil関数とか使えないんですか?


583 :582:2008/02/02(土) 00:03:55 ID:qL81uK5h
あ、スマソ、文字化けはmb_strimwidthで半バイト切り取られていたのが原因でした


584 :nobodyさん:2008/02/02(土) 00:04:58 ID:???
>>582
文字化けするようにmeta書いたら化けて当然。

ceilも使える。


585 :582:2008/02/02(土) 00:12:15 ID:qL81uK5h
とりあえず文字化け解決しました
{$item.string|mb_strimwidth:0:100:"...":"UTF-8"|escape}

ceil関数使うのってどうすればいいんですか?

{ceil($item.id/$item.id2)}
じゃエラーが・・・・

586 :nobodyさん:2008/02/02(土) 00:18:02 ID:???
そろそろいい加減Smarty専用スレたてないか?
ここ最近多すぎる。

587 :nobodyさん:2008/02/02(土) 00:21:30 ID:???
たてたよ

【PHP】 Smarty 隔離スレ 【テンプレート】
http://pc11.2ch.net/test/read.cgi/php/1201879269/

588 :nobodyさん:2008/02/02(土) 00:39:57 ID:???
phpinfoみたら使わないライブラリが結構組み込まれてるんですが
これ機能使わなくても入れておくだけでメモリ消費しますよね?

589 :nobodyさん:2008/02/02(土) 03:00:39 ID:???
インストールしただけで使ってたらおかしいだろ常識的に考えて
呼び出したときに初めて使われるわけで

590 :nobodyさん:2008/02/02(土) 03:09:51 ID:???
消費するよ
アパッチの子プロセスがえれえ多い場合にはSSLとか削ったほうがいいこともあるちゃが
削ってもバイナリは大して小さくならんし起動時間も短くならんけん放置推奨ばい

591 :nobodyさん:2008/02/02(土) 03:41:32 ID:???
レスありがとうございます。
関数でいつでも呼び出せる状態にしておくための
関数テーブルのようなものをメモリに読み込んで
その部分だけ消費するって感じでしょうか。
関数がやたらに多いライブラリもあるので
アイドリング時の消費がどの程度なのかちょっと気になります。

592 :nobodyさん:2008/02/02(土) 04:42:25 ID:???
imagettftextの
size=フォントサイズ。GD のバージョンに依存し、ピクセルサイズ (GD1) もしくはポイントサイズ (GD2) で指定する必要があります。
って改悪では?
webで扱う時に問題になるのはほとんど常にピクセルサイズなのに
ポイントサイズって何?
何でこんな改悪が行われたの?

593 :nobodyさん:2008/02/02(土) 11:12:21 ID:???
sprintfの書式を調べたが分からなかったので。
カンマ区切りの数値にするにはどうしたらよい?
たとえば「1234567」なら「1,234,567」みたいに出力したいです。

594 :nobodyさん:2008/02/02(土) 11:16:53 ID:???
>>593
number_format()で解決しる

595 :nobodyさん:2008/02/02(土) 12:32:28 ID:???
>>594
さんくす!

596 :nobodyさん:2008/02/02(土) 12:44:39 ID:???
>>565
同じリソースIDが返るが、異なるプロセスだと
偶然重なるとこはあり得るし判別には使えないな。

mysqlだったらTEMPORARYテーブルに何か書き込んで
それが残ってるかで見たら?あれは接続毎に独立してる領域だから。

597 :nobodyさん:2008/02/02(土) 12:50:28 ID:???
imagettftextで縦書きするプログラムを書いてるんですが
。とか、を縦書きすると位置が不自然になります
いい方法はないですか?

598 :nobodyさん:2008/02/02(土) 12:51:15 ID:???
ミニミニミクロ電子幼稚園っていつの間にか終わってたのか

599 :nobodyさん:2008/02/02(土) 14:18:51 ID:???
>>597
回転か専用のフォントで上手くいかないか

600 :nobodyさん:2008/02/02(土) 16:00:43 ID:f9Zd2DDP
form.htmlで取得した

$sex
$age
$com

の3つをcsvに書き込むのにはどうしたらいいでしょうか?

また、次に書き込む際に一度書き込んだデータを消さずに
次の行に書き込んでいくにはどうしたらいいでしょうか?

以下のような感じです

   A    B    C
1  男    34    1
2  男    24    2
3  女    45    1
4  男    38    1

よろしくお願いします

601 :nobodyさん:2008/02/02(土) 16:13:29 ID:???
>>600
form.htmlのformタグを以下のように書く。
<form method="POST" action="test.php">

[test.php]というファイルを作り、以下の内容を記述する。
<?php
$line = $_POST["sex"] . "," . $_POST["age"] . "," . $_POST["com"] . "\n";
$fp = fopen("test.dat", "a");
fwrite($fp, $line);
fclose($fp);
?>

[test.dat]というテキストファイルを作り、何も書かずに保存する。

test.phpとtest.datをform.htmlと同じディレクトリに置き、
ブラウザからform.htmlでデータを入力する。

602 :600:2008/02/02(土) 16:49:50 ID:???
>>601
早速ありがとうございます。
そのままの記述でテストしたところ

Warning: fopen(test.dat) [function.fopen]: failed to open stream: Permission denied in /var/www/vhosts/localhost/httpdocs/test.php on line 3

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/vhosts/localhost/httpdocs/test.php on line 4

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/vhosts/localhost/httpdocs/test.php on line 5

とのエラー文が出てしまいます。

603 :nobodyさん:2008/02/02(土) 16:52:31 ID:???
>>602
パーミッションに関するエラーが出ているので、[test.dat]もしくは
そのディレクトリのパーミッションを見直してみるといいよ。
書込みが禁止になってないかな?

604 :nobodyさん:2008/02/02(土) 16:53:29 ID:???
>>602
なにこいつ。ゆとりやな。

605 :600:2008/02/02(土) 16:54:41 ID:???
>>601
出来ました!
datファイルのパーミッションの設定に誤りがありました。

ありがとうございました!

606 :nobodyさん:2008/02/02(土) 16:58:57 ID:???
$LoginID = trim($_POST["LoginID"]);
$LoginID = strip_tags($LoginID);
$LoginID = htmlspecialchars($LoginID);

$LoginIDはログインID&名前みたいなもので、
サイトで表示したりPostgreSQLで使用するのですが、こんな対策で大丈夫なんでしょうか?

607 :nobodyさん:2008/02/02(土) 17:04:58 ID:???
>>605
ゆとり用の隔離スレなのだから、仕方ないw


>>606
一般的にはそれでおk。
SQL実行が不安だったら、ログイン部分をデータベース参照する
処理じゃないようにして、テキストファイルの中身との一致を
確認する処理にしてしまうのも手だ。
それをやれば、中身は文字列一致しかしないのだから、どんな
記号を入れてこられてもおk。

608 :606:2008/02/02(土) 17:18:07 ID:???
>>607
確かにその方法だと安心ですね。
ありがとうございました。

609 :nobodyさん:2008/02/02(土) 17:27:46 ID:???
えー
必要な時に必要な分必要なだけチェックする方がいいよ
ひろみつ先生に怒られるし

610 :nobodyさん:2008/02/02(土) 17:36:50 ID:???
>>606
一般的にはそれでは90点くらい。
使い方によっては脆弱になりかねない。

ENT_QUOTES

611 :nobodyさん:2008/02/02(土) 18:18:18 ID:???
implodeやらfputcsvやらname[]やら使わないのは何ゆえ?

612 :nobodyさん:2008/02/02(土) 18:19:36 ID:???
DBに投げる値にhtmlspecialcharsかけんの?ありえねー。

613 :nobodyさん:2008/02/02(土) 18:19:46 ID:pDDEbWQ1
index.phpで読み込み、書き込みするファイルlog.txtを
一般ユーザーからの直リンクで一切表示させない方法ってありますか?

index.phpファイルの実行時のみlog.txtを操作出来るようにしたいのですが、
パーミッションの設定など試してみましたが無理でした。

614 :nobodyさん:2008/02/02(土) 18:23:17 ID:???
一般ユーザがアクセスできない場所に保存すれば?

615 :nobodyさん:2008/02/02(土) 18:23:29 ID:???
>>613
PHPレベルでそれをやるのは無理。
ファイル名を長くしたり、ランダムに自動で変えたりして、対処するしかないだろうね。
PHPより下のレベルでならば外部からのアクセスを遮断するのは可能だが。

616 :nobodyさん:2008/02/02(土) 18:51:05 ID:pDDEbWQ1
>>614-615
一般ユーザがアクセス出来ない場所というのは同時に、
一般ユーザがPHPの実行でアクセス出来ない場所ではないんでしょうか?

下のレベルというのがよく分からないで、参考になるページとか単語があればお願いします。

617 :nobodyさん:2008/02/02(土) 18:53:44 ID:???
>>616
ヒント:phpとは別のディレクトリにおいて.htaccess

618 :nobodyさん:2008/02/02(土) 19:01:30 ID:???
>>616
public_htmlより上に置くとか.htaccessで特定ファイルへのアクセスを弾くとかね。

619 :nobodyさん:2008/02/02(土) 19:07:54 ID:UI6Nac8M
そのまんまですね。
要するにlogをブラウザがアクセスできないディレクトリにおいて、そこをphp経由で使用する
Webに公開されないディレクトリに置くか/public_htmlの代わりに/private_htmlを使うとか、Web上でもブラウザで見ることができないようにアクセス制限をかけるとか

620 :nobodyさん:2008/02/02(土) 19:18:47 ID:pDDEbWQ1
>>617-619
よく分かりました、ありがとうございます。
今のレンタル鯖では制限のため出来ないようなので、また別の鯖を利用してやってみます。

621 :nobodyさん:2008/02/02(土) 19:24:42 ID:???
ドキュメントルートやアクセス権の概念もなくWebアプリ作ってるってのもすごいな

622 :nobodyさん:2008/02/02(土) 19:28:42 ID:???
>>620
その程度の知識なら、ローカルで全部やれ。
迷惑だ。

623 :nobodyさん:2008/02/02(土) 20:21:30 ID:+LXVTbfm
check.phpからcart.tplへassignで配列を渡して、そのcart.tplから
その配列をtotal.phpへhiddenで渡そうとしても上手く渡せません。
hiddenでは配列を渡せないのでしょうか?
SESSIONを使うのでしょうか?
どなたかやり方をお願いします。

624 :nobodyさん:2008/02/02(土) 20:32:31 ID:???
>>623
そのコードを示さないと判断は出来ないと思う。
あと、ページをまたがってデータをやり取りする場合は、
SESSIONのほうがいいとされている。

625 :nobodyさん:2008/02/02(土) 20:44:10 ID:???
hiddenに配列入れるってどうやってんだろ

626 :nobodyさん:2008/02/02(土) 20:50:02 ID:???
>>625
それ、俺も思った。恐らくこんな感じでは?w
<input type="hidden" name="$a[3]" value="{0,1,2}">

627 :nobodyさん:2008/02/02(土) 21:01:25 ID:???
パースし直すの面倒だなw

628 :nobodyさん:2008/02/02(土) 21:01:44 ID:???
http://jp.php.net/manual/ja/faq.html.php#faq.html.arrays

629 :nobodyさん:2008/02/02(土) 21:06:30 ID:???
hiddenだからできないとか有り得ないだろ常識的に

630 :nobodyさん:2008/02/02(土) 21:07:18 ID:+LXVTbfm
>>624
ありがとうございます。
SESSIONでやり取りできました。
二つあるSESSIONのお互いの配列はどうやって最後に一つにしたらいいですか?
何度もすみません。
>>625>>626
無茶な事をしてたみたいです。すみません。

631 :nobodyさん:2008/02/02(土) 21:37:01 ID:???
>>630
sessionから先の配列に代入

632 :nobodyさん:2008/02/02(土) 22:17:42 ID:DhduKq9O
対話形式のコマンド、例えばpasswdコマンド、をphpのsystemやらexecやらで叩ける?

633 :nobodyさん:2008/02/02(土) 22:17:43 ID:???
<input type="hidden" name="nanka[]" value="0">
<input type="hidden" name="nanka[]" value="1">
<input type="hidden" name="nanka[]" value="2">
これで配列渡せると思うけど

634 :nobodyさん:2008/02/02(土) 22:20:03 ID:???
そうじゃなくて>>623がどうやってんだろって事だよ

635 :nobodyさん:2008/02/02(土) 22:39:51 ID:???
なるほど・・・
ありがちなのは
<input type="hidden" name="nanka" value="Array">
だろうな


636 :nobodyさん:2008/02/02(土) 22:49:06 ID:???
>>598
いま1194でやってるよ

637 :nobodyさん:2008/02/03(日) 00:43:42 ID:ogX/8gGf
相談です
var_dump($gNameAry2);
echo "ggg>".$gNameAry2[1]."<br />";
としたとき、上のvar_dumpで配列の中身がちゃんと表示されるのに、
下のechoでの出力は何もされません
どんな理由が考えられるでしょうか? この2行の間にはなにもありません

638 :nobodyさん:2008/02/03(日) 00:59:48 ID:???
>>637
var_dump()の結果とエラーログを出して

639 :nobodyさん:2008/02/03(日) 01:18:05 ID:ogX/8gGf
>>638
どうもです エラーは出ていないんです。var_dumpの結果は以下です
array(2) { ["グループ1"]=> string(24) "シュープリームス" ["グループ2"]=> string(21) "クルセイダーズ" }


640 :nobodyさん:2008/02/03(日) 01:21:50 ID:???
>>639
echo "ggg>".$gNameAry2["グループ1"]."<br />";
echo "ggg>".$gNameAry2["グループ2"]."<br />";


641 :nobodyさん:2008/02/03(日) 01:36:17 ID:???
PHPではarray[1]は、"1"をキーとした(順序つき)連想配列だと思うと分かりやすいかも
あとデバッグ時にはE_NOTICEまで出力すると分かることが多い

642 :639:2008/02/03(日) 01:37:34 ID:ogX/8gGf
>>640
あ、それだとちゃんと表示されました(ggg>シュープリームス)
>>639の形の配列って$gNameAry2[0]の形でアクセスできないんですか?
やばい、相当恥ずかしいこと聞いてますか?orz

643 :nobodyさん:2008/02/03(日) 01:41:12 ID:rw9YKxIr
>>599
縦書きフォントを含んでいるttfファイルも
縦書きと横書きが一つのファイルになっていますよね?
そしてimagettftextには縦と横の指定をするオプションがないようです。
縦書きしか含まれていないttfファイルを何らかの方法で作るしかないでしょうか?
一文字ずつ回転させる方法は、一応できましたが、
負荷的に、合成を一度で済ませた方が軽いと思うので
縦書きフォントの方もさぐっています。

644 :639:2008/02/03(日) 02:05:53 ID:???
教えてくれた人、ありがとうございました
解決しました ほんとにありがとう

645 :nobodyさん:2008/02/03(日) 02:07:19 ID:???
>>642
http://www.php.net/manual/ja/language.types.array.php
か入門書の配列文を読んでからまた質問してください。

配列の「キー」と「値」について勉強しましょう。

646 :nobodyさん:2008/02/03(日) 02:14:19 ID:???
他言語の人向けにいうとPHPには配列は存在しない
配列と呼ばれてるのはハッシュ

647 :nobodyさん:2008/02/03(日) 02:39:31 ID:???
>>644
ちんぽまるだしでがんばれよ。

648 :nobodyさん:2008/02/03(日) 03:24:48 ID:???
>>646
多言語向けに言うなら、順序付きハッシュって説明してあげたほうがいいな。

649 :nobodyさん:2008/02/03(日) 03:29:09 ID:???
連想配列の場合は暗黙に順序が付く

650 :nobodyさん:2008/02/03(日) 03:45:51 ID:???
他の言語ではハッシュは順番が保障されないことが多い。
PHPでは入れた順番に値を取り出すことが出来る。

だから配列のようにも使えるし、ハッシュのようにも使える。
結構便利だよ。データベースのフィールドとか、
定義した順番に取り出すことが出来るから。

651 :nobodyさん:2008/02/03(日) 03:47:39 ID:???
そんなことはどうでもいい。

652 :nobodyさん:2008/02/03(日) 03:52:05 ID:???
どうでもよくないぞw

653 :nobodyさん:2008/02/03(日) 04:12:33 ID:???
連想配列は子ども一人社会復帰させられないもんな

654 :nobodyさん:2008/02/03(日) 11:10:45 ID:???
ハッシュに順番が保障されるというのは、処理が遅いということじゃない?
格納するのと取り出すのを優先するのがハッシュだと思うんだけど。

655 :nobodyさん:2008/02/03(日) 11:50:01 ID:???
デメリットよりメリットの方がおおきい


656 :nobodyさん:2008/02/03(日) 11:53:31 ID:???
scriptにスピードを期待するなよ

657 :nobodyさん:2008/02/03(日) 11:58:45 ID:???
キーで値をとるのにインデクスは関係ないし逆もまた然り
ギャップを埋めたりするわけでなし、実装コードのどこを見て言ってるのか分からん

658 :nobodyさん:2008/02/03(日) 12:18:05 ID:???
ハッシュと内部のハッシュテーブルは別物だからな
OrderedHashが遅いのではなく配列が遅い
といっても今のPHPはチューニングされてるから一概に言えない

659 :nobodyさん:2008/02/03(日) 12:28:41 ID:???
>>654
ハッシュに追加したキー順番データを保持しておけば良いだけ。
キーで取り出すときは、キー順番データを参照しないから変わらない。
foreachで順番に取り出すときは、ハッシュの内部順番データを取得する代わりに
キー追加順番データを見るだけ。

順番データを保持するだけでいいのだから、キーの数×数バイト のメモリ容量と
追加時にわずかな処理低下しか発生しない。


660 :nobodyさん:2008/02/03(日) 12:32:14 ID:???
>>659
なるほど。ならば、PHPのハッシュが優秀だな。

661 :nobodyさん:2008/02/03(日) 16:50:41 ID:???
xdebug入れたらNoticeが表示されんようになったんだけど、
これなんで?

662 :nobodyさん:2008/02/03(日) 19:39:59 ID:???
レポートレベルが変えられてっかじらじゃね?

663 :nobodyさん:2008/02/03(日) 19:40:31 ID:ogX/8gGf
/user/1001/img/event20080203.jpg
/user/1002/img/event20080203.jpg
って風に保存されてる画像があるとして、eventの後に続く数字はアップロード日時
なんですが、この日時から半年過ぎたら削除されるようにしたいと思います。
どうしたらいいんでしょう?
今考えてるのは、ユーザID(1001…)がふえてくのをループをまわして対応しつつ、
該当ファイルがあるのを確認したらunlinkで消してくことなんですが。
for($i=1001;$i<=$userCount;$i++){//こんな感じです 荒っぽいですが
 if(getimagesize(該当ファイル *日時抽出と比較もここ)){unlink(該当ファイル);}
}
しかしこれだと、ほんとに削除処理できてるのか一目瞭然でわかりづらいので
なんとなく不安です。(全部のユーザのイメージフォルダを開かなきゃいけない)
アップロード領域を一箇所にまとめて処理すればすぐ確認できると思うんですが、
事情がありそれは難しい状況です。

・定期的に不要なファイルを削除できて、削除の確認がすぐに出来る方法ないでしょうか?

664 :nobodyさん:2008/02/03(日) 20:09:15 ID:???
別にいいんじゃない?
他にやりようはあるけど、それで問題ないなら十分かと

665 :663:2008/02/03(日) 20:36:58 ID:ogX/8gGf
>ほんとに削除処理できてるのか一目瞭然でわかりづらいので
>なんとなく不安です。

こういうのを不安に思うのがおかしいんですかねー?
逆に言ったら、アップされたときにちゃんとアップされてるか
いちいちディレクトリ開いて見るのと同じってことかな…


666 :nobodyさん:2008/02/03(日) 20:37:46 ID:+kFg/DIc
質問です
配列$_SESSION('a')中身はArray ( [id] => 1 [name] => 山田 [etc] => 右 ) に
配列の$b中身はArray ( [id] => 5 [name] => 田中 [etc] => 右 )を
入れたいのですがarray_pushではきれいに入れる事が出来ないのですが
やり方を教えてください。お願いします。

667 :nobodyさん:2008/02/03(日) 20:41:19 ID:???
>>666
unset($b)ってすると
「きれいに」なるよ

668 :nobodyさん:2008/02/03(日) 20:45:00 ID:???
>>666
aのどこにbを入れたいの?

669 :nobodyさん:2008/02/03(日) 20:54:29 ID:???
一目瞭然の使い方間違ってるよ

670 :nobodyさん:2008/02/03(日) 20:56:07 ID:+kFg/DIc
>>668
ショッピングページの様に最初に情報を入れたカート($_SESSION('a'))に
ページをまたぎ次に選択した情報($b)を追加していきたいのですが
やり方がわかりません。お願いします。

671 :nobodyさん:2008/02/03(日) 21:00:30 ID:???
>>668
おそらく
$_SESSION = array(
 'a' => array([id] => 5 [name] => 田中 [etc] => 右)
)

$_SESSION['b'] = $b;
ってしたい。もしくはマージしたいんジャマイカ?

672 :nobodyさん:2008/02/03(日) 21:03:08 ID:???
そういう一目瞭然の使い方見たのは、はじめてだ。
ま、確かに「役不足」の正確な意味を知らなかったとかは
あるけどさ、ここまでひどくなるのを見ると驚くよ。
ゆとり世代ってすさまじいな。

673 :nobodyさん:2008/02/03(日) 21:07:09 ID:???
ログ吐くとかunlinkじゃなくてrename使って一箇所に集めてみるとか
やりたいようにやればいいんじゃないの

674 :nobodyさん:2008/02/03(日) 21:12:05 ID:???
>>670
$_SESSION['cart'][] = 追加したいアイテム
$_SESSION['cart'][] = 追加したいアイテム
$_SESSION['cart'][] = 追加したいアイテム

675 :nobodyさん:2008/02/03(日) 23:24:59 ID:zqPVhuXn
pear install Mail_MIME
としたらversion1が1.6以下だと怒られた
http://www.aubetec.com/hiruneko/blog/archives/2007/10/pear.html
ググるといいサイトが見つかったので手順とおりに進む
pear listでPEARが1.7であることを確認後もう一度installを試みるも同じように怒られた。。。

676 :nobodyさん:2008/02/03(日) 23:26:56 ID:???
>>675
ふーん。で?

677 :nobodyさん:2008/02/04(月) 00:13:57 ID:jFq8zh8H
なぜか教えてくださいっ!!

678 :nobodyさん:2008/02/04(月) 00:26:16 ID:???
その程度の問題解決もできなくて pear 使ってるなんて…

679 :nobodyさん:2008/02/04(月) 01:05:35 ID:vecMkQ0b
>>674
うまく出来ました
ありがとうございました

680 :nobodyさん:2008/02/04(月) 01:09:25 ID:???
printf()のテキスト中で %s をエスケープしてそのまま表示することはできますか?

681 :nobodyさん:2008/02/04(月) 01:10:04 ID:???
>>1

682 :nobodyさん:2008/02/04(月) 03:53:04 ID:???
最近、ネチケットっていう言葉が聞かれなくなったが、
これもweb2.0が復旧した陰の部分なんだろうなぁ。
パソコンの向こうにいるのは、人間だということを理解してくれ。
テレビゲームのキャラ相手にメッセージしていると錯覚してんじゃないの?

683 :nobodyさん:2008/02/04(月) 04:56:14 ID:0159YIyB
下らない質問ですみません。
クラスはどんなときに使うものなのでしょうか?


684 :nobodyさん:2008/02/04(月) 05:25:47 ID:???
下らない。




















でも、このスレだから許す

685 :nobodyさん:2008/02/04(月) 06:36:26 ID:???
テンプレも読んでない質問者に対しては >>1 と3文字入力するだけで済む

686 :nobodyさん:2008/02/04(月) 06:45:18 ID:???
>>683
カプセル化でググるといいよ。

687 :683:2008/02/04(月) 07:20:35 ID:0159YIyB
ありがとうございました。

688 :nobodyさん:2008/02/04(月) 07:30:11 ID:???
>>686
ググるはもう古いよ。今はヤフる。

689 :nobodyさん:2008/02/04(月) 07:32:11 ID:???
矢降る
↓   ↓   ↓          ↓       ↓

↓↓   ↓      ↓   ↓       ↓         ↓↓
          ↓                ↓ ↓
↓   ↓            ↓     ↓          ↓
       ↓     ↓               ↓
 ↓                    ↓          ↓
     ↓           ↓ ↓

690 :nobodyさん:2008/02/04(月) 08:02:25 ID:???
 ,.、,、,..,、、.,、,、、..,_       /i
;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
'、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
 `"''`゙ `´゙`´´´


691 :nobodyさん:2008/02/04(月) 09:40:28 ID:???
生メールの本文解析めんどくさ
特にマルチパートとかまじしね

692 :nobodyさん:2008/02/04(月) 09:42:56 ID:???
質問スレで愚痴書かれても困る。

693 :nobodyさん:2008/02/04(月) 09:48:53 ID:???
雑談スレと間違えたなんて恥ずかしくていえない

694 :nobodyさん:2008/02/04(月) 09:52:33 ID:???
会員制のサイトを運営していまいて、
会員ごとに見せるページが違います。
ページに関しては、phpでセッション管理で制御しているので楽なのですが、
画像だけは、直リンクされるとログインしていないくても誰でも見れてしまいます。

画像もセッション管理するにはどうすれば宜しいのでしょうか?
画像をphpで生成してreadfileで出力することを思いつきましたが、
この方法だと、同じ画像でも毎回毎回転送する羽目になって
画像の転送量が増えてしまいます。

何かいい方法はないでしょうか?宜しくお願いします。

695 :694:2008/02/04(月) 09:52:55 ID:2EdkHT4G
すみませんIDだしていませんでした。

696 :nobodyさん:2008/02/04(月) 10:02:03 ID:???
.htaccessで防ぐ

697 :nobodyさん:2008/02/04(月) 10:09:41 ID:2EdkHT4G
>>696
アドバイスありがとうございます。
.htaccessでロックする方法がイメージがつかないのですが、
IPアドレスで制限するか、画像にBASIC認証をするということでしょうか?
ちょっと、運用が難しい印象を受けたのですが・・・

698 :nobodyさん:2008/02/04(月) 10:35:22 ID:1+3di8q+
docomoで端末情報見て簡単ログイン設定を作るのってさ
UTN入れるから絶対確認メッセージ出るじゃん。

でも、某SNSサイトってそういう確認も何も無しで識別してログイン出来る…。
もちろん完全なトップページからアクセスしても識別される。。

携帯ってPCと違ってハッシュを見て〜なんて出来ないよね??

699 :nobodyさん:2008/02/04(月) 11:05:53 ID:???
>>698
もばげの事だと思うけど完全なトップページからいくと認識されないぞ。
URLを表示して後ろに何もついてないか確認してみそ。
http://****.jp/.o2i2jsie/みたいな適当なのがついてない?

700 :nobodyさん:2008/02/04(月) 11:19:48 ID:XGKTCZyB
質問です。
mb_splitにて文字列を配列に展開したいのですが、

<?php
$text = "温泉 アロマ 癒し";
mb_internal_encoding("UTF-8");
var_dump(mb_split("[ ,./,./ ]", $text));
?>

このようにすると、展開した文字が化けて、配列が11行くらいになってしまいます。
文字列はUTF-8なのですが、なぜうまく展開してくれないのでしょうか?

701 :700:2008/02/04(月) 11:25:21 ID:XGKTCZyB
各文字コードで試してみたところ、
UTF-8→失敗
EUC-JP→失敗
SJIS→成功

いやだっ!SJISは信用したくないっ!!

702 :700:2008/02/04(月) 11:26:37 ID:XGKTCZyB
mb_regex_encodingで解決しました

703 :nobodyさん:2008/02/04(月) 11:31:32 ID:XGKTCZyB
う〜ん、テキストが空・NULLの状態でmb_splitすると、
必ず配列が1つできてしまうな・・・
これが仕様だったらやだな・・・何で何もないところから配列ができるんだ気持ち悪い

FALSEでもできるorz

704 :nobodyさん:2008/02/04(月) 11:37:12 ID:???
>>697
Deny from all
のhtaccessを画像ディレクトリに置いておけばいいんじゃね?
ディレクトリに分けてないなら拡張子で指定してもいいし。
(関係ないけど書き込むとなぜか.htaが消されるのね)




705 :698:2008/02/04(月) 12:17:05 ID:fn0vsA22
>>699
ごめんごめん。モバゲの事じゃないんだ。
Goccoっていうインデックス社のSNSなんだけど、例えばトップから
「マイページ」をクリックすると端末情報とか一切送信せずにログイン出来るのよ。
一体どの情報を見てログイン識別してるんだろう…。

706 :nobodyさん:2008/02/04(月) 12:17:53 ID:???
>>705
IPだったらオワタ

707 :nobodyさん:2008/02/04(月) 12:33:40 ID:???
UTN送信確認OFFにしてるとか

708 :nobodyさん:2008/02/04(月) 12:51:17 ID:M2AmAKlA
ページ1で生成した二次元配列($arrayA)をそのままページ2に送りたいんだけど
どうしたらいいの?
<input type="hidden" name="hairetsu" value="{$arrayA}"/>
としてページのソースを見ると
<input type="hidden" name="hairetsu" value="Array"/> ってなってしまってる…

709 :nobodyさん:2008/02/04(月) 12:57:11 ID:???
>>708
展開して一個ずつhiddenに押し込め!

710 :nobodyさん:2008/02/04(月) 13:12:15 ID:???
すかさずシリアライズ

711 :nobodyさん:2008/02/04(月) 13:20:14 ID:fn0vsA22
>>706
いやぁIPでは無理しょ。

>>707
いや、それはないんよ。
実際に「簡単ログイン」ボタンからログインしようとすると送信確認出るし。

Goccoって公式サイトなんかな?
そうだとしたら公式のみ受信出来るデータで識別してる可能性もあるけど
私はマイメニュー登録してないのに自動ログイン出来ちゃうから違うか…。

UTNで送信確認無しで「何らかの」識別情報が取れるなら、docomoユーザ
に対してのログインがスムーズになるんだよね。
今、自分のサイトはPHPで構築してるけど初心者ユーザはUTN確認画面を
見て意味もなくビビってUターンする場合もあるから…。

712 :nobodyさん:2008/02/04(月) 13:20:52 ID:???
>>711
IP自体は固定だけど重複する可能性があるんじゃまいか

713 :nobodyさん:2008/02/04(月) 13:25:01 ID:???
NULLGWDOCOMOでぐぐれ

つか有名なネタだし

714 :nobodyさん:2008/02/04(月) 13:27:29 ID:???
>>708
二次元配列なら arrayA[1] でも同じことになるから
foreach2つ回して一個一個入れる。

715 :nobodyさん:2008/02/04(月) 13:29:44 ID:M2AmAKlA
>>711
おお、なんか上手くいきそうです サンキューです!
>>710
どうもです

716 :nobodyさん:2008/02/04(月) 13:31:19 ID:???
>>712
UIDとれる公式ならUTNとる必要なくないか?

717 :nobodyさん:2008/02/04(月) 13:54:55 ID:???
>>1
>◆質問後の注意
>・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
は ◆質問する時の注意 に書いておいた方がよくない?

718 :nobodyさん:2008/02/04(月) 14:14:44 ID:???
スレタイも間違えるしテンプレ変えるしろくでないやつが立てちゃったんだな

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

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1198002831/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで

が正しいテンプレ

719 :nobodyさん:2008/02/04(月) 14:20:38 ID:???
>>717
ほとんど読み飛ばされてるし、「まず読め」のさらに前に強調表示で載せていいくらいだと思う。

720 :nobodyさん:2008/02/04(月) 14:21:11 ID:fn0vsA22
>>713
なるほど…。
て事はマイメニュー登録してなくても、メルマガ登録の時とかにUIDを取って紐付けているのでしょうね。
ありがとうございました!!

721 :nobodyさん:2008/02/04(月) 14:21:52 ID:???
確かNULLGWDOCOMOじゃなくても取る方法はあったはず
まぁそれを解析しようとしてできなかったへたれだがorz



722 :nobodyさん:2008/02/04(月) 16:56:24 ID:GS32OYvU
ヒアドキュメントについて質問させてください。

<?php
$hogehoge = "abcde";
$hoge = <<<EOM
<html>
<head>
<title></title>
</head>
<body>

$hogehoge

</body>
</html>
EOM;
?>

これを 「hoge.php」 書き込みたいんですが
このままだと$hogehogeがPHPとして働かないので

$hogehoge → <?php $hogehoge; ?> に変更しました。
が、<?php $hogehoge; ?>の部分がPHPが働いて変数$hogehogeが表示されました(abcde)

長いので次に続く

723 :nobodyさん:2008/02/04(月) 16:57:46 ID:???
{$hogehoge}

724 :nobodyさん:2008/02/04(月) 16:58:52 ID:GS32OYvU
<?php
$hoge = "abcde";
$hoge = <<<EOM
<html>
<head>
<title></title>
</head>
<body>
EOM;

$hoge .= '$hogehoge';

$hoge .= <<<EOM
</body>
</html>
EOM;

こうしたところ正常に動作し、hoge.phpに書き込まれました。

しかしこれだと変数出てくるたびに切れるので面倒だ。
何かいい方法はありませんか?

725 :nobodyさん:2008/02/04(月) 17:01:17 ID:GS32OYvU
>>723
すいません、ここで$hogehogeを表示してはまずいんです。

$hogehogeは外部から取得するもので常に変化するので
そこはPHPじゃないといけないんです。

726 :nobodyさん:2008/02/04(月) 17:09:18 ID:???
意味がわからん
外部ってどこから?
GETとかで取得するなら予めhtmlentitiesでもすればいいんじゃない?

727 :nobodyさん:2008/02/04(月) 17:16:11 ID:GS32OYvU
>>726
例えばXMLから。

簡単に書くと
ヒアドキュメント内で

<?php echo '$hogehoge'; ?>

この一行をそのままファイルに書き込みたいんです。
htmlentitiesをすると書き込まれたphpで動かなくなるんじゃないですか?
まだ試してないですがphpが動作しないと思いますが、、、

728 :nobodyさん:2008/02/04(月) 17:17:04 ID:???
>>727
> まだ試してないですがphpが動作しないと思いますが

試してないなら試してから質問しろ
あと、情報小出しにするな

729 :nobodyさん:2008/02/04(月) 17:21:13 ID:GS32OYvU
>>728
いや申し訳ないけど

<?php

とかになってphpが動くはずがないですから…
今から一応試してみますね。

730 :nobodyさん:2008/02/04(月) 17:22:12 ID:???
うは、変換された。

&lt;?php です。

731 :nobodyさん:2008/02/04(月) 17:23:53 ID:???
>>729
別に動くか動かないかで試すんじゃねーよ
動いても動かなくても試すことでそこから何か得られるんだ
得られなかったらお前の脳の問題

で、結局何がしたいんだ?
XMLから1行取得してファイルに書き出したい?

simple_xml_loadで特定の行を取得して
file_put_contentsでファイルにでも書き出せ

732 :nobodyさん:2008/02/04(月) 17:32:18 ID:???
><?php echo '$hogehoge'; ?>
>この一行をそのままファイルに書き込みたいんです。
単にこれだけならhtmlentitiesとかしないでそのまま書けばいいじゃん。
ファイルに書き込む方法がわからんとか?

733 :nobodyさん:2008/02/04(月) 17:35:01 ID:GS32OYvU
>>731
多分勘違いされてると思うんですが
ヒアドキュメント内に

<?php echo $town ?>
この文を書いてこの文が何も変換されないまま

hoge.phpに書き込まれたいのです。

734 :nobodyさん:2008/02/04(月) 17:37:05 ID:???
久々にエスパー要るな

735 :nobodyさん:2008/02/04(月) 17:37:44 ID:GS32OYvU
>>732
普通にfwriteでやってるんですがまずいんでしょうか?

<?php echo '$hogehoge'; ?>
これを書き込むと書き込んだ先で$hogehogeが展開されてるんですよ。

736 :nobodyさん:2008/02/04(月) 17:41:26 ID:???
>>734
$hogehoge = 'abcde';
$hoge = "123 $hogehoge 456"; // こうなるのが困るらしい
$hoge = '123 $hogehoge 456'; // こういう代入をヒアドキュメントでやりたいらしい

という質問だと思うんよ、たぶん。

737 :nobodyさん:2008/02/04(月) 17:53:14 ID:???
fwrite($handle, '<?php echo "$hogehoge"; ?>');
のようにシングルクォートとダブルクォートを入れ替えちゃダメなの?

738 :nobodyさん:2008/02/04(月) 18:10:14 ID:GS32OYvU
>>736
そうです、わかりにくくて申し訳ない。
中々これが思い通りにいかなく困っております。

>>737
それで可能でしょうがヒアドキュメントでは不可能なんでしょうか?
それだったら素直に諦めるんですが、、、

739 :nobodyさん:2008/02/04(月) 18:11:41 ID:???
>>738
不可能、お前バカだから

740 :nobodyさん:2008/02/04(月) 18:14:59 ID:???
なんのためにヒアドキュメントがあるかわかってんの?

741 :nobodyさん:2008/02/04(月) 18:26:30 ID:???
>>738
頭悪いのいっぱい発生してるけど気にすんな。
想像力も一つの能力、想像力ないやつはクリエイターに向かない。

で、本題。
結論から言うと可能。

書き方をよく考えれば反映される。
お前も想像力足りないから考えろ。

742 :nobodyさん:2008/02/04(月) 18:31:01 ID:OeLZYsIz
ライブラリにしたいクラスファイルの中から
他のクラスを使う時ってどう書いてますか?
includeをハードコーディングするのか、
読み込み部分を一切書かず、
__autoloadの記述に委譲するのか、
ベターな方法に迷ってます。

743 :nobodyさん:2008/02/04(月) 18:34:55 ID:GS32OYvU
>>740
改行やタブをそのまま反映させるためだと思ってますが。
違うのですか…?

>>741
わかりました。
書き方工夫してみます。
どうしてもわからない場合戻ってくるかもしれません、、、

ありがとうございました。

744 :nobodyさん:2008/02/04(月) 18:35:11 ID:???
>>742
クラス内で他のクラスを使うってこと?
extendsでよくね?

745 :nobodyさん:2008/02/04(月) 18:38:38 ID:???
>>741
はぁ?ヒアドキュメントできるわけねーだろw

746 :nobodyさん:2008/02/04(月) 18:40:25 ID:???
あー、やっとわかった。
変数の内容じゃなく文字列としての $hogehoge を出したいだけか。
すごい混乱した。

747 :nobodyさん:2008/02/04(月) 18:40:28 ID:???
>>741
こういうヤツが一番タチが悪い。

748 :nobodyさん:2008/02/04(月) 18:43:51 ID:???
で、可能なの?
俺できないと思うんだけど。

正規表現使えばできそうな気もするんだが
ヒアドキュメントだけでは不可能だと思うんだが。

749 :nobodyさん:2008/02/04(月) 18:47:32 ID:???
くだ質スレなんだからあんまりギスギスしなさんな。
茶化す