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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2007/04/01(日) 04:21:50ID:VGqlLhlD
まず読め→【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
0002nobodyさん2007/04/01(日) 04:23:02ID: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/
0003nobodyさん2007/04/01(日) 04:24:32ID:???
【PHP】下らねぇ質問はここに書き込みやがれ 42
http://pc11.2ch.net/test/read.cgi/php/1174217841/
0004nobodyさん2007/04/01(日) 04:25:03ID:???
関連リンク
■本家マニュアル   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/
0005nobodyさん2007/04/01(日) 04:25:36ID:???
【簡易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プログラムとして実行された結果になる。
0006nobodyさん2007/04/01(日) 04:26:38ID:???
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に保存?
 → 好きにしてください
0007nobodyさん2007/04/01(日) 04:27:09ID:???
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/
0008nobodyさん2007/04/01(日) 04:32:07ID:???
    ゝ 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 '"  ヽ   | : . : |
0009nobodyさん2007/04/01(日) 04:56:25ID:???
>>1
echo "乙";
0010nobodyさん2007/04/01(日) 05:59:05ID:???
10get
0011nobodyさん2007/04/01(日) 06:21:07ID:???
てst
001212007/04/01(日) 06:22:21ID:VGqlLhlD
スレ立て終わって元スレに連絡しようと思ったら何故かアク禁に巻き込まれた

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

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

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

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

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

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

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

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

それにしても携帯用ってややこしいですね・・。
これまで作ったクラスファイルはすべてEUCなのですが、
携帯ではShift-JISじゃないと駄目みたいなので、文字化けしまくりです・・。
0041nobodyさん2007/04/01(日) 19:42:24ID:???
出力時にSJISに変換すればいいだけだろ
0042nobodyさん2007/04/01(日) 20:37:16ID:???
ぐぐってもよくわからなかったのですが、セッションIDって
ランダムの文字列を生成するのですよね?
その文字列を保持してsession_start();で有効にするとか。
0043nobodyさん2007/04/01(日) 20:46:11ID:???
>>42
お前も「初めてPHP入門」みたいな本かって半年勉強しろ
0044nobodyさん2007/04/01(日) 20:48:46ID:???
>>前スレ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/
0045nobodyさん2007/04/01(日) 22:25:03ID:???
>>37
1.MySQLが立ち上がっているか
2.socket が /var/lib/mysql/mysql.sock に存在するか
3.MySQLへのアクセス許可がちゃんと行われているか

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

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

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

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

俺言ってること的外れ?
0055nobodyさん2007/04/02(月) 02:35:51ID:???
最高に行き詰りました。どなたかアドバイス願います。
ファイルを二つ用意します。一つは設定ファイル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 を使っています。

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

$wlog=fopen("comment.txt","a");
flock($wlog, LOCK_EX);
fputs($wlog, $wdata);//$commentlogの最初の行に$dataを追加
flock ($wlog, LOCK_UN); //ファイルロック解除
fclose($wlog);//ファイルを閉じる
0061nobodyさん2007/04/02(月) 05:33:58ID:????2BP(396)
//$commentlogの最初の行に$dataを追加
このコメントはただのミスです。
0062nobodyさん2007/04/02(月) 05:42:27ID:???
>>60
ttp://www.php.net/manual/ja/function.fopen.php
0063nobodyさん2007/04/02(月) 06:39:09ID:????2BP(396)
>>62
無理なようですね・・・・・・ありがとうございました。
0064nobodyさん2007/04/02(月) 09:10:21ID:???
>>63
w+かr+で一旦全部読み込んで先頭行から書き出しなおせば出来るがな。
0065nobodyさん2007/04/02(月) 09:41:31ID: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もどき使うにはどうすればいい?
ロック用ファイルでロックして囲うのかな でもどこをどう囲えばいいのかよくわかんないんで教えてください
0066nobodyさん2007/04/02(月) 11:42:52ID:???
>//アクセスをトリガにcronぽい処理をする
にもかかわらず、「同時」を心配して、それをトリガー後の処理で
あれこれ考えるいうロジック自体を再検討すべきでしょう。
0067nobodyさん2007/04/02(月) 12:09:27ID:???
多少PHPに関係する質問です。

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

