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

このエントリーをはてなブックマークに追加
1nobodyさん
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
2nobodyさん:2007/04/01(日) 04:23:02 ID:VGqlLhlD
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
【PHP】下らねぇ質問はここに書き込みやがれ 34
http://pc8.2ch.net/test/read.cgi/php/1165519374/
【PHP】下らねぇ質問はここに書き込みやがれ 35
http://pc10.2ch.net/test/read.cgi/php/1166676139/
【PHP】下らねぇ質問はここに書き込みやがれ 36
http://pc10.2ch.net/test/read.cgi/php/1168395610/
【PHP】下らねぇ質問はここに書き込みやがれ 37
http://pc10.2ch.net/test/read.cgi/php/1169644229/
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/
【PHP】下らねぇ質問はここに書き込みやがれ 39
http://pc10.2ch.net/test/read.cgi/php/1171280039/
【PHP】下らねぇ質問はここに書き込みやがれ 40
http://pc11.2ch.net/test/read.cgi/php/1172151461/
3nobodyさん:2007/04/01(日) 04:24:32 ID:???
【PHP】下らねぇ質問はここに書き込みやがれ 42
http://pc11.2ch.net/test/read.cgi/php/1174217841/
4nobodyさん:2007/04/01(日) 04:25:03 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://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/
5nobodyさん:2007/04/01(日) 04:25:36 ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
6nobodyさん:2007/04/01(日) 04:26:38 ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
7nobodyさん:2007/04/01(日) 04:27:09 ID:???
12のPHP最適化テクニック
ttp://phpspot.org/blog/archives/2006/11/12php.html

01. staticメソッドが使えるなら使おう。速度は4倍になる
02. __get, __set, __autoload は使わない
03. require_once は重い
04. include, requireで読み込むファイルはフルパスにしよう
05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10. $row["id"] は $row[id] より7倍速い
11. PHPのエラーメッセージは重い( noticeとかwarningとか)
12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。


