【PHP】下らねぇ質問はここに書き込みやがれ 45
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/27(金) 10:02:42ID:H9gF1SfBPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 44
http://pc11.2ch.net/test/read.cgi/php/1176364487/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0521519
2007/05/05(土) 18:50:54ID:H+RxaHTQ$a = ' target="_blank"';
$b = '../test/read.cgi/'.$u1.'/'.$u2.'/';
$text = str_replace($a, '', $text);
$text = str_replace($b, '#', $text);
これで上のパターンはうまくいくのですが
下のパターンがダメです。
正規表現を使えばいいのでしょうが書き方がわかりません。
0522nobodyさん
2007/05/05(土) 19:06:13ID:???$pattern = '!<a.+href=".+/(\d+).+".+>!';
$replace = '<a href="#\1">';
$str = '<a href="../test/read.cgi/php/1177635762/500" target="_blank">';
$replaced = preg_replace($pattern, $replace, $str);
var_dump($replaced);
$str = '<a href="../test/read.cgi/php/1177635762/249-250" target="_blank">';
$replaced = preg_replace($pattern, $replace, $str);
var_dump($replaced);
こんな感じか
パターンかなり適当だからマッチしない場合には修正してくれ
正規表現はマニュアル見て勉強するしかない
0523519
2007/05/05(土) 19:57:17ID:H+RxaHTQ$pattern = '!<a.+href=".+/(\d+).+".+>!';
$replace = '<a href="#\1">';
これだと</a>まで巻き込んでしまったので
$pattern = '!<a.+href=".+/(\d+).+".+>(.+)</a>!';
$replace = '<a href="#\1">\2</a>';
これでうまくいきました。有難うございました。
0525nobodyさん
2007/05/05(土) 23:33:15ID:cnfZ7N5Yで、その逆のgzdecodeが何故かなかったんで
ググったらhttp://www.php.net/manual/ja/function.gzencode.php#44470に
それらしいのを発見したんで使ってみたんですが、
今度は上のgzdecode内で使われているgzinflateがbuffer errorってのを返すんですね。
ちなみにgzdecodeしようとしたデータは、Googleに対してContent-Encoding: gzipで
アクセスして返ってきたデータなんですが、これをデコードするには
一旦ファイル作成して、gzopen使うしかないんでしょうか。
0526nobodyさん
2007/05/05(土) 23:43:34ID:cnfZ7N5Y×Googleに対してContent-Encoding: gzip
↓
○Googleに対してAccept-Encoding: gzip
でした。
0527nobodyさん
2007/05/06(日) 00:14:57ID:???あるじゃん
ttp://jp.php.net/manual/ja/function.gzdecode.php
目的に合うかわしらんが
0528nobodyさん
2007/05/06(日) 01:12:42ID:???0529nobodyさん
2007/05/06(日) 01:59:55ID:mYMYvtVv各々のウェブアプリのセッションの寿命設定が違う場合、
他のウェブアプリが走らせたガベージコレクションによって
別のウェブアプリのセッションファイルが
目論見より早い段階で掃除されてしまう、
ということはありえるでしょうか?
ありえるとしたら、
アプリごとに、セッションパスを必ず分けなくてはいけない…
ということでしょうか?
0530nobodyさん
2007/05/06(日) 02:31:53ID:???IDだしてて偉い!
ということで不肖ながら答えさせていただきます。
どうせだからちょっとセッションの軽いまとめをしてみよう。
まずガーベジコレクタが起動するタイミングはsession_start()が
呼び出されたとき。
で、session_start()が呼び出されても必ずガーベジコレクタが起動
するとは限らない。
ガーベジコレクタはsession_start()が呼び出された際に、php.iniの
session.gc_divisor / session.gc_probabilityの確率で起動する。
当然これは全てのsession_start()で等しい確率となる。
で、ガーベジコレクタが起動して掃除を始めると、これまたphp.iniの
session.gc_maxlifetimeを超えているセッションのみを削除する仕組
になっている。
つまり、>>529の心配していることが半分的中してしまう訳だな。
確かにあるWebアプリ用のガーベジコレクタが別のWebアプリ用の
セッション情報を削除してしまうのは間違いないけど、それは既に
寿命の切れたセッション情報だから問題ないはずだ。
どう?
0531nobodyさん
2007/05/06(日) 02:58:14ID:???セッションパスとセッション接頭子が全く一緒なら
そりゃ混ぜこぜにされちゃって掃除対象になっちゃうのでは。
session.save_pathかsession.nameのどっちかは
変えとかないといかんのじゃないかな。
うちはセッションルールが異なるアプリの場合、
session.save_pathは一緒だけどsession.nameをそれぞれ変えてる。
0532nobodyさん
2007/05/06(日) 02:59:20ID:???http://jp.php.net/manual/ja/ref.session.php
> 注意: 異なる値を session.gc_maxlifetime に指定している 別々のスクリプトがセッションデータの保存場所を共有している場合、 一番小さい設定値に達した時点でデータが消去されます。このような場合には、 お互いに session.save_path を使用します。
他のノイズは無視して下さい。
0533nobodyさん
2007/05/06(日) 03:00:50ID:???その「寿命」の設定が全く異なる場合に、
長命設定のものが短命設定のものに巻き込まれて
削除されてしまうのを心配してるんじゃ?
何を持って
> それは既に寿命の切れたセッション情報だから問題ない
と言ってるんだろう。
0534nobodyさん
2007/05/06(日) 03:05:01ID:???session.nameってURLのパラメータ識別子であって接頭子なんかじゃないぞ。
セッション情報は session.save_path/sess_* で保存されてるんだから
session.save_pathが一緒である限り他と区別する方法なんてない。
0535nobodyさん
2007/05/06(日) 03:10:41ID:WP5rGYZnとクッキーをセットした場合、セットしたディレクトリのみ有効?
上のディレクトリも有効にする事って出来ない?
0536nobodyさん
2007/05/06(日) 03:20:24ID:???ガーベジコレクタは寿命の切れたものしか削除
しないだろ?
だったら>>530の言うように寿命がそれぞれ違っ
ても問題ないんじゃない?
0537529
2007/05/06(日) 03:22:18ID:???最低の設定で掃除されてしまうとは・・・
セッションセーブパスを必ず設定することを習慣にした方が
いいかもしれないですね
0538nobodyさん
2007/05/06(日) 03:27:27ID:???寿命は生成時には決められない、ということでは?
gc_maxlifetimeは文字通りGCに対してだけの設定で、
セッションファイルに「このファイルの寿命はここまで」という属性を
与えるわけではないと。
0539nobodyさん
2007/05/06(日) 03:39:48ID:???なるほど。いや勉強になった
しかし俺が言うのもあれだがセッション関連の話題は毎スレ出てくるな
まとめをテンプレに入れたほうがいいのかな?
0540nobodyさん
2007/05/06(日) 03:48:36ID:???http://pc11.2ch.net/test/read.cgi/php/1064399467/
0542nobodyさん
2007/05/06(日) 04:50:39ID:mYMYvtVvsession.bug_compat_warn
こんなディレクティブの存在をはじめて知りました
説明を読むと、
本来はsession.bug_compat_42は0にしておくのがベターだと思うのですが
何故か1になっていました。
で、session.bug_compat_warnも1になっているのですが、警告されません。
エラーリポートはE_ALLです。
バージョンは5.1.6です。
PHP5ではsession.bug_compat_42は無視されているのでしょうか?
0543525
2007/05/06(日) 05:36:49ID:7LnaFZ8Pレスポンスされたデータを適切に処理していなかったため
gzdecodeでエラーを返していたみたいで、その壊れたデータをgzopenを使って処理した場合には
なぜかうまく処理できていたというだけのようです。
具体的にはTransfer-Encoding: chunkedの時に
40
hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
3a
hogehogehogehogehogehogehogehogehogehogehogehogehogehogeho
0
のように返ってくるデータを
全部つなげてからgzdecodeしなければならないところを
切れたままのデータにgzdecode処理してしまっていたのが原因でした。
レスくれた人ありがとうございました。
0544542
2007/05/06(日) 08:20:18ID:???ここのブログによると
実際に代入する段階で警告が出るようです
いずれにしろ検索して出てくる記事の少なさからも
かなりマニアックな機能のようで…。
session.bug_compat_42がデフォルトで1なのがちょっと疑問です
まあ互換性の問題なのでしょうが
PHP5なら0にしておいた方がいい気がします
0545nobodyさん
2007/05/06(日) 12:39:42ID:???0546nobodyさん
2007/05/06(日) 12:51:11ID:???0547nobodyさん
2007/05/06(日) 13:41:07ID:???0548nobodyさん
2007/05/06(日) 13:46:15ID:???0549nobodyさん
2007/05/06(日) 16:09:13ID:???0550nobodyさん
2007/05/06(日) 16:16:08ID:???0551nobodyさん
2007/05/06(日) 16:52:18ID:???昔、グローバル変数とSESSIONがカチ会うとSESSIONが上書きされる現象に悩まされたが
原因はそれかあああ
session変数にses_を付ける方法でしのいだがとんでもないバグだな。
PHPのクオリティーの低さは異常。
0552nobodyさん
2007/05/06(日) 17:30:45ID:bSP5KVqHApache2.2.4 + MySQL5.0.37 + PHP5.2.2 + phpmyadmin2.10.1で
phpmyadminがエラーになります
動くようにするにはどうすればいいでしょうか
表示されるメッセージは「phpMyAdmin - エラー」のみです
設定はttp://www.yamada-lab.org/doc/win/mysql5/index.html
などを参考にしました
phpinfoではmysqlの欄も表示されます
行ったのは
文字コードをUTF8に統一
http.confにLoadModule php5_module(ry
php.iniのmbstringとmysqlのコメントを外す
config.inc.phpのpmaのURL記述と認証のhttpへの変更
libmysqlのsystem32へのコピー
です
文字コードはsjisに統一した状態でも同じでした
0553nobodyさん
2007/05/06(日) 17:34:47ID:bSP5KVqHselect_lang.lib.php on line 405
session.inc.php on line 117
session.inc.php on line 100
が何度か出てきます
0554nobodyさん
2007/05/06(日) 18:30:30ID:zIFA24Jthandan(aaa32) >no
handan(4223) >yes
handan(0) >yes
handan(ads8ds) >no
handan(000333) >no
というふうに
正の整数+0ならYESと返す関数が見つかりません
あれば教えてください。
0555nobodyさん
2007/05/06(日) 18:31:03ID:zIFA24Jt0556nobodyさん
2007/05/06(日) 18:43:18ID:???0558nobodyさん
2007/05/06(日) 19:11:21ID:???0559552
2007/05/06(日) 19:17:43ID:bSP5KVqHここもスレ違いでしょうか
0560nobodyさん
2007/05/06(日) 19:20:07ID:???preg_match("/^(0|[1-9][0-9]*)$/", "値")
0561nobodyさん
2007/05/06(日) 19:22:07ID:gRJO/G6J会員毎のアクセス解析を作る場合、アクセスがあった度にログに追加していては
例えDBを使ったとしても、尋常じゃないほどログが増えすぎると思います。
かといって、1会員毎にログファイルを生成するやり方も、古い気がします。
そこで、指定件数(例えば30日以降のログは消去する)を決めて
1回目のアクセスは新規登録、2回目以降は上書き(カウントアップ)だけに
しようとも思います。これだと会員が1000人いたら、1000×30=3万件ですが。
ただ、この考え方で良いのかどうか不安です。良い知恵をお借り出来ないでしょうか。
0563nobodyさん
2007/05/06(日) 19:32:08ID:???俺ならアクセス毎に1件登録して
1日1回バッチ処理でユーザ毎の
カウントを集計してログを削除、にする。
アクセス毎にupdateは処理が重いのと、
不具合が出たときに誤集計になりやすい。
0564nobodyさん
2007/05/06(日) 19:38:24ID:NIpCxqfr最近URLに(タグと言うべきか)文字が挿入されているサイトをよく見かけますが
これってどのようにURLからデータを取得しているんでしょう?
(ウィキペディア)http://ja.wikipedia.org/wiki/PHP:_Hypertext_Preprocessor
(はてな)http://d.hatena.ne.jp/keyword/PHP
(amazon)http://www.amazon.co.jp/○○
(ニコニコ)http://www.nicovideo.jp/tag/○○
日本語はエンコード・デコードしているのはわかります。
URLに ?test=hogehoge みたいな風になっていれば
$_GETで取得できるのはわかるのですが、どなたか仕組みを知りませんか?
0565561
2007/05/06(日) 19:38:27ID:???ありがとうございます。なんとなく糸口が見えてきたので、
もう少しお願いします。
>1日1回バッチ処理でユーザ毎の カウントを集計してログを削除、にする。
との事ですが、これはログファイルを生成して日が終わった後に
修正したデータをDBに登録する。
と言う事でしょうか?それとも日のアクセスも一時保存用テーブルに保存して、
集計時に集計したデータを履歴用テーブルに保存し、一時保存のテーブルは
空にする と言う事でしょうか?
0566nobodyさん
2007/05/06(日) 19:38:54ID:zIFA24Jtおお、これです。
感謝します。
解答してくれた方もありがとうございました
誤入力を避けるために000333は禁止する方向でやってます
0569nobodyさん
2007/05/06(日) 19:56:41ID:bSP5KVqHXAMPPの最新版を入れても同じエラーになります
0570nobodyさん
2007/05/06(日) 19:57:07ID:CCThxWoFもしサイトが更新されても安定して取得・表示する方法でいいアイデアってないかな?
今はサイトを取得してからeregで特定タグなりを目印にして出力しているんだが…
0571nobodyさん
2007/05/06(日) 20:13:39ID:OoDHPbxzこれってどういう意味?
一応調べたんだけど記号だからうまく調べられなかった
0572nobodyさん
2007/05/06(日) 20:17:03ID:jInvdC5H0573nobodyさん
2007/05/06(日) 20:19:18ID:OoDHPbxzサンクス!
0578nobodyさん
2007/05/06(日) 20:35:48ID:UWEsfuIOじゃなくて
http://***/?hoge
とか
http://***/hoge
でやってるサイトが多いのは何で?
0579nobodyさん
2007/05/06(日) 20:37:10ID:???0581nobodyさん
2007/05/06(日) 20:40:07ID:???apache再起動した?
最初からXAMPPなの?別個に入れた後XAMPPも入れたの?
ちなみにいつエラーって言われるのさ?
もう一回最初から手順どおりやって見れ。そのほうが早いよ。
0583nobodyさん
2007/05/06(日) 22:46:11ID:???>>564じゃないが、echo $_SERVER['PATH_INFO']で何も出なかった
http://example.com/hogehogeだったら
http://example.com/hogehoge/index.phpにアクセスされね?
http://example.com/index.phpでhogehoge取得とかできないな
0584nobodyさん
2007/05/06(日) 22:56:15ID:???一番不安定。俺ならREQUEST_URI使うな。
0585nobodyさん
2007/05/06(日) 22:58:29ID:???0587nobodyさん
2007/05/06(日) 23:05:09ID:???0589nobodyさん
2007/05/06(日) 23:41:18ID:???http://example.com/index.php/hogehoge/fugafuga
設定次第で http://example.com/index/hogehoge/fugafuga
とかもできる
0592nobodyさん
2007/05/06(日) 23:48:11ID:???0593nobodyさん
2007/05/06(日) 23:49:30ID:???0594nobodyさん
2007/05/06(日) 23:51:47ID:???0595nobodyさん
2007/05/07(月) 00:05:20ID:???0596nobodyさん
2007/05/07(月) 00:44:37ID:???./  ̄/  ̄ / _|__ ___|_
―/ / |/ /|
_/ _/ | _/|
/\___/ヽ
(.`ヽ(`> 、 /'''''' '''''':::::\
`'<`ゝr'フ\ + |(●), 、(●)、.:| +
⊂コ二Lフ^´ ノ, /⌒) | ,,,ノ(、_, )ヽ、,, .::::|
⊂l二L7_ / -ゝ-')´ .+ | `-=ニ=- ' .::::::| + .
\_ 、__,.イ\ + \ `ニニ´ .:::/ +
(T__ノ Tヽ , -r'⌒! ̄ `":::7ヽ.`- 、 ./| .
ヽ¬. / ノ`ー-、ヘ<ー1´| ヽ | :::::::::::::ト、 \ ( ./ヽ
\l__,./ i l.ヽ! | .| ::::::::::::::l ヽ `7ー.、‐'´ |\-、
___________________________ __
│二│三│四│二│三│四│二│三│四│◎│◎│◎│伍│|伍|
│萬│萬│萬│萬│萬│萬│萬│萬│萬│◎│◎│◎│萬│|萬|
0597nobodyさん
2007/05/07(月) 02:20:03ID:ey+jINI9どうやって実装すればいいですか?
0598nobodyさん
2007/05/07(月) 02:46:59ID:oQG5Osro20〜30ページも作るとファイルの管理とエディタで切り替えがいい加減だるくなってくるんですが、
皆さんテンプレートやPHPファイルの数が増えても普通にエディタで作ってますか?
EmEditorで全部書いてるんですけど、統合環境とか使うと違うのかなぁ。
0599597
2007/05/07(月) 03:34:54ID:???0600nobodyさん
2007/05/07(月) 03:52:54ID:???0601nobodyさん
2007/05/07(月) 04:14:46ID:???0602nobodyさん
2007/05/07(月) 05:29:17ID:VG09sLBd0603nobodyさん
2007/05/07(月) 06:53:03ID:HuKM0EbBhttp://hoge.com/poge/fugo
↓
hoge.com
みたいな感じです
0604nobodyさん
2007/05/07(月) 07:10:02ID:???var_dump(parse_url('http://hoge.com/poge/fugo'));
array(3) {
["scheme"]=>
string(4) "http"
["host"]=>
string(8) "hoge.com"
["path"]=>
string(10) "/poge/fugo"
}
0606nobodyさん
2007/05/07(月) 11:00:55ID:???PHPでPDFを出力したく、フリーのライブラリを探しているのですがなにがお勧めでしょうか?
PDFLibは、商用で使う場合有償なのですよね?
0607nobodyさん
2007/05/07(月) 11:26:11ID:???多分
0608nobodyさん
2007/05/07(月) 11:47:12ID:sGzYZkCOどのようにすればよいでしょうか、よろしくお願いします。
$str="a";
$sql="SELECT * FROM table WHERE field LIKE BINARY '$%str%';";
0609nobodyさん
2007/05/07(月) 11:49:26ID:sGzYZkCO訂正 $sql="SELECT * FROM table WHERE field LIKE BINARY '%$str%';";
0610nobodyさん
2007/05/07(月) 12:18:04ID:???バイナリで検索してるんだから当たり前
LIKE BINARY
↓
LIKE
更にフィールドの型がbinary型になっていないかチェック
0611nobodyさん
2007/05/07(月) 12:30:58ID:sGzYZkCOありがとうございます。
LIKE BINARYとしているのは、テキストボックスに入力があった場合に
日本語文字も検索できるようにしているからです。
この場合どうすればよいでしょうか。
よろしくお願いします。
0612609
2007/05/07(月) 13:09:14ID:sGzYZkCO思うようにいきません。
データベースはMYSQLで検索対象フィールドタイプはtextにしています。
0613nobodyさん
2007/05/07(月) 13:16:35ID:???setcookieで同一ページでは問題ないのですが
同じ階層の違うページで
if( isset( $HTTP_COOKIE_VARS["vs_pass"] ) ) {
$vs_pass = $HTTP_COOKIE_VARS["vs_pass"];
} else{ . . .
とやってもからっぽでした。
ドメインやパスか何かを指定しなければならないんでしょうか?
0617nobodyさん
2007/05/07(月) 14:22:40ID:???0618nobodyさん
2007/05/07(月) 14:33:03ID:V6z/gjwqPHP5.2.1にて、ダイレクトIO(DIO)関数を使いたいのですが、
./configure 時に --enable-dio を指定しても DIO が有効になりません。
PECLのサイトに dio がありましたが、ダウンロードしようとすると File Not Found となってしまい、pear install dio 、 pecl install dio でもインストールすることが出来ません。
ググっても同じような症状を解説しているサイトが見つからず、解決策が見つかりません。
どなたかご存知の方がいらっしゃいましたら、アドバイス頂けたらと思います。
よろしくお願いいたします。
0619nobodyさん
2007/05/07(月) 14:33:48ID:???0620618
2007/05/07(月) 15:01:20ID:V6z/gjwqCSVにてダウンロード、コンパイルが出来ました。。
お騒がせいたしました。
■ このスレッドは過去ログ倉庫に格納されています