ものすごい勢いで誰かが無料サーバを探してあげるスレ7
http://pc11.2ch.net/test/read.cgi/hosting/1170323123/l50
0069nobodyさん2007/04/02(月) 13:35:55ID:???
>>68
ウザ・・・
もういいよ
0070nobodyさん2007/04/02(月) 13:46:24ID:???
例えば.NETでは正規表現オブジェクトを初期化したときにコンパイルされてバイトコードに変換されるらしいんですが、
PHPではそういった類の最適化はなされてるんでしょうか?
それともループ中で同じ正規表現を使用した場合、毎回解析されるんでしょうか?
0071nobodyさん2007/04/02(月) 13:48:27ID:???
( ´,_ゝ`)プッ
0072nobodyさん2007/04/02(月) 13:56:47ID:???
>>70
PHPの文法に正規表現リテラルがないし(インタプリタは正規表現を知らない)、
関数に正規表現文字列を渡す実装だから毎回解析じゃないのかな。
0073702007/04/02(月) 14:09:15ID:???
>>72
なるほど、やっぱりそうですよね。
もしかしたら言語側で特別扱いしてる可能性もあるかもなーと思ったんですが。
どうもでした。
0074nobodyさん2007/04/02(月) 16:31:34ID:???
PCREライブラリ的にはコンパイルした正規表現を保持することも可能。
実装を読んでみないとなんとも。読む気は無いけど。
0075nobodyさん2007/04/02(月) 18:26:46ID: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を利用したサンプルはいくつも出てくるんだが。
0076nobodyさん2007/04/02(月) 18:34:07ID:???
>>75
CURLを使うのがお手軽
0077752007/04/02(月) 19:00:55ID:???
>>76
ttp://phpdoc.makizou.com/ref.curl.html

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

$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);
0079nobodyさん2007/04/02(月) 19:40:02ID:???
>>76
サンプルソースまでご丁寧にありがとうございます。
助かります。
0080nobodyさん2007/04/02(月) 19:54:36ID:???
>>79
それってどういう目的に使うの?
0081nobodyさん2007/04/02(月) 20:31:39ID:???
画像のアップローダを作成したいと思っていますが
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/からは削除します。


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

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

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

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

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

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

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

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

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

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


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

pregみたいに'//'はいらないみたいですよね?
[^!-~]単体でうまく動いてない見たいなんですけど、どんな感じに書けばいいのでしょうか?
0112nobodyさん2007/04/03(火) 09:05:15ID:???
>>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 になっているので、わからなければいじらないこと。危険です。

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

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

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

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

echo $row["comment"];

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

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

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

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

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

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

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

ドット演算子だと

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

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

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

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

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

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

php extensionとしてphpの関数に含める
・Cで書く
0163nobodyさん2007/04/03(火) 21:43:42ID:???
>>159-160
ワロタ
0164nobodyさん2007/04/03(火) 21:46:37ID:???
別に笑うところじゃないよ
0165nobodyさん2007/04/03(火) 21:49:35ID: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]を見ると
コンマの後ろの文字列までマッチしてしまいます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16歳、工業高。

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

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

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

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






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

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

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


「なんか」で変換すると「男か」ってでるな
0216nobodyさん2007/04/04(水) 01:48:18ID:????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']){
0217nobodyさん2007/04/04(水) 01:54:35ID:???
>>215
その5分が2秒に劇的改善した処理ってどんなのなの?
0218nobodyさん2007/04/04(水) 02:24:38ID:???
>>216
あなたがページを表示したとする。
あなたはname="delradio" value="5"のカキコを削除したいと思った。(削除ボタンはまだ押していない。)
と、ここで他の誰かが割り込んで、name="delradio" value="4"のカキコを削除した。(削除ボタンを押した。サーバ側で削除処理も完了した。)
あなたは削除ボタンを押した。

あなたは目的のカキコを削除できる?
たまたまじゃなくて必ず削除できる?
0219nobodyさん2007/04/04(水) 02:29:03ID:???
>>209
格納した順というか、リソート機能ならPHPMyAdminで一発で出来るし
自前でやるとしても簡単なコードで出来るでしょう。
オートインクリメントしてるなら、それでソートすればいいんじゃね?
もっともこれはPHPMyAdminみたいな、基本ORDER BY付けないGUIで見るときに見やすいとかだけで
普通にDBから検索する場合、大抵はORDER BYつけるしリソートすること自体あんまり意味無いと思うが。
0220nobodyさん2007/04/04(水) 02:59:00ID:????2BP(396)
>>218
ファイルロックをしないといけないということですよね。
後程完成品をアプしますのでまたお気づきになった点を
ご指摘いただければありがたいです。
0221nobodyさん2007/04/04(水) 03:08:41ID:???
ファイルロックはもちろん必要だが、どう見てもそれ以前の問題だろ。
まぁいいやコードが有れば話もしやすいだろうし。
0222nobodyさん2007/04/04(水) 03:19:14ID:???
>>189で既に指摘されてることやん・・・
0223nobodyさん2007/04/04(水) 03:21:56ID:???
>>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の行じゃなかったのか?
というのが問題。わかったかな。
0224nobodyさん2007/04/04(水) 03:25:12ID:????2BP(396)
あーなるほど・・・・・・
と言う事は結局削除文字列代入しか無理と言う結論に?・・・・・・・・・
しっかしよくスレッドフローティング方式の掲示板とか作れますね、
作ってる方尊敬しますわ。

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

ファイル構成は
本体.php
reference.txt
comment.txt
です。
0225nobodyさん2007/04/04(水) 03:26:46ID:????2BP(396)
>>221さんを見てやっと気がついたんですが
いろいろご解説頂いて本当にすいません。
マジすいません。
0226nobodyさん2007/04/04(水) 03:39:33ID:???
>>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はファイルに記録せずにいちいち数える
要件にもよるけどこれで十分処理が間に合う場合がけっこうある
0227nobodyさん2007/04/04(水) 03:50:19ID:????2BP(396)
な、なるほど初心者には結構複雑な事をしなきゃいけないんですね。
IDとSEQに同じように番号を割り振ったとしても
ID側は歯抜け数字列になっても
SEQ側はきれいな数字列に直されると。
要するにID側をvalueに割り振れば問題解決ですか。
0228nobodyさん2007/04/04(水) 03:54:46ID:????2BP(396)
すいません、複雑でもないですね。
とりあえずナンバーをまた採取するようにして
それをIDにしてladioに代入します。
結局、素人の私がナンバーを振り直したいとか
訳わからん事言わなければ普通に解決してた問題なのですね・・・・・・
0229nobodyさん2007/04/04(水) 05:11:36ID:???
各レコードに削除フラグをつけたらどうでしょ
処理が増えるようだけど172さんにとってはすっきり書けるような気がする
通番用にはそれの変数一つ増やすだけだし
あと“何が”削除されたのか後で管理者が分かるのもメリットと言えばメリット

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

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


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

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

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

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

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

collation server latin1_swedish_ci
の値を
collation server utf8_general_ci

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

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

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

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

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

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

そうではなくてPHPファイル(test.phpなど)のHTMLの部分は表示されていて
プログラム実行箇所は○秒遅れたら良いのです。
0268nobodyさん2007/04/04(水) 20:40:21ID:???
質問です。
今、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");
?>
0269nobodyさん2007/04/04(水) 20:44:00ID:???
>>267
ob_
0270nobodyさん2007/04/04(水) 20:44:58ID:???
つうかPHPはサーバーサイドスクリプトだぞ
02712682007/04/04(水) 20:51:35ID:???
質問に間違いがありました。各ファイルは以下の通りです。

(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です
0272nobodyさん2007/04/04(水) 20:57:02ID:???
>>271
内部コードは?
テンプレートはもちろんEUCなんだよな?
ブラウザの文字コード変換で適当に変えて何のコードになってるか分かる状態か?
0273nobodyさん2007/04/04(水) 21:00:51ID:???
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の出力だと関係ないんでしょうか?



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

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

$o_smarty->register_outputfilter('s_outputfilter');

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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


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

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


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

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

0319nobodyさん2007/04/05(木) 00:21:44ID:???
なにが?
0320nobodyさん2007/04/05(木) 00:27:29ID:???
>>318
試してみたら右辺が変数でも同じだったよ。
まあ、どちらにしろあまりいい仕様ではないね
0321nobodyさん2007/04/05(木) 00:29:04ID:???
なんで?
03223122007/04/05(木) 00:36:05ID:???
>>320
みたいだね。
$a = 1;$b = 0;
if(!$a = $b) {
echo $a;
}
で 0 が出力結果になるな。
03233012007/04/05(木) 00:47:30ID:???
>>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]に→この部分←が入るような形になればありがたいのですが…
0324nobodyさん2007/04/05(木) 00:58:55ID:???
>>301
ネストをきれいに表現してる正規表現のサンプル見たことあるな。
元レスから判断するけどn番目のテーブル全体が欲しいんだったら
対応する括弧を見つけるロジックでいいんじゃないのか。
0325nobodyさん2007/04/05(木) 01:03:13ID:???
>>301
下手に正規表現使って一発判定するより、tableタグのペアがあるかだけ確認して再帰にしたほうがラク
03263012007/04/05(木) 01:29:36ID:???
どうもすみません
正規表現は前に何度も躓いていますし、なんか自分でも無理かと…

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

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

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

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

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

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

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

0358nobodyさん2007/04/05(木) 14:46:06ID: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
03593392007/04/05(木) 14:46:53ID:???
↑339です
0360nobodyさん2007/04/05(木) 14:58:52ID:???
>>857

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

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

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

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

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

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

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

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

PHPとMySQLの文字変換の関係って言われても
答えとしては、自分がPHPとMySQLでやろうとしてることに
一番いい設定を選べばエエやん?って感じ。
03723392007/04/05(木) 16:20:25ID:ln1txq/N
あわわ・・・
逃げに走って、sendつかわなくていいフォームさがしてう
0373nobodyさん2007/04/05(木) 16:35:54ID:???
ある連想配列の要素全てに htmlspecialchars をかけたい場合、
簡単にする方法はないでしょうか?
0374nobodyさん2007/04/05(木) 16:35:56ID:???
>>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設定して、
>自分でちゃんと文字コード管理するのがよさげ。
こっち
0375あきら2007/04/05(木) 16:40:24ID: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)を使う方法を教えてください。
宜しくお願いします。
03763552007/04/05(木) 16:43:30ID:???
>>366
>>371
>>374
レスありがとうございます。

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

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

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

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

日本語怪しかったらスミマセン
お願いしまッス!
03803392007/04/05(木) 16:46:37ID:ln1txq/N
鯖を変えてみた。
http://0web.cjb.net/
うごく・・・し、送れるんだけど鰓がでるお。。
Notice: Undefined variable: err_message in
0381あきら2007/04/05(木) 17:01:57ID: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');");
です。
宜しくお願いします。
0382nobodyさん2007/04/05(木) 17:04:36ID:???
Smartyいじってるんですけど、こんなエラーがでました。
Warning: Smarty error: unable to read resource: "menu.tpl" in C:\php\include\SMARTY\libs\Smarty.class.php on line 1095
正直Smartyにエラーが出るなんて想像もしてなかった
1000行も見返して問題チェックなんてする気にならないというか、
変にいじったら予想外の部分にまで後々障害出そうで怖いんですが、、
皆さんこういうトラブル発生しましたか?
0383nobodyさん2007/04/05(木) 17:04:45ID:???
>>381
Postgresの質問だろ?
0384nobodyさん2007/04/05(木) 17:05:29ID:???
>>380
少し黙ってろお前の口調うざい
0385nobodyさん2007/04/05(木) 17:06:38ID:???
>>382
その文章まず読めよ
0386nobodyさん2007/04/05(木) 17:08:56ID:???
>>380
$err_message使ってないみたいだから174行目削除
0387あきら2007/04/05(木) 17:12:49ID:jUd/uPxe
>>383
サーバーサイドプログラミング関連の話題を扱っています。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

いいんですよ効率悪くても。このやりかたで不満をもって自分で効率のよいコードがかけるようになりなさいな
0434nobodyさん2007/04/06(金) 03:47:19ID:???
大文字やら小文字やらこだわる前に
まず魅力あるコンテンツを作れるようになろうぜ
0435nobodyさん2007/04/06(金) 04:03:19ID:???
魅力のないレスだな
0436nobodyさん2007/04/06(金) 04:05:36ID:???
お前がな
0437nobodyさん2007/04/06(金) 04:43:10ID:???
>>432
strtr("AbCDeF", "ABCDEFGH...", "abcdefgh..."); #=> "abcdef"
0438nobodyさん2007/04/06(金) 05:18:26ID:???
PerlとPHPはどっちのほうが難しいですか?
0439nobodyさん2007/04/06(金) 05:27:44ID:???
C++
0440nobodyさん2007/04/06(金) 05:45:43ID:???
Perlに気間ってんだろ
0441nobodyさん2007/04/06(金) 05:46:01ID:???
>>438
Perl
0442nobodyさん2007/04/06(金) 06:33:23ID:???
>>439
氏ね
0443nobodyさん2007/04/06(金) 08:46:53ID:???
Perlは人の書いたコードは読めない。
0444nobodyさん2007/04/06(金) 09:59:03ID:???
perl は言語仕様を隅々まで目を通さないと、
他人の書いたコードが読めなくなるからな
0445nobodyさん2007/04/06(金) 10:16:48ID:???
>>442
くたばれ
0446nobodyさん2007/04/06(金) 10:23:16ID:???
>>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>"

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

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

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

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']];
}
}
}
04544532007/04/06(金) 14:30:08ID:2B8Av++o
ID出し忘れました
名前も間違えました。。
すみません
0455nobodyさん2007/04/06(金) 14:56:10ID:???
>>453
\S{4}?\S{3}じゃなくて?
04564532007/04/06(金) 15:05:58ID:2B8Av++o
>>455
ご指摘ありがとうございます。
変数名等、実際のものと少し書き換えたのでミスしてしまいました。
この場合、\S{3}です。

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

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

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

[select box] [search box] [bottun]

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

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

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

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

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

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

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

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

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

俺個人の話をすると、某マイナーゲームのサイトを
立ち上げたんだけど、まぁぶっちゃけ、既に有名サイトがあって
その二番煎じだったんだよね。ただ、その某有名サイトは
UTF8でCMS的な作りだったんだけど、俺はEUCで構築して
携帯用にはSJISで吐き出せるようにした。某雑誌がその
ゲームを取り上げる際に、紹介サイトとして、俺のサイトを
掲載したいとメールを送ってきた。本家的な某大御所サイトが
あるのに、何故俺のサイトなんだろう?と今でも分からないけど
多分、雑誌社の編集部はMac OS9で、俺のサイトをチェック
しやすかったんだろうと、俺は睨んでるw
0495nobodyさん2007/04/07(土) 02:51:44ID:???
どんどん痛々しい展開になってきたのでこの辺で終了。
0496nobodyさん2007/04/07(土) 04:45:19ID:???
みんな知ってるサイト紹介しても意味ないからな
0497nobodyさん2007/04/07(土) 06:09:42ID:???
宣伝乙厨発生警報
0498nobodyさん2007/04/07(土) 07:19:36ID:???
マカーって数は少ないくせに声だけはやたら大きい
0499nobodyさん2007/04/07(土) 10:01:39ID: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; }
0500nobodyさん2007/04/07(土) 10:23:25ID:???
>>499
使ってないので良く知らんけど
なんで、聞く前に
U8T_CANONICAL is missing PHP
ぐらでぐぐらないのか?一発で原因がわかるんだけど。
0501nobodyさん2007/04/07(土) 10:43:33ID:???
SNSみたいなソフトを作ろうと思ったら
やっぱり独自にフレームワークを構築するのかな?
どんな感じで作ってるのかすげー気になる。
0502nobodyさん2007/04/07(土) 10:45:39ID:???
SNSなんか簡単に作れる
作る気にはなんねーけど
0503nobodyさん2007/04/07(土) 10:48:05ID:???
>>501
GREEやってることを見ればいいんじゃない?
あそこは本人のEthna発展系でフレームワーク作ってるから。
0504nobodyさん2007/04/07(土) 10:50:04ID:???
SNS作るためにフレームワークが必要,ってなんかおかしくね?
0505nobodyさん2007/04/07(土) 10:55:57ID:???
商売で持続的に展開するには必要でしょ。
SNSそれ自体は結局は単なるブログと掲示板の集積だから「簡単」に作れるにしても、
商売に必要な多機能付加、メンテナンス考えれば、きちっとしたフレームワークがなきゃね。
0506nobodyさん2007/04/07(土) 11:23:40ID:???
メンテナンス性を考えるのならそれを見越した書きかたをすれば良いだけ
SNSなんて既存のフレームワークで充分だろ
0507nobodyさん2007/04/07(土) 11:38:26ID:36/fFnrN
mixiってなんの言語でつくってんの?
0508nobodyさん2007/04/07(土) 11:50:23ID:???
Perlらしい
0509nobodyさん2007/04/07(土) 12:10:36ID:JPCg3GgQ
フレームワークって何?
0510nobodyさん2007/04/07(土) 12:40:12ID:???
開発枠組み
0511nobodyさん2007/04/07(土) 13:09:47ID:JPCg3GgQ
ってことは俺はじゃあ俺はWAMPか
0512nobodyさん2007/04/07(土) 13:18:06ID:???
WAMPとかLAMPとかは、開発(一般)環境だな。
フレームワークって言った場合は、ソフトウエアのためのソフトウエア統合環境のことだ。
0513nobodyさん2007/04/07(土) 13:23:52ID:JPCg3GgQ
WAMP+Dreamweaverで開発している俺は独自環境・・・?
0514nobodyさん2007/04/07(土) 13:24:34ID:???
Dreamweaver(笑)
05154792007/04/07(土) 13:43:50ID:qxhDTSD1
回答がないようですので、PHP-usersのメーリングリストで聞きます。
失礼しました。
0516nobodyさん2007/04/07(土) 13:44:49ID:???
最初からそうすればいい
0517nobodyさん2007/04/07(土) 13:56:34ID:???
マニュアルも読まないで、挙動が変だとか言う奴になにを「回答」しろというのだよ。
0518nobodyさん2007/04/07(土) 14:02:21ID:S7Rnm2Ut
ファイルロックしたまま開放せずにexitしちゃったらどうなるの?
0519nobodyさん2007/04/07(土) 14:03:37ID:???
どうもしないよ
05205012007/04/07(土) 14:07:31ID:???
>>503
thx 参考になります。

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

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

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

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

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

$hoge = array( 'var' => 'test' );
って違うんでしょうか?
0526nobodyさん2007/04/07(土) 17:03:41ID:???
     _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      | ( ゚Д゚)  <あのね、先生もそんなにヒマじゃないの。
      |(ノ  |)
      |    |
      ヽ _ノ
       U"U
0527nobodyさん2007/04/07(土) 17:13:48ID:???
せめてマニュアル読んで質問しろよ・・・常識的に考えて・・・
0528nobodyさん2007/04/07(土) 17:33:22ID:???
というか、言ってること不明だなw
0529nobodyさん2007/04/07(土) 17:48:09ID:???
test.phpをincludeのみで使いたいんだが、
直リンクできないようにする方法とかない?
0530nobodyさん2007/04/07(土) 17:52:13ID:???
>>529
__FILE__ と $_SERVER['SCRIPT_FILENAME'] を比較することで
直アクセスか、includeされてるかの判別ができるからそれでどうにかしろ
0531nobodyさん2007/04/07(土) 18:05:51ID:???
>>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 (アクセス許可ファイルじゃなきゃ) (アクセス不可)
とかで処理。
0532nobodyさん2007/04/07(土) 18:18:21ID:???
include だけなら拡張子変えれば?
0533nobodyさん2007/04/07(土) 18:21:53ID:???
httpdのmimetype関係ディレクティブを弄らないと普通は
テキストファイルとして見えちゃうことが多いから駄目でしょ。
0534nobodyさん2007/04/07(土) 18:21:54ID:???
webサーバ側で対象のファイルやディレクトリに
アクセスできなくすればいいapacheなら.htaccessとかでdenyに
webからアクセスできなくてもphpからなら権限さえあればincludeできる
0535nobodyさん2007/04/07(土) 18:23:58ID:???
htaccessってあんまりおすすめしたくないな
0536nobodyさん2007/04/07(土) 18:25:35ID:???
webサーバー側設定に依存するのは事故拡散するからね。
>>531あるいは>>531の2のようなこととかをPHP内部でしておくのが大切。
0537nobodyさん2007/04/07(土) 18:26:26ID:???
おっと誤記
×>>531あるいは
>>530あるいは
0538nobodyさん2007/04/07(土) 18:47:11ID:???
俺もLAMP環境を中心に色んな案件やってきたが、>>530-531の方法を推奨する

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

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

>戻り値が想定できない?ような設計はだめだ
「戻り値が想定できないような関数名はだめだ」なら良く聞くけど。
0545nobodyさん2007/04/07(土) 22:01:57ID:???
>>543
PHPの標準関数はそういう戻り値(array or bool)が多いけど
正直言って使いにくいとはよく思う。
慣れたんで困らなくはないけど。
ただ、これは作法の話であって設計がダメとかいうのとは違う。
元の話を思い出したらまた来な。
0546nobodyさん2007/04/07(土) 22:11:55ID:???
じゃあどういうのが使いやすいんだ?
0547nobodyさん2007/04/07(土) 22:36:32ID:???
もういちいち「?」で人の質問流れの中で無内容な反問レスを書く人は、居なくなってくれないかな。
ほとんど同一人物だろこれ。
0548nobodyさん2007/04/07(土) 22:37:42ID:???
じゃあどういうのが使いやすいのかな
0549nobodyさん2007/04/07(土) 22:45:55ID:???
ドウデモイイ
0550nobodyさん2007/04/07(土) 22:59:53ID:???
>>544,545
レスdクス。
特に悪い設計と言うわけじゃないんですね。
0551nobodyさん2007/04/07(土) 23:01:15ID:???
>>547
PHPに興味はあるんだけど頭が悪くて質問に答えるどころか、
疑問も浮かんでこないのに、なにかスレで言いたくてたまらない
可哀想なやつだと思ってにこにこして読んであげてるよ、おれw
0552nobodyさん2007/04/07(土) 23:01:46ID: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; } でうまくいけるけど)
0553nobodyさん2007/04/07(土) 23:15:51ID:???
[EOF]も、l文字列の終端をあらわす制御コードだからです。
null[EOF]
null[改行]
はrtrimから見れば一緒です。
0554nobodyさん2007/04/07(土) 23:16:58ID:???
>>545=>>547
批判だけなら楽でいいよな。(w
0555nobodyさん2007/04/07(土) 23:19:30ID:???
シランガナ
0556nobodyさん2007/04/07(土) 23:20:53ID:???
>>552
単純にeofに達する判断が読み出した後だからとしか
期待する動作を望むならfgetsの戻り値でやるとか

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

今までは
count(file($path));
でやってたけど上のほうが1.5倍速かった
ファイルはShift_JISで日本語入ってるけど平気かな
0558nobodyさん2007/04/08(日) 04:30:38ID:???
>>557
sjisの下位バイトは制御コード使ってないので大丈夫。
間違ってるのは後者。改行コードが0個でも1と返る。
0559nobodyさん2007/04/08(日) 09:24:41ID:iJakkiFr
質問です。
たとえば、ライブハウスのライブ情報を登録する機能があるとして、
各日にちごとに出演者情報を登録する際に、出演者数が毎日マチマチで
ある場合、SQLに送信する出演者IDの数もマチマチになるわけですけど、
そうすると、単純に考えたら保存するフィールドが複数必要になります。
でも、そんな不安定なことするわけにいかないので、特定のフィールド”players”に
カンマ区切りで追加上書きしていくのが正解なのかなぁと思ったんですが、
こういう発想でいいんでしょうか?
なんだかphpの質問かSQLの質問かわからないですが、アプリ制作の
いろはとして質問させてもらいました。OKですか?
0560nobodyさん2007/04/08(日) 09:40:33ID:???
>>559
DBの正規化の考え方からすれば、その「不安定なこと」も「特定フィールド
カンマ区切り」もいずれも外れてる。
ライブイベント情報に即して、出演者「行」を増やしていく(第一正規化)。
ライブイベント情報をキーにして出演者 tableを別途作り、またIDキーなどで
整序していく(第二正規化以降)のが普通。
0561nobodyさん2007/04/08(日) 10:06:38ID:???
>>560
なるほどー、ありがとうございます
正規化について調べてみます!
0562nobodyさん2007/04/08(日) 10:48:24ID:evw5P74I
>>558
さんくす
問題ないのね というか後者は間違ってたのか 助かりました
0563nobodyさん2007/04/08(日) 11:42:42ID:???
複数のデータをどう入れるかって問題はDB初心者のころは誰しも通る道だよね
大抵カラムをその数だけ増やすかカンマ区切りで入れちゃうんだけど
0564nobodyさん2007/04/08(日) 11:44:15ID:???
んでカンマ区切りにLIKE検索かけたりね
0565nobodyさん2007/04/08(日) 11:49:33ID:???
まあベタな補助情報ならそれでいいんだけど(たとえばドリンク付きカラムのコーラ、ジュース、ビール
みたいなもん)、出演者情報は、どう考えてもライブ情報なら最初から正規化対象だろうから
いい勉強の機会ということで。
0566nobodyさん2007/04/08(日) 12:48:00ID:+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 が "最後のファイル名" に相当します)
どのように書けば良いのでしょうか。よろしくお願いします。
0567nobodyさん2007/04/08(日) 13:13:00ID:???
ループの中を
$aF[] = ereg_replace('.php', '', $file);
として
最後に
$hosii_file_mei = array_pop($aF);
じゃだめなのかい?
0568nobodyさん2007/04/08(日) 13:23:08ID:Q73wCY81
質問です。
PHPでBBSを作りました。
案の定荒らしが書き込まれています。
そこでプロキシ経由での書き込みを禁止したいのですが、その書き込みがプロキシ経由かどうかを知るためにはどうすればよいのでしょうか?
よろしくお願いします。
0569nobodyさん2007/04/08(日) 13:24:18ID:???
>>568
とりあえず>>119以降の関係レスを読め
0570nobodyさん2007/04/08(日) 13:28:26ID:???
>>568
ハッキリ言えば全て防ぐのは無理。


楽な方法としてはBBQつかってみるとか
05715682007/04/08(日) 13:29:08ID:Q73wCY81
>>569
ありがとうございます。
getHostByAddr($_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR'] )
で真にならなければプロキシ経由になるんですね。
知りませんでした。さっそく導入してみます。
0572nobodyさん2007/04/08(日) 13:30:42ID:???
ちょっと前までProxyとわかるためにすごく複雑なプログラム組んでたが、
こんなに簡単にわかるのか・・・
05735692007/04/08(日) 13:31:55ID:???
>>571
「経由」かもしれない、っていう程度だし、負荷がかかるし、あんまり自分は好きな方法じゃない。
とりあえずそこらへんからはじめて見たらってな程度。
自分がやるなら>>570の方面でやるだろうな。
0574nobodyさん2007/04/08(日) 13:38:40ID:???
Smartyって何だ?
フレームワーク?
それともソフト?
0575nobodyさん2007/04/08(日) 13:38:59ID:???
>>566
$index = glob($_SERVER['DOCUMENT_ROOT'].'/diary/2007/*.php');
とかやってcount()とかarray_pop()とかarray_slice()とかかなぁ。
0576nobodyさん2007/04/08(日) 13:40:19ID:???
>>574
検索もできないの?
05775682007/04/08(日) 13:43:30ID: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の導入はどうすればよいのでしょうか?
0578nobodyさん2007/04/08(日) 13:43:56ID:???
>>576
いや、ググって調べたんだが自分の考えが合っているかどうかわかんないので

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

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

>>583
ああ、そうだね。それだとOKか。
05875682007/04/08(日) 14:01:34ID:Q73wCY81
ありがとうございました。どうやらBBQいけたみたいです。
0588nobodyさん2007/04/08(日) 14:07:27ID:???
>>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でダウンロードして再コンパイルすれば文字化けも消えて便利だぞ?
0589nobodyさん2007/04/08(日) 14:08:22ID:???
>CHMでダウンロードして再コンパイルすれば文字化けも消えて便利だぞ?
ちょwwww詳しく!!!!
0590nobodyさん2007/04/08(日) 14:08:57ID:???
相手にスンナってのに
0591nobodyさん2007/04/08(日) 14:17:07ID:???
>「マニュアル嫁」っていうやつは 
>どの辺り読むかURL出してやったほうがいいと思うぞ 

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

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

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

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

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

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

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

それについてミラーサイト作者の反論
0619nobodyさん2007/04/08(日) 18:06:37ID:???
いやなら公式見てればいいじゃないですか
06206172007/04/08(日) 18:13:53ID:???
俺はこっち側
0621nobodyさん2007/04/08(日) 18:18:01ID:???
>>619
マニュアルのミラーが検索結果を汚染しているって話だったのだが
0622nobodyさん2007/04/08(日) 18:33:07ID:???
Webに転がってるミラーうざい⇒自分専用のミラー作っちゃえ
0623nobodyさん2007/04/08(日) 18:34:56ID:???
マニュアルしか出てこないってこたないでしょ
例えばどの関数でぐぐるとそうなる?
0624nobodyさん2007/04/08(日) 19:09:56ID:???
>>623
http://www.google.co.jp/search?q=ob_clean&lr=lang_ja
http://www.google.co.jp/search?q=ob_get_clean&lr=lang_ja
http://www.google.co.jp/search?q=ob_get_contents&lr=lang_ja

上位にくるミラーうざい
0625nobodyさん2007/04/08(日) 19:11:08ID:???
マニュアルが上位に引っかかって有効な情報がえられない
むしろミラーサイトなんて複数もいらねえよ
0626nobodyさん2007/04/08(日) 19:12:27ID:???
むしろというか、その話をしているんだけどね^^;
0627nobodyさん2007/04/08(日) 20:35:55ID:???
preg_matchで4桁の数値にマッチさせるには
/^\d{4}$/
でいけましたが、
4桁〜8桁の文字にマッチさせるにはどうすれば良いのでしょうか?
/^\d{4-8}$/
にしてみましたがダメでした
0628nobodyさん2007/04/08(日) 20:41:18ID:???
マニュアルをミラーすると:
・ウェブサイトの知名度やページランクが上がる可能性がある。
・広告をつければ何もせずにお金がじゃんじゃか、ああおいしい。
・なんとなくいいことした気分になる。
0629nobodyさん2007/04/08(日) 20:42:42ID:???
>>627
/^\d{4,8}$/

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

/^\d{4,8}$/
0631nobodyさん2007/04/08(日) 20:44:22ID:???
>>627
http://www.php.net/manual/ja/reference.pcre.pattern.syntax.php
0632nobodyさん2007/04/08(日) 20:50:55ID:???
公式のみ指定でぐぐればいいんじゃ?
0633nobodyさん2007/04/08(日) 20:59:02ID:???
それじゃあ公式しか調べられないじゃん。
0634nobodyさん2007/04/08(日) 20:59:54ID:???
もうどうでもいいから、そろそろやめようか
0635nobodyさん2007/04/08(日) 21:04:49ID:???
関数のTipsとか面白い使い方とかを調べたくてぐぐっても
マニュアルばっかりだとやる気なくすよってことでは?

-マニュアルとか-manualを付けるって手もあるけど
たまたまそれらの語句を含んでいた有益なページまで除外してしまうかもしれんし
0636nobodyさん2007/04/08(日) 21:10:11ID:???
そこでオントロジ検索ですよ
0637nobodyさん2007/04/08(日) 21:21:57ID:???
公式マニュアルとUser Contributed Notes以外に有益な情報なんてほとんど皆無。
例外的に有益な情報はちゃんと上位に出てくる。
このスレのレベルは公式嫁だからもういいじゃん。
0638nobodyさん2007/04/08(日) 21:23:58ID:???
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ってテーブルがないってことでいいんだよな?
0639nobodyさん2007/04/08(日) 21:25:42ID:???
なんという構文エラー・・・これは間違いなく(ry
0640nobodyさん2007/04/08(日) 21:26:29ID:???
seleFtになってんぞ。
0641nobodyさん2007/04/08(日) 21:26:32ID:???
これは間違いなくSELEFT構文
0642nobodyさん2007/04/08(日) 21:28:28ID:???
インド人を右に
SEを左に
0643nobodyさん2007/04/08(日) 21:29:09ID:???
糞ワロタwwwwwwwwwwww
0644nobodyさん2007/04/08(日) 22:22:06ID: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内でのエラーが出ます。

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

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

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

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

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

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

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


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

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

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

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

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

おかしいな・・・php.intを設定し直すまでは、
mysqlの情報出てたんですけど。
0677sage2007/04/09(月) 02:42:16ID:ukAGIvQQ
・・・
0678nobodyさん2007/04/09(月) 02:56:36ID:xbEWIqwP
PC再起動したらmysqlの情報でてきました
おさがわせして申し訳ございませんでしたwww
0679nobodyさん2007/04/09(月) 03:01:20ID:???
.int
0680nobodyさん2007/04/09(月) 03:09:37ID:xbEWIqwP
>>679
O型・・・
0681nobodyさん2007/04/09(月) 03:11:39ID:Lr1gb1O7
ht★tp://77.xmbs.j★p/kid66666/←★は抜いてね!
◎マル秘!総合サイト! m(__)m《どろろ》m(__)m
超人気!完全決定版です!ホスト掲示板・風俗掲示板お水掲示板・総合掲示板
ブラックOK!必殺金融屋!超激安噂の車屋さん☆
このサイトを知らない者は必ず損します(--;)!!
0682nobodyさん2007/04/09(月) 03:40:07ID:???
一回きりのミスだったらタイポかも知れんと突っ込まれないだろうが、何回もintって書いてるから突っ込まれるんじゃね?
0683nobodyさん2007/04/09(月) 03:47:43ID:???
整数型ファイルなのか・・・
0684nobodyさん2007/04/09(月) 04:01:04ID:???
interface
0685nobodyさん2007/04/09(月) 04:20:52ID: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()はこういう使い方を想定して無いみたいなので困っています。
こういう場合どうすればいいのでしょうか?
0686nobodyさん2007/04/09(月) 04:26:35ID:???
usort
0687nobodyさん2007/04/09(月) 04:49:00ID:xbEWIqwP
.インポ
0688nobodyさん2007/04/09(月) 05:24:42ID:kaHzWtZF
ごめん、色々調べたんだけど全然わからんから質問いいかな?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# getenforce



Permissive





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

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

あるいは
echo file_exsists(フルパス);
はtrue返るの?
0745nobodyさん2007/04/09(月) 17:15:02ID:???
上のフルパスはフルパス.file名の意味
0746nobodyさん2007/04/09(月) 17:16:23ID: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; }

…が正しく実行されないのは置いといて、
大体こんな感じでいいのでしょうか。
0747nobodyさん2007/04/09(月) 17:26:22ID:???
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');}
}
0748nobodyさん2007/04/09(月) 17:33:34ID:???
>>747
それは動かんだろ
$msg配列じゃないし、eregがへん。
0749nobodyさん2007/04/09(月) 17:33:38ID:R/Jf3MPV
>>747
有り難う御座います!
バイト後にやってみます。
0750nobodyさん2007/04/09(月) 17:34:07ID:???
あ、そうだな。なかったことにしてください。
0751nobodyさん2007/04/09(月) 17:54:18ID:???
>>743
無駄なものってなんですか?

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

あと、syckは解析できなかった時に、"unknown type"を返しますよね?
なんじゃこりゃ?
0754nobodyさん2007/04/09(月) 20:50:38ID: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を使用してます。
どなたかご教授お願いいたします。
0755nobodyさん2007/04/09(月) 20:54:03ID:???
>>754
変数は''でククれ
0756nobodyさん2007/04/09(月) 20:59:38ID:???
>>754
$table = "table1";
$sql = "SELECT $field_name FROM $table_name ORDER BY id";

$table_nameなのか$tableなのか
0757nobodyさん2007/04/09(月) 21:16:25ID:???
printとechoの違いは無し?
タイム計測したらechoの方が二倍近く速かったんだが
0758nobodyさん2007/04/09(月) 21:26:31ID:???
>>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文自体には間違いはないと思ってますが
何か勘違いしている部分等ございましたらご指摘ください。
0759nobodyさん2007/04/09(月) 21:29:13ID:Hw87SVIB
以下のようなプログラムを作って
php -f test.php
とコマンドラインから呼び出したのですが何も表示されません。
何故でしょうか?

test.php
<?
print "aaaaaaaaa";
?>
0760nobodyさん2007/04/09(月) 21:30:30ID:???
>>758
SELECT id,name, FROM
の抽出するフィールドリストの最後にカンマついてちゃだめ
てかmysql_error使え
0761nobodyさん2007/04/09(月) 21:53:31ID:???
>>757
テンプレ嫁
0762nobodyさん2007/04/09(月) 21:54:49ID: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; 変換済みになっているわけだが、
二回目を受け取ったら(もう一度送ったら)、自動的に元に戻っちゃうわけ?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

と指定するのではなく、まとめて$varの配列に置き換えたいのですが
どうすれば良いのでしょうか?
0819nobodyさん2007/04/10(火) 14:15:35ID:???
多分PDOのfetchmode変えるなりすればできると思うが、
何のためのO/Rマッパだよ、、、そのまま使えばといいんじゃないかと
0820nobodyさん2007/04/10(火) 14:16:20ID:???
関数を実行した時に失敗したらエラーを返したいのですが、
hogeFunction() or die ('hogeFunction失敗');
という感じでいいのでしょうか?
それとも
if (hogeFunction()) {
} else {
die('失敗');
}
とかくのがベターなんでしょうか?
0821nobodyさん2007/04/10(火) 14:19:38ID:???
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設定を知る方法があるの?
0822nobodyさん2007/04/10(火) 14:20:59ID:???
>>820
そういう用途なら例外使えばいいんじゃない
0823nobodyさん2007/04/10(火) 14:28:49ID:mS0KEdcp
>>820
!
0824虚弱PHP2007/04/10(火) 14:39:17ID:???
>>818
O/Rマッパを使わない。

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

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

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

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

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

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

  |(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)の部分で行き詰まっているところです。
08478462007/04/10(火) 19:59:55ID:???
一部訂正します。
>$user_idをrequire_onceで子モジュールに渡し、

は、

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

>>944
偽者やめてください・・・
09469252007/04/11(水) 15:06:45ID:???
偽者とかウザいのでもういいです。
0947nobodyさん2007/04/11(水) 15:19:11ID:???
|ω^)
0948nobodyさん2007/04/11(水) 15:30:56ID:???
お互い気持ちよく使うために質問者はID表示のご協力お願いします。
0949貴之2007/04/11(水) 16:07:05ID:1U3tdNyu
ルートディレクトリの下を定数"ROOT_DIR"に入れる場合は
define ("ROOT_DIR", realpath( dirname(__FILE__) . '/..' ).'/' );
となると思うのですが、
ルートディレクトリの上を定数にするにはどうしたらいいでしょうか?
0950nobodyさん2007/04/11(水) 16:11:42ID:???
貴之くんはぐぐるって言葉を覚えてからきてね
0951nobodyさん2007/04/11(水) 16:25:39ID:???
顔みたい '/..' ).'/' )
0952nobodyさん2007/04/11(水) 16:36:47ID:???
banzai("__FUUN__",ヽ(´ー`)ノ);
0953貴之2007/04/11(水) 16:50:59ID:1U3tdNyu
>>949
既にぐぐりました!
ID出すとかきちんとルールは守っていますので。
口が悪くてすみません。
でも教えてください!
0954nobodyさん2007/04/11(水) 16:52:36ID:???
何歳ですか?
0955nobodyさん2007/04/11(水) 17:14:42ID: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 ⇒変換後の文字コード
==========================================================
0956貴之2007/04/11(水) 17:23:27ID:1U3tdNyu
>>954
14です。
解答お願いします。
ググるワードでもいいのでお願いします。
ルートディレクトリ 上
くらいしか考えられなかったです。
0957nobodyさん2007/04/11(水) 17:48:00ID:???
>>956
define('ROOT_DIR', dirname(dirname(__FILE__)) . '/');
define('ROOT_DIR_UP1', dirname(ROOT_DIR) . '/');
0958nobodyさん2007/04/11(水) 18:11:00ID:???
>>955
mb_convert_encodingは正確に指示通りconvert出来るかどうか別だから、
mb_detect_orderをセットして優先順位を決めてからやってみたら?
0959貴之2007/04/11(水) 18:37:42ID:1U3tdNyu
>>957
できました!
ありがとう
0960nobodyさん2007/04/11(水) 19:24:32ID: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で回して、別ファイルに書き出した名前でひっかかった点数だけを抜き出して加算していく。
加算した点数と名前をまた別ファイルに書き出していく。
そして最終的にそれをソートし・・・

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