(参考)
PHPの最適化は本当か?
ttp://jigen.aruko.net/archives/433/
8nobodyさん:2007/04/01(日) 04:32:07 ID:???
    ゝ f/:.:r|      .:.:|)
    {.|{/:.:.:{〈:.:...   .:.:.:.:.l)             , ‐ ' "´ ̄ ̄ ̄ 丶、
    z|j:.:.:.:.ヒ|       |)         ,  '´ _r─'´ ̄`ー-、_    ヽ
    仁\:.:(| . . :.:.:.:.. .  |}- 、    r‐ ''"  ノ´ ※    ※   ヽ   丶
       ヾ'´  ̄  ̄ ヾ)  `ヽ  | ..::::-┴´ ̄` ̄` ̄`ー、_   `ヽ  ヽ
        (ハ   ___  ヾ)  ヾヽY'´   : : : : : : : : ヽ ※ ヽ  '、
     /   (ハ/    `ヽ、」)   l∧ /   /    : : : : l : :ゝ、  l.   ',
       ヽ      '、   l    } }/: : /:   / :/ : l : : ヽ ※ヽ  ',
        丶      '、  l  l  ノノl: : /: : /: : /: /: ハ :  : :ヽ  {    '、
          丶、    ヽノ_ j/ {: l!: :⊥、/: : /.:/. /|: : .l   ヽソ    ハ
       ,..  -─‐`──-ヽヽ__ l: |l: :l :トリ_`ー':^/: {、  ヽ: : : | : : |_,..ィ'´ ̄
     "´            `} ̄〕人:弋 じぇ、"´   、 `丶、_ヽ.:l: /: : l|:. |
            ___   /辷 ム `ト `"'゙      '^ぅテォ-テ/./: /: /l.:..:.|
     二三 ̄ ̄___ >ン三7 ∧ 八     ,    ヾジ /.イ: :/. /: .l : |  下らねぇ質問は
     : . : .          ̄ノ≡=ァ こ}※ \__ トー‐、  __ ノ_ .イ//_:_:_l..|  ここに書き込みやがれですぅ
     ニニニニヽ、____/ ´フ  匸l/⌒ 、 )ヽ___ノ _ .. イ ̄※ ノ厂兀l.|
     \:. _:_:_:フ、_    //  て/  ´  ヽ`三/ ┴、 /    ノし  }: : l|
     : . : . : .    ト、\ /::/    (_{     }{"´  ヽ |〃_. イJ´   l: : : |
        : . : . : ..| ヽ Y::/    /(\ _ ノ)ヽ___、._丿「 /勹     l: : : :|
             ヽ| |{ /三\ /  ヽ几_厂|/し、__兀r '"  ヽ   | : . : |
9nobodyさん:2007/04/01(日) 04:56:25 ID:???
>>1
echo "乙";
10nobodyさん:2007/04/01(日) 05:59:05 ID:???
10get
11nobodyさん:2007/04/01(日) 06:21:07 ID:???
てst
121:2007/04/01(日) 06:22:21 ID:VGqlLhlD
スレ立て終わって元スレに連絡しようと思ったら何故かアク禁に巻き込まれた

それはそうと41のURLを書き込めてないな・・・歯抜けテンプレ乙
13nobodyさん:2007/04/01(日) 08:47:53 ID:???
sage
14nobodyさん:2007/04/01(日) 08:58:28 ID:???
元々過去ログでどんどん長くなっていったから、
最新の5件ぐらいだけのせようって話だったはずなんだが、
やっぱ自然と伸びちゃうよなw
15nobodyさん:2007/04/01(日) 09:55:39 ID:???
正規表現の書き方がいまいちわかりません
「(07/4/01 09:05:48)」という文字列があったとして
4/01にマッチさせるにはどうすればよいでしょ?
[0-9]+/[0-9]+とすると07/4が引っかかってしまいます
16nobodyさん:2007/04/01(日) 10:57:05 ID:???
$str = '07/4/01 09:05:48';
if (preg_match('/([0-9]{1,})\/([0-9]{2})/', $str, $match)) {
print_r($match);
}
17nobodyさん:2007/04/01(日) 11:05:32 ID:???
>>16
レスどうもです
詳しく書き忘れました形式は年/月/日なんですが月/日がほしいんです
月は10月とかの場合
07/10/01になっちゃうのでやっぱり07/10が引っかかっちゃいます
18nobodyさん:2007/04/01(日) 11:12:23 ID:???
[0-9]+\/[0-9]+\/[0-9]+\/
3つスラッシュを書けばいいだけじゃないのか
19nobodyさん:2007/04/01(日) 11:14:34 ID:???
ああすまん
[0-9]+\/[0-9]+\/[0-9]+
2つスラッシュのまちがいだw

[0-9]+\/[0-9]+\/[0-9]+ [0-9]+
でいいだろう
20nobodyさん:2007/04/01(日) 11:14:53 ID:sjAh9xV+
朝起きたら何かApacheが強制終了してる・・・
21nobodyさん:2007/04/01(日) 11:26:12 ID:???
>>18-19
レスどうもです
年/月/日から月/日だけを取り出したいので
3つともマッチさせちゃうとマズイんです
22nobodyさん:2007/04/01(日) 11:26:51 ID:???
>>15

preg_match("/^\(\d{1,2}\/(\d{1,2}\/\d{1,2}).+$/", $date, $match);
echo $match[1];
23nobodyさん:2007/04/01(日) 11:29:58 ID:???
いみがワカラン
3つマッチしてうしろの二つをpreg_replaceで$2$3で取り出せばいいだけでしょ。
preg_match使う必要も無い。
24nobodyさん:2007/04/01(日) 11:49:49 ID:???
前スレで7についていろいろ書かれていたことを無視した>>1
25nobodyさん:2007/04/01(日) 12:04:35 ID:???
>>22-23
うまくできました
ありがとうございます
$2$3とか使えるんですね知りませんでした
26nobodyさん:2007/04/01(日) 12:19:31 ID:sjAh9xV+
ファイルアップロードして、データベースに保存できるってきいたんだけどマジ?
27nobodyさん:2007/04/01(日) 12:33:51 ID:???
できるけど普通に重い
28nobodyさん:2007/04/01(日) 13:00:22 ID:???
>>14
俺が立てるときはちゃんと古いの削ってるよ。
手抜きしなきゃいいだけ。
29nobodyさん:2007/04/01(日) 14:00:32 ID:???
>>24
じゃあテンプレに反映できるようにお前が7を書き換えろよ。
文句だけなら幾らでも言える。
30nobodyさん:2007/04/01(日) 17:40:44 ID:f8tvvBL3
PHPで携帯用のサイトを作っています。

PC用では各パーツ(ヘッダー・フッター・メインコンテンツなど)に分けて
includeしていましたが、携帯用だと容量の制限もあって、必要最小限の
ファイルしか読み込まないようにしなければいけないみたいです。

そこで質問ですが、プログラム処理もすべて1つのファイルに書く方法
にした方が良いのでしょうか?それとも共通するファイルはincludeして
読み込む方式にした方が良いのでしょうか?

PHPで携帯サイトを作られている方、アドバイスお願いします。
31nobodyさん:2007/04/01(日) 17:52:42 ID:???
>いけないみたいです
×
32nobodyさん:2007/04/01(日) 17:52:48 ID:PifCmp3g
ADODBをつかっています。
Connect もしくは PConnect でデータベースへの接続に失敗したとき、
失敗した理由を知るために何らかの方法は用意されているのでしょうか?
たとえばエラーメッセージとかエラーコードを得る方法はあるのでしょうか?
33nobodyさん:2007/04/01(日) 18:03:32 ID:???
標準関数にADODB関数なんてないんだけど
34nobodyさん:2007/04/01(日) 18:11:40 ID:???
>>30
100個ファイルをincludeしようが、
全部一つに詰め込んで1GBぐらいのファイルになろうが、
要は出力する容量が携帯で読み込める容量になればいいだけ
お好きなようにとか言いようがない

共通部分を切り出そうが、関数に切り分けようが、
クラスファイル化してオブジェクト指向しようが、
それもお好きなように
35nobodyさん:2007/04/01(日) 18:58:07 ID:???
>>30
携帯用だろうがなんだろうが、全く関係ない
携帯用に小さくする必要があるのは
スクリプトではなく、出力する部分だけだ
36nobodyさん:2007/04/01(日) 19:01:08 ID:???
37nobodyさん:2007/04/01(日) 19:09:16 ID:PifCmp3g
>>36 THX
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (11)
か・・・・うむむ、結局 MySQL 側の max_connections に引っかかってるのかな。

PHP 側では自主規制(?)で接続数に上限設けてるとか無いですよね?
38nobodyさん:2007/04/01(日) 19:14:16 ID:???
mysqldはちゃんと立ち上がってるのか?
39nobodyさん:2007/04/01(日) 19:23:54 ID:???
pdoでSET NAMESを送る時ってexecとqueryのどちらを使っていますか?
4030:2007/04/01(日) 19:25:53 ID:f8tvvBL3
>>34-35
ありがとうございます。大変参考になりました。

それにしても携帯用ってややこしいですね・・。
これまで作ったクラスファイルはすべてEUCなのですが、
携帯ではShift-JISじゃないと駄目みたいなので、文字化けしまくりです・・。
41nobodyさん:2007/04/01(日) 19:42:24 ID:???
出力時にSJISに変換すればいいだけだろ
42nobodyさん:2007/04/01(日) 20:37:16 ID:???
ぐぐってもよくわからなかったのですが、セッションIDって
ランダムの文字列を生成するのですよね?
その文字列を保持してsession_start();で有効にするとか。
43nobodyさん:2007/04/01(日) 20:46:11 ID:???
>>42
お前も「初めてPHP入門」みたいな本かって半年勉強しろ
44nobodyさん:2007/04/01(日) 20:48:46 ID:???
>>前スレ996
PHP5からタイプヒンティングが導入されました
http://www.php.net/manual/ja/language.oop5.typehinting.php

>>30
【モバイル】携帯電話向け開発について語るスレ
http://pc11.2ch.net/test/read.cgi/php/1144504375/

>>42
【PHP】セッションについて語ろう!【PHP】
http://pc11.2ch.net/test/read.cgi/php/1064399467/
45nobodyさん:2007/04/01(日) 22:25:03 ID:???
>>37
1.MySQLが立ち上がっているか
2.socket が /var/lib/mysql/mysql.sock に存在するか
3.MySQLへのアクセス許可がちゃんと行われているか

2は注意
パッケージ管理ソフトとかでインストールした場合は
普通起こらないが、ソースリビルドして自分でインストール
した場合は、PHPとMySQLのソケット設定が一致しない
ことがある
46nobodyさん:2007/04/01(日) 22:50:44 ID:GJ1EFI8C
毎年恒例、年に一度のphpinfo()のPHPロゴがウサギやオサーンや犬の画像に変化する日が来ました
おまいら今日中にphpinfo()表示するサイト(自分のでも可)見てみれ

ちなみにphp.netの↓
ttp://jp.php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
ttp://www.php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
47nobodyさん:2007/04/01(日) 23:11:30 ID:sjAh9xV+
携帯でキャリア別にページを飛ばしたいのですが、
やはりブラウザで判別したほうが良いのでしょうか?
それ以外にお勧めがあれば教えてください。
48nobodyさん:2007/04/01(日) 23:15:07 ID:???
49nobodyさん:2007/04/02(月) 00:34:19 ID:7Cj9Qr8c
数百数千というデータを一覧表示させる場合テーブルを作ってループさせるしか方法は無いでしょうか?
datagridみたいなものはPHPだとひょっとして無い?
50nobodyさん:2007/04/02(月) 00:37:32 ID:616HGYvF
現在から一週間先までのスケジュールをMySQLから取得して表示するプログラムを書きたいと思っています.
で,年や月のつなぎ目でも単に7日間表示するので,大本の日付データは年月依存でなくするべきですよね.
そうするとUNIX時間を使うのが最も適当なのでしょうか?

また,月は初めの日だけ表示して,年・月が変わった日だけ再表示したいのですが,
毎回ifで判断するのはアレですよね.何かいい方法があればご教授くださいm(__)m
51nobodyさん:2007/04/02(月) 00:48:34 ID:???
>>49
階層があるのかどうかハッキリしなさい!
なんにしろDataGridみないなのはPHPにはない。
というか.NET系言語にしかないだろ

>>50
言いたいことが今一俺には理解できない。
やりなおし!
5249:2007/04/02(月) 01:00:20 ID:???
無いならしょうがないですね・・・
SELECT文とGETを駆使してなんちゃってGridを作ってみます
53nobodyさん:2007/04/02(月) 01:27:49 ID:???
>>52
階層掘るときにajaxで通信させたらそれっぽくなるんじゃない?
54nobodyさん:2007/04/02(月) 01:36:36 ID:???
>>49
そもそもHTMLをターゲットにするなら、最終的にはhtmlか画像しか選択肢は無いだろう・・
受け渡しならXMLとかあるだろうけど

俺言ってること的外れ?
55nobodyさん:2007/04/02(月) 02:35:51 ID:???
最高に行き詰りました。どなたかアドバイス願います。
ファイルを二つ用意します。一つは設定ファイルset.php、一つは表示用のファイルindex.phpです。
index.phpを以下のように記述します。

require 'set.php';
$test "あああ";
Set();

set.phpに以下の用に記述します。

function Set(){
global $test;
$test2 = "あああ";
if($test == "$test2"){print"同じ";}
else{print"違う";}
}

で「違う」になってしまいます。
print分で確認すると
print"$test$test2";
どっちも「あああ」「あああ」です。
ダンプで見ても同じです。文字コードとかもいろいろ弄りましたが、変わりませんでした。
見た目同じなのに判定は違うのでmysqlで検索にヒットしなくて困ってしまっています。
どなたかわかる方いますでしょうか?
php4.3.11 apache2 を使っています。

56nobodyさん:2007/04/02(月) 02:50:03 ID:???
>>55
正確なコードと結果の転載ぐらいしろよ。
57nobodyさん:2007/04/02(月) 02:54:33 ID:???
$test = "あああ";
58nobodyさん:2007/04/02(月) 03:25:04 ID:???
>56
すんません。おおぼけかましてますた。
やっぱり文字コードでした。ftpでDLした時に全部sjisに変わってた模様です。
どもでした。
59nobodyさん:2007/04/02(月) 03:57:04 ID:???
       ヽ(・ω・)/   ズコー
      \(.\ ノ
60nobodyさん:2007/04/02(月) 05:33:18 ID:??? BE:435046638-2BP(396)
下記記述だとテキストログ末尾にログが追加されていくんですが
先頭に最新ログを記述する方法はないでしょうか?

$wlog=fopen("comment.txt","a");
flock($wlog, LOCK_EX);
fputs($wlog, $wdata);//$commentlogの最初の行に$dataを追加
flock ($wlog, LOCK_UN); //ファイルロック解除
fclose($wlog);//ファイルを閉じる
61nobodyさん:2007/04/02(月) 05:33:58 ID:??? BE:543807465-2BP(396)
//$commentlogの最初の行に$dataを追加
このコメントはただのミスです。
62nobodyさん:2007/04/02(月) 05:42:27 ID:???
63nobodyさん:2007/04/02(月) 06:39:09 ID:??? BE:1141995097-2BP(396)
>>62
無理なようですね・・・・・・ありがとうございました。
64nobodyさん:2007/04/02(月) 09:10:21 ID:???
>>63
w+かr+で一旦全部読み込んで先頭行から書き出しなおせば出来るがな。
65nobodyさん:2007/04/02(月) 09:41:31 ID:5RNu93m7
//アクセスをトリガにcronぽい処理をする
//$logはログファイル $intervalは更新インターバル

if(file_exists($log)){
//現在時刻 - $logの更新時刻 が更新インターバルより小さかったらそこで終了
if($interval > time() - filemtime($log)){
return;
}
} //if(file_exists($log))

//$logを出力
$handle = fopen($log, 'w');
fwrite($handle, "a");
fclose($handle);

//ここから断続的にファイル読み書き

//ここまで断続的にファイル読み書き

--
こんなの書いた。でもこれ条件満たすときに同時にアクセス来たら同時に実行されちゃうよね。
一つのプロセスでだけこのcronもどき使うにはどうすればいい?
ロック用ファイルでロックして囲うのかな でもどこをどう囲えばいいのかよくわかんないんで教えてください
66nobodyさん:2007/04/02(月) 11:42:52 ID:???
>//アクセスをトリガにcronぽい処理をする
にもかかわらず、「同時」を心配して、それをトリガー後の処理で
あれこれ考えるいうロジック自体を再検討すべきでしょう。
67nobodyさん:2007/04/02(月) 12:09:27 ID:???
多少PHPに関係する質問です。

PHPとDBが使える無料レンタルサーバーおしえてください。
68nobodyさん:2007/04/02(月) 12:15:25 ID:???
スレ違い

ものすごい勢いで誰かが無料サーバを探してあげるスレ7
http://pc11.2ch.net/test/read.cgi/hosting/1170323123/l50
69nobodyさん:2007/04/02(月) 13:35:55 ID:???
>>68
ウザ・・・
もういいよ
70nobodyさん:2007/04/02(月) 13:46:24 ID:???
例えば.NETでは正規表現オブジェクトを初期化したときにコンパイルされてバイトコードに変換されるらしいんですが、
PHPではそういった類の最適化はなされてるんでしょうか?
それともループ中で同じ正規表現を使用した場合、毎回解析されるんでしょうか?
71nobodyさん:2007/04/02(月) 13:48:27 ID:???
( ´,_ゝ`)プッ
72nobodyさん:2007/04/02(月) 13:56:47 ID:???
>>70
PHPの文法に正規表現リテラルがないし(インタプリタは正規表現を知らない)、
関数に正規表現文字列を渡す実装だから毎回解析じゃないのかな。
7370:2007/04/02(月) 14:09:15 ID:???
>>72
なるほど、やっぱりそうですよね。
もしかしたら言語側で特別扱いしてる可能性もあるかもなーと思ったんですが。
どうもでした。
74nobodyさん:2007/04/02(月) 16:31:34 ID:???
PCREライブラリ的にはコンパイルした正規表現を保持することも可能。
実装を読んでみないとなんとも。読む気は無いけど。
75nobodyさん:2007/04/02(月) 18:26:46 ID:z0wpzeSt
PHP5.1.xで所定のディレクトリにファイルがあったらPOSTでアップロードするプログラムを作成中。
バッチは一定時間おきにcronで起動。

<form method="post" action="upload.php">
 <input type="file" name="fileobj" value="">
 <input type="text" name="filename" value="">
 <input type="text" name="param" value="1000">
</form>

↑これで受け取り側 upload.php は正常動作確認済み。

で、送信するバッチファイルのサンプル無いかな?
FORMを利用したサンプルはいくつも出てくるんだが。
76nobodyさん:2007/04/02(月) 18:34:07 ID:???
>>75
CURLを使うのがお手軽
7775:2007/04/02(月) 19:00:55 ID:???
>>76
ttp://phpdoc.makizou.com/ref.curl.html

このライブラリでいいのかな?
サンキュ。挑戦してみます。
78nobodyさん:2007/04/02(月) 19:28:36 ID:???
それです。下のような感じで単純にいけるはず。

$aPOST_VARS['fileobj'] ='@'.$file;
$aPOST_VARS['filename'] = $filename;
$uri = 'http://localhost/upload.php';

$ch = curl_init($uri);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $aPOST_VARS);
curl_exec($ch);
79nobodyさん:2007/04/02(月) 19:40:02 ID:???
>>76
サンプルソースまでご丁寧にありがとうございます。
助かります。
80nobodyさん:2007/04/02(月) 19:54:36 ID:???
>>79
それってどういう目的に使うの?
81nobodyさん:2007/04/02(月) 20:31:39 ID:???
画像のアップローダを作成したいと思っていますが
2Byte文字列のファイル名をrenameしなおしたり、
データベースにinsert発行する前にidなんかを振る為に
一旦テンポラリに落とそうと思っています。

http://example.com/upload.html(GUI)
http://example.com/temp.php(file受け取り用php)
   条件を満たすファイルであれば/tmp/に一旦copy。

ここまではリアルタイム処理で行います。


Linuxのcronコマンドを利用して1時間毎に/tmp/をチェックしにいき、
アップロード対象となるファイルが存在した場合にアイデアを頂いたファイルアップローダを起動させ、
レンタルサーバにアップロードします。

http://example.com/tmp/(画像ファイル)→http://example-2.com/(画像用ディレクトリ)

やりたい事ってのは最終的に格納するサーバの前に、
バックアップの意味を含めてワンクッションおきたいと思ってるんです。
example-2.comにアップロードが成功した画像は
cronで呼び出される別のバッチでexample.com/tmp/からは削除します。


ってな事をやりたいと思うのです。
リアルタイムでアップロードしちゃえれば一番いいんですが、
諸事情でワンクッション置く必要があるので。
82nobodyさん:2007/04/02(月) 20:40:22 ID:???
ほうほう、それでそれで?
83nobodyさん:2007/04/02(月) 20:48:22 ID:???
いやそれ以上もそれ以下も無いのですがorz

勉強がてらうpろだ作りたかったのですが、
レンタル鯖の環境的な問題もあってそんな風にした次第です。
8476,78:2007/04/02(月) 20:50:28 ID:???
>>82
それで終わりだろ。お前はなにをいいたんだ?
85nobodyさん:2007/04/02(月) 21:09:26 ID:???
アップローダなのに最長1時間も結果が返ってこないってのは、
設計的にどうなの?まぁ用途によるけどさ。

YOUレンタル鯖かえちゃいなよ。
86nobodyさん:2007/04/02(月) 21:11:15 ID:???
>>85はヘイヘイヘイを見てたに一票
87nobodyさん:2007/04/02(月) 21:14:36 ID:???
>>85
ご忠告ありがとうございます。

将来的にはレンタル鯖借りてリアルタイム処理にしたいと思いますが
今は勉強中って事もあって鯖も友人に無料で使わして貰ってるんで。
それから、用途が仲間内だけで使用予定で
1時間で結果が出せれば用途を満たすんで
とりあえず今のままでよいのです。
88nobodyさん:2007/04/02(月) 21:17:52 ID:???
普通考えればPOSTでそんな処理をするなんて
七面倒くさいことをしたいってのは、条件制約があるだろうと考えられるはずなのに
恥ずかしいな。>>85(多分>>82も同一人物)
8985:2007/04/02(月) 21:36:52 ID:???
あなたがたは世間知らずです
90nobodyさん:2007/04/02(月) 22:09:43 ID:???
PHP資格って何よ
91nobodyさん:2007/04/02(月) 22:13:45 ID:???
狭い世間だな
92nobodyさん:2007/04/02(月) 22:57:23 ID:???
公式のapacheバイナリがSSLつきでおかれてたけどいつからだ!?
一週間苦労してソースからコンパイルに挑戦して挫折した俺様の苦労はどうなるんだよ!
93nobodyさん:2007/04/02(月) 23:20:37 ID:???
日記ウザ
94nobodyさん:2007/04/02(月) 23:27:43 ID:???
おまえも同類
95nobodyさん:2007/04/03(火) 00:00:30 ID:???
>>32
普通にエラーメッセージでない?
$conn->debug = true
ってしてれば実行したクエリから実行したファイルと行から出してくれるし。
文字コードいじったりしないと化けてたりはするけど。
RDBMSによって違うのかな。

個人的には気に入ってるけど、情報が少ないライブラリなんで、
公式マニュアルでなんとかできないならPEARとか当たった方がいいかも。
日本語化されてるのあるけどちと古いんで本家も読まないとだし。
96nobodyさん:2007/04/03(火) 01:51:48 ID:4755nh+U
$var= '$_POST';
var_dump($var);

これの$varを展開する方法ありますか?
97nobodyさん:2007/04/03(火) 01:52:30 ID:???
あります
98nobodyさん:2007/04/03(火) 01:54:50 ID:4755nh+U
>>97
ご教授ください!
99nobodyさん:2007/04/03(火) 01:58:21 ID:???
だが断る
100nobodyさん:2007/04/03(火) 02:02:11 ID:4755nh+U
そんなこといわずに
101nobodyさん:2007/04/03(火) 02:10:50 ID:???
何この自演のながれw
102nobodyさん:2007/04/03(火) 02:12:35 ID:???
>>101は新参
103nobodyさん:2007/04/03(火) 02:27:35 ID:???
>>96
全部ここに書いてある。
http://jp.php.net/manual/ja/language.variables.variable.php

斜め読みして「関数やクラスメソッドの内部では出来ないんですか?」とか聞くなよ。
その方法も全部そこに書いてあるから。
10485:2007/04/03(火) 03:39:38 ID:???
今さらだがちょっとまってくれ!
さすがに回答者側の偽者は出ないでくれよ('A`)
>>88
あと俺は>>82じゃないぞ!
82は、超初心者で聞いたことのない言葉(cronやらバッチやら)が出てきて、
勉強がてらどういうことするのか聞きたかっただけだと思う。
105nobodyさん:2007/04/03(火) 07:16:11 ID:???
htmlファイルにphpを埋め込んで動作させることって可能?
phpファイルにしろよとかいうのはナシで。
無理だよねぇ。
106nobodyさん:2007/04/03(火) 07:38:23 ID:???
>>105
.htmlでPHPを動かすってこと?
なら可能

つ .htaccess
107nobodyさん:2007/04/03(火) 08:17:58 ID:???
>>106
それがうちのsakuraのサーバだと
AddType application/x-httpd-php .html
でも無理なんよ
108nobodyさん:2007/04/03(火) 08:23:27 ID:ApqIHYc2
AN HTTPDでPHPを動かしたいため
php-4.3.11-Win32.zipが欲しいのですが
古いバージョンのものは手に入れることはできないのでしょうか?
109nobodyさん:2007/04/03(火) 08:24:38 ID:???
>>107
じゃあ諦めろ

その前にI質問するときはID表示させろ

110nobodyさん:2007/04/03(火) 08:26:31 ID:???
>>109
だが断る
111nobodyさん:2007/04/03(火) 08:55:53 ID:3FiNTxl4
>>103
展開というのがイマイチ良くわからないのでが
ttp://jp.php.net/manual/ja/function.extract.php
これのこと?


ついでに質問
日本語を含む文字列で、一文字目が英数記号と数字以外にマッチさせたいんですけど
mb_ereg("^[^!-~]|[^0-9]", $hoge)
とやってみたけどだめみたいです。

pregみたいに'//'はいらないみたいですよね?
[^!-~]単体でうまく動いてない見たいなんですけど、どんな感じに書けばいいのでしょうか?
112nobodyさん:2007/04/03(火) 09:05:15 ID:???
>>105
/usr/local/bin/php を ~/www 下に php.cgi という名前でコピーする。
.htaccessに以下の設定を追加:

Action my-php /php.cgi
AddHandler my-php .html

php.iniで、"cgi.force_redirect"を off にしないこと。
デフォルトでは on になっているので、わからなければいじらないこと。危険です。

ちなみに、さくらではコンテントネゴシエーションがデフォルトで使えるので
拡張子無しで参照することができる。
113nobodyさん:2007/04/03(火) 09:06:53 ID:???
>>112
ほほう
ちょっくらやってくる
114nobodyさん:2007/04/03(火) 09:10:36 ID:???
>>112
できたわ。ありがとう
115nobodyさん:2007/04/03(火) 09:56:40 ID:L8WULHx8
>>111
mb_ereg("^[^!-~]|[^0-9]", $hoge)
じゃなくて
mb_ereg("^[^\!-~]", $hoge)
でしょ。
116111:2007/04/03(火) 10:42:38 ID:/c/AyO3F
mb_ereg_matchのほうかな?
どっちにしても良く分からないんだけど
mb_ereg_match ("[a-z]+", "asZ")
がtrueを返すのは何ででしょうか?

pregは思ったとおりの挙動をするんだけどなあ
なんか勘違いしてますか?
117nobodyさん:2007/04/03(火) 10:47:54 ID:???
それでtrue返るのあたりまえ
正規表現初歩を勉強してから来ましょう。>>111見てもわかって無いわ。
118nobodyさん:2007/04/03(火) 11:08:46 ID:???
ttp://drupal.jpで戦争勃発 隠れJoomlaがdrupal管理者と衝突
カタギのjoomlaか?ヤクザなdrupalか?
でも良く考えたよなぁー オープンソースを占有するなんてさー
タダで日本支部になって価値がが上がれば高く売る。
drupalは成長株だから浸透すればスゴイ価値が付くとおもうよー
GPLだと占有しても刑事事件にならないからねっ
119nobodyさん:2007/04/03(火) 11:28:18 ID:/TnKR6mx
Proxyのチェックプログラムを作りたいのですけど、
$_SERVERのどの変数で判定すればいいのでしょうか?
Proxyについての知識は全くないので仕様とかさっぱりなのですが、
最近掲示板(PHPでできたもの)がProxy経由で荒らされてるので、
Proxy判定するプログラムを組み入れたいと思っています。
120nobodyさん:2007/04/03(火) 11:50:16 ID:???
変数の内容を全部書き出して確認しましたか?
121nobodyさん:2007/04/03(火) 12:07:54 ID:???
>>119
getHostByAddr($_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR']
これが真になれば逆引きできねーってことになって判定するとか。
122119:2007/04/03(火) 13:25:08 ID:FtC4cK4M
>>121
ありがとうございます。
教えていただいたものを使ってみたところ、
診断くんで?判定になるProxyでも見事Proxy判定にすることができました。
こんな簡単なスクリプトだとは思っておりませんでした。
まだ取りこぼしているものもあるようなので、
他の方法を探して、それと組み合わせて使うことにします。
123nobodyさん:2007/04/03(火) 14:11:47 ID:???
php+MySQLで会員制サイト作ってるんですが、
例えば、会員情報の変更phpで、
WHERE句を忘れていて、謝って全会員の情報を変更してしまう、
といったポカミスが発生しやすいあふぉな俺なんですが、
MySQLレベルでこれを防ぐ方法ってないでしょうか。

124nobodyさん:2007/04/03(火) 14:16:04 ID:???
ユーザの権限制限でいけるだろ。

勉強ならいいが、公開する気なら・・
125nobodyさん:2007/04/03(火) 14:16:51 ID:???
>>123
バックアップとってから開発とかデバッグとかすればいいんじゃないの?
それ以前に実地以外でテストするとか。
126nobodyさん:2007/04/03(火) 14:34:41 ID:???
全テーブルをInnoDBとかで作っておいて、
変更する前には必ず
 BEGIN;
で、「あっー」ってときは
 ROLLBACK;
でいいんじゃね?
127nobodyさん:2007/04/03(火) 14:46:19 ID:???
>>123
つうか、本番環境で作業するな
開発環境を別途作ってやれ
128nobodyさん:2007/04/03(火) 15:18:52 ID:???
どこにも本番でやってるとも書いてないわけだが
129nobodyさん:2007/04/03(火) 15:20:50 ID:pT0TAH0V
mysqlのmediumtextで格納しているデータを出力できません。

echo $row["comment"];

のような形では出力できないんでしょうか?
130129:2007/04/03(火) 15:33:12 ID:???
すみません。勘違いでした。
131nobodyさん:2007/04/03(火) 15:57:50 ID:???
>>128
そりゃそうだ生本番は危険だぜ
132虚弱PHP:2007/04/03(火) 16:15:10 ID:???
>>123
常にスクリプトを通してDBいじるしかないんじゃ。
スクリプトではWHERE句が付いてなかったらNGとか。

UPDATEには必ずLIMIT句つけるとか。
でも、これだと逆に問題の発覚が遅れる恐れ有り。
133nobodyさん:2007/04/03(火) 16:26:24 ID:???
echoとprintどっちが速い?
134nobodyさん:2007/04/03(火) 16:27:44 ID:???
>>133
テンプレ
135nobodyさん:2007/04/03(火) 16:38:45 ID:???
DAOとビジネスロジックとの境界がよく分からないのですが教えて下さい。
例えば複数のデータをinsertする場合、全件のデータをDAOに渡してDAOの中でループさせてクエリを発行しますか?
もしくはロジック側でループさせて最小単位まで分割し、1行ごとにDAOを実行しますか?

またDAOのメソッドは一つの機能に特化して実装すべきですか?それとも汎用性を持たせるべきですか?
where句やorder句などをDAOメソッド内で記述してその条件のみ取得させるか、
ロジックからDAOへ引数としてそれらを渡す形にして他の場所でも使えるようにするかで迷っています。
136nobodyさん:2007/04/03(火) 16:48:46 ID:???
>>133
echoが一文字分早い
137nobodyさん:2007/04/03(火) 16:51:20 ID:???
どっちもかわんない。
おれはデバックはprintにしてメインはecho
138nobodyさん:2007/04/03(火) 16:52:11 ID:UEWlkpj3
ライブチャットみたいなの作りたいんですけど、あれはPHPと何を連携したらいいのですか?
139nobodyさん:2007/04/03(火) 17:30:34 ID:???
>>135
落ち着け、どこにもPHPと絡んだ質問ないぞ
140nobodyさん:2007/04/03(火) 17:41:00 ID:???
>>135
時と場合によるとしか言いようがない

DAOのメソッドなんて、追加、更新、削除と
条件検索くらいじゃないの
141nobodyさん:2007/04/03(火) 17:49:25 ID:???
>>135
DAOのベースになるクラスで汎用的なメソッドを実装して
各モデル毎のDAOで必要になる固有のメソッドを
ベースクラスの汎用的なメソッドを使いつつ実装していけばいいんじゃない?
機能に特化したメソッドにするかしないかは
機能次第で使いまわすケースが多ければ
引数である程度自由度を持たせるとか
その例だと複数のデータをinsertする箇所がたくさんあるなら
それのためだけのメソッドを用意して、そうでなければ
ビジネスロジック側でループさせてもいいんじゃない?
142nobodyさん:2007/04/03(火) 18:12:24 ID:???
>>138
Flash
143nobodyさん:2007/04/03(火) 18:33:32 ID:???
>>138
Javaアプレット
144nobodyさん:2007/04/03(火) 19:11:46 ID:UEWlkpj3
>>138
Flex
145nobodyさん:2007/04/03(火) 19:15:57 ID:???
>>138
俺とお前
146nobodyさん:2007/04/03(火) 19:18:30 ID:???
(;´Д`)ハァハァ
147nobodyさん:2007/04/03(火) 19:41:36 ID:???
>>133
echoのがカンマで区切って複数出力できるので便利。
速度的には変わらん。
148nobodyさん:2007/04/03(火) 20:14:32 ID:???
おまえらに質問。
ハゲてるだろ?
149nobodyさん:2007/04/03(火) 20:20:38 ID:???
>>147
なにそれ礼を出してくれると嬉しい。

echo(test,dayo,kana);
とか出来るのかな・・
150nobodyさん:2007/04/03(火) 20:23:09 ID:??? BE:362538645-2BP(396)
ナンバー 名前 内容 日付 パスワード

上記ログが連なったログの一行を削除して
再度番号を振り、配列しなおす場合具体的にどのような
プログラムになるのでしょうか?
151149:2007/04/03(火) 20:24:56 ID:???
>>149
echo "test" , "test" ;
こういう事かな。
ドット( . )でもいいんじゃないの?
152nobodyさん:2007/04/03(火) 20:36:40 ID:???
>>150
日本語でおk
153nobodyさん:2007/04/03(火) 20:36:43 ID:???
>>149
echoに括弧を付けてはいけない。

echo $hoge,$hoge * 1000,number_format($hoge);

ドット演算子だと

echo $hoge.($hoge * 1000).number_format($hoge);

こうしないといけないし内部的に結合してやる必要性はないと思う。
154nobodyさん:2007/04/03(火) 21:05:30 ID:???
CやPerlから入ってきた身としては、echoでは違和感を感じる・・・
デバックのときくらいしか使わないかな〜
155111:2007/04/03(火) 21:08:25 ID:3FiNTxl4
>>115
>>117
レスサンクス

var_dump ( mb_ereg ( $pattern, $hoge ,$c ) ) ;
var_dump ( $c ) ;

ってやったら、なんでtrueが帰るのか解りました。
"^[^!-`].*}$"
こんな感じかな?
自分のかきこ良く見ると英数記号とあるけど、半角記号と数字以外の間違いでした。
だから、範囲の指定もこんな感じかな。

>>115
ちなみに[]の中はエスケープ不要みたいですよ。
156nobodyさん:2007/04/03(火) 21:09:39 ID:???
言わなくていいものを・・・
俺様に恥をかかせるのか!
157115:2007/04/03(火) 21:15:52 ID:???
>>155
ちなみにも糞もないなあ。
一般論で書いただけで、それを跡付け学習でエラソウに書くお前はなんだと思うが。
158nobodyさん:2007/04/03(火) 21:20:05 ID:???
<pre>を使って、print_preなるテスト用の関数を作りました。

これを使うために、いちいちすべてのファイルでrequire_onceするのが面倒なんですが、
何かいい方法はありませんか?
159nobodyさん:2007/04/03(火) 21:28:39 ID:???
>>157に対して>>155の反論
160nobodyさん:2007/04/03(火) 21:28:58 ID:???
│  ↑
└─┘
おらっしゃあぁぁ!!!
 ∩∧ ∧
 ヽ( ゚Д゚)
   \⊂\
    O-、 )〜
      ∪
161nobodyさん:2007/04/03(火) 21:33:47 ID:???
>>158
意味不明なんだが・・・
162nobodyさん:2007/04/03(火) 21:40:10 ID:???
>>158
php.ini auto_prepend_file
・PHPで書く
・問答無用で一番最初に読み込まれる

php extensionとしてphpの関数に含める
・Cで書く
163nobodyさん:2007/04/03(火) 21:43:42 ID:???
>>159-160
ワロタ
164nobodyさん:2007/04/03(火) 21:46:37 ID:???
別に笑うところじゃないよ
165nobodyさん:2007/04/03(火) 21:49:35 ID:y3kK4c5q
$subject = "needed: two potatoes, three carrots, five tomatoes";
$pattern = '/two (.+)\,/';
preg_match($pattern, $subject, $matches);

print_r($matches);

/* 出力結果:
Array
(
    [0] => two potatoes, three carrots,
    [1] => potatoes, three carrots
)
*/

正規表現で "potatoes" をマッチさせたいのですが、$matches[1]を見ると
コンマの後ろの文字列までマッチしてしまいます。

どうしてでしょうか?
166nobodyさん:2007/04/03(火) 21:50:37 ID:???
>>165
そういうふうに命令してるからだろ
167nobodyさん:2007/04/03(火) 21:56:57 ID:y3kK4c5q
>>166
"potatoes"がマッチするにはどう表現すればいいのでしょうか?
168nobodyさん:2007/04/03(火) 21:58:31 ID:???
>>165
正規表現は原則として、最長最左一致をします。
これはどういうものかというと、可能な限り長めにマッチするということです。
その正規表現の例で言うと"two "のあとに1文字以上の任意の文字が来て、
その後にカンマがついていればいいことになります。
そしてその最長のパターンはというと、あとは考えてみてくださいw
169nobodyさん:2007/04/03(火) 21:59:58 ID:???
>>167
$pattern = '/two (potatoes)/';
170nobodyさん:2007/04/03(火) 22:02:20 ID:???
>>165
$pattern = '/two ([[:alpha:]]+),/';
というか妙な正規表現の使い方だな。
171nobodyさん:2007/04/03(火) 22:03:04 ID:???
>>153
カッコが省ける
さらに、 カンマは結合しないからローコストって事かな・・
172nobodyさん:2007/04/03(火) 22:07:10 ID:??? BE:507553474-2BP(396)
ナンバー 名前 内容 日付 パスワード
上記ナンバー+1 名前 内容 日付 パスワード
上記ナンバー+1 名前 内容 日付 パスワード

このようにログが並んでいるのですが
例えば上から二行目のログのみを
削除する場合具体的にどのような関数を私用すればいいのでしょうか?
その際削除した行以降のナンバーを再度正しく振り直したいのです。
173nobodyさん:2007/04/03(火) 22:07:30 ID:???
>>165
$pattern = '/two (.+?),/';
$pattern = '/two ([^,]+)/';
174nobodyさん:2007/04/03(火) 22:11:45 ID:???
>>172
必死で書き直してきたか。
いまアドバイス書いてやるからまってろ
175nobodyさん:2007/04/03(火) 22:13:04 ID:y3kK4c5q
自己完結しました(・∀・)
176nobodyさん:2007/04/03(火) 22:23:01 ID:???
>>172
file_get_contents
explode
implode
file_put_contents
177nobodyさん:2007/04/03(火) 22:23:50 ID:???
>>172
それ掲示板のログだろ。
なんでナンバーをいじくる必要があるんだよ
178nobodyさん:2007/04/03(火) 22:25:27 ID:???
>>172
<?php
ログを配列に読み込む処理
配列の上から2件を削除する処理
配列をログに書き込む処理
?>
こんな感じでいかがか?
179nobodyさん:2007/04/03(火) 22:29:36 ID:???
>>172がいってるナンバーを正しく振り分ける理由がわからんが、無駄だからやめろ
180nobodyさん:2007/04/03(火) 22:33:57 ID:??? BE:580061748-2BP(396)
>>174
すいません、関数自体あまり把握できてなくて
ちょっとつまづいております、
ありがとうございます。

>>176
関数の意味を調べてみます、
お手数おかけします。

>>177
このログにフォームのラジオボタンつけて出力する時に
利用するからだったと思います。
自分で作っといてあれですが目の前の事で手一杯で。

>>178
十分です、
本当にすいません。
181nobodyさん:2007/04/03(火) 22:40:23 ID:???
>>178
ログを全部読み込むのかよ…。と思った俺は貧乏人なのかもしれない。
182nobodyさん:2007/04/03(火) 22:43:07 ID:/5XcJrtX
RSSのデータをPEARのXML/Unserializerで取り出して
必要な部分をeucのページに表示させたいと思っています
echo mb_convert_encoding($str_utf8, "EUC-JP", "UTF-8");
としてみたのですが、丸数字(@A…)が半角の“?”になってしまいます
ご教示いただけませんでしょうか
183nobodyさん:2007/04/03(火) 22:45:11 ID:???
>>162
ありがとうございます
184nobodyさん:2007/04/03(火) 22:46:11 ID:???
>>182
php.ini文字コード設定関連をチェック
185nobodyさん:2007/04/03(火) 22:50:35 ID:???
>>182
eucJP-win
186172:2007/04/03(火) 22:52:04 ID:??? BE:1305137489-2BP(396)
http://www.pachiweb.com/card-walin/card-walin.php
http://www.pachiweb.com/updir/data/card.jpg
データベース機能とゲストブック機能を合わせた
phpを作りたいと思い先程書き込ませていただきました。
ログに番号ふっているのはログを出力する際、
フォームのラジオボタンのvalueに代入して
削除に利用するためです。

現在、書き込みの際に情報かコメントか分けて保存し
最新の情報書き込み5行、
コメント書き込み5行を表示するところまでは
完成しました。
187182:2007/04/03(火) 23:11:04 ID:???
>>184
検索などをしてみてはいたのですが、php.iniの文字コード設定を、
というのが多くていろいろ試行錯誤してみてはいるのですが・・・
再度見直してみたいと思います

>>185
mb_convert_encodingの引数ですよね?今検索して初めて知りました
こちらも試してみたいと思います

おふた方どうもありがとうございました
188nobodyさん:2007/04/03(火) 23:14:20 ID:???
>>182

ファイルの文字コードを元からutfで作っとけば悩まずにすむ
189nobodyさん:2007/04/03(火) 23:19:03 ID:???
>>186
1. A君がフォームを表示。
2. B君がフォームを表示。
3. A君が番号2のログを削除。
4. B君が番号3のログを削除。
5. (ノ∀`) アチャー
190172:2007/04/03(火) 23:24:05 ID:??? BE:870091968-2BP(396)
>>189
現在のプログラム自体アウトですかね?
一応、
現在作成中のものはバリューに入れる番号をコメントは1,2
情報はa1,a2になるようにしようと思うのですが。
そういう問題ではなくて?
191182:2007/04/03(火) 23:39:28 ID:???
>>188
ほんと、おっしゃる通りだと思います・・・

>>190
横からなんなんですが、削除が起こってもそこを埋めない(書き込み)通番を
持っておくべきだと思います
表示上番号が飛ぶのが気持ち悪いのでしたら行番号を表示されればいいのでは
ないでしょうか
192172:2007/04/03(火) 23:43:42 ID:??? BE:181269252-2BP(396)
>>191
おっしゃるとおりですね、
行番号をvalueに挿入するようにします。
これがかなりネックになってましたので。
193155:2007/04/04(水) 00:03:54 ID:jkYA50BD
>>157
そんなつもりはなかったんだ。
「ちなみに」っていうのはまずかったね。
すまん。

ところで>>155のレスでもまたASCIIコード見間違えてて微妙に間違ってたOTZ
いないとは思うけど、ここ見てあれ使う人がいたら悪いので一応報告しとく

最初の文字が数字と記号と制御文字以外の文字列にマッチする正規表現は
'^[^\W0-90-9].*$'
こんな感じでどう?

なんか微妙に板違いだけど・・・
194nobodyさん:2007/04/04(水) 00:11:38 ID:???
>>192
おまえは勘違いしている。行番号はソースにふくめるな。
エディタで行番号表示させて確認するだけにしろ
195nobodyさん:2007/04/04(水) 00:14:16 ID:???
いや表示のときに連番にすりゃいいだけの話だろ
196172:2007/04/04(水) 00:25:17 ID:??? BE:435046346-2BP(396)
>>194
count($file)で行数カウント後の番号を利用しちゃ駄目という事ですかね?
197172:2007/04/04(水) 00:27:27 ID:??? BE:815711459-2BP(396)
>>195
ログを全て表示した時にも
ラジオボタン削除利用したいので
フォームへのvalue値の自動挿入はしときたいのですが
無謀ですかね。
198nobodyさん:2007/04/04(水) 00:30:35 ID:???
削除されたら名前・内容を“あぼーん”に書き換える処理にしとけば解決。
199nobodyさん:2007/04/04(水) 00:35:05 ID:???
>>197
番号抜けアリのラジオボタンを並べりゃ「ラジオボタン削除が利用できる」けど
富豪的に>>178でやればいいよ。配列に何MB食わせるのか知らないけど。

削除用のラジオボタンとやらをログのナンバーと無関係に連番振って吐いてるのかな。
200nobodyさん:2007/04/04(水) 00:42:47 ID:???
>>197
っつーか何がしたくて今何が問題なのかがよくわかんないんだけど.。
ログを全て表示した時にラジオボタン削除(って何なのか知らんけど)をするために
フォームへのvalue値の自動挿入(hiddenのことか?)することは
別に無謀でも何でもないからさっさと作ればいいと思うけど
201nobodyさん:2007/04/04(水) 01:01:03 ID:???
行を削除したあとに連番に数をそろえないていいから。
そろえたものをログに書き込むのは必要ないし効率が悪いからやめたまえ。
ログを配列に読み込んで、その配列を連番でvalueに利用すればおまえのやりたいことはできる。
つべこべいわずだまってマニュアルみろ。

16歳、工業高。

202nobodyさん:2007/04/04(水) 01:02:13 ID:???
つけわすれた。

氏ね
203172:2007/04/04(水) 01:02:18 ID:??? BE:815710695-2BP(396)
アドバイス頂いてありがとうございます、
countでカウントしたものを
ラジオ削除のナンバーに置き換えて処理するようにして
それで手におえないようなら
番号抜け削除を次候補という事で考えてみます。
本来ならあぼーんが掲示板の性質上いいのでしょうが
今回は比較的単純なスクリプトで後に大量設置する可能性があるもので
文字数省略できるところはしとこうかと。

>>199
削除用番号はログのナンバーを引用してます。

>>200
すいません、
html部分に先にvalue手打ちで書き込んどけということかと思ったもので
ログ利用では駄目なのかなと。
204nobodyさん:2007/04/04(水) 01:02:42 ID:???
ってか、DBで行の入れ替えってできないんだな
205172:2007/04/04(水) 01:03:29 ID:??? BE:580060984-2BP(396)
>>202
わざわざありがとうございます。
206nobodyさん:2007/04/04(水) 01:03:41 ID:???
は?
207nobodyさん:2007/04/04(水) 01:04:17 ID:???
DBで行の入れ替えができないとでも?
208nobodyさん:2007/04/04(水) 01:08:09 ID:???
いや行の入れ替えができるとかできないじゃなくて、
そもそも「行の順番」て何だ? DBでそんな概念あるか?
209nobodyさん:2007/04/04(水) 01:11:23 ID:???
>>208
DBに格納した順番
210nobodyさん:2007/04/04(水) 01:12:03 ID:???
ORDER BYとか指定しない限りINSERTした順に表示されるとかそんな保証はないでしょ
211nobodyさん:2007/04/04(水) 01:23:36 ID:???
連想配列のキーと値を入れ替える関数あるじゃん?
1年ぐらい前にその関数使ってゴニョゴニョしたら5〜6分かかってたバッチ
処理が2秒で終わったことがあった。






ちゃんとテストして処理に抜けとか問題は無かったけどあまりにも早すぎて
怖くなってから元に戻しておいた。
212nobodyさん:2007/04/04(水) 01:27:53 ID:???
テストの結果は正しくても、書いたロジックに自信のないvoodooプログラミングなのであればそれが正解かも
213nobodyさん:2007/04/04(水) 01:28:15 ID:??? BE:1468279499-2BP(396)
まだ勉強し始めたばかりですが
そんなプログラムの組み立てによって差が出るんですね。
あっても2,3秒のものだと思ってました。
214nobodyさん:2007/04/04(水) 01:36:18 ID:???
>>172
ツッコまれてる理由は理解したの?
効率とか関係ないから。

> ナンバー 名前 内容 日付 パスワード
「ナンバー」とやらをキーにしてログを削除したいんだろ?
「ナンバー2のログを削除」みたいな感じで。
その「ナンバー」が削除処理の度にコロコロ変わったらマズいのは分かるよな?

分かってるならあとは好きに書けばいい。
215nobodyさん:2007/04/04(水) 01:47:37 ID:???
>>212
いやマジであれはやばいって絶対何かの呪いだもん


「なんか」で変換すると「男か」ってでるな
216nobodyさん:2007/04/04(水) 01:48:18 ID:??? BE:326284092-2BP(396)
>>214
ナンバーは消して現在こういう感じで処理してます。
explode以降は改修前のままですので今から直しますが。

$cdlog=file('comment.txt');
for($i=0;$i<count($cdlog)-1;$i++){
$cditems=explode("\t",$cdlog[$i]);
if($items[0]==$_POST['delradio']&&$items[4]==$_POST['delkey2']||$items[0]==$_POST['delradio']&&'pass'==$_POST['delkey2']){
217nobodyさん:2007/04/04(水) 01:54:35 ID:???
>>215
その5分が2秒に劇的改善した処理ってどんなのなの?
218nobodyさん:2007/04/04(水) 02:24:38 ID:???
>>216
あなたがページを表示したとする。
あなたはname="delradio" value="5"のカキコを削除したいと思った。(削除ボタンはまだ押していない。)
と、ここで他の誰かが割り込んで、name="delradio" value="4"のカキコを削除した。(削除ボタンを押した。サーバ側で削除処理も完了した。)
あなたは削除ボタンを押した。

あなたは目的のカキコを削除できる?
たまたまじゃなくて必ず削除できる?
219nobodyさん:2007/04/04(水) 02:29:03 ID:???
>>209
格納した順というか、リソート機能ならPHPMyAdminで一発で出来るし
自前でやるとしても簡単なコードで出来るでしょう。
オートインクリメントしてるなら、それでソートすればいいんじゃね?
もっともこれはPHPMyAdminみたいな、基本ORDER BY付けないGUIで見るときに見やすいとかだけで
普通にDBから検索する場合、大抵はORDER BYつけるしリソートすること自体あんまり意味無いと思うが。
220nobodyさん:2007/04/04(水) 02:59:00 ID:??? BE:271903853-2BP(396)
>>218
ファイルロックをしないといけないということですよね。
後程完成品をアプしますのでまたお気づきになった点を
ご指摘いただければありがたいです。
221nobodyさん:2007/04/04(水) 03:08:41 ID:???
ファイルロックはもちろん必要だが、どう見てもそれ以前の問題だろ。
まぁいいやコードが有れば話もしやすいだろうし。
222nobodyさん:2007/04/04(水) 03:19:14 ID:???
>>189で既に指摘されてることやん・・・
223nobodyさん:2007/04/04(水) 03:21:56 ID:???
>>220
1 a
2 b
3 c

というデータになっているとしよう。Xという人が1を、Yという人が2を
ほぼ同時に消すという操作をしたとしよう。ファイルロックをしたとして、
XのクエリがYのそれよりも速く到達したときどうなるかというと、

Xのクエリの処理後
1 b
2 c

になる。これはわかるよね。次にYのクエリの処理だが、
これは2を消せという指令だ。ロジックはファイルの中から2を探して消すのだから、最終的には

1 b

になる。でもYが消したかったのは最初のbの行じゃなかったのか?
というのが問題。わかったかな。
224nobodyさん:2007/04/04(水) 03:25:12 ID:??? BE:453173055-2BP(396)
あーなるほど・・・・・・
と言う事は結局削除文字列代入しか無理と言う結論に?・・・・・・・・・
しっかしよくスレッドフローティング方式の掲示板とか作れますね、
作ってる方尊敬しますわ。

下記は現在作成中のソースです。
一番下のソースはめちゃくちゃなので放置お願い致します。
http://www.pachiweb.com/updir/data/php.txt
したい事は投稿者が自身でコメントか情報かを選択しそれを別々に保存、
そのログから新着5行づつを表示させると言うものです。
ラジヲボタンでその記事を削除したいのですが
なるべく情報、コメント含めラジオボタンで選択→パスワード入力後
ワンクリックで削除という手軽さで削除を行いたいです。

ファイル構成は
本体.php
reference.txt
comment.txt
です。
225nobodyさん:2007/04/04(水) 03:26:46 ID:??? BE:326285036-2BP(396)
>>221さんを見てやっと気がついたんですが
いろいろご解説頂いて本当にすいません。
マジすいません。
226nobodyさん:2007/04/04(水) 03:39:33 ID:???
>>225
ごめん、コードを見ずにそういうことをしたい場合の定石を書くw

・ID列と連番列を別に取る
データには一度書いたら書き換わらないID列と、メッセージ番号(seq)を示す数を別に記録しておく

ID seq その他情報
1 1 a
2 2 b
3 3 c

消すときはIDをキーに行を探し、seq列を連番に書き換える。たとえば上の表のID2の行を消したときは

ID seq その他情報
1 1 a
3 2 c

のようにやる。IDは書き換えない

・そもそもseqはファイルに記録せずにいちいち数える
要件にもよるけどこれで十分処理が間に合う場合がけっこうある
227nobodyさん:2007/04/04(水) 03:50:19 ID:??? BE:761330276-2BP(396)
な、なるほど初心者には結構複雑な事をしなきゃいけないんですね。
IDとSEQに同じように番号を割り振ったとしても
ID側は歯抜け数字列になっても
SEQ側はきれいな数字列に直されると。
要するにID側をvalueに割り振れば問題解決ですか。
228nobodyさん:2007/04/04(水) 03:54:46 ID:??? BE:362538454-2BP(396)
すいません、複雑でもないですね。
とりあえずナンバーをまた採取するようにして
それをIDにしてladioに代入します。
結局、素人の私がナンバーを振り直したいとか
訳わからん事言わなければ普通に解決してた問題なのですね・・・・・・
229nobodyさん:2007/04/04(水) 05:11:36 ID:???
各レコードに削除フラグをつけたらどうでしょ
処理が増えるようだけど172さんにとってはすっきり書けるような気がする
通番用にはそれの変数一つ増やすだけだし
あと“何が”削除されたのか後で管理者が分かるのもメリットと言えばメリット

書いては消し書いては消しタイプ(削除比率の高いもの)だと
ファイルが膨らむばかりなので向かないけど
230虚弱PHP:2007/04/04(水) 09:25:54 ID:???
普通のサービスだと、普通の削除は削除フラグ立てるだけの場合が多いと思う。
完全削除は別のオペレーションで。
231nobodyさん:2007/04/04(水) 09:39:33 ID:???
valueって何だvalueって
「値に入れればいいんですね」とか言ってるのと同じだ
seqを毎回振りなおすほうが面倒じゃないか?
ログ中の順番で表示して番号を付けりゃいいじゃん

っていうか一番楽な方法はDBだけど
232nobodyさん:2007/04/04(水) 11:22:30 ID:???
記事ごとにユニークな文字列なり数値なりを記録しとけばそれでいいだろ。
削除の際はそれを入力させれば確認できる。


一番簡単なのはやっぱりデータベースだけど。
233nobodyさん:2007/04/04(水) 11:31:01 ID:???
初心者です。 =& ってどういう意味でしょうか?

例:
function Controller($request, $session, $result) {
$this->request =& $request;
$this->session =& $session;
$this->result =& $result;
}
234nobodyさん:2007/04/04(水) 11:34:46 ID:???
235233:2007/04/04(水) 11:58:05 ID:???
>>234
ありがとう!
236nobodyさん:2007/04/04(水) 12:48:21 ID:Msn4ohO/
Apache + mod_ssl + Open_SSLでSSL環境を入れてみたいのですが
Webサーバが整備されればPHP側では特に意識する必要なく
https://〜〜〜/〜〜.phpのように普通にアクセスして問題ありませんか?
237nobodyさん:2007/04/04(水) 12:50:59 ID:???
はい。
238233:2007/04/04(水) 13:41:06 ID:???
リファレンスについて、概要は理解できたんですが、実際どういった時に
使用するものなのかが理解できません。

例えば233に書いたのはネットにのっていたあるサンプルクラスのコンス
トラクタなんですが、この場合は何故リファレンスにしているのでしょうか?

馬鹿ですみません。
239虚弱PHP:2007/04/04(水) 13:44:49 ID:???
PHPのリファレンスって、他の言語に比べるとかなり複雑だよね。
PHP4とPHP5でも変わってくるし。

>>238
使う必要を感じないなら、使わなくていいんじゃないかな。
勉強なら他の言語で参照渡しと値渡しの勉強した方がいいと思う。
240虚弱PHP:2007/04/04(水) 13:45:27 ID:???
s/かなり//
241nobodyさん:2007/04/04(水) 14:09:07 ID:???
>>238
クラス使うようになると必要性を感じるようになってくる
とりあえずクラスとオブジェクトからがんばれ
242nobodyさん:2007/04/04(水) 14:10:11 ID:???
ちなみに、サンプルのコンストラクタは受け取り時に参照してないけど
PHPなら参照する意味あんまないね。
243nobodyさん:2007/04/04(水) 14:11:14 ID:???
PHPなら→PHP4なら
244nobodyさん:2007/04/04(水) 14:29:39 ID:???
phpMyAdminで

collation server latin1_swedish_ci
の値を
collation server utf8_general_ci

に変更したいです。
方法を教えてください。
245nobodyさん:2007/04/04(水) 15:16:31 ID:???
if(...){...};
for(...){...};
のセミコロンってなんか意味あんの?
ってかカコイイの?
246nobodyさん:2007/04/04(水) 15:32:22 ID:???
いみない
247nobodyさん:2007/04/04(水) 16:15:15 ID:PZ7+vB49
JpGraphでグラフを描画しているのですが、Y軸の目盛の間隔を調節する
にはどうすればよいのでしょうか?

例えば 0.0 から 20.0 までの目盛の間隔は広く、 20.0 から 100.0 までの目盛の
間隔は狭くする、という調節がしたいのです。
そうしないと、小さい値(だいたい 0.0 から 3.0 )が細かすぎて読み取れないのです。

よろしくお願いします。
248nobodyさん:2007/04/04(水) 16:21:48 ID:1w3+kv1a
これどのような意味か教えて。

if(!$a = intval($b)){
$a = 0;
}
249nobodyさん:2007/04/04(水) 16:47:33 ID:???
>>248
$bを整数へ変換した値を$aへ代入する。
もし$aが0なら、$aへ0を代入する。
250nobodyさん:2007/04/04(水) 16:48:33 ID:???
記法の問題だけだろうな。
$a = intval($b);だけで結果は同じだから。
251nobodyさん:2007/04/04(水) 16:55:47 ID:74I3KgLe
phpでの関数ポインタの書き方を教えて下さい。
252nobodyさん:2007/04/04(水) 17:09:30 ID:???
>>251
echo 'void (*abon)(int) = exit;';
253nobodyさん:2007/04/04(水) 17:13:34 ID:???
をいをいw
PHPの場合ないんだけど、それ風になんか代替させたいならcall_user_func + 参照渡しを検討ってことかな。
254nobodyさん:2007/04/04(水) 17:36:16 ID:???
匿名関数はあるが、長いコード書く場合は激しく使いにくい。
まぁ、call_user_func, call_user_func_arrayあたりを使うのが無難だね。
255nobodyさん:2007/04/04(水) 17:36:18 ID:???
PHP7で実装との仰天情報
256nobodyさん:2007/04/04(水) 17:36:45 ID:???
257nobodyさん:2007/04/04(水) 17:37:56 ID:???
ちなみに、call_user_func、call_user_func_arrayは参照渡しできないので
コールする側で参照するか、PHP5ならオブジェクト渡すか。
258nobodyさん:2007/04/04(水) 17:41:05 ID:???
アーcall_user_func_arrayは参照できたかも
259nobodyさん:2007/04/04(水) 17:41:23 ID:???
無名関数とクロージャーは
あれば便利だけども、なくてもそれほど問題はないからな
260虚弱PHP:2007/04/04(水) 17:47:00 ID:???
>>247
それって対数グラフを使う場面ってことじゃないの?
261nobodyさん:2007/04/04(水) 18:34:49 ID:PZ7+vB49
>>260
ありました。ありがとうございました。
262nobodyさん:2007/04/04(水) 19:42:34 ID:o8UCEOfE
PHPでタイマー機能みたいなのってあるのでしょうか?
○秒後に実行させるという。(表示されるのではなく)

Javascriptでやっているのですが、基本的にPHPのページなもので
もし可能であればPHPのみで出来ればと思います。
263nobodyさん:2007/04/04(水) 19:46:45 ID:???
metaタグでスクリプトに飛ばせば?
264nobodyさん:2007/04/04(水) 19:55:29 ID:???
sleep
265247:2007/04/04(水) 20:00:52 ID:PZ7+vB49
>>260
すみません、ちょっと対数グラフではないようです。

イメージ的には http://sv2ch.baila6.jp/graph_load.cgi?news23.2ch.net のような
グラフを描きたいのですが、こういうのは一般的に対数グラフになるんですか?
266nobodyさん:2007/04/04(水) 20:02:40 ID:???
対数グラフじゃないでしょうか?
267262:2007/04/04(水) 20:38:52 ID:???
>>263-264
sleepだとページ全体が表示されるのを遅らす事になります。
なので、sleepの間は何も表示されません。
また、metaで別ページに飛ばすのでもないです。

そうではなくてPHPファイル(test.phpなど)のHTMLの部分は表示されていて
プログラム実行箇所は○秒遅れたら良いのです。
268nobodyさん:2007/04/04(水) 20:40:21 ID:???
質問です。
今、smartyを初めていじってて、単純なプログラムを作ったんだけど、
文字化けするトラブルが発生しました。
最初に言うと、smartyを使う点以外はコレまでに作ってきたプログラムと
同じようにしてるので、いきなり文字化けが発生したというのはやっぱり
smartyに関係した問題かなと思ってるんですが、どういう原因が考えられるでしょう?

(1)PHPファイル コレをブラウザで開きます---------------------
<?php
require_once("MySmarty.class.php");
$o_smarty = new MySmarty();
$o_smarty->assign("MyName","YAMADA,Yoshihiro");
$o_smarty->display("sample.tpl");
?>

(2)sample.tpl テンプレファイル---------------------
<html><head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>Smartyのテスト</title></head>
<body>
私の名前は{$MyName}です。
</body></html>

(3)MySmarty.class.php ---------------------
<?php
require_once("MySmarty.class.php");
$o_smarty = new MySmarty();
$o_smarty->assign("MyName","YAMADA,Yoshihiro");
$o_smarty->display("sample.tpl");
?>
269nobodyさん:2007/04/04(水) 20:44:00 ID:???
>>267
ob_
270nobodyさん:2007/04/04(水) 20:44:58 ID:???
つうかPHPはサーバーサイドスクリプトだぞ
271268:2007/04/04(水) 20:51:35 ID:???
質問に間違いがありました。各ファイルは以下の通りです。

(1)PHPファイル コレをブラウザで開きます---------------------
<?php
require_once("MySmarty.class.php");
$o_smarty = new MySmarty();
$o_smarty->assign("MyName","YAMADA,Yoshihiro");
$o_smarty->display("sample.tpl");
?>
(2)sample.tpl テンプレファイル---------------------
<html><head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>Smartyのテスト</title></head>
<body>
私の名前は{$MyName}です。
</body></html>
(3)MySmarty.class.php ---------------------
<?php
require_once("/php/include/smarty/libs/smarty.class.php");
class MySmarty extends Smarty{
  public function __construct(){
  $this->Smarty();
  $this->template_dir="./templates";
  $this->compile_dir="./templates_c";
  $this->cache_dir="../cache/";
  $this->caching=false;
 }
}
?>

開発環境はwinXP apache2 php5です
272nobodyさん:2007/04/04(水) 20:57:02 ID:???
>>271
内部コードは?
テンプレートはもちろんEUCなんだよな?
ブラウザの文字コード変換で適当に変えて何のコードになってるか分かる状態か?
273nobodyさん:2007/04/04(水) 21:00:51 ID:???
MySQLのテーブルデータをCSVでエクスポートするスクリプトを書いてます。
テーブルの文字コードはEUCで、CSVの出力をSJISにしたいのですが、

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=hoge.csv");
〜以降printで内容出力
こんな感じで出力するとファイルがEUCで出力されます。

Smartyがらみでphp.iniでは以下の設定をしてます。
mbstring.http_output SJIS
mbstring.internal_encoding EUC-JP

HTMLの出力はこれでSJISになっているんですが、
CSVの出力だと関係ないんでしょうか?



274268:2007/04/04(水) 21:02:28 ID:???
>>272
回答ありがとうございます。
テンプレート(sample.tpl)はEUCで保存してます
ブラウザの文字コードももちろんEUCで出力されてるんですが化けていて、
SJISやISOなどに変更しても化けています。
ちなみに、「????O??AMADA,Yoshihiro???B」 となります。

smartyだけの文字コードをいじる設定があるのかとphpinfoで調べても
該当項目がないみたいなので困ってしまいました
275nobodyさん:2007/04/04(水) 21:04:31 ID:???
>>267
HTML表示させてからsleep
276nobodyさん:2007/04/04(水) 21:08:44 ID:???
>>271
sample.tplの
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
これcharset=Shit-JISの間違いじゃ??
277nobodyさん:2007/04/04(水) 21:17:47 ID:???
>>274
function s_outputfilter($str)
{
print_r(mb_detect_encoding($str, 'auto'));
}

$o_smarty->register_outputfilter('s_outputfilter');

解決策ではないが、とりあえずこれを実行して表示前のコードを調べてみれ
278268:2007/04/04(水) 21:24:20 ID:???
>>277
SJISってでました!

どういうこと???
smartyはSJIS書き出しが標準ってこと??
どこに設定ファイルがあるんでしょうか?

>>276
なんで判ったんですか?
279nobodyさん:2007/04/04(水) 21:26:26 ID:???
phpiniの設定はどうなってんの?
280nobodyさん:2007/04/04(水) 21:44:52 ID:??? BE:543807465-2BP(396)
すいません、fopen書き込み+読み込み専用で開いて
その直後に排他ファイルロックかけると
同スクリプトでほぼ同時に同じ処理をしようとした人は
その処理中ファイルの読み込みさえ出来なくなるんですかね?
つか、fopenの読み込み+書き込み専用で開くとかどういう意味があるのですか?
読み込み専用のみで開いても読み込み+書き込み専用で開いても
後者選んどけば何の不自由なくすべて処理できるのでは?
281268:2007/04/04(水) 21:45:46 ID:???
smartyはやっぱりやめたほうがいいですよね。
cakePHPに移行します
282nobodyさん:2007/04/04(水) 21:46:34 ID:???
>>280
「読むだけの処理の時に誤って書き込むことがない」ということが保障される
283nobodyさん:2007/04/04(水) 21:48:20 ID:???
しょうもない質問だけどフレームワークって何よ?
284nobodyさん:2007/04/04(水) 21:48:49 ID:M2pD0HVK
設定ファイルを分離したり機能ごとにファイルを小分けしたりして
可読性やメンテナンス性高めたいんだけど
そういうのの勉強できそうなきれいでわかりやすいphpのコードやtipsって
どこかにありませんか。

本人ですら後で読み返した時1から思い出さないとよくわからないことが多いです。
285nobodyさん:2007/04/04(水) 21:50:30 ID:??? BE:145015924-2BP(396)
>>282
ありがとうございます、
もしお暇でしたら下記質問も教えてもらえるとうれしいです。

ロックかけた後は別の人が同時に同じプログラム
の投稿ボタンを押してもはじかれるという事でよいのでしょうか。
ロックかけた後、そのファイルを自分で再度呼び出す分には問題なくて?
286nobodyさん:2007/04/04(水) 21:51:38 ID:???
>>285
昨日のやつか。
287nobodyさん:2007/04/04(水) 21:56:37 ID:??? BE:271904235-2BP(396)
>>286
そうです、色々アドバイスを頂いたのをまとめた結果、
記事にナンバー(ID)振ってナンバーの並びが歯抜けになっても放置で
それを削除していく方式にしました。
それでファイルにロックかけて前の記事のナンバーを取り出し1を加算していこうとしているのですが
ファイルロック関連で疑問に思った事がありまして・・・・・・
本で調べてみたのですが概念的なことしか載ってなくて
具体的に疑問点が解決できませんでした。
何度もすいません。
288268:2007/04/04(水) 22:03:20 ID:???
>>279
php.iniは保存のエンコードも書き出しのエンコードも EUCで統一しています。
289nobodyさん:2007/04/04(水) 22:22:57 ID:???
290nobodyさん:2007/04/04(水) 22:34:35 ID:GchyYXGQ
質問です。

UTF-8で表示されているフォームから特殊文字(??)を入力して
送信するとそのままバイナリで送信されてくるのですが
sjisやujisなフォームから送信するとHTMLコードで送信されてきます(&#9685;&#3642;)

UTF-8の場合、そのままsjis-win等に変換すると特殊文字が壊れてしまいます。

何がやりたいかと言うと。

携帯絵文字の入力も想定しているので、どうしてもUTF-8 -> SJISへ変換する作業が
必要になるのですがUTF-8で送られて来た場合でも&#9685;&#3642;の様なHTMLコードにしたいのです。

これを実装するにはUTF-8のバイナリとHTMLコードの変換マップ等を
作らないと実装できないものでしょうか?

どなたかお力添えお願い致します。
291nobodyさん:2007/04/04(水) 22:34:56 ID:??? BE:435045683-2BP(396)
>>289
それだとラジオボタンでの削除の際、
不具合出るとのことでした。
DBも今勉強1からはじめると大変そうなので
完成後置き換えるようにしたいと思います。
292290:2007/04/04(水) 22:37:21 ID:GchyYXGQ
特殊文字(??)
と化けてしまいました申し訳ないです。

()内に入る特殊文字はこれです。

??
293nobodyさん:2007/04/04(水) 22:37:44 ID:???
>>291
なんで?
ユニークナンバーをキーにして削除すればいいじゃん?
(つーかラジオボタンだろうとチェックボックスだろうとセレクトボックスだろうと同じこと)
294nobodyさん:2007/04/04(水) 22:38:41 ID:???
>>290
>sjisやujisなフォームから送信するとHTMLコードで送信されてきます(&#9685;&#3642;)
>UTF-8で送られて来た場合でも&#9685;&#3642;の様なHTMLコードにしたいのです。

???
295290:2007/04/04(水) 22:48:38 ID:GchyYXGQ
2chだとコードでも化けますね…

>>294
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/6003/ura/moji.html

やりたいこととしては上記ページのコードではなく実際の絵文字の方をそのまま
コピペしてPOSTした時に正常に表示させたいのです。
296290:2007/04/04(水) 22:57:14 ID:GchyYXGQ
>コピペしてPOSTした時に正常に表示させたいのです。

補足です。
コピペしてPOSTしてからSJISに変換しても壊れないようにしたいのです。
297nobodyさん:2007/04/04(水) 22:57:46 ID:Rqzs89IS
>>249
>>250
ありがとうございます。

if(!$a = intval($b)){
$a = 0;
}

上記での ! がどのような意味になっているのか教えてください。
「$bを整数へ変換できず、$bの値を$aへ代入できない場合」、すなわち
「$a = intval($b) が成立しない場合」という理解でいいのでしょうか。
ここでの ! の使い方がいまいち分かりません。
298nobodyさん:2007/04/04(水) 23:15:37 ID:???
1.$bをintval関数にかける
2.その返り値を$aに代入する
3.2の式(=$aの値)の否定を取ったものが真になるか判断する

変換できないとか代入できないとかいう判断はここではありません.
299nobodyさん:2007/04/04(水) 23:18:23 ID:???
>>297
なんか解釈の仕方が変だぞ
分岐と式の仕様を理解していないのか?

!は否定の演算子
$a = intval($b) の否定。
その例文の場合だと、intval($b) の結果を $a に代入して、
それが 0 なら分岐する

300nobodyさん:2007/04/04(水) 23:22:18 ID:???
おい、クズ質問者ども。いまから0時までに質問してくれた方には
俺が誠心誠意を持って答えてやるから質問ぶつけてこい!
PHPに対するあついハートをわすれるなよ!
301nobodyさん:2007/04/04(水) 23:35:01 ID:???
htmlファイルを扱っているとtableなどが入れ子になっている場合があるのですが、
例えば2番目にあらわれた<table>〜</table>までを取得する方法を教えてください
(上記の”〜”の中にもtableが含まれていたりするとお手上げなのです)
302nobodyさん:2007/04/04(水) 23:37:48 ID:???
>>301
2番目にあらわれた<table>〜</table>までを目で見て判断する。
次におもむろにCtrl+Cを押してコピーし、適当な箇所へCtrl+Vを押して貼り付ける。
303nobodyさん:2007/04/04(水) 23:54:00 ID:???
!より=の方が優先順位高いの?
304nobodyさん:2007/04/04(水) 23:54:24 ID:???
>>301

【test.txtの内容】
<html>
<head>
<title>テスト</title></head>

<body>

<table>

<tr><table><tr><td>これを取得する</td></tr></table></td>
</tr>
</table>
</body></html>
【test.phpの内容】

$file = file_get_contents("test.txt");

preg_match("[(<table>.*?</table>)]",$file,$array);

print_r($array);
305nobodyさん:2007/04/04(水) 23:55:55 ID:???
>>303
つマニュアル
306300:2007/04/04(水) 23:56:26 ID:???
>>301↑を適当に改行してためせ


>>303
もうすこし詳しくかけ
307300:2007/04/04(水) 23:57:27 ID:???
のこり3分
308nobodyさん:2007/04/04(水) 23:58:25 ID:???
$a = 3;
$b = $a++;

これで$bが3だから驚いた
309nobodyさん:2007/04/05(木) 00:01:00 ID:???
>>308
あたりまえ。4にしたけりゃ++の位置をかえろ
310nobodyさん:2007/04/05(木) 00:01:50 ID:???
>>305
いや、マニュアルだと!の方が高かったんだけど、
それだと>>248の書き方は文法的におかしくない?
実際やってみたら動いたわけだけど、何か見落としてる?
311nobodyさん:2007/04/05(木) 00:09:24 ID:???
>>310

if(!$a = intval($b)){
$a = 0;
}

【$A = $B】
$Bを$Aに代入する

【$A = "a"】
$Aはaである

【!$A = "a"】
$Aはaではない


これで理解しろ
312nobodyさん:2007/04/05(木) 00:10:39 ID:???
>>310
見落としてると思う。
第十五章
>注意: ! は = よりも優先されるはず なのにもかかわらず、
>PHP は依然として if (!$a = foo()) のような式も許します。この場合は foo() の出力が $a に代入されます。


313nobodyさん:2007/04/05(木) 00:11:45 ID:???
>>301

if(!$a = intval($b)){
$a = 0;
}


$bの値が整数だったばあいいif分の中身が実行されるが、
$bになにも格納されてなかったら動かないぞ
314312:2007/04/05(木) 00:12:10 ID:???
なので>>311のような説明は間違い

315nobodyさん:2007/04/05(木) 00:13:14 ID:???
>>314
仕様
316312:2007/04/05(木) 00:14:00 ID:???
>>313
をいをい。intvalのマニュアル嫁.
失敗時に0を返すんだよ
317nobodyさん:2007/04/05(木) 00:15:05 ID:???
>>312
ほんとだ、見落としてた。
というとつまり、!$a = $b みたいな形の式のみ特例的に=の方が優先順位が高くなる、ってことか。
それはちょっと・・・どうよ?
318312:2007/04/05(木) 00:20:53 ID:???
>>317
英文だと
if (!$a = foo()), in which case the return value of foo() is put into $a.
となってるから、!$a=$bじゃなくて、関数の返し値の代入に限ってって感じだと思うよ。
つまり関数の方の動作を優先するってことなんだろうなあ。

319nobodyさん:2007/04/05(木) 00:21:44 ID:???
なにが?
320nobodyさん:2007/04/05(木) 00:27:29 ID:???
>>318
試してみたら右辺が変数でも同じだったよ。
まあ、どちらにしろあまりいい仕様ではないね
321nobodyさん:2007/04/05(木) 00:29:04 ID:???
なんで?
322312:2007/04/05(木) 00:36:05 ID:???
>>320
みたいだね。
$a = 1;$b = 0;
if(!$a = $b) {
echo $a;
}
で 0 が出力結果になるな。
323301:2007/04/05(木) 00:47:30 ID:???
>>304
とりあえず改行を無視して

$html = '<table><tr><td>→<table><tr><td>これを取得する</td></tr></table>←</td></tr></table>';
preg_match("[(<table>.*?</table>)]", $html, $array);
print_r($array);

とやってみました
イメージとしては $array[0]に$html全体が
$array[1]に→この部分←が入るような形になればありがたいのですが…
324nobodyさん:2007/04/05(木) 00:58:55 ID:???
>>301
ネストをきれいに表現してる正規表現のサンプル見たことあるな。
元レスから判断するけどn番目のテーブル全体が欲しいんだったら
対応する括弧を見つけるロジックでいいんじゃないのか。
325nobodyさん:2007/04/05(木) 01:03:13 ID:???
>>301
下手に正規表現使って一発判定するより、tableタグのペアがあるかだけ確認して再帰にしたほうがラク
326301:2007/04/05(木) 01:29:36 ID:???
どうもすみません
正規表現は前に何度も躓いていますし、なんか自分でも無理かと…

324さんと325さんのおっしゃってる意味は同じと考えていいのでしょうか?
対応する括弧を見つけるロジック = 再帰
なんでしょうか???
実はファイル(ディレクトリ)操作を勉強している時に「再帰」が出来てきて
理解を頓挫したことがあります(都合のいいサンプルをそのまま使いました…)
階乗で解説してあるサイトなどで勉強してみましたが、今回のケースに
当てはめることが全く出来ません

もしよろしければヒントでもいただけないでしょうか?
327nobodyさん:2007/04/05(木) 02:48:53 ID:???
preg_match_allで<table>〜</table>内を取得してさらに正規表現をはなて
328nobodyさん:2007/04/05(木) 03:28:47 ID:???
タグの対応関係は深いところから探って行かないと分からないからな。
tableタグの数をカウントアップ、閉じるタグでカウントダウンして、ゼロになってところで間の要素を再帰で同じ処理すればいいんじゃないか?
329nobodyさん:2007/04/05(木) 03:30:09 ID:???
>>327
書いてもいいけど明日まで待てるなら
330nobodyさん:2007/04/05(木) 04:03:17 ID:???
すでに定義されてるファンクションを上書きするにはどうしたらいいの?
331nobodyさん:2007/04/05(木) 04:22:53 ID:???
Zend Engineを改造する。
332nobodyさん:2007/04/05(木) 10:01:00 ID:???
>>330
function htmlspecialcharsplus($value)
{
    // サニタイズして出力します
    echo htmlspecialchars($value);
}
333nobodyさん:2007/04/05(木) 10:06:00 ID:???
>>332
それ上書きというのか???
334nobodyさん:2007/04/05(木) 10:32:46 ID:???
>>326
そういうのは、htmlをxml文書として扱いましょう。
自分ならPEARのXML_Serializeクラスつかうけど。
335nobodyさん:2007/04/05(木) 10:35:43 ID:???
>>330
PECLモジュールのAPD入れてoverride_function
336nobodyさん:2007/04/05(木) 12:47:31 ID:???
PEAR使ったことないしクラス名だけで判断しちゃうけど、
対象htmlファイルの構造が常にいっしょ
もしくは、tableタグに必ずidがついてる
みたいな条件下じゃないとどこかで再帰的な手法が必要になるんじゃないかな。
337nobodyさん:2007/04/05(木) 12:48:44 ID:???
ごめん 336は >>334
338nobodyさん:2007/04/05(木) 13:01:20 ID:???
画像を保存したいのですが、
送られてきた指定した画像のサイズを変え保存するにはどうしたらいいでしょうか?
GD入れないとダメすか?
また、保存する場所ですがDBにいれるか、ファイルを置くディレクトリを設置するか迷っています。
DBに入れた場合、DBの動作(SELECTなどの)は遅くなりますか?
339nobodyさん:2007/04/05(木) 13:18:45 ID:ln1txq/N
素材で落ちてるメールフォームってDLしてうpだけじゃだめなんですか?
誰か教えてくださいお願いします。

ちなみにOSはWiiiiiinXP
今のところのエラーはメールこねーy+文字化け杉
文字コードの設定とかkwskおしえてほしす
340nobodyさん:2007/04/05(木) 13:25:45 ID:???
>>339
まずお前の環境を詳しく教えれ
341>339:2007/04/05(木) 13:36:29 ID:???
環境というか…
落としてきたPHPの設置方法はうpするだけと書いてあるんですが
うpしてもロカルでも動かないので何か要るのかしらと思って悩んでます。。
一応持ってるだけなんですがアパチ2とPHP5はおいてある。
でも使い方とかはHello World+print、echo止まりだから全然わかりまてん
342nobodyさん:2007/04/05(木) 13:44:53 ID:???
おまえの環境にSMTPサーバが起動してないからだろ
343nobodyさん:2007/04/05(木) 13:45:50 ID:???
あとXPの場合homeかproぐらい書きましょう。
344nobodyさん:2007/04/05(木) 13:48:16 ID:???
あと住所氏名年齢電話職業ぐらい書きましょう。
345nobodyさん:2007/04/05(木) 13:50:03 ID:???
あとxmailでググレカス
346nobodyさん:2007/04/05(木) 13:50:21 ID:ln1txq/N
>342
えと、うp自体はPHP可レンタル鯖にうpしてるんだけどSMTP鯖起こさないといけないんですか?

>343
すまんかった
Proです
347nobodyさん:2007/04/05(木) 13:52:39 ID:???
>えと、うp自体はPHP可レンタル鯖にうpしてるんだけどSMTP鯖起こさないといけないんですか?

日本語で話して下さい
348nobodyさん:2007/04/05(木) 13:54:39 ID:???
自鯖で動かしてんじゃないのにxmailって要るんですかこのボケがって聞いてんだよ
349nobodyさん:2007/04/05(木) 14:06:10 ID:???
自鯖でテストしろやゴルァ
350nobodyさん:2007/04/05(木) 14:09:03 ID:ln1txq/N
mjdddd
配布スクリプトくらいうpして動かせてよ・・・
351nobodyさん:2007/04/05(木) 14:18:30 ID:???
>配布スクリプトくらいうpして動かせてよ・・・
意味が分からない
352nobodyさん:2007/04/05(木) 14:28:45 ID:???
Smartyって必須の技術ですか?
使っている人、やっぱり格段に効率化できました?
入力データ検証とかみると便利そうだなと思いますが、
それ以外で効果抜群だった点など教えてください。
353nobodyさん:2007/04/05(木) 14:29:12 ID:???
配布サイトさらせよ
354nobodyさん:2007/04/05(木) 14:34:37 ID:ln1txq/N
355nobodyさん:2007/04/05(木) 14:37:28 ID:???
phpでの文字コードと
mysqlでの文字コードの関係が
ごちゃごちゃしてて理解できずにいるんですが、
詳しいサイトないでしょうか?

phpのソースをUTF8で書いて、
MySQLの文字コードがEUC固定の場合に、文字化けを発生させないようにできるんでしょうか?
356nobodyさん:2007/04/05(木) 14:39:28 ID:???
コード変換すればいいんじゃなかったっけ?
357355:2007/04/05(木) 14:45:26 ID:???
そもそもMySQLの文字コードをEUCにする、ってどういうことなんでしょうか?
PHPで挿入したデータが自動的にEUCに変換され保存される、ということでしょうか?

例えば、UTF8のスクリプトからMySQLにデータ挿入しても
EUCで保存され、
UTF8のスクリプトで読み込む場合、読み込んでから
UTF8に変換して出力する、みたいな感じでしょうか?

358nobodyさん:2007/04/05(木) 14:46:06 ID:ln1txq/N
Apache2を起動してPHP5もHelloWorld確認してみた。
んで、ApacheにDLしたPHP置いてみた。
ドリームウイーバで送信先メールアドレスだけ書き換えた。
Fatal error: Call to undefined function mb_convert_encoding() in C:\Program Files\Apache Group\Apache2\htdocs\sendmail.php on line 148
359339:2007/04/05(木) 14:46:53 ID:???
↑339です
360nobodyさん:2007/04/05(木) 14:58:52 ID:???
>>857

$str = "あいうえお";
$str = mb_convert_encoding($str, "euc-jp", "utf8");
361nobodyさん:2007/04/05(木) 15:05:02 ID:???
>>358
extension=php_mbstring.dll
php.iniに↑みたいな設定がWinだといるらしい

そのエラーメッセージでググったらぞろぞろでるぞ
362nobodyさん:2007/04/05(木) 15:07:36 ID:???
>>354

>>このフォームは、"sendmail"のみに対応しています。

おまえの使ってるレンサバがsendmailに対応してるのか確認。
誰も答えるやつがいなかったらおれがこたえてやるがいまから仕事だから遅くても怒るなよよ。
363nobodyさん:2007/04/05(木) 15:20:00 ID:ln1txq/N
>361
それは多分初期設定時に
;extension=php_mbstring.dllをextension=php_mbstring.dll
になおせって説明かと。。

>362
ロカルでもむりなん?
鯖設定みてくる
364339:2007/04/05(木) 15:24:11 ID:ln1txq/N
鯖見てきた。
書いてない悪寒…
http://muryo-de.etowns.net/
別に試しにうpできたらいいんでsendmail対応書いてある鯖探すかsendmail使わないサンプル探したほうがいいのかしらん
365nobodyさん:2007/04/05(木) 15:40:35 ID:???
>>364
>endmailご利用不可能です

アカンがなwww
366虚弱PHP:2007/04/05(木) 15:44:45 ID:???
>>357
> PHPで挿入したデータが自動的にEUCに変換され保存される、ということでしょうか?
MySQL4.1以降だとそうなるはず。
だけど、化けまくる場合が多いので、MySQL4.1以降の場合は
skip-character-set-client-handshake設定して、
自分でちゃんと文字コード管理するのがよさげ。
個人的には全部UTF-8にした方がいいと思うけど。

適当に検索したら、以下のページでMySQL&PHP連携での文字コードの話が書いてあった。
http://puchiko.lowtech.ne.jp/?itemid=349
367nobodyさん:2007/04/05(木) 15:49:15 ID:ln1txq/N
>365
アカンがなwwwww
対策練ってくる・・・orz
368虚弱PHP:2007/04/05(木) 15:50:33 ID:???
>>364
しかし、そのサーバーまだ全然ページないねw
ページも素人っぽいし。
369339:2007/04/05(木) 15:52:18 ID:???
そこはきにすんな。
場所が借りれたらいいと思った。今は反省していない。
370虚弱PHP:2007/04/05(木) 16:13:19 ID:???
371nobodyさん:2007/04/05(木) 16:13:51 ID:???
>>355
設定で、どうにでもできる自由度を理解してないだけと思われ。

PHP側でMySQLの設定にあわせて文字変換してもいいし
MySQL側の設定で、MySQL側の変換を無効にしたりとか
PHPに合わせてデータを渡したっていいし、オマイの好きに
出来るよってところかな。

PHPとMySQLの文字変換の関係って言われても
答えとしては、自分がPHPとMySQLでやろうとしてることに
一番いい設定を選べばエエやん?って感じ。
372339:2007/04/05(木) 16:20:25 ID:ln1txq/N
あわわ・・・
逃げに走って、sendつかわなくていいフォームさがしてう
373nobodyさん:2007/04/05(木) 16:35:54 ID:???
ある連想配列の要素全てに htmlspecialchars をかけたい場合、
簡単にする方法はないでしょうか?
374nobodyさん:2007/04/05(木) 16:35:56 ID:???
>>366
>だけど、化けまくる場合が多い
これの原因の多くが使ってるmysqlクライアント側文字コードが
デフォルトは「latin1」と設定されてるから。

PHPでEUC-JPやUTF-8に変換してデータ送っても
MySQLサーバの方ではクライアントはlatin1で送るよと表明しているから
latin1→サーバ側に指定された文字コードに変換する。
latin1と思って日本語扱えば、そりゃ文字化けは必至。

だからクライアントの起動オプション、ライブラリならビルド時に指定するか
SET NAMESで「これからクラアントは○○で送るよ」とサーバに教えてやらないと駄目
http://dev.mysql.com/doc/refman/4.1/ja/charset-connection.html
PHPやMySQLの公式ビルドもののクライアントライブラリも「latin1」と設定されてる。
# RHEL系はUTF-8になってるのかね。

まあ自分も
>skip-character-set-client-handshake設定して、
>自分でちゃんと文字コード管理するのがよさげ。
こっち
375あきら:2007/04/05(木) 16:40:24 ID:jUd/uPxe
postgresql 7.3.15 で カラムを使って日付の計算を教えてください。
create table kaiin (kaiin_code varchar(6),
kaiin_name varchar(20),
nyukai_ymd varchar(10),
kigen integer,
primary key (kaiin_code));
nyukai_ymd は 日付を表現する文字型のカラム
kigen は 有効期限で1から12(nヶ月)

有効期限切れの会員の検索
入会日(nyukai_ymd) < 今日(2007-04-05)から遡ってkigenヶ月
select * from kaiin where
nyukai_ymd < to_char(to_date('2007-04-05', 'YYYY-MM-DD') - interval 'kigen month', 'YYYY-MM-DD');

ERROR: Bad interval external representation 'kigen month'
と言うエラーが.....!

intervalでカラム(kigen)を使う方法を教えてください。
宜しくお願いします。
376355:2007/04/05(木) 16:43:30 ID:???
>>366
>>371
>>374
レスありがとうございます。

>MySQL4.1以降だとそうなるはず。
つまり4.1以降のクライアント側の文字コードがEUCに設定されている場合、の話ですよね。
では、4.0以前のサーバー側の文字コードって何の意味を成しているのでしょうか?
377nobodyさん:2007/04/05(木) 16:43:47 ID:???
>>375
それのどこにPHPの質問があるのだね
378nobodyさん:2007/04/05(木) 16:45:03 ID:???
>>373
$array = array_map('htmlspecialchars',$array);
379nobodyさん:2007/04/05(木) 16:46:08 ID:Y4vj6k1c
PHP初心者です

今まで無料鯖で自作ブログみたいなのをつくってましたが、今回SSLが使えて広告もない鯖をタダで
使えるようになりました。そこで特にその必要はないのですが、あるならやっぱ使いたいのでコメント
やユーザー情報の入力はセキュアな状態で行うように改造したいと思ってます。

そこで質問なんですが、サイトのアドレスはhttp://mydomain.xxx.xxx/で、SSLはhttp://secure.xxx.xxx
というサブドメインでしか使えなくなってます。鯖は同じなのでmydomainで使ってるサイトの外見テンプ
レートをsecureから参照したいのですが、どうすればいいのかわかりません。

例えば、mydomain/tpl/tpl.phpといったテンプレートファイルをsecure/index.phpから参照するにはどう
すればいいですか?

日本語怪しかったらスミマセン
お願いしまッス!
380339:2007/04/05(木) 16:46:37 ID:ln1txq/N
鯖を変えてみた。
http://0web.cjb.net/
うごく・・・し、送れるんだけど鰓がでるお。。
Notice: Undefined variable: err_message in
381あきら:2007/04/05(木) 17:01:57 ID:jUd/uPxe
詳細が抜けててすみませんでした。
FreeBSD 5.3
Apache/1.3.37
php 4.4.4
postgresql 7.3.15

実際は
$today = date("Y-m-d");
$result = pg_Exec($conn,"select * from kaiin where nyukai_ymd < to_char(to_date('$today', 'YYYY-MM-DD') - interval 'kigen month', 'YYYY-MM-DD');");
です。
宜しくお願いします。
382nobodyさん:2007/04/05(木) 17:04:36 ID:???
Smartyいじってるんですけど、こんなエラーがでました。
Warning: Smarty error: unable to read resource: "menu.tpl" in C:\php\include\SMARTY\libs\Smarty.class.php on line 1095
正直Smartyにエラーが出るなんて想像もしてなかった
1000行も見返して問題チェックなんてする気にならないというか、
変にいじったら予想外の部分にまで後々障害出そうで怖いんですが、、
皆さんこういうトラブル発生しましたか?
383nobodyさん:2007/04/05(木) 17:04:45 ID:???
>>381
Postgresの質問だろ?
384nobodyさん:2007/04/05(木) 17:05:29 ID:???
>>380
少し黙ってろお前の口調うざい
385nobodyさん:2007/04/05(木) 17:06:38 ID:???
>>382
その文章まず読めよ
386nobodyさん:2007/04/05(木) 17:08:56 ID:???
>>380
$err_message使ってないみたいだから174行目削除
387あきら:2007/04/05(木) 17:12:49 ID:jUd/uPxe
>>383
サーバーサイドプログラミング関連の話題を扱っています。

Perl, PHP, Java, Ruby, C, Tcl といった言語処理系の話、
Apache, CGI, JSP/Servlet, ASP, ColdFusion といったアプリケーション実行環境の話、
Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。

とあったのでココでいいと思いました。
場違いでごめんなさい。
388nobodyさん:2007/04/05(木) 17:22:10 ID:???
>386
special thxxxxxxxxxxx!
なにかうろこのようなものがとれた
389nobodyさん:2007/04/05(木) 17:37:58 ID:???
反省の弁を綴りつつも自己正当化する>>387に乾杯
390nobodyさん:2007/04/05(木) 17:38:59 ID:???
>>385
すみません、
「Smarty.class.php の1095行目のmenu.tplを読めない」 と書いてあるのかなと
思うんですが、、
良くわかりません
391nobodyさん:2007/04/05(木) 17:40:32 ID:???
>>387
それはこの板全体の説明で、このスレッドは「PHP」の
質問スレッドだよ

PostgreSQLの話題は別のスレッドが基本

面倒だから答えるけど
エラーメッセージ見てわかるように
interval 'kigen month'
この表現がおかしいんだよ
interval の指定はこんなふうにはできない
interval '1 month' とか interval '2 month' ならできるけど
カラム名の指定は、少なくともPostgreSQL では無理
Oracleでも無理だと思うけど
392あきら:2007/04/05(木) 17:45:14 ID:jUd/uPxe
>>391
大変すみませんでした。
答えてくれて有難うございました。
393nobodyさん:2007/04/05(木) 17:46:59 ID:???
>>390
意訳しすぎ
勝手にコロンで区切られた文章を連結するなよ
素直に前から読んだら良いじゃないか

テンプレートファイル menu.tpl が読めなくなっているのだろ
1095 行目は実際にエラーを発行している場所であって、
そこに問題あるってわけじゃないぞ
何を触ったのかは知らないけど、テンプレートパス指定が
おかしくなったのか、menu.tplを消したかは知らないが
394nobodyさん:2007/04/05(木) 17:48:32 ID:???
>>392
今後Postgresの質問するなら適切な場所へ行ってね

PostgreSQL 2テーブル目
http://pc11.2ch.net/test/read.cgi/php/1047317680/l50

DB@2ch
http://pc11.2ch.net/db/
395nobodyさん:2007/04/05(木) 17:49:58 ID:???
>>393
お恥ずかしいです。
まともに動かせるように頑張ります
396nobodyさん:2007/04/05(木) 18:00:08 ID:???
>>336
その再帰手法を個別に書かないで、XMLとして処理すればいいんだよ。
<table と </table> の最長一致文字列を探したあとは、それをXML処理にゆだねればいい。
その場合おっしゃるidなどの要素内属性記述は、逆に邪魔になるからそれを消して渡す。
397338:2007/04/05(木) 18:21:18 ID:???
無視すんなや!くらぁ!(#´;ω;`)
無視されるのは大嫌いなんだ!
398nobodyさん:2007/04/05(木) 18:48:58 ID:???
>>397
質問者はID出せよ
GD入れなくてもできる
バイナリデータをいじくって、なんらかのフォーマットの
画像データを出力するスクリプトが書けるのなら
そんなのがいやらなら、GD入れるなり、ImageMagick使うなり
したらいい

バイナリデータをDBに登録するかどうかは、その案件しだい
としか言いようがない
selectで遅くなるとは普通考えられないが、これは
DBの仕様次第だろう
399379:2007/04/05(木) 18:49:27 ID:Y4vj6k1c
ここにもいるよぉ〜
ノシ
400nobodyさん:2007/04/05(木) 18:54:44 ID:???
>>399
同じサーバにあるのなら、何も悩むことなく読み込めるだろう
パスの指定は、ドメインとは関係ないのだから

テンプレートだろ?画像じゃなくて
画像であっても、シンボリックリンクでも貼れば解決するだろうけど

401nobodyさん:2007/04/05(木) 19:14:07 ID:???
コメントやユーザ情報の入力にSSLって・・・
402虚弱PHP:2007/04/05(木) 20:07:19 ID:???
>>373
PHP5なら array_walk_recursive が使えるよ。
再帰的に負う必要がないなら、array_walkでOK。
こっちはPHP4でも使える。
403虚弱PHP:2007/04/05(木) 20:12:16 ID:???
>>397
Linuxなら明示的に指定しない限り、GD付属してたとおもったけど。
Windowsならphp.iniでコメント外すだけ。
404nobodyさん:2007/04/05(木) 20:15:43 ID:???
>>401
詠嘆口調で話ししろって躾けられたのかお前?
405nobodyさん:2007/04/05(木) 21:08:26 ID:MctJVuph
すいません、テキストファイルの書込に関してなんですが。

後部に追記ならfopen(filename,"a")で簡単ですが、
先頭に追記していきたい場合はこれだと無理です?

一度中身を変数なりに入れてからfopen(filename,"w")あたりで
追加分+中身を入れないとダメ?

初心者ですいません。
406nobodyさん:2007/04/05(木) 21:13:07 ID:???
>>405
そのとおり
メモリに読み込んで先頭に追加して
書き込む
407nobodyさん:2007/04/05(木) 21:15:25 ID:???
>>404
スレ違いうざいなこいつ・・・
408nobodyさん:2007/04/05(木) 21:16:44 ID:???
SSL使うのいいけど、CAはどうするの
409nobodyさん:2007/04/05(木) 21:19:59 ID:???
勉強のために本買ったが全然わかんねーwwwwww
410405:2007/04/05(木) 21:25:43 ID:MctJVuph
>>406
サンクス。

マニュアルを読むと fopen(filename, "r+") でfpが先頭にあるみたいなので
いけるかと思ったんだが、ファイルにゴミがまざる orz

一時保存して追加するしかないのね。
411nobodyさん:2007/04/05(木) 21:30:03 ID:???
>>409
あきらめれ
412nobodyさん:2007/04/05(木) 21:53:06 ID:???
413nobodyさん:2007/04/05(木) 22:15:05 ID:???
>>412
これだけで明らかに社会不適合者に見えるこいつの異常なキモさって・・・
414379:2007/04/05(木) 22:39:38 ID:BEBjQR7Y
>>400
どうもです
なんつーか、インクルードしたいんですけど無理ですかね?
シンボリックってググッたけど意味わかんないっす。
PHPじゃなくてサーバーの専門用語っぽいことはわかったんだけど
馬鹿ですんません
415nobodyさん:2007/04/05(木) 22:40:36 ID:???
なんでincludeできないの?
416379:2007/04/05(木) 22:43:15 ID:???
なんかしらないけどできないっす
同じフォルダにないとインクルードできないっぽいっす
417nobodyさん:2007/04/05(木) 22:47:10 ID:???
>>416
バージョンは?
418379:2007/04/05(木) 22:50:11 ID:???
>>417
PHPが5.1.6でアパッチが2.0っす
419nobodyさん:2007/04/05(木) 22:51:34 ID:???
>>418
allow_url_fopenは?
420379:2007/04/05(木) 22:53:36 ID:???
わかんねっす
どこをみりゃいいっすか
421nobodyさん:2007/04/05(木) 23:00:03 ID:???
エラーメッセージ書けよ
422nobodyさん:2007/04/05(木) 23:05:54 ID:???
/home/mydomain/tpl.php
/home/secure/index.php

<?php
include('../../mydomain/tpl.php);

?>
で inlcude できるだろ
セーフモードで制限がかかっているのか?

423nobodyさん:2007/04/05(木) 23:06:51 ID:???
あ、一個上に上がりすぎた
include('../mydomain/tpl.php');

424nobodyさん:2007/04/05(木) 23:07:58 ID:???
>>420
http://php.benscom.com/manual/ja/ref.filesystem.php

一つ要望だけど普通の言葉で書いてもらえますか?
425nobodyさん:2007/04/05(木) 23:08:57 ID:1F/X4KzL
質問です。
ディレクトリに書き込み権限があるかどうか調べるにはどうしたらいいでしょうか?
426nobodyさん:2007/04/05(木) 23:24:19 ID:FIQWGizo
2007-04-05 23:20:53

こういう形式の日時から、タイムスタンプを取得したいのですが、
どうすれば良いのでしょうか?
427nobodyさん:2007/04/05(木) 23:25:20 ID:???
>>425
サーバにSSHで入ってls -allで目視確認
Apacheユーザも目視確認
428nobodyさん:2007/04/05(木) 23:26:41 ID:???
>>426
それ本気で言ってるの?
429nobodyさん:2007/04/05(木) 23:31:30 ID:???
>>425
is_writable()

>>426
strtotime("2007-04-05 23:20:53")
430nobodyさん:2007/04/05(木) 23:33:36 ID:FIQWGizo
>>429
ありが研ぐお座います
431nobodyさん:2007/04/06(金) 01:36:07 ID:7OEWd9FE
htmlタグをすべて小文字にすることはできませんでしょうか?
よろしくお願いいたします
432nobodyさん:2007/04/06(金) 01:47:04 ID:???
<ここの文字を取得>

大文字を小文字にする関数
433nobodyさん:2007/04/06(金) 03:30:56 ID:???
一文字ずつ判定して、以下を繰り返す↓

Aだったらaに変換
Bだったらbに変換・・・・

いいんですよ効率悪くても。このやりかたで不満をもって自分で効率のよいコードがかけるようになりなさいな
434nobodyさん:2007/04/06(金) 03:47:19 ID:???
大文字やら小文字やらこだわる前に
まず魅力あるコンテンツを作れるようになろうぜ
435nobodyさん:2007/04/06(金) 04:03:19 ID:???
魅力のないレスだな
436nobodyさん:2007/04/06(金) 04:05:36 ID:???
お前がな
437nobodyさん:2007/04/06(金) 04:43:10 ID:???
>>432
strtr("AbCDeF", "ABCDEFGH...", "abcdefgh..."); #=> "abcdef"
438nobodyさん:2007/04/06(金) 05:18:26 ID:???
PerlとPHPはどっちのほうが難しいですか?
439nobodyさん:2007/04/06(金) 05:27:44 ID:???
C++
440nobodyさん:2007/04/06(金) 05:45:43 ID:???
Perlに気間ってんだろ
441nobodyさん:2007/04/06(金) 05:46:01 ID:???
>>438
Perl
442nobodyさん:2007/04/06(金) 06:33:23 ID:???
>>439
氏ね
443nobodyさん:2007/04/06(金) 08:46:53 ID:???
Perlは人の書いたコードは読めない。
444nobodyさん:2007/04/06(金) 09:59:03 ID:???
perl は言語仕様を隅々まで目を通さないと、
他人の書いたコードが読めなくなるからな
445nobodyさん:2007/04/06(金) 10:16:48 ID:???
>>442
くたばれ
446nobodyさん:2007/04/06(金) 10:23:16 ID:???
>>431
$html = '<FORM>
A
<IMG SRC="./NULLPO.GIF" />
<INPUT
TYPE="CHECKBOX"
CHECKED />
A
</FORM>';
$html = preg_replace_callback('/<[^<>]+>/',create_function('$matches',
'if(strpos($matches[0],\'=\') === false) return strToLower($matches[0]);
$length = strlen($matches[0]);
$quote = false;
for($i = 0; $i < $length; $i++) {
if($matches[0][$i] === \'"\') $quote = !$quote;
elseif(!$quote) $matches[0][$i] = strToLower($matches[0][$i]);
}
return $matches[0];'),$html);
var_dump($html);

string(79) "<form>
A
<img src="./NULLPO.GIF" />
<input
type="CHECKBOX"
checked />
A
</form>"

まぁおおよそ効率の良いやり方じゃないが、な…。
即席なんで不備があるかもしれん。
447nobodyさん:2007/04/06(金) 12:30:19 ID:???
pearのAuthを使って認証しようとしてるんですが、 Class 'DB' not found in
というエラーになります; DBクラスが見つからないと言っているんでしょう
けどDB.PHPはちゃんとあるし、何故なんでしょうか?
448nobodyさん:2007/04/06(金) 12:32:35 ID:???
>>447

マルチ乙
449nobodyさん:2007/04/06(金) 12:39:44 ID:???
>>448
板間違えて書き込んだので直ぐ誤ってますよ。

昨日一日考えてたんですが、今自己解決しました。
pear DBをインストールしたらOKでした。
450nobodyさん:2007/04/06(金) 12:56:23 ID:???
配列のキーの値に、文字数制限などあるんでしょうか?
451nobodyさん:2007/04/06(金) 13:06:15 ID:???
>>447
まさかとは思うが、pear/DB.php がないってことはないだろうな
452nobodyさん:2007/04/06(金) 13:06:52 ID:???
あ、すでに自己解決していたか
453338:2007/04/06(金) 14:28:35 ID:???

class内でpreg_replace_callbackする際、
あらかじめ配列化された$this->mojiを使用することが出来ません。
こんなときどうすればいいんでしょうか?

#$this->moji= array('001'=>'<font size="1">', '002'=>'<font size="2">'…);
#$str = '!001!';だとした場合

function hoge_ForOutput($str)
{
$hoge = preg_replace_callback(
"/!(\S{4})!/",
array($this, 'conv_func'),
$str
);
return $hoge ;
}
function conv_func($str)
{
if($this->moji[$str['1']]=="")
{
return $str; }
else
{
return $this->moji[$str['1']];
}
}
}
454453:2007/04/06(金) 14:30:08 ID:2B8Av++o
ID出し忘れました
名前も間違えました。。
すみません
455nobodyさん:2007/04/06(金) 14:56:10 ID:???
>>453
\S{4}?\S{3}じゃなくて?
456453:2007/04/06(金) 15:05:58 ID:2B8Av++o
>>455
ご指摘ありがとうございます。
変数名等、実際のものと少し書き換えたのでミスしてしまいました。
この場合、\S{3}です。

ただ、問題なのは
function conv_func内で$this->mojiがNULLになってしまうことなんです。
457nobodyさん:2007/04/06(金) 15:23:40 ID:???
array(&$this, 'conv_func'),
は?
458nobodyさん:2007/04/06(金) 15:27:32 ID:???
ごめん、違うわ↑
459nobodyさん:2007/04/06(金) 15:34:16 ID:???
>>456
ならないけど…。
実際の物を書いたら?

ちなみに同じくミスっているのかもしれないけど下記はエラーになる。
if($this->moji[$str['1']]=="") // Undefined index
return $str; } // Array to string conversion
460453:2007/04/06(金) 15:45:14 ID:???
すみません。。
オブジェクト作成時
Hoge::hoge_ForOutput()
にしていたのが原因でした…

お騒がせしました
461nobodyさん:2007/04/06(金) 15:48:24 ID:???
ヽ(´ー`)ノ
462453:2007/04/06(金) 16:02:55 ID:???
m(#_ _)m
463nobodyさん:2007/04/06(金) 20:59:56 ID:pizAbRpt
allow_url_fopen = Offにしてあるレンタル鯖なのですが、
どうすれば他鯖のファイルを取得できますか?
申し訳ないですが、ご教授ください
464nobodyさん:2007/04/06(金) 21:04:21 ID:sS5tmZeq
クラス内定数をクラスを定義しているファイルの外で定義することは出来ないのでしょうか。
465nobodyさん:2007/04/06(金) 21:11:00 ID:???
>>464
まず試してみましたか?ためしてみてできなかったら質問してください
466nobodyさん:2007/04/06(金) 21:14:07 ID:???
>>463
pearのhttp_requestとか?
offでできるかは知らね
>>464
それは最早クラス内定数ではないのでは・・・。
継承すればスーパークラスの使えるのかな?
ほか変数なりdefineなりグローバル変数なりを考えてみてはどうでしょう.
467nobodyさん:2007/04/06(金) 21:54:34 ID:9fDFot8y
クラスってどんな便利性があるの?
468nobodyさん:2007/04/06(金) 22:06:44 ID:???
使いまわしできる
469nobodyさん:2007/04/06(金) 22:08:22 ID:???
>>467
オブジェクト指向を実現できる
470nobodyさん:2007/04/06(金) 22:11:53 ID:???
Pearのquickformでフォームを
作ってみたんですが、フォームの部品を

[select box] [search box] [bottun]

みたいに並べるのはどうすればいいんでしょうか?
普通にやると
[select box]
[search box]
[bottun]
みたいにレイアウトされてしまいます。
471nobodyさん:2007/04/06(金) 22:15:04 ID:???
それはHTMLとCCSの問題だと思う
472nobodyさん:2007/04/06(金) 22:15:33 ID:???
間違えたCSSね
473nobodyさん:2007/04/06(金) 22:25:28 ID:???
>>470
どういうレンダラーをつかっているのかという問題。
ttp://www.is.titech.ac.jp/~yanagis0/kei/quickform.html
とか
ttp://www.townmedia.org/tips/PEAR/HTML_QuickForm.html
を見ながらどうすべきかを考えるべし。

>>471,472
全然、無関係。
474470:2007/04/06(金) 22:31:06 ID:???
>>473
リンク先参考になりました。
どうもありがとうございます。
475nobodyさん:2007/04/06(金) 22:39:22 ID:9fDFot8y
>>468
じゃあfunctionでよくね?

>>469
とは?
476nobodyさん:2007/04/06(金) 22:42:22 ID:???
>>475
とはとは?
477nobodyさん:2007/04/06(金) 22:43:53 ID:9fDFot8y
>>476
とはとはとは?
478nobodyさん:2007/04/06(金) 23:05:29 ID:???
>>475
関数とは全然違う。クラスは型だ。
479nobodyさん:2007/04/06(金) 23:58:48 ID:51+hyhMJ
preg_match('/^(string)?;(string)?;(string)?$/', ';string;', $matches);

でマッチさせると、$matches[1]には空文字列が入ってくれるのに$matches[3]には値がセットされません。
この挙動は変ではありませんか?
480 ◆SQL.mUThc. :2007/04/07(土) 00:10:22 ID:vJbH2RhG
セッションについて質問です
まずwildcard.phpでセッションを開始し、GETのyouridにセッションidを渡します
このような形になります ⇒ hoge.php?yourid=hogehogehoge3333
そしてGETで受け取ったyouridの値を、hoge.php側で確認できる$_SESSIONのセッションidと一致したかどうかでユーザー認証をしています

そこで質問ですが、
このセッションidがリファラーなどで外部に漏れて第三者に渡り、その第三者がこのアドレスにアクセスしたとしても
その第三者がアクセスするときはセッションIDが違うので、認証ができないことを確認したのですが
この方式でユーザーの認証をするのはセキュリティ的にみて問題はありますでしょうか?
セッションを扱うのは今回がはじめてで無知なことは承知しています
詳しい方よろしくお願いします
481nobodyさん:2007/04/07(土) 00:22:19 ID:???
>>480
そのセッション情報をどこに保存するかで変わると思う
cockieなら、悪意がある人間がたまたま情報を手に入れる
ことができたのなら、認証を突破できるだろう
482nobodyさん:2007/04/07(土) 00:34:35 ID:???
>>480
セッションIDをパラメタに埋め込む必要はあるのかな?
勘違いかも試練がデフォルトクッキーが使えるならクッキー
にセッションIDを持たせるんじゃなかったっけ?

ただ何があろうともSSLは必須
483 ◆SQL.mUThc. :2007/04/07(土) 00:48:33 ID:vJbH2RhG
わかりました
やはり当方セッションについて勉強不足のようです
もう少し勉強しないと危険なスクリプトになりそうです
どうもクッキーがポイントみたいですね 出直してきます
ご意見ありがとうございます
484nobodyさん:2007/04/07(土) 00:50:27 ID:???
>>480
ここに書いてあるぐらいの事は最低でも全部やっといたほうが無難。
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session
485nobodyさん:2007/04/07(土) 01:31:50 ID:zMY0muXp
掲示板などいろいろ作ってます。
文字コードは今までいろいろ試しました。SJIS,EUC,UTF8
一長一短あると思いますが、何が一番いいでしょうか?
486nobodyさん:2007/04/07(土) 01:38:49 ID:???
>>485
まぁ、もうUTF-8だろうな〜
RedHatもデフォルトUTF-8になったし。

SJISは論外
487nobodyさん:2007/04/07(土) 01:40:41 ID:???
UTF8以外はありえんから
488nobodyさん:2007/04/07(土) 01:41:13 ID:???
>>485

クロスブラウザを考慮しつつ、手間がかからない方向で考えると
スキルあるならSJIS。携帯でも見れるし。
スキル無いなら、EUCが無難ってとこじゃね?

古いOSのブラウザをバッサリ捨てるならUTF8。
489nobodyさん:2007/04/07(土) 01:42:55 ID:???
あらかじめ言っておくけどBOM調べとけよ
490nobodyさん:2007/04/07(土) 01:53:48 ID:???
Web2.0関連(笑)でUTF-8以外使うとトラブルの元。
491nobodyさん:2007/04/07(土) 01:55:00 ID:???
無印Win98だってUTF8無問題で読めるのに・・・
492nobodyさん:2007/04/07(土) 01:57:49 ID:???
>>491
出版社関係お得意のMac OS9のIEだとUTF8ダメだねw
493nobodyさん:2007/04/07(土) 02:03:31 ID:???
それは知ってるけどさー、MACIEに対応するために他の全てを犠牲にするのはナンセンスじゃん
せっかくうざい文字コード問題がUTF8統一で解決しかかってるのに、ノイジーマイノリティのために
全体の足を引っ張るのは論外じゃね? 全体の1%もない連中が騒ぎすぎなんだよ・・・
494nobodyさん:2007/04/07(土) 02:20:39 ID:???
>>493
足引っ張るとかじゃないんじゃね?
サイト構築者が、一人でも多くのお客さんに見てもらいたいと
イヤラしく考えるかどうかだけでしょw

俺個人の話をすると、某マイナーゲームのサイトを
立ち上げたんだけど、まぁぶっちゃけ、既に有名サイトがあって
その二番煎じだったんだよね。ただ、その某有名サイトは
UTF8でCMS的な作りだったんだけど、俺はEUCで構築して
携帯用にはSJISで吐き出せるようにした。某雑誌がその
ゲームを取り上げる際に、紹介サイトとして、俺のサイトを
掲載したいとメールを送ってきた。本家的な某大御所サイトが
あるのに、何故俺のサイトなんだろう?と今でも分からないけど
多分、雑誌社の編集部はMac OS9で、俺のサイトをチェック
しやすかったんだろうと、俺は睨んでるw
495nobodyさん:2007/04/07(土) 02:51:44 ID:???
どんどん痛々しい展開になってきたのでこの辺で終了。
496nobodyさん:2007/04/07(土) 04:45:19 ID:???
みんな知ってるサイト紹介しても意味ないからな
497nobodyさん:2007/04/07(土) 06:09:42 ID:???
宣伝乙厨発生警報
498nobodyさん:2007/04/07(土) 07:19:36 ID:???
マカーって数は少ないくせに声だけはやたら大きい
499nobodyさん:2007/04/07(土) 10:01:39 ID:vZgv1pNd
php5にimapをインストールしたいんですがなかなか出来なくて困ってます
今のところは以下の手順でやってます

cd imap-2006f
make lrh
cp -p c-client/rfc822.h c-client/mail.h c-client/linkage.h /usr/include/
cp -p c-client/c-client.a /usr/lib/
これで
php-5.2.1
./configure --with-imap=/usr/local
とすると
utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen.
ってエラーで止まっちゃって
config.log見ると

configure: failed program was:
#line 45958 "configure"
#include "confdefs.h"

#include <c-client.h>

int main() {

int i = U8T_CANONICAL;

; return 0; }
500nobodyさん:2007/04/07(土) 10:23:25 ID:???
>>499
使ってないので良く知らんけど
なんで、聞く前に
U8T_CANONICAL is missing PHP
ぐらでぐぐらないのか?一発で原因がわかるんだけど。
501nobodyさん:2007/04/07(土) 10:43:33 ID:???
SNSみたいなソフトを作ろうと思ったら
やっぱり独自にフレームワークを構築するのかな?
どんな感じで作ってるのかすげー気になる。
502nobodyさん:2007/04/07(土) 10:45:39 ID:???
SNSなんか簡単に作れる
作る気にはなんねーけど
503nobodyさん:2007/04/07(土) 10:48:05 ID:???
>>501
GREEやってることを見ればいいんじゃない?
あそこは本人のEthna発展系でフレームワーク作ってるから。
504nobodyさん:2007/04/07(土) 10:50:04 ID:???
SNS作るためにフレームワークが必要,ってなんかおかしくね?
505nobodyさん:2007/04/07(土) 10:55:57 ID:???
商売で持続的に展開するには必要でしょ。
SNSそれ自体は結局は単なるブログと掲示板の集積だから「簡単」に作れるにしても、
商売に必要な多機能付加、メンテナンス考えれば、きちっとしたフレームワークがなきゃね。
506nobodyさん:2007/04/07(土) 11:23:40 ID:???
メンテナンス性を考えるのならそれを見越した書きかたをすれば良いだけ
SNSなんて既存のフレームワークで充分だろ
507nobodyさん:2007/04/07(土) 11:38:26 ID:36/fFnrN
mixiってなんの言語でつくってんの?
508nobodyさん:2007/04/07(土) 11:50:23 ID:???
Perlらしい
509nobodyさん:2007/04/07(土) 12:10:36 ID:JPCg3GgQ
フレームワークって何?
510nobodyさん:2007/04/07(土) 12:40:12 ID:???
開発枠組み
511nobodyさん:2007/04/07(土) 13:09:47 ID:JPCg3GgQ
ってことは俺はじゃあ俺はWAMPか
512nobodyさん:2007/04/07(土) 13:18:06 ID:???
WAMPとかLAMPとかは、開発(一般)環境だな。
フレームワークって言った場合は、ソフトウエアのためのソフトウエア統合環境のことだ。
513nobodyさん:2007/04/07(土) 13:23:52 ID:JPCg3GgQ
WAMP+Dreamweaverで開発している俺は独自環境・・・?
514nobodyさん:2007/04/07(土) 13:24:34 ID:???
Dreamweaver(笑)
515479:2007/04/07(土) 13:43:50 ID:qxhDTSD1
回答がないようですので、PHP-usersのメーリングリストで聞きます。
失礼しました。
516nobodyさん:2007/04/07(土) 13:44:49 ID:???
最初からそうすればいい
517nobodyさん:2007/04/07(土) 13:56:34 ID:???
マニュアルも読まないで、挙動が変だとか言う奴になにを「回答」しろというのだよ。
518nobodyさん:2007/04/07(土) 14:02:21 ID:S7Rnm2Ut
ファイルロックしたまま開放せずにexitしちゃったらどうなるの?
519nobodyさん:2007/04/07(土) 14:03:37 ID:???
どうもしないよ
520501:2007/04/07(土) 14:07:31 ID:???
>>503
thx 参考になります。

SNSというよりWebアプリと言うべきだったorz
最近phpをはじめてCMSなどをいじりはじめたので
>>505さんの言われている様なことが気になっていたんです。

で自分で話し振っといて悪いがフレームワークが何なのかわからなくなったw
しかもなぜ>>501の質問に至ったのかさえ忘れてしまったw
ほんと俺ってバカだなwwwwwwwww
521nobodyさん:2007/04/07(土) 14:09:30 ID:???
>>518
まずは、マニュアルを読め

http://jp.php.net/manual/ja/function.flock.php
522nobodyさん:2007/04/07(土) 14:16:46 ID:S7Rnm2Ut
>519 >521
さんくす
すまん読んだつもりが見逃してた
523nobodyさん:2007/04/07(土) 14:40:08 ID:???
>>520
とりあえずなんでもいいからフレームワークダウンロードして
ちょっと弄ってみたらわかるとおもう

言葉で説明しても分かってる人にしか分からん説明になりそうだ
524nobodyさん:2007/04/07(土) 15:14:17 ID:???
>>513
仲間^^
525nobodyさん:2007/04/07(土) 17:02:20 ID:???
$hoge[var]と$hoge['var']って違うの?
なんか違う結果が出るんですけど・・・。

あと
$hoge = array( var => 'test' );

$hoge = array( 'var' => 'test' );
って違うんでしょうか?
526nobodyさん:2007/04/07(土) 17:03:41 ID:???
     _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      | ( ゚Д゚)  <あのね、先生もそんなにヒマじゃないの。
      |(ノ  |)
      |    |
      ヽ _ノ
       U"U
527nobodyさん:2007/04/07(土) 17:13:48 ID:???
せめてマニュアル読んで質問しろよ・・・常識的に考えて・・・
528nobodyさん:2007/04/07(土) 17:33:22 ID:???
というか、言ってること不明だなw
529nobodyさん:2007/04/07(土) 17:48:09 ID:???
test.phpをincludeのみで使いたいんだが、
直リンクできないようにする方法とかない?
530nobodyさん:2007/04/07(土) 17:52:13 ID:???
>>529
__FILE__ と $_SERVER['SCRIPT_FILENAME'] を比較することで
直アクセスか、includeされてるかの判別ができるからそれでどうにかしろ
531nobodyさん:2007/04/07(土) 18:05:51 ID:???
>>529

1.普通は、include先ファイルはWebディレクトリ外に置く。これが基本。

2.中に無きゃいけないっていうなら、include元の(たとえば)index.php冒頭に
define('MYFILE',true);
とか書いておいて、includeされるファイル冒頭に
if(!defined("MYFILE") || MYFILE != true) {
  die('');
}
みたいなことやる。

3.2.でアクセスされるのも厭なら、apacheのrewrite_modつかって
RewriteEngine on
RewriteRule (アクセス許可ファイルじゃなきゃ) (アクセス不可)
とかで処理。
532nobodyさん:2007/04/07(土) 18:18:21 ID:???
include だけなら拡張子変えれば?
533nobodyさん:2007/04/07(土) 18:21:53 ID:???
httpdのmimetype関係ディレクティブを弄らないと普通は
テキストファイルとして見えちゃうことが多いから駄目でしょ。
534nobodyさん:2007/04/07(土) 18:21:54 ID:???
webサーバ側で対象のファイルやディレクトリに
アクセスできなくすればいいapacheなら.htaccessとかでdenyに
webからアクセスできなくてもphpからなら権限さえあればincludeできる
535nobodyさん:2007/04/07(土) 18:23:58 ID:???
htaccessってあんまりおすすめしたくないな
536nobodyさん:2007/04/07(土) 18:25:35 ID:???
webサーバー側設定に依存するのは事故拡散するからね。
>>531あるいは>>531の2のようなこととかをPHP内部でしておくのが大切。
537nobodyさん:2007/04/07(土) 18:26:26 ID:???
おっと誤記
×>>531あるいは
>>530あるいは
538nobodyさん:2007/04/07(土) 18:47:11 ID:???
俺もLAMP環境を中心に色んな案件やってきたが、>>530-531の方法を推奨する

何か実現したい事があった時に、色んな設定(コーディング)等をする必要があるのは高度だ。
不具合があった時に問題切り分けなど時間かかって経費かかるし、
速度面や再利用性など重視で問題がなければ、言語内で完結したほうがいい。
539nobodyさん:2007/04/07(土) 18:55:31 ID:???
>>502
おまえさんがほんとに簡単に作れるなら作った方が良いよ。
儲け時だから^^
540nobodyさん:2007/04/07(土) 18:57:09 ID:???
儲けられなかったら補償してくれんの?
541nobodyさん:2007/04/07(土) 19:40:16 ID:???
SNSなんて運用が重要でただ作っただけじゃ全く儲からないよ
542nobodyさん:2007/04/07(土) 20:06:11 ID:???
今さらSNSで有料コンテンツなんて流行らないだろうし、収益モデル次第だよな
543nobodyさん:2007/04/07(土) 20:27:29 ID:???
なんかどっかで戻り値が想定できない?ような設計はだめだ
みたいのを読んだ気がするんだけど、
functionの戻り値がOKなら配列(array)だめならfalse(bool)
みたいに違う型を送るのは、設計的にあまりよくないのですか?

戻り値が想定できないじゃなくて、文字列か配列特定できないどっちかが返ってしまうとかだったかも・・・。
544nobodyさん:2007/04/07(土) 20:56:32 ID:???
>>543
その関数を使うPG視点で分かりやすく使いやすいのが良い関数。

>戻り値が想定できない?ような設計はだめだ
「戻り値が想定できないような関数名はだめだ」なら良く聞くけど。
545nobodyさん:2007/04/07(土) 22:01:57 ID:???
>>543
PHPの標準関数はそういう戻り値(array or bool)が多いけど
正直言って使いにくいとはよく思う。
慣れたんで困らなくはないけど。
ただ、これは作法の話であって設計がダメとかいうのとは違う。
元の話を思い出したらまた来な。
546nobodyさん:2007/04/07(土) 22:11:55 ID:???
じゃあどういうのが使いやすいんだ?
547nobodyさん:2007/04/07(土) 22:36:32 ID:???
もういちいち「?」で人の質問流れの中で無内容な反問レスを書く人は、居なくなってくれないかな。
ほとんど同一人物だろこれ。
548nobodyさん:2007/04/07(土) 22:37:42 ID:???
じゃあどういうのが使いやすいのかな
549nobodyさん:2007/04/07(土) 22:45:55 ID:???
ドウデモイイ
550nobodyさん:2007/04/07(土) 22:59:53 ID:???
>>544,545
レスdクス。
特に悪い設計と言うわけじゃないんですね。
551nobodyさん:2007/04/07(土) 23:01:15 ID:???
>>547
PHPに興味はあるんだけど頭が悪くて質問に答えるどころか、
疑問も浮かんでこないのに、なにかスレで言いたくてたまらない
可哀想なやつだと思ってにこにこして読んであげてるよ、おれw
552nobodyさん:2007/04/07(土) 23:01:46 ID:K6TrX8TC
へたれな質問ですいませんが、

$fp = fopen(filename, "r");
while(!feof($fp))
{
$str = fgets($fp, 4096);
$str = rtrim($str); // 改行除去
echo "$str<br>";
}
fclose($fp);

ファイルの中身
------------------
ああ
いい
うう
EOF
------------------
単純にファイルの中身を表示しているだけだが、ファイルの末端を改行すると
その行も処理されちゃうのはなんで?
EOFで最後の行は無視されるかと思うんだけど…
(if (!$str){ continue; } でうまくいけるけど)
553nobodyさん:2007/04/07(土) 23:15:51 ID:???
[EOF]も、l文字列の終端をあらわす制御コードだからです。
null[EOF]
null[改行]
はrtrimから見れば一緒です。
554nobodyさん:2007/04/07(土) 23:16:58 ID:???
>>545=>>547
批判だけなら楽でいいよな。(w
555nobodyさん:2007/04/07(土) 23:19:30 ID:???
シランガナ
556nobodyさん:2007/04/07(土) 23:20:53 ID:???
>>552
単純にeofに達する判断が読み出した後だからとしか
期待する動作を望むならfgetsの戻り値でやるとか

$fp = fopen(filename, "r");
while($str = fgets($fp))
{
$str = rtrim($str);
echo "$str<br>";
}
fclose($fp);
557nobodyさん:2007/04/08(日) 03:33:53 ID:evw5P74I
ファイルの改行の数数えるのってこれでいい?
substr_count ( file_get_contents($file), "\n" );

今までは
count(file($path));
でやってたけど上のほうが1.5倍速かった
ファイルはShift_JISで日本語入ってるけど平気かな
558nobodyさん:2007/04/08(日) 04:30:38 ID:???
>>557
sjisの下位バイトは制御コード使ってないので大丈夫。
間違ってるのは後者。改行コードが0個でも1と返る。
559nobodyさん:2007/04/08(日) 09:24:41 ID:iJakkiFr
質問です。
たとえば、ライブハウスのライブ情報を登録する機能があるとして、
各日にちごとに出演者情報を登録する際に、出演者数が毎日マチマチで
ある場合、SQLに送信する出演者IDの数もマチマチになるわけですけど、
そうすると、単純に考えたら保存するフィールドが複数必要になります。
でも、そんな不安定なことするわけにいかないので、特定のフィールド”players”に
カンマ区切りで追加上書きしていくのが正解なのかなぁと思ったんですが、
こういう発想でいいんでしょうか?
なんだかphpの質問かSQLの質問かわからないですが、アプリ制作の
いろはとして質問させてもらいました。OKですか?
560nobodyさん:2007/04/08(日) 09:40:33 ID:???
>>559
DBの正規化の考え方からすれば、その「不安定なこと」も「特定フィールド
カンマ区切り」もいずれも外れてる。
ライブイベント情報に即して、出演者「行」を増やしていく(第一正規化)。
ライブイベント情報をキーにして出演者 tableを別途作り、またIDキーなどで
整序していく(第二正規化以降)のが普通。
561nobodyさん:2007/04/08(日) 10:06:38 ID:???
>>560
なるほどー、ありがとうございます
正規化について調べてみます!
562nobodyさん:2007/04/08(日) 10:48:24 ID:evw5P74I
>>558
さんくす
問題ないのね というか後者は間違ってたのか 助かりました
563nobodyさん:2007/04/08(日) 11:42:42 ID:???
複数のデータをどう入れるかって問題はDB初心者のころは誰しも通る道だよね
大抵カラムをその数だけ増やすかカンマ区切りで入れちゃうんだけど
564nobodyさん:2007/04/08(日) 11:44:15 ID:???
んでカンマ区切りにLIKE検索かけたりね
565nobodyさん:2007/04/08(日) 11:49:33 ID:???
まあベタな補助情報ならそれでいいんだけど(たとえばドリンク付きカラムのコーラ、ジュース、ビール
みたいなもん)、出演者情報は、どう考えてもライブ情報なら最初から正規化対象だろうから
いい勉強の機会ということで。
566nobodyさん:2007/04/08(日) 12:48:00 ID:+aqEfY9a
環境: Windows XP, Apache 2.2.4, PHP 4.4.6

$path = '/diary/2007/';
$dir = opendir($_SERVER['DOCUMENT_ROOT'].$path);

while($file = readdir($dir)) {
  if(ereg(".php$", $file)) {
    $file = ereg_replace('.php', '', $file);
    echo('<a href="/diary/2007/'.$file.'">'.$file.'</a>'."\n");
  }
}
closedir($dir);

このようにファイル名を取得してリストを作っています。
ディレクトリ 2007 の中には 01.php, 02.php, 03.php, 04.php のファイルがあり
また、上記の方法ではこの順に表示されます。
ディレクトリの中の最後のファイル名のみを取得したい場合は
(上記の例では 04.php が "最後のファイル名" に相当します)
どのように書けば良いのでしょうか。よろしくお願いします。
567nobodyさん:2007/04/08(日) 13:13:00 ID:???
ループの中を
$aF[] = ereg_replace('.php', '', $file);
として
最後に
$hosii_file_mei = array_pop($aF);
じゃだめなのかい?
568nobodyさん:2007/04/08(日) 13:23:08 ID:Q73wCY81
質問です。
PHPでBBSを作りました。
案の定荒らしが書き込まれています。
そこでプロキシ経由での書き込みを禁止したいのですが、その書き込みがプロキシ経由かどうかを知るためにはどうすればよいのでしょうか?
よろしくお願いします。
569nobodyさん:2007/04/08(日) 13:24:18 ID:???
>>568
とりあえず>>119以降の関係レスを読め
570nobodyさん:2007/04/08(日) 13:28:26 ID:???
>>568
ハッキリ言えば全て防ぐのは無理。


楽な方法としてはBBQつかってみるとか
571568:2007/04/08(日) 13:29:08 ID:Q73wCY81
>>569
ありがとうございます。
getHostByAddr($_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR'] )
で真にならなければプロキシ経由になるんですね。
知りませんでした。さっそく導入してみます。
572nobodyさん:2007/04/08(日) 13:30:42 ID:???
ちょっと前までProxyとわかるためにすごく複雑なプログラム組んでたが、
こんなに簡単にわかるのか・・・
573569:2007/04/08(日) 13:31:55 ID:???
>>571
「経由」かもしれない、っていう程度だし、負荷がかかるし、あんまり自分は好きな方法じゃない。
とりあえずそこらへんからはじめて見たらってな程度。
自分がやるなら>>570の方面でやるだろうな。
574nobodyさん:2007/04/08(日) 13:38:40 ID:???
Smartyって何だ?
フレームワーク?
それともソフト?
575nobodyさん:2007/04/08(日) 13:38:59 ID:???
>>566
$index = glob($_SERVER['DOCUMENT_ROOT'].'/diary/2007/*.php');
とかやってcount()とかarray_pop()とかarray_slice()とかかなぁ。
576nobodyさん:2007/04/08(日) 13:40:19 ID:???
>>574
検索もできないの?
577568:2007/04/08(日) 13:43:30 ID:Q73wCY81
さっそくBBQについて調べてみました。
http://bbq.uso800.net/code.html
に組み込み方法として
sub checkProxyList
{
my $RADDR = $ENV{'REMOTE_ADDR'} ;

$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.niku.2ch.net";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr eq '127.0.0.2')
{
DispError("ERROR!","公開PROXYからの投稿は受け付けていません!!(1)");
}
return 0 ;
}

が載っていましたが、これってPHPではないですよね?
PHPでのBBQの導入はどうすればよいのでしょうか?
578nobodyさん:2007/04/08(日) 13:43:56 ID:???
>>576
いや、ググって調べたんだが自分の考えが合っているかどうかわかんないので

よく使う関数集みたいな感じで集めたものでいいの?
「アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。」
579nobodyさん:2007/04/08(日) 13:44:54 ID:???
>>575
glob関数は、パターンマッチでファイル名を確保するから、
それ使うと、>>566の要件(おそらくファイルシステム上のファイル順での取得)には合わないでしょ。
580nobodyさん:2007/04/08(日) 13:49:52 ID:???
>>577
それくらい勉強しなさい。
perl知らなくても、その程度のコード見れば移植は簡単でしょ。
それにもう少しぐぐれば、PHPでのそのBBQ対応スクリプト見つかるし。
脊髄反射で聞くのはやめようぜ。
581nobodyさん:2007/04/08(日) 13:50:49 ID:???
>>577
その程度のPerlスクリプトならPHPの知識があれば十分読めるだろ

>>578
テンプレートエンジン
582nobodyさん:2007/04/08(日) 13:51:47 ID:???
include()
include_once()
require()
require_once()
この違いがわかんね
583nobodyさん:2007/04/08(日) 13:53:29 ID:???
>>579
GLOB_NOSORTフラグを立てれば、というか数字二桁限定では関係ないんでは。
584nobodyさん:2007/04/08(日) 13:54:36 ID:???
>>582
マニュアル嫁
585nobodyさん:2007/04/08(日) 13:55:58 ID:???
「マニュアル嫁」っていうやつは
どの辺り読むかURL出してやったほうがいいと思うぞ
ただでさえ読みづらいマニュアルなんだ
586nobodyさん:2007/04/08(日) 13:58:58 ID:???
いつもの奴かw

>>583
ああ、そうだね。それだとOKか。
587568:2007/04/08(日) 14:01:34 ID:Q73wCY81
ありがとうございました。どうやらBBQいけたみたいです。
588nobodyさん:2007/04/08(日) 14:07:27 ID:???
>>582
http://jp.php.net/manual/ja/function.include.php
http://jp.php.net/manual/ja/function.require.php
http://jp.php.net/manual/ja/function.include-once.php
http://jp.php.net/manual/ja/function.require-once.php

これでいいのか?
Webなんかで見るから見辛いんだろ?
CHMでダウンロードして再コンパイルすれば文字化けも消えて便利だぞ?
589nobodyさん:2007/04/08(日) 14:08:22 ID:???
>CHMでダウンロードして再コンパイルすれば文字化けも消えて便利だぞ?
ちょwwww詳しく!!!!
590nobodyさん:2007/04/08(日) 14:08:57 ID:???
相手にスンナってのに
591nobodyさん:2007/04/08(日) 14:17:07 ID:???
>「マニュアル嫁」っていうやつは 
>どの辺り読むかURL出してやったほうがいいと思うぞ 

関数なんて関数名でぐぐれば出てくるしPHPサイとの検索機能使ってもでてくるし
関数リファレンスって章があるんだし
自分で探せない奴は頭おかしいと思うぞ。
592566:2007/04/08(日) 14:21:53 ID:+aqEfY9a
>>567, >>575, >>579, >>583
ありがとうございました。最近のファイルを取得したかったので、
>>567 の方法を採らせていただきました。ありがとうございます。
593nobodyさん:2007/04/08(日) 14:25:12 ID:???
>>592

>>567だけど、>>579のglob使うほうがスマートだよ。

$index = glob($_SERVER['DOCUMENT_ROOT'].'/diary/2007/*.php',GLOB_NOSORT);
echo array_pop($index);
の二行で終わる。
594nobodyさん:2007/04/08(日) 14:27:02 ID:???
>ただでさえ読みづらいマニュアルなん

PHPほど親切で分かりやすいマニュアルはないだろマジで・・・
595nobodyさん:2007/04/08(日) 14:29:00 ID:???
確かにPHPの関数名でググるとPHPマニュアルが見つかる。
ザクザク見つかる。
というかそれしか出てこない。
PHPマニュアルのミラーがなんであんなにあるのか不思議だ。
置くなとは言わないが、せめて検索エンジンはじいてくれよ。。。
596nobodyさん:2007/04/08(日) 14:29:21 ID:???
公式落ちてる時に役立つじゃn
597nobodyさん:2007/04/08(日) 14:41:36 ID:???
公式が落ちたときのためのミラーがそんなにいくつも要りますか。
ググった時の上位10件がPHPマニュアルとそのミラーなんて酷すぎるぜ。

あと、PHPマニュアルは階層構造になっているのが逆に使いづらいというか。
目次をクリックしたらまた目次だったときは一瞬迷う。
598nobodyさん:2007/04/08(日) 14:43:03 ID:???
だからCHM使えと何度言ったら
599nobodyさん:2007/04/08(日) 14:45:07 ID:???
>>597
沢山あって分かりにくいからミラー作らないで下さい/Googleは規制してくださいってか?
情報の選別くらい自分でしようぜ
600nobodyさん:2007/04/08(日) 14:51:11 ID:???
いや、でも分かる
俺も検索しててウザーって思う
なんでみんなあんなにミラー作りたがるんだ?
601nobodyさん:2007/04/08(日) 15:20:38 ID:???
つーか関数調べるだけならGoogle使うより http://php.net/関数名 の方が断然早いわな
602nobodyさん:2007/04/08(日) 15:25:46 ID:???
作りたがるっていうか、apacheの設定で勝手に拾われてるんじゃないの?
603nobodyさん:2007/04/08(日) 15:29:18 ID:???
>>601
アドレス欄に php.net/hogehoge でいける
604nobodyさん:2007/04/08(日) 15:40:28 ID:???
ブラウザで設定しとけば、もっと早くなりますな
605nobodyさん:2007/04/08(日) 15:43:51 ID:???
望んでる動作をする関数を見つけたいときはどうするんだぜ?
606566:2007/04/08(日) 15:48:22 ID:???
>>593
早速書き換えました。重ね重ねありがとうございます。
607nobodyさん:2007/04/08(日) 15:49:57 ID:???
>>605
望んでる動作で検索すれば?
608nobodyさん:2007/04/08(日) 15:50:40 ID:???
>>605
・ぐぐる。
・目的別リファレンスがある書籍を買う。
・日頃からマニュアルを眺めて関数の機能を把握しておく。
609nobodyさん:2007/04/08(日) 15:51:17 ID:???
文字列関数ならphp.net/string、配列関数ならphp.net/array、よくわからんかったらphp.net/funcrefから探したりとか
610609:2007/04/08(日) 15:52:19 ID:???
stringじゃなくてstringsだった
611nobodyさん:2007/04/08(日) 16:09:15 ID:???
phpマニュアルのミラーに広告載せてるやつは何なの?
612nobodyさん:2007/04/08(日) 16:34:10 ID:???
お前みたいなカモを待ってるんだろ。

公式ブックマークしとけばそんなサイト気にならないよ。
613nobodyさん:2007/04/08(日) 16:46:06 ID:???
自分の鯖にマヌアルうpるやつってなんなの?
自分らしさの表現なの?
どうせなら本家ミラーのjp*.php.netにすればいいのに
614nobodyさん:2007/04/08(日) 16:52:55 ID:???
ミラーサイト=SEO
615nobodyさん:2007/04/08(日) 17:05:27 ID:???
しかもろくに更新しないから内容の古いことw
616nobodyさん:2007/04/08(日) 17:33:21 ID:???
ミラーサイトは公認制にするべき。
ミラーサイト側に苦情を入れようと思ってる。
617nobodyさん:2007/04/08(日) 17:47:25 ID:???
本家とかjp.php.netとかPHPユーザ会(これは論外に遅い)の
サーバーの挙動が遅いってのもあるよな。そこらへんは使う気になれない。
618nobodyさん:2007/04/08(日) 17:52:51 ID:???

以上、アンチミラーサイト側

それについてミラーサイト作者の反論
619nobodyさん:2007/04/08(日) 18:06:37 ID:???
いやなら公式見てればいいじゃないですか
620617:2007/04/08(日) 18:13:53 ID:???
俺はこっち側
621nobodyさん:2007/04/08(日) 18:18:01 ID:???
>>619
マニュアルのミラーが検索結果を汚染しているって話だったのだが
622nobodyさん:2007/04/08(日) 18:33:07 ID:???
Webに転がってるミラーうざい⇒自分専用のミラー作っちゃえ
623nobodyさん:2007/04/08(日) 18:34:56 ID:???
マニュアルしか出てこないってこたないでしょ
例えばどの関数でぐぐるとそうなる?
624nobodyさん:2007/04/08(日) 19:09:56 ID:???
625nobodyさん:2007/04/08(日) 19:11:08 ID:???
マニュアルが上位に引っかかって有効な情報がえられない
むしろミラーサイトなんて複数もいらねえよ
626nobodyさん:2007/04/08(日) 19:12:27 ID:???
むしろというか、その話をしているんだけどね^^;
627nobodyさん:2007/04/08(日) 20:35:55 ID:???
preg_matchで4桁の数値にマッチさせるには
/^\d{4}$/
でいけましたが、
4桁〜8桁の文字にマッチさせるにはどうすれば良いのでしょうか?
/^\d{4-8}$/
にしてみましたがダメでした
628nobodyさん:2007/04/08(日) 20:41:18 ID:???
マニュアルをミラーすると:
・ウェブサイトの知名度やページランクが上がる可能性がある。
・広告をつければ何もせずにお金がじゃんじゃか、ああおいしい。
・なんとなくいいことした気分になる。
629nobodyさん:2007/04/08(日) 20:42:42 ID:???
>>627
/^\d{4,8}$/

マニュアル読もうな
630nobodyさん:2007/04/08(日) 20:42:48 ID:???
>>627

/^\d{4,8}$/
631nobodyさん:2007/04/08(日) 20:44:22 ID:???
632nobodyさん:2007/04/08(日) 20:50:55 ID:???
公式のみ指定でぐぐればいいんじゃ?
633nobodyさん:2007/04/08(日) 20:59:02 ID:???
それじゃあ公式しか調べられないじゃん。
634nobodyさん:2007/04/08(日) 20:59:54 ID:???
もうどうでもいいから、そろそろやめようか
635nobodyさん:2007/04/08(日) 21:04:49 ID:???
関数のTipsとか面白い使い方とかを調べたくてぐぐっても
マニュアルばっかりだとやる気なくすよってことでは?

-マニュアルとか-manualを付けるって手もあるけど
たまたまそれらの語句を含んでいた有益なページまで除外してしまうかもしれんし
636nobodyさん:2007/04/08(日) 21:10:11 ID:???
そこでオントロジ検索ですよ
637nobodyさん:2007/04/08(日) 21:21:57 ID:???
公式マニュアルとUser Contributed Notes以外に有益な情報なんてほとんど皆無。
例外的に有益な情報はちゃんと上位に出てくる。
このスレのレベルは公式嫁だからもういいじゃん。
638nobodyさん:2007/04/08(日) 21:23:58 ID:???
SELEFT * FROM account
      ↓
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELEFT * FROM account' at line 1


これってaccountってテーブルがないってことでいいんだよな?
639nobodyさん:2007/04/08(日) 21:25:42 ID:???
なんという構文エラー・・・これは間違いなく(ry
640nobodyさん:2007/04/08(日) 21:26:29 ID:???
seleFtになってんぞ。
641nobodyさん:2007/04/08(日) 21:26:32 ID:???
これは間違いなくSELEFT構文
642nobodyさん:2007/04/08(日) 21:28:28 ID:???
インド人を右に
SEを左に
643nobodyさん:2007/04/08(日) 21:29:09 ID:???
糞ワロタwwwwwwwwwwww
644nobodyさん:2007/04/08(日) 22:22:06 ID:OS1trKFT
複数のIPから連続して国判別する方法を探しています。
APIやPEAE等ありましたら情報頂けると嬉しいです。


現在は下記PEARで四苦八苦しています。

下記 Net_GeoIP という pearパッケージをインストールしたのですが、エラーが出ます。
ttp://www.go-pear.org/manual/ja/package.networking.net-geoip.php

pearインストールコマンド
pear install -f Net_GeoIP
でbetaのバージョンを入れています。

ttp://www.maxmind.com/app/geoip_country
からBinary Formatの「GeoIP.dat.gz」をダウンロードした物を、解凍して置いてあります。

ttp://www.go-pear.org/manual/ja/package.networking.net-geoip.lookupcountrycode.php
のサンプルソースを実行すると。

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /usr/share/php4-pear/Net/GeoIP.php on line 128
とpear内でのエラーが出ます。

どのように対処したらいいのでしょうか。
645nobodyさん:2007/04/08(日) 22:36:39 ID:???
>>644みたいなバカは久しぶりに見た
646nobodyさん:2007/04/08(日) 22:44:17 ID:zw0Bo/cU
質問です。>>644の質問はPHPと何の関係があるんですか?
647釣りかも...:2007/04/08(日) 22:45:14 ID:???
>>638
> check the manual (マニュアル嫁、バカ)
648nobodyさん:2007/04/08(日) 22:46:15 ID:???
>>646
The PHP Extension and Application Repository

プログラミング言語PHP用のライブラリ集。色々な拡張モジュールやアプリケーションがPEARに登録されており、ネットワーク経由で取得・利用することができる。PerlでいうCPANにあたる。

「ぴあー」だと思われていたが最近「ぺあー」だと判明
649nobodyさん:2007/04/08(日) 22:48:29 ID:???
PEARって俺パールって読んでたよwwwwwwwwww
650nobodyさん:2007/04/08(日) 22:49:56 ID:???
パールはperlだろ
651nobodyさん:2007/04/08(日) 23:05:24 ID:???
>>644
とりあえずphpのバージョンを書いて。
大方php5で実行してるから、php4のOO満載のpearがエラー出してるんだと思うけど。
652nobodyさん:2007/04/08(日) 23:09:51 ID:OS1trKFT
>>651
PHP Version 4.4.4
です。

php4用に書かれていないんでしょうか・・。
653nobodyさん:2007/04/08(日) 23:24:30 ID:???
mysql_query()って成功するとTRUE返すんだっけ?
654nobodyさん:2007/04/09(月) 00:02:37 ID:???
パスワードの暗号化って皆何使ってる?
md5でいいの?
655nobodyさん:2007/04/09(月) 00:02:43 ID:???
globとopendirって使い分けで何か気をつけることある?
ファイル名を正規表現でいじるならはじめからreaddirのなかでpreg_matchする→opendir
簡単なパターンマッチ→glob
なのかなあと。こんなかんじ?
656nobodyさん:2007/04/09(月) 00:22:46 ID:AitdzCc4
絵文字を?*****;形式に変換できませんか?
657nobodyさん:2007/04/09(月) 00:29:48 ID:???
>>656
いきなり質問するより前に、まずは自分で試せ
658nobodyさん:2007/04/09(月) 00:41:33 ID:???
>>655
つーか、PHPでWebサイト作るのに、正規表現使うほど複雑なファイル構造は登場しないし。
時々せいぜい出てきてもglob($dir.'/*')か、glob($dir.'/*.ext')くらいだな。
ごちゃごちゃしたデータは全部DBに入れた方が効率的。
659nobodyさん:2007/04/09(月) 00:41:52 ID:???
&#*****;
の半角です、すみません
660nobodyさん:2007/04/09(月) 00:51:37 ID:???
>>653
マニュアルぐらい読もうよ。

サンプルも載ってるんだし。
661nobodyさん:2007/04/09(月) 01:01:31 ID:???
<html>
<head>
<title></title>
</head>
<body>
<?
echo $_SERVER['HTTP_USER_AGENT'];
?>
</body>
</html>

これにアクセスするとソースが
Array
(
)
<hr />
となります

正直わけわかりませんorz
どなたか助けてください・・・
662661:2007/04/09(月) 01:03:13 ID:???
あ、ごめんなさい。WEB制作板に書き込んだつもりでした。
専ブラの誤爆です。しつれいしました
663661:2007/04/09(月) 01:03:55 ID:AitdzCc4
>>662
これってPHP関係ないのですか?
664nobodyさん:2007/04/09(月) 01:05:42 ID:???
ソースに問題ないから環境がおかしいな。
PHPをもう一度インストールしなおしてもなるなら質問してみろ。


※初回にIDをだして質問しましょう
665nobodyさん:2007/04/09(月) 01:11:29 ID:AitdzCc4
>>664
すんません

Windowsなのでインストールではなく上書きしました。
しかし、直りません。

ブラウザも特に設定をいじっていません。
666nobodyさん:2007/04/09(月) 01:13:12 ID:???
上書きはあんまり推奨しない。全部削除してからいれないせ。
あとブラウザはなにつかってんの?
667nobodyさん:2007/04/09(月) 01:14:09 ID:AitdzCc4
>>666
全部削除して上書きしました。
ブラウザはIE6.0です。
668nobodyさん:2007/04/09(月) 01:18:49 ID:AitdzCc4
すみませんでした・・・
<html>
<head>
<title></title>
</head>
<body>
<?
echo $_SERVER['HTTP_USER_AGENT'];
?>
</body>
</html>
にアクセスしてると思いきや、
Array
(
)
<hr />
が出力される別の.phpにアクセスしていましたorz
669nobodyさん:2007/04/09(月) 01:22:26 ID:???
orz
670nobodyさん:2007/04/09(月) 01:22:26 ID:???
       ヽ(・ω・)/   ズコー
      \(.\ ノ
671nobodyさん:2007/04/09(月) 01:40:10 ID:xbEWIqwP
文字をprintすると、
ブラウザに?????と表示されてしまうのですが、
これはphp.intの設定に間違いがあるのでしょうか、
それとも、Apacheのほうでしょうか?
672nobodyさん:2007/04/09(月) 01:46:00 ID:???
ブラウザでは?w
673nobodyさん:2007/04/09(月) 01:50:28 ID:???
>>671
まさか貴様今年の新卒か!?

文字コードを勉強して来い!
674nobodyさん:2007/04/09(月) 02:04:28 ID:xbEWIqwP
PHPの設定し直したら、正常に表示されました。
と思ったら次は、mysqlが使えなくなった・・・
675nobodyさん:2007/04/09(月) 02:14:40 ID:???
>>674
OS再起動してMySQLが立ち上がってないとかじゃないだろうな

そうじゃないならphp.iniのMyS
676nobodyさん:2007/04/09(月) 02:30:23 ID:xbEWIqwP
mysqlを有効にする場合は、
php.intの;extension=php_mysql.dllの「;」を外すだけでいいんですよね?
Apacheを再起動してphpinfoで確認しても、
mysqlの情報がでてきません。

おかしいな・・・php.intを設定し直すまでは、
mysqlの情報出てたんですけど。
677sage:2007/04/09(月) 02:42:16 ID:ukAGIvQQ
・・・
678nobodyさん:2007/04/09(月) 02:56:36 ID:xbEWIqwP
PC再起動したらmysqlの情報でてきました
おさがわせして申し訳ございませんでしたwww
679nobodyさん:2007/04/09(月) 03:01:20 ID:???
.int
680nobodyさん:2007/04/09(月) 03:09:37 ID:xbEWIqwP
>>679
O型・・・
681nobodyさん:2007/04/09(月) 03:11:39 ID:Lr1gb1O7
ht★tp://77.xmbs.j★p/kid66666/←★は抜いてね!
◎マル秘!総合サイト! m(__)m《どろろ》m(__)m
超人気!完全決定版です!ホスト掲示板・風俗掲示板お水掲示板・総合掲示板
ブラックOK!必殺金融屋!超激安噂の車屋さん☆
このサイトを知らない者は必ず損します(--;)!!
682nobodyさん:2007/04/09(月) 03:40:07 ID:???
一回きりのミスだったらタイポかも知れんと突っ込まれないだろうが、何回もintって書いてるから突っ込まれるんじゃね?
683nobodyさん:2007/04/09(月) 03:47:43 ID:???
整数型ファイルなのか・・・
684nobodyさん:2007/04/09(月) 04:01:04 ID:???
interface
685nobodyさん:2007/04/09(月) 04:20:52 ID:vh2gxFaj
ソートに関して質問です。

$elemA[0]="りんご";
$elemA[1]=0.23;
$elemB[0]="みかん";
$elemB[1]=0.21;
$elemC[0]="ばなな";
$elemC[1]=0.11;
$array[0]=$elemA;
$array[1]=$elemB;
$array[2]=$elemC;

とされた$arrayを各要素の2つ目の要素の数字でソートしたいのです。
関数sort()はこういう使い方を想定して無いみたいなので困っています。
こういう場合どうすればいいのでしょうか?
686nobodyさん:2007/04/09(月) 04:26:35 ID:???
usort
687nobodyさん:2007/04/09(月) 04:49:00 ID:xbEWIqwP
.インポ
688nobodyさん:2007/04/09(月) 05:24:42 ID:kaHzWtZF
ごめん、色々調べたんだけど全然わからんから質問いいかな?

PHPでSmartyが使いたくてダウンロードして特定のディレクトリにコピーした後、
php.iniのinclude_pathにそのディレクトリへのパスを設定。

んでrequire_once("Smarty.class.php");ってやるとSmarty.class.phpが見つからないって言われる。
見たところパスはちゃんと設定されてて、反映もされてるし、Smarty.class.phpもある。
Apacheはちゃんと再起動したし、なんでエラー?みたいな。

ちなみにSmartyだけじゃなくて他のファイルも同じような状況。
カレントディレクトリとかは普通に読み込めるんだけど、/usr/local/...とかになると無理。
前はApacheもPHPもソースをコンパイルして入れててその時はちゃんと動いてたんだけど、
パッケージに入れ替えてから動かなくなった・・・。

これって何が原因が原因なのかわかる人いる?
689nobodyさん:2007/04/09(月) 05:30:23 ID:kaHzWtZF
ごめん、環境書き忘れたorz

環境はFedora6、Apache2.2、PHP5
690nobodyさん:2007/04/09(月) 06:32:22 ID:???
permission deniedじゃなくて?
691nobodyさん:2007/04/09(月) 07:21:43 ID:???
ソフトバンクのページってHTML対応表とかないんだな、糞だ
692nobodyさん:2007/04/09(月) 07:55:44 ID:???
$array = array("ABX"=>"テスト");
のとき
foreach($array as $key=>$value){
   echo $key;
}
で、「ABX」を表示できるけど、
echo $array['ABX']がそのままテストと表示されるように
ABXを表示できないの?
693nobodyさん:2007/04/09(月) 08:14:03 ID:???
array_search()で検索するとか、array_flip()で反転させるとか
694nobodyさん:2007/04/09(月) 08:18:52 ID:???
>>693
「テスト」の部分が空白のとき
array_flipなら []=>ABXになるけど
直接echoにできないね
695644:2007/04/09(月) 08:34:27 ID:WcujzhhQ
>>644
自己解決しました。
なんとか複数のIPを連続的に国判別する方法が見つかりました。
お騒がせいたしました。
696nobodyさん:2007/04/09(月) 09:10:50 ID:???
>>688
php.iniが本当に機能してるの?
697nobodyさん:2007/04/09(月) 10:37:50 ID:iVxz/LH1
>>690
最初パーミッションかと思ったんだけど、エラーにはパーミッションのエラーは出ててなくて、
ただファイルが見つからないっていう表示がでるだけ。

>>696
phpinfo()見る限りでは/etc/php.iniを読みにいってるようになってる。
get_include_path()で設定されてるパスを調べてみたら設定が反映されてるみたいだからちゃんと機能はしてると思う。
ただなぜか読み込めない。

なんだこれ。orz
698nobodyさん:2007/04/09(月) 10:41:36 ID:???
>>697
Smarty って現在バージョンは、インストール直後、スクリプトファイルは、Smarty/libs/*phpにあるので
そこはチェックした?
699nobodyさん:2007/04/09(月) 11:07:06 ID:SC5xLpVK
半角の + をGETメソッドで取得する際にどのようにするべきでしょうか?

普通に hoge.php?value=+ とやっても取得できません。やはりエンコードすべきなのでしょうか?
700nobodyさん:2007/04/09(月) 11:15:57 ID:???
>>699
そういう問題ではなくて、そもそも+を値として扱うというのが不正規
RFC2396の2.2.Reserved Charactersを見ましょう。
+は、あなたがやってるuriの?、=と同等の扱いです
701nobodyさん:2007/04/09(月) 11:18:43 ID:SC5xLpVK
>>700
ありがとうございます。

具体的に+を値として認識させてGETで取得するにはどのような方法があるのでしょうか?
702nobodyさん:2007/04/09(月) 11:20:00 ID:SC5xLpVK
>>700
ありがとうございます。

具体的に+を値として認識させてGETで取得するにはどのような方法があるのでしょうか?
703nobodyさん:2007/04/09(月) 11:22:39 ID:???
わざわざreservedされてるものを、どうしてもっていうのがわからんけど、
・・・どうしてもしたいなら、encodeすればいい。

704nobodyさん:2007/04/09(月) 11:27:53 ID:SC5xLpVK
>>700
ありがとうございます。
URIから抜く際、たとえばPathが /hoge/appl/itemの場合 スラッシュ(/)の3番目以降の値(item)を取り出すにはどうすればいいのでしょうか?

705nobodyさん:2007/04/09(月) 11:31:43 ID:???
まだ春休みなのか?
706虚弱PHP:2007/04/09(月) 11:33:53 ID:???
>>654
SHA1使ってたけど、SHA512+Saltに変更した。
707nobodyさん:2007/04/09(月) 12:11:27 ID:???
shaは構造が欠陥だから、心配するならtigerにすればいい。
漏れてもいいような情報ならmd5でもいいんじゃないかね。
708nobodyさん:2007/04/09(月) 12:21:35 ID:4ZyIPEha
>>698
チェック済みです。
yum install php-smartyでパッケージでいれると
/usr/share/Smatyにインスコされるみたいなんですが、そこにパスを通しても読めないorz

というかSmatyじゃなくてもPEARとかでもなんでもそんなかんじです。

これはもうOSごと最インスコかな、、、
709nobodyさん:2007/04/09(月) 12:21:42 ID:???
おれは独自の暗号化アルゴリズムを作ってる
710nobodyさん:2007/04/09(月) 12:35:15 ID:???
>>708
×Smaty
○Smarty
のタイポと思うが、それはそれとしてOSごと再インスコっていうのはヤケクソみたいだから
やめようぜw
とりあえず
ini_set ('include_path','パス名:パス名');
で明示的に指定しても駄目なの?
なんかすごくプリミティブなところで確認ミスしてる気がするぞなんか。
711nobodyさん:2007/04/09(月) 12:41:08 ID:???
やっぱあれだよね。自鯖の開発環境の個別のアプリは、
ソースコンパイルする技能があるなら、とりあえずそれでやるべきだよね。
パッケージインストールは、カーネルとか、そういうのに限るべきだと思う。
問題の切り分けが出来なくなるわw
712nobodyさん:2007/04/09(月) 12:55:42 ID:W+dKCXXH
ユーザーからの入力文字をhtmlspecialcharsを使わずに独自に無害化するコードを書いてます。
<
>
&
"
'
これらの文字以外に正規表現などで使われるメタ文字も無害化するべきでしょうか?
713nobodyさん:2007/04/09(月) 12:56:11 ID:???
問題が100%発生しなくなるくらい安定すればいいんだけどね
714nobodyさん:2007/04/09(月) 12:56:42 ID:???
>>712
なんのために自作でやってんの?
715nobodyさん:2007/04/09(月) 13:05:04 ID:???
1つのページで
投稿→確認画面→投稿完了
をするときにうまいこと分ける方法ないかな・・・
皆どんな感じでやってる?

値無し=投稿
$_POSTのみ=確認画面で$_POSTをセッションに
$_POST+$_SESSION=投稿完了

これがベストかな?
716nobodyさん:2007/04/09(月) 13:10:28 ID:W+dKCXXH
>>714
作法を学習するために独自で作りたいと思ってます。
他の言語にも作法を適用したいためなんですが無駄にやりすぎですかね?
717nobodyさん:2007/04/09(月) 13:11:59 ID:???
>>715
multipart扱う場合は、それじゃ駄目だろうな。$_FILE処理も必要
718nobodyさん:2007/04/09(月) 13:16:01 ID:???
>>715
だめじゃないかな。
ブラウザで投稿画面に戻ったときに既にセッションに値入ってるもん。
それだと、投稿画面に戻る→修正して投稿したときに確認が画面がスルーされて完了しちゃうよ。
formのhidden値で区分けるべき。あと、上に書かれてる$_FILEの扱いも気をつけてね。
719nobodyさん:2007/04/09(月) 13:23:34 ID:VhSqsDLr
サーバの監視スクリプトみたいのを作りたいのですが、
IPアドレス:ポート番号で接続を試行して、応答が返ってきたらtrueを返す。
みたいな都合のいい関数ありませんでしょうか?
720nobodyさん:2007/04/09(月) 13:31:52 ID:???
>>719
PHP5ならstream_socket_clientで一発
4ならphp socket ping あたりでググレ。ping系スクリプトが転がってる。
721nobodyさん:2007/04/09(月) 13:48:05 ID:VhSqsDLr
>>720
pingが通らなかったので、pingを使わない方法を探していましたが、
これでいけるようです!どうもありがとうございました。
722nobodyさん:2007/04/09(月) 13:51:09 ID:???
>>716
組み込み関数のほうが遙かに速い。
723nobodyさん:2007/04/09(月) 13:53:07 ID:???
速度じゃなくて勉強のために作ってるんだろ。
>>712
RFCをよみながらエスケープすべき文字を見極めてやればよし。
724nobodyさん:2007/04/09(月) 14:10:56 ID:???
勉強ならC言語とかでやらないと意味が無いだろう。
PHPなんかだと組み込みの高機能な関数が多すぎる。
725nobodyさん:2007/04/09(月) 14:11:29 ID:???
PHPで車輪の再発明するぐらいならCの勉強した方がよさげ
726nobodyさん:2007/04/09(月) 14:24:21 ID:kaHzWtZF
>>710
レスサンクスです。
試してみたけどやっぱりダメだた・・・。

状況としてはこれにかなり近い感じ。

[PHP-users 30825] Pear DBでのエラー
http://ml.php.gr.jp/pipermail/php-users/2006-November/031342.html
727nobodyさん:2007/04/09(月) 14:33:36 ID:W+dKCXXH
アドバイスありがとうございます。
htmlに出力するときはhtmlspecialcharsで対象となる文字のみ対策しておけばXXS対策になるんでしょうか?
728nobodyさん:2007/04/09(月) 14:49:59 ID:???
>>726
Smarty 以外のファイルはちゃんと読めるのか?
729nobodyさん:2007/04/09(月) 14:57:00 ID:kaHzWtZF
>>728
Smarty以外も読めんですorz
ファイルの種類というよりもむしろ、ディレクトリの場所によって読めるか読めないかみたいな感じで、
カレントディレクトリとかドキュメントルート以下(/var/www/html/〜〜)の中にあるファイルなら普通に読めるんですけど、
/usr/〜〜とかそれ以外の場所になるとパスが通ってても読めない状況です。

730nobodyさん:2007/04/09(月) 14:58:33 ID:???
>>729
セーフモードでアクセスが制限されている可能性は
確かめた?
731nobodyさん:2007/04/09(月) 15:05:50 ID:???
>>727
クライアントからの入力データだと思うもの全てをhtmlspecialcharsに突っ込んでも安全とは限らない。

本質的にXSSはプログラマがクライアントからの入力全てに気を配らないと起こり得る。
環境変数もどれが任意でどれがそうでないかを全て把握してる人はそういない。
よって、HTML出力を必要としない部分全てをhtmlspecialcharsに突っ込むのが安全。
尤も、タグの属性値なんかに突っ込むならそれでも不十分。そんな設計は見直すべきだが。
732nobodyさん:2007/04/09(月) 15:09:03 ID:kaHzWtZF
>>730

セーフモードっていうのがよくわかってないんですが、
php.iniを見てみたら

safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH

みたいになってます。
733nobodyさん:2007/04/09(月) 15:20:55 ID:???
>>729
seLinuxが有効になっている可能性は?
734nobodyさん:2007/04/09(月) 15:28:35 ID:kaHzWtZF
>>733
ああああああああああああああ!

# getenforce



Permissive





鬱すぎるorz
735nobodyさん:2007/04/09(月) 15:44:55 ID:???
>>734
うん、で?
736nobodyさん:2007/04/09(月) 15:51:53 ID:kaHzWtZF
>>735
seLinuxは無効になってたっぽいです。
もうほんとなにが悪いんだか・・・。
737nobodyさん:2007/04/09(月) 16:34:56 ID:R/Jf3MPV
お知恵を貸してください。
最近よく私が管理しているWikiにスパムが飛んできて困っているのですが、
$_POST['msg']に入っている本文から英字だけ抜き出す場合どうすればいいのでしょうか。
それを使って英字の文字数によりスパム弾きをしたいと思っているのですが…
738nobodyさん:2007/04/09(月) 16:37:16 ID:???
[a-z]
739nobodyさん:2007/04/09(月) 16:39:28 ID:R/Jf3MPV
>>738
eregを使うという所までは思いついたものの、
ループ処理で文字を次々ヒットさせる際の処理が思い浮かばず…
740nobodyさん:2007/04/09(月) 16:41:23 ID:???
while(){substr(************************************);
ふぬああああああああああああああああああ
[a-z]
}
うんこ。
741nobodyさん:2007/04/09(月) 16:48:59 ID:???
情報は小出しじゃなく一度に出したほうがいいぞ
答える方も質問してる方も時間の節約になる
エスパーが登場すればこの限りではないが
742nobodyさん:2007/04/09(月) 16:54:25 ID:???
preg_match_all
743nobodyさん:2007/04/09(月) 17:03:39 ID:???
allなんてむだなものもひろうからpreg_matchがいいよ
744nobodyさん:2007/04/09(月) 17:13:48 ID:???
>>736
で、あえて聞くけど

require_once(フルパス);
もエラーになるの?

あるいは
echo file_exsists(フルパス);
はtrue返るの?
745nobodyさん:2007/04/09(月) 17:15:02 ID:???
上のフルパスはフルパス.file名の意味
746nobodyさん:2007/04/09(月) 17:16:23 ID:R/Jf3MPV
>>740
有難う御座います。
参考にしながらこんなのを組んでみました…

$msg = $_POST['msg'];
$eng_num = 0;
$i = 0;
//コメントスパム対策
while($i<=strlen($msg)) {
$i++;
$num = substr($msg,$i,1);
if (ereg('[a-zA-Z0-9]',$num)) { $eng_num++; }
}
if (strlen($eng_num)>50) { die; }

…が正しく実行されないのは置いといて、
大体こんな感じでいいのでしょうか。
747nobodyさん:2007/04/09(月) 17:26:22 ID:???
ord使いたいな

$msg = $_POST['msg'];
$eng_num = 0;
$i = 0;

while( $char = ord($msg[$i++])) !=0) {
  if (ereg('[a-zA-Z0-9]',$char)) { $eng_num++;}
if($eng_num > 50 ) {die('invalid post');}
}
748nobodyさん:2007/04/09(月) 17:33:34 ID:???
>>747
それは動かんだろ
$msg配列じゃないし、eregがへん。
749nobodyさん:2007/04/09(月) 17:33:38 ID:R/Jf3MPV
>>747
有り難う御座います!
バイト後にやってみます。
750nobodyさん:2007/04/09(月) 17:34:07 ID:???
あ、そうだな。なかったことにしてください。
751nobodyさん:2007/04/09(月) 17:54:18 ID:???
>>743
無駄なものってなんですか?

preg_match_all('/\w/',$_POST,$c);
if (count($c[0]) > 50) die();
で問題が出る?
752nobodyさん:2007/04/09(月) 20:35:33 ID:???
セッションって、一度クッキーに置き換えてるのですか?
753nobodyさん:2007/04/09(月) 20:43:57 ID:???
spycとsyckではYAMLのパース結果が違うくないですか?
spycに添付されていたspyc.ymlで比較してみたんだけど、違うようです。

あと、syckは解析できなかった時に、"unknown type"を返しますよね?
なんじゃこりゃ?
754nobodyさん:2007/04/09(月) 20:50:38 ID:W+dKCXXH
データベース(MySQL4.1)からデータを抽出したいのですが、
$sqlのなかにフィールド名とテーブル名が入った変数を入れると動きません。
$sqlの中に変数ではなくて、フィールド名とテーブル名を直接書けば正常に動きました。

フィールド名とテーブル名を変数に格納して、$sqlにまぜたいのですが
うまくいきません。

以下、問題となるコードを抜粋しました。

$field_name = "id, name";
$table = "table1";

$sql = "SELECT $field_name FROM $table_name ORDER BY id";
$res = mysql_query($sql,$con) or die("データを抽出できません");


PHP4.4.6とMySQL4.1を使用してます。
どなたかご教授お願いいたします。
755nobodyさん:2007/04/09(月) 20:54:03 ID:???
>>754
変数は''でククれ
756nobodyさん:2007/04/09(月) 20:59:38 ID:???
>>754
$table = "table1";
$sql = "SELECT $field_name FROM $table_name ORDER BY id";

$table_nameなのか$tableなのか
757nobodyさん:2007/04/09(月) 21:16:25 ID:???
printとechoの違いは無し?
タイム計測したらechoの方が二倍近く速かったんだが
758nobodyさん:2007/04/09(月) 21:26:31 ID:???
>>754
変数を"でくくるのはこれで合ってますか?
$sql = "SELECT \"$field_name\" FROM \"$table_name\" ORDER BY id"
試してみましたが動きませんでした。

>>755
すいません、$tableは$table_nameの打ち間違えです。


echo で$sqlを出力したらでてきた内容です。
SELECT id,name, FROM table1 ORDER BY id
変数の中身を直接書くと動くので、SQL文自体には間違いはないと思ってますが
何か勘違いしている部分等ございましたらご指摘ください。
759nobodyさん:2007/04/09(月) 21:29:13 ID:Hw87SVIB
以下のようなプログラムを作って
php -f test.php
とコマンドラインから呼び出したのですが何も表示されません。
何故でしょうか?

test.php
<?
print "aaaaaaaaa";
?>
760nobodyさん:2007/04/09(月) 21:30:30 ID:???
>>758
SELECT id,name, FROM
の抽出するフィールドリストの最後にカンマついてちゃだめ
てかmysql_error使え
761nobodyさん:2007/04/09(月) 21:53:31 ID:???
>>757
テンプレ嫁
762nobodyさん:2007/04/09(月) 21:54:49 ID:LuOmRtTQ
むちゃくちゃ単純なところで数時間はまっている…

------------------------------------------------------
$_POST['name1'] = htmlspecialchars($_POST['name1']); //1回目だけ特殊記号変換

echo $_POST['name1'];
echo $_POST['name2'];

$form = "<form action=\"${_SERVER['PHP_SELF']}\" method=\"POST\">
<input type=text name=name1>
<input type=hidden name=name2 value=\"${_POST['name1']}\">
<input type=submit value=\"go\">
</form>
";

echo $form;
------------------------------------------------------
一度受け取った$_POST の中身をhtmlspecialchars で&gt; に変換して
もう一度送っているだけなんだが。

(俺の頭の中では)$_POST['name2']の中身は&gt; 変換済みになっているわけだが、
二回目を受け取ったら(もう一度送ったら)、自動的に元に戻っちゃうわけ?

助言をお願いします。
763nobodyさん:2007/04/09(月) 22:03:07 ID:???
>htmlspecialchars で&gt; に変換して
意味不明
>$_POST['name2']の中身は&gt; 変換済みになっているわけだが、
意味不明
>二回目を受け取ったら(もう一度送ったら)、自動的に元に戻っちゃうわけ?
意味不明

返れ
764nobodyさん:2007/04/09(月) 22:03:45 ID:???
日本語でおk

$fromとかわけわかんないんだけどさ
765nobodyさん:2007/04/09(月) 22:03:49 ID:???
>>752
Cookieに値は入れないが概念的にそうとも言える。

>>759
エラーも表示されないってことなら、同じファイル名の別のtest.phpだったとか。

>>762
変換というよりエスケープ。
$form = "<form action=\"${_SERVER
ここで「"」を「\"」にエスケープしてるけど、HTMLでは元に戻ってるでしょ?
766nobodyさん:2007/04/09(月) 22:06:48 ID:???
>>762
まあ誰もがハマる道かもしれんな
元に戻るんじゃなく、送信されるhiddenの値が
HTMLエスケープされていない文字列ってだけだ
767nobodyさん:2007/04/09(月) 22:07:34 ID:???
>>759
printの最後に\n
768nobodyさん:2007/04/09(月) 22:13:18 ID:???
769762:2007/04/09(月) 22:17:16 ID:LuOmRtTQ

ごめん、あれだ、マジでこんがらがっている

かりに<img>を入れると<img>に変換されて
<input type=hidden name=name2 value="<img>">
上のソースになるわけだけど、
これをそのまま送るとなんで<img>になっちゃんだ?
770nobodyさん:2007/04/09(月) 22:22:09 ID:6Xdj6yAC
完全意味不明だな。
普通に考えて<一回目>は
&lt;img&gt;
になってるだろ

771nobodyさん:2007/04/09(月) 22:23:29 ID:???
>>765
DoCoMoでセッションが使えなかったからさ・・・
772499:2007/04/09(月) 22:24:02 ID:???
遅レススマソ
なんか検索して一見目にここから最新のfixもってってちょって書いてあったんで落としてビルドしたけどやっぱいり同じエラーで止まったっす
英語読めてないだけかもしれませんが
773762:2007/04/09(月) 22:24:26 ID:LuOmRtTQ
すいません、半角で送信してもうた。

<input type=hidden name=name2 value="&lt;img&gt;">
774nobodyさん:2007/04/09(月) 22:24:36 ID:???
>>767
素晴らしい指摘。感心した。
775nobodyさん:2007/04/09(月) 22:27:20 ID:AitdzCc4
>>773
質問の内容がまじで意味不明だが
ページを開くと一度だけプログラムが実行され
実行終了後には変数が全て空っぽになる(一部例外は除く
776nobodyさん:2007/04/09(月) 22:29:50 ID:???
>>773
それはHTMLの仕様。
777nobodyさん:2007/04/09(月) 22:33:49 ID:AitdzCc4
$_POSTや$_GETの値をそのままクエリで使用するときは、

$post = $_POST;
"SELECT * FROM test WHERE id='$post'"
より
"SELECT * FROM test WHERE id='"+$post+"'"
のほうがいいんですかね?
$postの値が「' 適当なSQL文'」だったらまずいですよね
もしその場合は下記の方も同じ動作なのでしょうか?
778nobodyさん:2007/04/09(月) 22:38:10 ID:???
なんか今日、htmlエスケープ/specialchar関係で質問してる奴、全部同じ匂いするなw
779nobodyさん:2007/04/09(月) 22:41:03 ID:???
>>777
そんなこと気にするくらいなら
適当なDBインターフェースを利用して
プレースフォルダを使えばいい

pear::DB の場合
$params = array($post);
$sql = "SELECT * FROM test WHEAR id=?";
$ret = $conn->query($sql, $params);
780nobodyさん:2007/04/09(月) 22:44:42 ID:???
>>777
+演算子じゃインジェクションの前にとんでもないことになるけど。
クォートするかPDOStatement->bindValue()でも使おうぜ…。
781nobodyさん:2007/04/09(月) 22:45:45 ID:???
>>771
「セッションを使うためにsidをcookieに持たせる」ってのはデフォルトの挙動であって
use_trans_sidとかでGETで送らせてやればCookie使えなくてもセッション自体は使えるよ

>>769
ソースに書かれた文字列の評価ってプロセスがあるんだよ
何らかの文字列を > そのものとして扱えないと > を入れる方法がないでしょ?
782nobodyさん:2007/04/09(月) 22:48:22 ID:???
>>781
うん、.htaccessで設定したら使えたおサンクス
全ての携帯で見れるサイトって作るの難しいよな
783nobodyさん:2007/04/09(月) 22:50:40 ID:???
>>772
imapのmake時点でエラー出てない?
784nobodyさん:2007/04/09(月) 23:53:47 ID:R/Jf3MPV
>>751
完璧でした。どうもありがとう御座いました!
785nobodyさん:2007/04/09(月) 23:59:00 ID:???
javaの排他処理?のシンクロナイズドをPHPで実現したいのですがどうしたら良いでしょうか。。
やりたいことはクッキーの削除とDB(トランザクションの処理はしています)への書き込みで、重複登録を防ぐ為にクッキーが無ければDBへ書き込まないようにしています。

普通に処理をするPGへ遷移する場合はクッキーも削除され、DBへ1件書き込まれるだけですが、F5を連打するとDBに1件書き込まれますがクッキーが消えません。。
また、処理の最後で$_COOKIEにarrayを入れるとクッキーとDBが削除及び登録されたりされなかったりします。
あと、setcookieで削除する所で戻り値がとれるまでループさせてやると、連打した数だけDBに登録されてしまいます。クッキーは削除されています。

何かヒントみたいなもの頂けると嬉しいです。。
お手数お掛しますがよろしくお願い致します。
786785:2007/04/10(火) 00:01:49 ID:???
すいません。
環境はPHP4.3.0 apache2 windowsXPです。
よろしくお願い致します。。
787nobodyさん:2007/04/10(火) 00:53:06 ID:LOxXZREL
掲示板の記事を途中で切って全部読むリンクを付けるってのやってるんだけど……
切る部分にURLやらメールアドレスやら携帯絵文字が入らないようにして、
2バイト文字の区切りで切れるようにして、
なんてやってると正規表現やら条件分岐使いまくりなんだけど
他でもそういう風にやってるのかな?高々文区切るだけで
もう規定数の文字数で問答無用にぶった切ってもいいような気がしてきた
788nobodyさん:2007/04/10(火) 01:28:44 ID:???
>>787
>もう規定数の文字数で問答無用にぶった切ってもいいような気がしてきた

なんでこうしないの?
見た目で考えても 「>>続きを見る」 の方が視認性高いじゃん
789nobodyさん:2007/04/10(火) 01:46:43 ID:???
>>787
エロゲスレに誤爆した

確かマルチバイト系の関数で指定文字で切ってくれる関数があったぞ
よく覚えてないけど省略するときの文字も指定できたはず
790nobodyさん:2007/04/10(火) 01:51:40 ID:???
>>760さんのアドバイスが的中しました。
foreachでまわしてたので自動的にカンマがついてたのに気づきませんでした。
現在は問題なく動きます。ありがとうございます。
791nobodyさん:2007/04/10(火) 02:03:31 ID:???
>>790
じゃ上で書いてた問題のあるコードってのは嘘だったわけ?
792nobodyさん:2007/04/10(火) 02:18:52 ID:???
>>785
重複登録を防ぎたいなら、INSERTで失敗させるようにするとか、トランザクション使うとかすればいい。
setcookieでクッキーを削除したつもりでも、ブラウザがそのレスポンスを受け取るまでは何度でもクッキー送ってくるよ。
クッキーは排他処理とかに使える道具じゃない。
793nobodyさん:2007/04/10(火) 02:26:58 ID:4NI9RXKe
>>791
794nobodyさん:2007/04/10(火) 03:45:07 ID:???
>>793
何だ?しゃべれないのか?
795nobodyさん:2007/04/10(火) 04:07:44 ID:???
朝っぱらからケンカうってるやつは暇なのか?
796nobodyさん:2007/04/10(火) 04:31:31 ID:???
>>795
なんだ?ニートなのか?
797nobodyさん:2007/04/10(火) 08:40:15 ID:???
>>787
>>789
mb_strimwidth だね。(誰かこの関数名の単語の区切りを教えて)
でもメールアドレスの途中で切らないとかそういった機能はないから
たとえば「split系関数で切りたい文字列と切りたくない文字列が交互に並ぶ配列にして
ループで順に連結して規定バイト数を超えたかどうか見つつ
添え字 % 2 の戻り値でmb_strimwidth をかけるかどうか判断する」といったロジックが必要。
798nobodyさん:2007/04/10(火) 08:46:43 ID:???
>>785
こういう場合は、
if(処理終了) {header("Location:....");}でOK。
強制的に飛ばす(リダイレクトする)のがいい。

799nobodyさん:2007/04/10(火) 08:56:56 ID:???
>>797
>mb_strimwidth だね。(誰かこの関数名の単語の区切りを教えて)
エス トリム ウィドゥス かな?

で本題
mb_strimwidth(接続文字空)でいったん切ってから、正規表現で末尾の連続する半角英数記号を削除
で どう?
800nobodyさん:2007/04/10(火) 08:58:02 ID:???
>>787
そんなに厳密じゃなくてもいいわけでしょ?
「ひらがながあれば、ある範囲で切る」だけを唯一の区切り条件にすればいいじゃん。
漢文サイトじゃないだろうから。
801nobodyさん:2007/04/10(火) 09:02:18 ID:???
>>799
英文の書き込みは全て消えるね
802nobodyさん:2007/04/10(火) 09:04:43 ID:???
>>801
「連続する」英数だから全部は消えないだろ
URLのみの書き込みなら消えるけど
803nobodyさん:2007/04/10(火) 10:00:04 ID:???
>>783
--with-imapにソースを解凍してmakeしたディレクトリ指定したらコンパイルまで通りました
パスが違うのかコピーするファイルが足りないのか?
804nobodyさん:2007/04/10(火) 10:33:14 ID:Y95uap3I
オブジェクト指向を勉強しています。
PearDBクラスを、自分が作ったクラスの中で使うとき、
extendsするのか、ただ単に使う場所でinclude_once('DB.php')すればいいのか
わかりません。
どちらにすればいいのでしょうか?
805nobodyさん:2007/04/10(火) 10:58:06 ID:???
PHPでオブジェクト指向を勉強するなカス
806nobodyさん:2007/04/10(火) 11:06:49 ID:Y95uap3I
いいんです。PHP以外はやる予定はないので。趣味ですし。
807nobodyさん:2007/04/10(火) 11:34:59 ID:???
ストレスたまってる奴が昨日から沸いてるな
808虚弱PHP:2007/04/10(火) 11:35:34 ID:???
>>804
用途によるとしか…。

>>805は言葉は悪いけど正論だと思うなぁ。
オブジェクト指向はJavaでやるのが一番だと思う。
いや、SmalltalkとかRubyの方がいいのかもしれんけど、
俺はまともにやったことないからわからん。
809nobodyさん:2007/04/10(火) 11:35:59 ID:???
カスは愛想だよ、うん。
810虚弱PHP:2007/04/10(火) 11:40:23 ID:???
>>785
なんか根本的に間違っている気がする。
synchronizedってスレッドの処理だから今回のような件だと関係ないし。

俺だったら、CookieのかわりにSession変数使う。
811虚弱PHP:2007/04/10(火) 11:45:46 ID:???
>>777
DBによってエスケープ方法が違うけど、
mysqlのネイティブ関数としてはmysql_real_escape_stringとかがある。
PDOならプリペアドステートメント使えば解決。
812nobodyさん:2007/04/10(火) 12:05:49 ID:???
DBって決められたUPDATE文を実行するときでも、
エスケープしとくべきですか?
813nobodyさん:2007/04/10(火) 12:22:30 ID:FUjP3ASn
var メンバ変数の宣言かかなくても、動くんですが、そんなもんですか?
814nobodyさん:2007/04/10(火) 12:27:36 ID:FUjP3ASn
var メンバ変数名が違ってたら、エラーがでる設定ってありますか?
815虚弱PHP:2007/04/10(火) 12:59:06 ID:???
>>812
"決められたUPDATE文"にDBから引っ張ってきた値が入っている場合は、
セカンドオーダーSQLインジェクションが発生する恐れがあるので必ずエスケープ。

平文でコードに直書きしている場合は問題ない…
けれども、人間は間違いをおかすものなので変数は全部エスケープが正解。
816虚弱PHP:2007/04/10(火) 13:01:39 ID:???
>>813
そんなものです。
>>814
error_reporting(E_ALL);
でどんなもんでしょ
817nobodyさん:2007/04/10(火) 13:04:00 ID:???
>>813
そんなものです
>>814
ないと思う
ただし、右辺値で使う場合は警告がでる
$foo = $this->bar;
とかね
818nobodyさん:2007/04/10(火) 14:07:55 ID:???
オブジェクトについて質問です。
ttp://labs.cybozu.co.jp/cbl_activerecord/
このO/Rマッピングライブラリを使って、DBから取得してオブジェクトに入れるところまではできたのですが、
取得した値を使いたい場合にいちいち

$var['name'] = $todo->name;
$var['title'] = $todo->title;

と指定するのではなく、まとめて$varの配列に置き換えたいのですが
どうすれば良いのでしょうか?
819nobodyさん:2007/04/10(火) 14:15:35 ID:???
多分PDOのfetchmode変えるなりすればできると思うが、
何のためのO/Rマッパだよ、、、そのまま使えばといいんじゃないかと
820nobodyさん:2007/04/10(火) 14:16:20 ID:???
関数を実行した時に失敗したらエラーを返したいのですが、
hogeFunction() or die ('hogeFunction失敗');
という感じでいいのでしょうか?
それとも
if (hogeFunction()) {
} else {
die('失敗');
}
とかくのがベターなんでしょうか?
821nobodyさん:2007/04/10(火) 14:19:38 ID:???
session.use_trans_sid を"1" ブラウザをCOOKIE不可にしておいて
<?php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
echo '<br /><a href="page2.php">page 2</a>';
?>
を実行すると

hrefに?PHPSESSID=xxxx...が追加されるのはなぜ?
クッキーの読み込みをしていないのになぜブラウザの設定が分かるの?
(ブラウザをCOOKIE OKにしておくと?PHPSESSID=xxxx...は追加されない)

つか 初めての接続でブラウザのCOOKIE設定を知る方法があるの?
822nobodyさん:2007/04/10(火) 14:20:59 ID:???
>>820
そういう用途なら例外使えばいいんじゃない
823nobodyさん:2007/04/10(火) 14:28:49 ID:mS0KEdcp
>>820
!
824虚弱PHP:2007/04/10(火) 14:39:17 ID:???
>>818
O/Rマッパを使わない。

>>821
ヘッダは見てみた?
825818:2007/04/10(火) 14:49:13 ID:???
てst
826820:2007/04/10(火) 15:20:17 ID:???
>>822
例外ってcatchとかtryっていうやつですよね?
使ったことないのでよくわからないですが、
頑張って使ってみます。
827nobodyさん:2007/04/10(火) 15:30:11 ID:???
828nobodyさん:2007/04/10(火) 15:54:27 ID:???
$num=3の意味が気になる
829nobodyさん:2007/04/10(火) 16:07:31 ID:qz4cFwH4
内部コードをEUCJP、表示コードがSJISの時、
リクエストパラメータはSJISで渡ってきますよね?
1)一括してEUC-JP変換
2)処理
3)一括してSJISに変換
4)表示
とやるか、
処理する段階で逐次変換処理を入れるか、
どちらが適当でしょうか?
830nobodyさん:2007/04/10(火) 16:08:40 ID:S/LWkosg
stream_context_createでhttpsのストリームを作るのはどうすればいいですか
831830:2007/04/10(火) 16:13:03 ID:???
ごめん、ふつうにhttpsのurl指定したら出来た。
832nobodyさん:2007/04/10(火) 16:57:32 ID:???
>>829
文字コードに依存するような処理がない限りは
その例で良いと思う
833nobodyさん:2007/04/10(火) 17:00:28 ID:???
>>821
session.use_trans_sid
session.use_only_cookies

あたり
834nobodyさん:2007/04/10(火) 17:48:44 ID:???
現在、PHPでどこまでのスキルがあれば金がとれますか?
835nobodyさん:2007/04/10(火) 18:08:15 ID:???
会社なり顧客なりが金を払いたくなるようなコミュニケーション能力と人柄。
836nobodyさん:2007/04/10(火) 18:26:31 ID:GbKKaQIE
無料のantispamで設置が容易なものを教えてください
837nobodyさん:2007/04/10(火) 18:28:26 ID:???
PEAR::Text_CAPTCHA
838nobodyさん:2007/04/10(火) 18:52:01 ID:???
cronが使えないサーバで、5分おきにあるスクリプトを実行させたいのですが、
(スクリプトが全て終了するのに最長3分ほどかかります)
別ファイルで時間を記録したテキストを作成して、
そこから現在時刻とひいて5分以上だったら、
アクセスしてきた人に更新してもらおうと思ったのですが、
上記の通り最長3分間ブラウザが無応答状態になるので、迷惑ですよね。
ポップアップで裏でやるなんてのも迷惑ですし、
もっと他にいい方法ありませんでしょうか?
839nobodyさん:2007/04/10(火) 19:00:09 ID:???
>>838
自分でアクセスすりゃいいじゃん。
840nobodyさん:2007/04/10(火) 19:02:21 ID:???
>>839
寝てる間なんてムリです・・・
841nobodyさん:2007/04/10(火) 19:04:30 ID:???
webcronっていうURL叩いてくれるサービスがあるぜ
842nobodyさん:2007/04/10(火) 19:10:11 ID:???
>>841
おーこんな素晴らしいサービスがあったのですね。
知りませんでした。
これで解決しそうです。
本当にどうもありがとうございました。
843nobodyさん:2007/04/10(火) 19:19:17 ID:???
【PHP】
4丁目に引っ越してきたPHP君。
大いなる進化をとげるたびにのファンを大切にしないところが玉に傷。

【Perl】
CGI全盛期にもっとも活躍した三丁目のPerlさん。
時代とともに年をとるのか、PHPにも活躍の場を与えるえらいひと。

【Java】
いざというとき頼れるJava兄さん。
大きな事件は「いいから俺にまかせてみろ!」と豪腕な構えだ。

【HTML】
すべてはここからはじまった伝説の男HTML。
戦いの場によっては、スーパーサイヤ人の限界を超えたXHTMLに変身して活躍していると噂される。
844nobodyさん:2007/04/10(火) 19:25:57 ID:???
            _,,‐─-v‐、,,、
         ,,-‐'": : : : : : : : : : `ヽ
        /: : : : : : : ,,__ : : : : : : \
      r': ,、,,.-─''"゛   ミ : : : : : : : 'i、
       `/ /        ミ_ : : : : : : :,、}
      i l    _,,..-‐^‐-、 `゙i: : : /l.l|
      i、}‐-、 ヽ;;/,rェッ;;'"  ゙ー' 9iリ!
      |  ',tテi  ヽ='"     ゞ t'
       |  'i"´| , -、         ヽ-、,,___
       |  '}、 !,,tu'"  ヽ、  ,l: ‐-‐" }: : : : :
       }   lヽ、__,,,.-‐ヽ  /: : : : : : /|: : : : :
     ,r/  /: : :ヽー‐'  ノ: : : : : : : / .|: : : : :
     /: \ /: : : : : 丶,, -''_: : : : : : /  |: : : : :
    /: : : : :ヽ/: : : : : : : ヾ''‐--‐ヽ   |: : : : :
   /: : : : : : : : : : : : : : : : : : ヽ\: : /   |: : : : :

     ビップ=デ=ヤレー[Vuip De Yale]
         (1955〜 フランス)
845nobodyさん:2007/04/10(火) 19:57:30 ID:daN1ASwg
PDOでMySQLに接続したいんだけど、どういうわけか接続できていない。
MySQLのバージョンは5.0.22なんだけど、PHP5.1.6のPDOはサポートしてる?
教えてくれ。
846nobodyさん:2007/04/10(火) 19:58:46 ID:???
複数モジュール間での値の受け渡しで行き詰まってます。

  |(a)別のHTMLのフォームからのPOST
  ↓
+----------------+ 実行  +----------------+
| 親モジュール.php |------->| 子モジュール.php |
+----------------+      +----------------+
    ↑                 |
    └−−−−−−−−−−−┘
     (b) 親モジュールが生成するHTMLに結果を渡したい

(a)のPOSTで渡ってきたフォームのデータを、親モジュールでたとえば

  $user_id = $_POST['USER_ID']

として取って、$user_idをrequire_onceで子モジュールに渡し、子モジュールではDBからuser情報をselectします。
子モジュール内には、HTMLを出力するような処理はなく、単純にDBからのselectのみです。

次に、select結果を変数に入れ、(b)のように親モジュールが生成する
HTML上のフォームに返したいのですが、そもそものフォームへの返し方がわかりません。

希望する処理の流れを整理すると。

 (1) 静的なHTMLファイルのフォームから親モジュールにPOST
 (2) 親モジュールはPOSTされた情報を使って子モジュールを実行し子モジュール内の変数に結果を代入
 (3) 子モジュール内の変数にセットされた結果を親モジュールが生成するHTML内フォーム(HIDDEN属性など)にセット
 (4) このタイミングで、親モジュールのHTMLが出力される

という処理をやりたいと思っていますが、
どのような方法を使えばよいか、ヒントだけでもご教示いただきたく。
現状、(2)までは出来ていて、(3)の部分で行き詰まっているところです。
847846:2007/04/10(火) 19:59:55 ID:???
一部訂正します。
>$user_idをrequire_onceで子モジュールに渡し、

は、

$user_idをrequire_onceで実行した子モジュールに渡し、

という意味です。
848nobodyさん:2007/04/10(火) 20:17:38 ID:???
>$user_idをrequire_onceで子モジュールに渡し、
ここが意味わかんないです><
849nobodyさん:2007/04/10(火) 20:20:17 ID:???
IDがでてないよ
850虚弱PHP:2007/04/10(火) 20:20:37 ID:???
>>846
なにに躓いているのか分からない…。

俺だったら親がResultオブジェクトを用意して子に渡し、
子はResultオブジェクトに値を設定してリターン。
851nobodyさん:2007/04/10(火) 20:21:48 ID:???
何が分からないのか分からないのですが
普通にDBから取得した値を変数に代入するなりすればいいだけじゃないかと
852846:2007/04/10(火) 20:22:04 ID:???
>>848
わかりにくくてすみません。
まだPHPを初めて数日なものでして。。。(´・ω・`)

HTMLを生成しないPHPモジュール内の変数の内容を、
別のPHPモジュールが生成するHTMLのフォームに
渡す方法を知りたい、という感じです。
853nobodyさん:2007/04/10(火) 20:22:43 ID:???
854nobodyさん:2007/04/10(火) 20:25:43 ID:???
>>852
いやだから現在$user_idをrequire_onceを渡してるの?
できてるとこまでソース見せてくれ
855nobodyさん:2007/04/10(火) 20:26:22 ID:???
>>852
requie_onceしているだけならそのままそれが使えます
>>850の言ってるみたいにその小モジュールというのが
オブジェクト群とかでそれに渡しているのならそれを返せば良いだけ
856846:2007/04/10(火) 20:32:26 ID:???
>>850>>851>>853-855

アドバイスありがとうございます。
ソースが会社なもので、今手元にありません。
戴いたアドバイスを元に、明日頑張ってみます。
あと、ソースを支障ない範囲に加工して明日はらせていただきます。
857nobodyさん:2007/04/10(火) 21:38:43 ID:???
だめだこりゃ
858nobodyさん:2007/04/10(火) 21:40:29 ID:???
そんな程度のスキルで書かれたソースなんて誰だれがパクるんだwww
無駄な心配しなくていいよ846君
859nobodyさん:2007/04/10(火) 21:42:08 ID:???
プロだとは思えない
860846:2007/04/10(火) 21:46:19 ID:???
いえいえ、仕事はできますよ
861nobodyさん:2007/04/10(火) 21:47:05 ID:???
給料もらえてるのが、幸せだと思う
862nobodyさん:2007/04/10(火) 21:49:02 ID:???
まあそれはそれで幸せだからがんばってくれ
863nobodyさん:2007/04/10(火) 21:56:44 ID:???
session_start()もheaderと同じく何も出力される前でいいんだっけ?
864nobodyさん:2007/04/10(火) 22:06:22 ID:???
うん
865846:2007/04/10(火) 22:10:47 ID:???
>>858
すみません。
いえ、パクられるなんてこれっぽっちも思ってません。
ただ、作ってるソースをそのまま貼ったのが会社にバレると、
こんなものでも面倒になるので、ということで。。。

>>860
別に私をカタるのは構いませんが、初心者おちょくるのは楽しいですか?
866nobodyさん:2007/04/10(火) 22:12:12 ID:???
ID出さないで質問、レス記述してるのも問題じゃないの
867nobodyさん:2007/04/10(火) 22:16:03 ID:???
一応言っとくとメール欄に何も書かないとID出るから
868846:2007/04/10(火) 22:23:24 ID:???
>>866
トリップってやつを付ければいいんでしょう?
sage進行かと思って、ずっとsageをメル欄に入れてました。

トリップの付け方、勉強してきます。。。。
869nobodyさん:2007/04/10(火) 22:28:51 ID:???
もうこりゃワザとだな
870nobodyさん:2007/04/10(火) 22:33:46 ID:???
>>846

>>1をよくよみましたか?
871nobodyさん:2007/04/10(火) 22:36:53 ID:???
sage信仰なんてものは都市伝説です
sageは自演隠しのための機能ですw
872nobodyさん:2007/04/10(火) 22:39:08 ID:???
ワザとですね
873nobodyさん:2007/04/10(火) 22:41:28 ID:NUin5iQl
class Test {
  private $var;
  function __construct($arg) {
    $arg = $this->var;
  }
  function test() {
    return $this->var;
  }
}

$obj = new Test('hogehoge');
echo $obj->test();

例だとhogehogeを出力したいのですが、出力できません。
どこがおかしいのでしょうか?
874873:2007/04/10(火) 22:46:54 ID:NUin5iQl
すみません、自己解決しました。
$arg = $this->var;
ではなくて、
$this->var = $arg;の順ですね。
スレ汚し失礼しました。
875nobodyさん:2007/04/10(火) 22:47:11 ID:???
$arg = $this->var; 

この辺
876nobodyさん:2007/04/10(火) 23:21:59 ID:6hVZtA40
空メールシステムの簡単な説明サイトなどはありませんか?
877nobodyさん:2007/04/10(火) 23:22:32 ID:ywkUcui/
スイマセン 教えて頂きたいのですが PHP.iniの設定は3ファイル全部設定するのでしょうか?
878nobodyさん:2007/04/10(火) 23:28:48 ID:???
>>877
意味がわからない
3ファイルって何のこと
879nobodyさん:2007/04/10(火) 23:29:09 ID:???
>>876
PHPとなんの関係もないぞ
880nobodyさん:2007/04/10(火) 23:32:52 ID:???
>>877
php.ini-distとか-recommendedとかのこと?
881nobodyさん:2007/04/10(火) 23:38:14 ID:6hVZtA40
>>879
ごめ、普通にスレ間違えた
882nobodyさん:2007/04/10(火) 23:44:19 ID:+1UvK/Fa
テキストフォームに入力されたデータが自然数かどうか判定するために
とりあえず整数かどうかの判定をしようと思って

if( is_int($_GET["data"]) == FALSE )
 echo"エラー:入力されたデータは整数値ではありません。";

としてみたのですが、何を入力してもエラーが表示されてしまいます
なぜでしょうか?
883nobodyさん:2007/04/10(火) 23:46:47 ID:???
エラーに書いてあるとおりですw
884nobodyさん:2007/04/10(火) 23:47:39 ID:???
>>882-883
糞ワロタwwwwwwww
885nobodyさん:2007/04/10(火) 23:48:46 ID:+1UvK/Fa
???
例えば3を入力した場合
is_int($_GET["data"])の返す値はTRUEにならないのでしょうか?
886nobodyさん:2007/04/10(火) 23:52:21 ID:???
is_int()の仕様読まずにカキコ
引数が整数値じゃないとfalseじゃないの?
$_POSTの値は数値でも文字列だよ
やるならctype_digit()で
887nobodyさん:2007/04/10(火) 23:59:59 ID:???
入ってる値をint型にするのなかったっけ
888nobodyさん:2007/04/11(水) 00:01:03 ID:???
if(preg_match("/[^0-9]+/",$_GET["data"])){
echo"エラー:入力されたデータは整数値ではありません。";
}

とかは?
889nobodyさん:2007/04/11(水) 00:03:29 ID:???
なにそのゴージャスな正規表現オーバーヘッドを気にしない使い方
890nobodyさん:2007/04/11(水) 00:05:27 ID:???
マニュアルみている間に書かれたけど

>>888
が一番いいんでね?
(int)あたりでキャストしてもphpだと"50abc"でも50と判断しちゃうじゃなかった?
正規表現で判断するのが無難かと。


bool is_int ( mixed var )
与えられた変数が整数かどうかを検査します。
注意: 変数が数値もしくは数値文字列の場合 (フォームからの入力の場合は 常に文字列となります) 、is_numeric() を使用する必要があります。
891nobodyさん:2007/04/11(水) 00:06:04 ID:???
正規表現でオーバーヘッド気にしてんのか?
892nobodyさん:2007/04/11(水) 00:07:58 ID:???
/^[0-9]+$/ じゃね?
893nobodyさん:2007/04/11(水) 00:19:57 ID:ZmOxrGFo
すいませんis_intのページに
>フォームからの入力の場合は 常に文字列となります
と思いっきりかいてありましたね(´・д・`;)


もう一つ質問です
フォームに無記入で送信した時に「入力されてないよ」というエラーを出したくて

if( is_set($_GET["data"]) == FALSE )
echo"入力されてないよ";

としてみたら、データを無記入で送信したときでなく
フォームのあるページに初めてアクセスした時に既にエラーが表示されてしまいました
無記入送信した時のみに表示するにはどうしたらいいのでしょう?
894nobodyさん:2007/04/11(水) 00:27:22 ID:???
>>893
if(!is_set($_GET["data"])||$_GET['Submit'])
echo"入力されてないよ";

送信ボタンの名前は何よ?
895nobodyさん:2007/04/11(水) 00:36:36 ID:ZmOxrGFo
送信ボタンは<input type="submit" value="送信">としていたのですが
送信ボタンにもname属性記述できたのですか
896nobodyさん:2007/04/11(水) 00:53:01 ID:???
>>893
if($_GET["data"] == "") {
  echo '変数が用意されてるかどうかと中身がカラかどうかは違うよ';
}

あと、isset()のような気がする。
897nobodyさん:2007/04/11(水) 01:53:36 ID:???
issetは変数
emptyは中身
898nobodyさん:2007/04/11(水) 02:19:55 ID:???
この辺は引っかかりやすいところだけどマニュアルをきちんと読めば解決するはず
899nobodyさん:2007/04/11(水) 02:45:59 ID:wpqDaNbU
掲示板のログファイルの最終行のログのみを取り出したいんですが、
$file = file("bbs.log");
$count = count($file);
$count--;
$file[$count];

という流れが妥当でしょうか?
もっと効率のよいやり方がございましたらご教授お願いいたします。
900nobodyさん:2007/04/11(水) 03:19:04 ID:???
逆ソートして1番目とる
901nobodyさん:2007/04/11(水) 03:39:18 ID:???
メソッドの中から、自分の名前(メソッド名)を知るには
どうすればいいでしょうか?
902nobodyさん:2007/04/11(水) 03:45:38 ID:???
>>901
ネタ乙。
ネタじゃないなら>>1とちょっと前のレスを読んでから質問してこい。

903nobodyさん:2007/04/11(水) 03:49:30 ID:???
>>894
テキストボックスのエンターとかで送信されたときに
submit buttonの名前を送らないブラウザがあったと思う
904nobodyさん:2007/04/11(水) 03:52:55 ID:???
submitをCSSで画像にすると画像のどの位置がクリックされかを
POST先のページでX軸とY軸で取得できるって皆知ってた?
905nobodyさん:2007/04/11(水) 04:02:52 ID:???
「explode()で配列にし、そのn番目を返す」
これを一文で書く方法ないですか?

$a = explode('/',$str);
echo $a[1];
こういう風にテンポラリ変数を介するのではなく
explode('/',$str)[1]
のように書きたいんです
906nobodyさん:2007/04/11(水) 04:10:54 ID:???
欲しかったのは最後の要素だったのでend()で出来ました
こんな関数はじめて使った
907nobodyさん:2007/04/11(水) 04:28:41 ID:???
>>904
type="image"
908899:2007/04/11(水) 04:32:56 ID:???
>>905
おお〜それです。まさしく求めていた答えです。
905さんのやりかたに便乗します。発見してレスに残してくれてありがとうございます。
909nobodyさん:2007/04/11(水) 08:51:13 ID:???
>>901
__FUNCTION__かな
910nobodyさん:2007/04/11(水) 10:47:54 ID:KfKwGm7g
for ($i = 0; $i < n; $i++) {
do_action();
}

True/Falseを返すdo_action()をn回行います。
Trueが返ってきた数によって、処理を決めたいのですが、
その処理をどこにどのように書けばいいのでしょうか?
n回全部Trueが返ってきた場合の処理と、
1〜n-1回返ってきた場合の処理と、
n回全部Flaseが返ってきた処理を書きたいです。
911nobodyさん:2007/04/11(水) 10:59:41 ID:???
$woofoo = 0;
for ($i = 0; $i < $n; $i++) { 
 if(do_action()) $woofoo++;

if($woofoo==$n){
}elseif(0<$woofoo and $woofoo<$n){
elseif($woofoo==0){
}
912nobodyさん:2007/04/11(水) 11:00:35 ID:???
$t = 0;
for ($i = 0; $i < n; $i++) {
if(do_action()==true){$t++;}
}
if($t==0){
echo "ない";
}elseif($t<5){
echo "ある";
}else{
echo "すぎ";
}

ううう
913910:2007/04/11(水) 11:14:53 ID:KfKwGm7g
>>911-912
お二人方どうもありがとうございます。
見事にスクリプトが一緒ですねw
早速使わせていただきます。
914nobodyさん:2007/04/11(水) 11:30:55 ID:???
一緒っていうか基本中の基本。
もっとえろい書き方もできるけどロジックに忠実に(バカ正直に)書いたらこんなものになるのが普通
915nobodyさん:2007/04/11(水) 12:52:10 ID:ZybRpRjg
日付をindexにして他に4つぐらいのカラムをもたせたMySQLを,月単位で一括編集するphpを書いています.
今,編集したい月と年を受け取って,その月の各フィールドに対する情報を入れるためのフォームをphpで出力しようとしているのですが,
"SELECT * FROM schedule WHERE DATE_FORMAT('date', '%Y-%m') = " . 年 . "-" . 月;
というクエリを送って,その結果をmysql_fetch_assoc()しても
まだ何もデータを入れていないせいだと思いますが,FALSEを返します.
各フィールドにデータが入っていてもいなくても,その月の日数分だけ処理を実行するにはどうすればよいですか?
916nobodyさん:2007/04/11(水) 12:56:56 ID:???
日本語でおk
917nobodyさん:2007/04/11(水) 13:03:31 ID:???
>>915
まずどこまでできたのかコードを晒せ。1から聞きたいのなら丸投げスレへ
918nobodyさん:2007/04/11(水) 13:11:45 ID:???
>>915
mysql_fetch_assoc()でfalseが戻ったら
目的の処理をするように
PHPで記述すればいいだろ。
919nobodyさん:2007/04/11(水) 13:15:29 ID:???
なんという要領を得ない質問・・・この人は間違いなく初心者

まだデータはないけど動作確認のために編集処理したいってこと?
0件ならFALSEが返ってきて当然だけど、どう動作してほしいの?
サンプルデータを入れるなり、新規登録フォームを作って入れるなりすりゃいいじゃん
920915:2007/04/11(水) 13:48:33 ID:ZybRpRjg
仰る通り初心者です.MySQLとか初めてです.
昨日始めて,やっとまともに接続できるようになりました.
要領を得ない質問ですみません.

これは簡易スケジュール帳なんですが,なんでこんな処理をしたいかというと,
既にその日のスケジュールが定義されている場合は,フォームのvalueに既に入ってるスケジュールを表示して,
定義されてない場合でも,その日のスケジュールを編集するためのinputタグを出力したいからなのですが.
921nobodyさん:2007/04/11(水) 13:50:58 ID:???
if(定義されてない場合でも){その日のスケジュールを編集するためのinputタグを出力したいからなのですが.}
if(mysql_fetch_assoc(なんたら) ==false){echo '<form>.................';}
それだけの話しだろ
922nobodyさん:2007/04/11(水) 13:53:34 ID:???
うんやりたいことをそのままロジックに落とせばいいだけの話なんだけども。
その中で処理の仕方や書き方が分からなかったら質問してくれれば良い。
DBというよりプログラムの問題だよね。卒研かなんかですか?
923nobodyさん:2007/04/11(水) 13:56:10 ID:???
>>920
言いたい事はわかるが上でみんながいっているようにphpで処理させるだけ。
問題はphpでどこまで出来ているのかということ
924nobodyさん:2007/04/11(水) 13:58:02 ID:???
>>920
inputタグのvalueプロパティをDB格納値にするか、
空欄にするか、ってことでしょ?

>>922の言うように、
自分のやりたいことをナンバリングしながら
順を追って説明する文章を書けば、
90%くらいはできあがると思われ。
925nobodyさん:2007/04/11(水) 13:59:05 ID:???
携帯サイトで掲示板を作っているんですが、
先にコメントなどを書かせて、
2ページ目でメールで画像を送ってもらう際、本文にIDをつけてDBと認証
投稿完了としたいんですがPHPで実現可能でしょうか?

ここみたいな感じです。
http://megaview.jp
926nobodyさん:2007/04/11(水) 14:01:36 ID:???
IDだけで認証してええのん?
927nobodyさん:2007/04/11(水) 14:02:48 ID:???
>>925
できる
928nobodyさん:2007/04/11(水) 14:12:36 ID:aJnUgs6a
質問です。
外部に公開しているWebサーバでドキュメントルート以下に置いたスクリプトを
ローカルからのみアクセスできるようにするにはどうすればいいですか?
929915:2007/04/11(水) 14:15:03 ID:ZybRpRjg
素早いレスありがとうございます.
もうちょっと煮詰めます.卒研とかでは全くなく,サークルのサイトをリニュしろと言われて、、
930nobodyさん:2007/04/11(水) 14:15:03 ID:yUjB1srR
プログってライブドアが最初に作ったのですか?
931nobodyさん:2007/04/11(水) 14:15:40 ID:???
>>928
>ローカルからのみ
この意味が不明
ローカルホスト(たとえば127.0.0.1)でのみって言う意味か?
それともプライベートネットワーク経由という意味か?
932nobodyさん:2007/04/11(水) 14:16:36 ID:???
>>928
ディレクトリのオーナーとPermission変えとけwww


>>930
んなわきゃない。
933nobodyさん:2007/04/11(水) 14:16:58 ID:aJnUgs6a
ローカルホストからという意味です。
そのWebサーバが動いているPCからのみアクセスできたらと考えています。
934nobodyさん:2007/04/11(水) 14:19:39 ID:???
>>928
192.168.*
三番目の*に当てはまる数字は環境によって違うからipconfigでデフォルトゲートウェイみて記入しろ

間違っても192.168.*.*と4つ数字はかくなよ
935nobodyさん:2007/04/11(水) 14:20:49 ID:???
じゃあスクリプトの頭に
if($_SERVER["REMOTE_ADDR"]!='127.0.0.1') {die();}
つけときなさい。
httpd/.htaccessの設定で
deny from all
allow from 127.0.0.1
でもいいけど。
936nobodyさん:2007/04/11(水) 14:23:59 ID:???
昼下がりに、こんにちは。

phpに任意のサイト丸ごとを保存させたいのですが
読み込んでも普通はhtmlソースだけですよね?

html内の画像のurlを拾って同じフォルダ構成にしてバイナリ保存して…
ではなくて何かmht的なスマートなものはあるんでしょうか?
937nobodyさん:2007/04/11(水) 14:28:12 ID:???
なぜ PHP mht でグーぐるを検索しないのか
938925:2007/04/11(水) 14:29:08 ID:???
>>926-927さん
変レス有難うございます。

メールで送られたものを自動で取得
これはPHPでできるのでしょうか?
自動がどうやるのか思いつきません。
IDはハッシュ値かなんかで認証しようと考えています。
939nobodyさん:2007/04/11(水) 14:33:06 ID:???
>>938
.forwardでphpスクリプト動かせばいいんじゃないの?
940925:2007/04/11(水) 14:37:06 ID:???
>>939さん
kwskお願いします!!
941nobodyさん:2007/04/11(水) 14:42:45 ID:???
初回でIDださないやつに回答するの控えない?
942nobodyさん:2007/04/11(水) 14:43:03 ID:???
>>940
PHP自体の話題じゃないから、.forward スクリプト とか mail alias スクリプトあたりで検索してみて。
ピント来ないのであれば、.forwardやメールaliasでよく使われるprocmailと一緒に検索。
.forward procmail とか。そこらへんからなにをやってるのか糸口をつかもう。
943nobodyさん:2007/04/11(水) 14:43:45 ID:???
>>941
ああごめん。回答しちゃったw
944925:2007/04/11(水) 14:48:34 ID:???
>>942
ご丁寧にありがとうございますm(_ _)m
サーバーサイドは無知ですので書籍等も探してみたい思います。

>>941
マニュアル人間!
945925:2007/04/11(水) 14:54:43 ID:???
>>941
しねよカス。

>>943
えっと、ググってみましたがいまいちよくわかりません。
もう少し詳細に教えていただけませんでしょうか?

>>944
偽者やめてください・・・
946925:2007/04/11(水) 15:06:45 ID:???
偽者とかウザいのでもういいです。
947nobodyさん:2007/04/11(水) 15:19:11 ID:???
|ω^)
948nobodyさん:2007/04/11(水) 15:30:56 ID:???
お互い気持ちよく使うために質問者はID表示のご協力お願いします。
949貴之:2007/04/11(水) 16:07:05 ID:1U3tdNyu
ルートディレクトリの下を定数"ROOT_DIR"に入れる場合は
define ("ROOT_DIR", realpath( dirname(__FILE__) . '/..' ).'/' );
となると思うのですが、
ルートディレクトリの上を定数にするにはどうしたらいいでしょうか?
950nobodyさん:2007/04/11(水) 16:11:42 ID:???
貴之くんはぐぐるって言葉を覚えてからきてね
951nobodyさん:2007/04/11(水) 16:25:39 ID:???
顔みたい '/..' ).'/' )
952nobodyさん:2007/04/11(水) 16:36:47 ID:???
banzai("__FUUN__",ヽ(´ー`)ノ);
953貴之:2007/04/11(水) 16:50:59 ID:1U3tdNyu
>>949
既にぐぐりました!
ID出すとかきちんとルールは守っていますので。
口が悪くてすみません。
でも教えてください!
954nobodyさん:2007/04/11(水) 16:52:36 ID:???
何歳ですか?
955nobodyさん:2007/04/11(水) 17:14:42 ID:aPlJaTQ1
PHP 4.3.9を利用しております。
os redhat es4 です

メールから受け取った文字列をPHPで処理してDBに格納するといったことをやりたいのですが、
mb_convert_encodingでのコード変換が上手くいきません。
いろんなサイトを見て回って教科書どおりだと思うんですが、なんで上手くいかないのでしょうか。

サンプルコード
==========================================================
#内部文字コードを表示
echo "internal=".mb_internal_encoding();
#受け取った文字列の文字コードを表示
echo "\n$mail['subject']=".mb_detect_encoding($mail['subject']);
#文字コードを変換
$test = mb_convert_encoding($mail['subject'],mb_internal_encoding(),mb_detect_encoding($mail['subject']));
#変換後の文字列の文字コードを表示
echo "\nafter convert=".mb_detect_encoding($test);


[結果]
internal=EUC-JP ⇒現在の文字コード
Array['subject']=JIS ⇒文字列の文字コード
after convert=SJIS ⇒変換後の文字コード
==========================================================
956貴之:2007/04/11(水) 17:23:27 ID:1U3tdNyu
>>954
14です。
解答お願いします。
ググるワードでもいいのでお願いします。
ルートディレクトリ 上
くらいしか考えられなかったです。
957nobodyさん:2007/04/11(水) 17:48:00 ID:???
>>956
define('ROOT_DIR', dirname(dirname(__FILE__)) . '/');
define('ROOT_DIR_UP1', dirname(ROOT_DIR) . '/');
958nobodyさん:2007/04/11(水) 18:11:00 ID:???
>>955
mb_convert_encodingは正確に指示通りconvert出来るかどうか別だから、
mb_detect_orderをセットして優先順位を決めてからやってみたら?
959貴之:2007/04/11(水) 18:37:42 ID:1U3tdNyu
>>957
できました!
ありがとう
960nobodyさん:2007/04/11(水) 19:24:32 ID:zI9N6jIn
PHPで質問です

Aさん,10 Cさん,5 Bさん,-5 Dさん,-10
Dさん,8 Cさん,2 Eさん,-2 Fさん,-4
Bさん,9 Gさん,3 Hさん,-1 Cさん,-11

と、こんな感じで「名前,点数 (タブ区切り) 名前,点数 〜〜」
というデータが書かれたtsvファイルがあります。

これを

1位 Aさん 10点
2位 Bさん 4点
    ・
    ・
    ・

という具合に、順位とそれぞれの点数を全部加算して出力したいのですが、
よい実装方法が浮かびません。

あらかじめtsvファイルから名前だけを抜き出して重複チェックをし、
それを別のファイルに書き出しておく。
tsvファイルを開いてfileで配列にいれ、
foreachで回して、別ファイルに書き出した名前でひっかかった点数だけを抜き出して加算していく。
加算した点数と名前をまた別ファイルに書き出していく。
そして最終的にそれをソートし・・・

ってな具合かなと思ってるんですが、
もっとスマートな方法がありそうなので、質問してみました。
961nobodyさん:2007/04/11(水) 19:33:16 ID:???
>>960
DBに突っ込んでSQLで集計。
962nobodyさん:2007/04/11(水) 19:38:44 ID:???
>>960
ファイルを読みながら、名前をキー、点数を値にして配列を作る。
キーが既に存在したら点数を加算するだけ。
最後に配列をソート。
963nobodyさん:2007/04/11(水) 20:16:06 ID:zNlK5rg/
質問です。
http://aaaaaaaa.ddo.jp:8080
などのWMEの配信が
今放送しているかどうかをチェックしたいのですが
どういう方法がいいんでしょうか?
お願いいたします。
964nobodyさん:2007/04/11(水) 20:17:27 ID:???
includeして接続できるか0と1で返して判断するぐらいしか思いつかん
965960:2007/04/11(水) 20:43:06 ID:zI9N6jIn
>>961
レスありがとうございました。
確かにそうなんですけどね><
今回ちょっと使えないんです…

>>962
レスありがとうございました。
今ちょっとやってみたんですが、うまいことできそうです。
名前をキーにするっていう発想がなかったです…
966nobodyさん:2007/04/11(水) 21:00:20 ID:zNlK5rg/
>>964
incやfopenでもFalseでした…
うーん
967nobodyさん:2007/04/11(水) 21:01:28 ID:???
しかし960と962の文章を比べるとその差が歴然としてるな
968960:2007/04/11(水) 21:06:34 ID:zI9N6jIn
>>967
傷口を広げないで下さい><
969nobodyさん:2007/04/11(水) 22:07:13 ID:???
PHPで質問です
<?php
$a = '?';
$b = 'か';
$c = 'し';
$d = 'ま';
$e = 'す';
$f = '週';
$g = '回';
$h = 'H';
$i = '何';
echo $f .$i .$g .$h .$c .$d .$e .$b .$a;
?>
970nobodyさん:2007/04/11(水) 22:12:47 ID:???
>>969
7*3
971nobodyさん:2007/04/11(水) 22:20:59 ID:???
>>969
echo mt_rand(10, 2000);
972nobodyさん:2007/04/11(水) 22:54:58 ID:???
print empty($_GET['manko']);
973nobodyさん:2007/04/11(水) 23:04:55 ID:???
>>29 とりあえず、こんなのでいいんじゃね?

12のPHP最適化テクニック
ttp://phpspot.org/blog/archives/2006/11/12php.html

01. staticメソッドが使えるなら使おう。速度は4倍になる
02. __get, __set, __autoload は使わない
03. require_once は重い
04. include, requireで読み込むファイルはフルパスにしよう
05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10. $row['id'] は $row[id] より7倍速い
11. PHPのエラーメッセージは重い( noticeとかwarningとか)
12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。

(参考)
PHPの最適化は本当か?
ttp://jigen.aruko.net/archives/433/

PHPのパフォーマンス改善
ttp://selfkleptomaniac.org/archives/45

■最適化にまつわる神話
1. コメントをなくすと速くなる
2. ダブルクォート(”)はシングルクォート(’)より速い
3. 参照渡しの方がコードが速くなる
4. オブジェクトを使う方が速くなる
5. タナリ($a = 1 ? $b = $a : $b = 0;)はif(){}else{より速い
これらは全部嘘です。
974nobodyさん:2007/04/11(水) 23:39:07 ID:???
正規表現で0〜100までと指定したい場合、どうすればいいでしょう?
これでは無理でした。
[0-100]
以下だとできるんですがスマートではないです。
100 | [1-9][0-9] | [1-9]
975nobodyさん:2007/04/11(水) 23:47:02 ID:???
[0-9]{1,3}
976nobodyさん:2007/04/11(水) 23:50:28 ID:???
>>973
ちなみにphp-5.2.1にて俺が取ったベンチだと
str_replaceが最速

ttp://www.uploda.org/uporg771139.gif.html
977nobodyさん:2007/04/11(水) 23:52:34 ID:???
>>975
それだと101以上や0で始まる数字もマッチしちゃうんじゃないかな
てかintvalして普通に比較した方が
978nobodyさん:2007/04/11(水) 23:55:49 ID:???
>>975
101〜999かかるんじゃない?
979nobodyさん:2007/04/12(木) 00:04:54 ID:???
>>973
釣られておくけど、その記事のTIPSは
いくつかを除いて重箱の隅レベルのパフォーマンス改善だし
これを使えあれを使うな系はケースバイケースのものが多いし
正直あまり良くないと個人的には思う
初心者に誤った先入観を持たせるような気がする
980nobodyさん:2007/04/12(木) 00:07:58 ID:???
>>976
うほっ!
原文読んだら、反対なのねん!
>str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4

>>979
俺も思う。だからテンプレに入れるべきじゃないと思うんだよね…。
981nobodyさん:2007/04/12(木) 00:12:30 ID:???
初心者向けのこのスレのテンプレに入れるならこんな感じだよな。
「Q:処理が重いです A:コードを整理して無意味なコードやループを無くせ」
982nobodyさん:2007/04/12(木) 00:20:36 ID:???
>>973
> 01. staticメソッドが使えるなら使おう。速度は4倍になる
そんなもんクラス設計によりけりだから
> 02. __get, __set, __autoload は使わない
使うと便利になるケースめちゃくちゃあるだろアフォかおまえは
> 03. require_once は重い
分かるけどコードキャッシュなりなんなりで解決すべきで
コーディングで対処するものではないのでは
> 04. include, requireで読み込むファイルはフルパスにしよう
これも誤解を招く書き方
> 05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
ふんふん、それでそれで?
> 06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
微妙
> 07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
これはまあベンチの話だし的は外してない
> 08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
ケースバイケース
> 09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
これは俺もあまりおすすめしない
> 10. $row['id'] は $row[id] より7倍速い
それnoticeちゃうんかと
> 11. PHPのエラーメッセージは重い( noticeとかwarningとか)
じゃあおまえはもうerror_reporting(0)でずっとコーディングしてろこのハゲ
> 12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。
どっちでもいーよ死ね

こんな感じだろ?実際
983nobodyさん:2007/04/12(木) 00:23:33 ID:???
>これはまあベンチの話だし的は外してない
>>980
984nobodyさん:2007/04/12(木) 00:24:28 ID:???
>>981
「A:気にしない。気になるんだったら頑張れ」ぐらいでもよさそう。

俺は>>7(or >>973)要らないと思うよ。
985nobodyさん:2007/04/12(木) 00:26:44 ID:???
>>983
TIPS的にどうかって意味合いでしか書いてねーし
実際ベンチの結果なんてしるかよw
鬼の首取った気で嬉しかったのか?ww
986974:2007/04/12(木) 00:39:31 ID:???
>>977さん
IPチェックしたいのでその方法はあまりきれいじゃないかなあと
'/^210\.121\.3\.([0-9]|[1-9][0-9]|1[0-9][0-9] |2[0-4][0-9]|25[0-5])$/'
こんな感じしか無理ですか?
987nobodyさん:2007/04/12(木) 00:42:37 ID:???
もう、0≦χ≦100でいいじゃん
988nobodyさん:2007/04/12(木) 00:54:19 ID:???
>>986
$ip = explode(".", $_SERVER["REMOTE_ADDR"]);
$chk_ip1 = sprintf("%d.%d.%d", $ip[0], $ip[1], $ip[2]);
if($chk_ip1 == "210.121.3" && ($ip[3] >= 0 && $ip[3] <= 100)){
echo "ok";
}
989nobodyさん:2007/04/12(木) 01:06:50 ID:???
>>985
それを言ったら、最適化のTIPSであって
コードが読みやすくするTIPSではないから
>>982のいくつかは的外れだぞ
990nobodyさん:2007/04/12(木) 01:27:46 ID:???
2ちゃんにのるようなテンプレって自演で作者がからんでるよね。
991nobodyさん:2007/04/12(木) 01:49:43 ID:???
classの中で自身のクラス名はどうやって取るのでしょうか?
992nobodyさん:2007/04/12(木) 01:50:50 ID:???
__CLASS__
993nobodyさん:2007/04/12(木) 01:53:03 ID:???
ありがとう御座います、できました
994nobodyさん:2007/04/12(木) 02:11:26 ID:???
プロファイリングして、時間のかかってる箇所の
上位2つくらいの処理を見直すだけでずいぶん速くなることはよくある。
パフォーマンス最適化のTIPSなんてバカらしくなる。
995nobodyさん:2007/04/12(木) 02:38:09 ID:???
>>994
そのためにも普段は見通しの良いコードを書くことを心がけるべきで、
パフォーマンス最適化TIPSみたいな小手先のテクニックを使って
コードが読みづらくなるのであれば、そのような愚は避けるべきだ。
そういうTIPSは最適化の時に考慮してやればいいだけの話だ。
996nobodyさん:2007/04/12(木) 05:28:35 ID:???
>>706
SHA1って非可逆なの?cryptよりもいいの?
997nobodyさん:2007/04/12(木) 05:51:21 ID:???
>>982
せっかくのテンプレ案なんだから、否定するだけじゃなくて改良しようとかポジティブなほうにそのパワーを使えばいいのに・・
998nobodyさん:2007/04/12(木) 06:57:36 ID:???
改変してスレ立てsればおk
999nobodyさん:2007/04/12(木) 08:09:41 ID:???
999ならPHP6がニューリリース
1000nobodyさん:2007/04/12(木) 08:10:12 ID:???
1000なら皆エラー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。