>>962
レスありがとうございました。
今ちょっとやってみたんですが、うまいことできそうです。
名前をキーにするっていう発想がなかったです…
0966nobodyさん2007/04/11(水) 21:00:20ID:zNlK5rg/
>>964
incやfopenでもFalseでした…
うーん
0967nobodyさん2007/04/11(水) 21:01:28ID:???
しかし960と962の文章を比べるとその差が歴然としてるな
09689602007/04/11(水) 21:06:34ID:zI9N6jIn
>>967
傷口を広げないで下さい><
0969nobodyさん2007/04/11(水) 22:07:13ID:???
PHPで質問です
<?php
$a = '?';
$b = 'か';
$c = 'し';
$d = 'ま';
$e = 'す';
$f = '週';
$g = '回';
$h = 'H';
$i = '何';
echo $f .$i .$g .$h .$c .$d .$e .$b .$a;
?>
0970nobodyさん2007/04/11(水) 22:12:47ID:???
>>969
7*3
0971nobodyさん2007/04/11(水) 22:20:59ID:???
>>969
echo mt_rand(10, 2000);
0972nobodyさん2007/04/11(水) 22:54:58ID:???
print empty($_GET['manko']);
0973nobodyさん2007/04/11(水) 23:04:55ID:???
>>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{より速い
これらは全部嘘です。
0974nobodyさん2007/04/11(水) 23:39:07ID:???
正規表現で0〜100までと指定したい場合、どうすればいいでしょう?
これでは無理でした。
[0-100]
以下だとできるんですがスマートではないです。
100 | [1-9][0-9] | [1-9]
0975nobodyさん2007/04/11(水) 23:47:02ID:???
[0-9]{1,3}
0976nobodyさん2007/04/11(水) 23:50:28ID:???
>>973
ちなみにphp-5.2.1にて俺が取ったベンチだと
str_replaceが最速

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

>>979
俺も思う。だからテンプレに入れるべきじゃないと思うんだよね…。
0981nobodyさん2007/04/12(木) 00:12:30ID:???
初心者向けのこのスレのテンプレに入れるならこんな感じだよな。
「Q:処理が重いです A:コードを整理して無意味なコードやループを無くせ」
0982nobodyさん2007/04/12(木) 00:20:36ID:???
>>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が呼ばれるので使わない。
どっちでもいーよ死ね

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

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