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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/27(金) 10:02:42ID:H9gF1SfB
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、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カテゴリ)の各スレで
0552nobodyさん2007/05/06(日) 17:30:45ID:bSP5KVqH
winXP
Apache2.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:bSP5KVqH
エラーlogでは
select_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:zIFA24Jt
handan(-53) >no
handan(aaa32) >no
handan(4223) >yes
handan(0) >yes
handan(ads8ds) >no
handan(000333) >no
というふうに
正の整数+0ならYESと返す関数が見つかりません
あれば教えてください。
0555nobodyさん2007/05/06(日) 18:31:03ID:zIFA24Jt
別にYESでなくてもいいので判断する関数をお願いします。
0556nobodyさん2007/05/06(日) 18:43:18ID:???
$hoge===0
0557nobodyさん2007/05/06(日) 19:10:25ID:???
>>554
ctype_digit()
0558nobodyさん2007/05/06(日) 19:11:21ID:???
って000333はnoなのか。なんでだ。
05595522007/05/06(日) 19:17:43ID:bSP5KVqH
Webprog板のphp関係下質スレで聞けと誘導されてきたのですが
ここもスレ違いでしょうか
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万件ですが。

ただ、この考え方で良いのかどうか不安です。良い知恵をお借り出来ないでしょうか。
0562nobodyさん2007/05/06(日) 19:27:13ID:???
>>560
「0.00333のtypoでした」かもしれない。本人待ちがいいんでない?
0563nobodyさん2007/05/06(日) 19:32:08ID:???
>>561
俺ならアクセス毎に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で取得できるのはわかるのですが、どなたか仕組みを知りませんか?
05655612007/05/06(日) 19:38:27ID:???
>>563
ありがとうございます。なんとなく糸口が見えてきたので、
もう少しお願いします。

>1日1回バッチ処理でユーザ毎の カウントを集計してログを削除、にする。

との事ですが、これはログファイルを生成して日が終わった後に
修正したデータをDBに登録する。

と言う事でしょうか?それとも日のアクセスも一時保存用テーブルに保存して、
集計時に集計したデータを履歴用テーブルに保存し、一時保存のテーブルは
空にする と言う事でしょうか?
0566nobodyさん2007/05/06(日) 19:38:54ID:zIFA24Jt
>>560
おお、これです。
感謝します。

解答してくれた方もありがとうございました

誤入力を避けるために000333は禁止する方向でやってます
0567nobodyさん2007/05/06(日) 19:41:09ID:???
>>552
manual読んでもわからないならXAMPPでも入れておけば良いんじゃないかしら。
0568nobodyさん2007/05/06(日) 19:45:23ID:???
>>564
mod_rewite + router
0569nobodyさん2007/05/06(日) 19:56:41ID:bSP5KVqH
>>567
XAMPPの最新版を入れても同じエラーになります
0570nobodyさん2007/05/06(日) 19:57:07ID:CCThxWoF
あるサイトからフィルター的に部分部分で表示しようと思っているんだが、
もしサイトが更新されても安定して取得・表示する方法でいいアイデアってないかな?
今はサイトを取得してからeregで特定タグなりを目印にして出力しているんだが…
0571nobodyさん2007/05/06(日) 20:13:39ID:OoDHPbxz
$a = ($b) ? $c : $d;

これってどういう意味?
一応調べたんだけど記号だからうまく調べられなかった
0572nobodyさん2007/05/06(日) 20:17:03ID:jInvdC5H
三項演算子 マニュアルの演算子のとこ
0573nobodyさん2007/05/06(日) 20:19:18ID:OoDHPbxz
>>572
サンクス!
0574nobodyさん2007/05/06(日) 20:31:12ID:???
>>564
$_SERVER['QUERY_STRING']
0575nobodyさん2007/05/06(日) 20:31:58ID:???
>>570
>更新されても安定して取得・表示する方法
ない。相手側の勝手だから。RSSとかやってるなら別だけど。
0576nobodyさん2007/05/06(日) 20:33:11ID:???
>>565
その辺の選択はアクセス量などに応じて
好きな方でいいと思う。
0577nobodyさん2007/05/06(日) 20:35:17ID:???
>>570
そもそも部分部分に表示って
どういう基準で選り分けてんだ
0578nobodyさん2007/05/06(日) 20:35:48ID:UWEsfuIO
http://***/?hoge=foo
じゃなくて
http://***/?hoge
とか
http://***/hoge
でやってるサイトが多いのは何で?
0579nobodyさん2007/05/06(日) 20:37:10ID:???
その方がかっこいいからじゃね?
0580nobodyさん2007/05/06(日) 20:37:24ID:???
>>578
SEO対策の一環
0581nobodyさん2007/05/06(日) 20:40:07ID:???
>>569
apache再起動した?
最初からXAMPPなの?別個に入れた後XAMPPも入れたの?
ちなみにいつエラーって言われるのさ?
もう一回最初から手順どおりやって見れ。そのほうが早いよ。
0582nobodyさん2007/05/06(日) 21:30:55ID:???
>>564
$_SERVER['PATH_INFO']
0583nobodyさん2007/05/06(日) 22:46:11ID:???
>>582
>>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:???
$_SERVER環境変数のうちPATH_INFOは、環境によって色々問題あるからね。
一番不安定。俺ならREQUEST_URI使うな。
0585nobodyさん2007/05/06(日) 22:58:29ID:???
あるUNIX時間をフォーマットして「分」を出す関数ありませんか?
0586nobodyさん2007/05/06(日) 22:59:28ID:???
>>585
date(s);
0587nobodyさん2007/05/06(日) 23:05:09ID:???
 
0588nobodyさん2007/05/06(日) 23:06:51ID:???
>>586
ありがとうございます。
0589nobodyさん2007/05/06(日) 23:41:18ID:???
>>583
http://example.com/index.php/hogehoge/fugafuga
設定次第で http://example.com/index/hogehoge/fugafuga
とかもできる
0590nobodyさん2007/05/06(日) 23:44:27ID:???
>>589
設定次第とはどんなの?
0591nobodyさん2007/05/06(日) 23:46:17ID:???
>>583 「動的URL 静的URL 」 で検索.
0592nobodyさん2007/05/06(日) 23:48:11ID:???
めんどくさいから一言でおながい
0593nobodyさん2007/05/06(日) 23:49:30ID:???
一言:「IDを出せ」
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
Rails等のフレームワークにあるflush(一回限りのセッション)て
どうやって実装すればいいですか?
0598nobodyさん2007/05/07(月) 02:46:59ID:oQG5Osro
Smarty使い始めたらファイルの量が2倍になって、
20〜30ページも作るとファイルの管理とエディタで切り替えがいい加減だるくなってくるんですが、
皆さんテンプレートやPHPファイルの数が増えても普通にエディタで作ってますか?
EmEditorで全部書いてるんですけど、統合環境とか使うと違うのかなぁ。
05995972007/05/07(月) 03:34:54ID:???
register_shutdown_functionを使ってできますた
0600nobodyさん2007/05/07(月) 03:52:54ID:???
Smartyとか使ってるカスまだいたのか
0601nobodyさん2007/05/07(月) 04:14:46ID:???
使ってない童貞まだいたのか
0602nobodyさん2007/05/07(月) 05:29:17ID:VG09sLBd
そそ、テンプレートとかモデルとか使ってるとファイル数が増えすぎて逆に管理が大変になったりするんだよね・・・
0603nobodyさん2007/05/07(月) 06:53:03ID:HuKM0EbB
URIからドメイン部分だけ抜き出すにはどうすればいいですか?
http://hoge.com/poge/fugo
↓
hoge.com
みたいな感じです
0604nobodyさん2007/05/07(月) 07:10:02ID:???
>>603
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"
}
0605nobodyさん2007/05/07(月) 07:17:22ID:???
>>604
ありがとうございました
0606nobodyさん2007/05/07(月) 11:00:55ID:???
すみませんが教えてください。
PHPでPDFを出力したく、フリーのライブラリを探しているのですがなにがお勧めでしょうか?
PDFLibは、商用で使う場合有償なのですよね?
0607nobodyさん2007/05/07(月) 11:26:11ID:???
pearにあんじゃないの
多分
0608nobodyさん2007/05/07(月) 11:47:12ID:sGzYZkCO
下記SQLで抽出しようとすると、関係の無い2バイト文字まで出てきてしまいます。
どのようにすればよいでしょうか、よろしくお願いします。

$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:???
>>609
バイナリで検索してるんだから当たり前
LIKE BINARY
↓
LIKE

更にフィールドの型がbinary型になっていないかチェック
0611nobodyさん2007/05/07(月) 12:30:58ID:sGzYZkCO
>>610
ありがとうございます。
LIKE BINARYとしているのは、テキストボックスに入力があった場合に
日本語文字も検索できるようにしているからです。
この場合どうすればよいでしょうか。
よろしくお願いします。
06126092007/05/07(月) 13:09:14ID:sGzYZkCO
preg_matchで調べて2バイト文字を含む時のみBINARY句を入れるようにしたんですが
思うようにいきません。
データベースは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{ . . .
とやってもからっぽでした。

ドメインやパスか何かを指定しなければならないんでしょうか?
0614nobodyさん2007/05/07(月) 13:17:17ID:???
>>607
ライセンス嫁
0615nobodyさん2007/05/07(月) 13:19:12ID:???
まちがえた>>606
0616nobodyさん2007/05/07(月) 14:12:45ID:???
>>608
>>208 >>210
0617nobodyさん2007/05/07(月) 14:22:40ID:???
DB側の問題だよね?
0618nobodyさん2007/05/07(月) 14:33:03ID:V6z/gjwq
すみません、どなたか知恵をかしてください。

PHP5.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:???
文字コード指定すればいいだろ。日本語あるからバイナリて。
06206182007/05/07(月) 15:01:20ID:V6z/gjwq
自己レスです。

CSVにてダウンロード、コンパイルが出来ました。。
お騒がせいたしました。
0621nobodyさん2007/05/07(月) 18:28:01ID:eAJiAY6Q
すみません。include構文でつまづいています。初心者ですが、おしえてください。
Apache2/htdocs/sampleフォルダにPHPファイルを入れています。include構文で使うふぁいるは
Apache2/includeに入れないとだめみたいなんですが、sampleフォルダからだと相対パスはどうなるんでしょうか?
../../include.incとしても駄目でした。他にも色々試したんですがだめでした。
06226212007/05/07(月) 18:31:26ID:eAJiAY6Q
621です。事故解決しました。他の部分のソースが違ってました。。

すみません。
0623nobodyさん2007/05/07(月) 20:07:37ID:???
ねこすけgoogle八分にされないかな
0624nobodyさん2007/05/07(月) 22:11:52ID:i2xtF+k7
ファイルの行数の総数を出す関数ありませんか?
0625nobodyさん2007/05/07(月) 22:46:53ID:RBHhVsf2
すんまそん。。

PDOでsqliteを操作しようとしています。
selectは問題なくできるのですが、insertができません。。orz
コマンドラインからならinsertも出来ます。。

$dbh = new PDO("sqlite:test.db", '', '');
$sql = "INSERT INTO counrty_tbl (country) VALUES ('japan')";
$res = $dbh->query($sql);
var_dump($res);

でfalseが返ってきてしますうのですが。。どこら編がまずいのでしょうか。
sql文はコマンドラインで試したのと同じなので問題ないともうのですが。。

よろしくおながいします。m(_ _)m
06261152007/05/07(月) 22:47:53ID:???
>>624
単一では、ないんじゃないの?
最後の行が、改行コード行末を持つかどうかでちがう。
$file_array = file('foo/bar/file');
$count = count($file_array);
として、end($file_array);で最後の行の末尾が改行コードあるかどうかをチェックして
$count + 1 するかどうかが必要。




0627nobodyさん2007/05/07(月) 23:01:44ID:DrdXpO7U
fopenで改行探すだけ
file()だとtextが100MBあったら100MBの配列作ることになるわな

>>625
insertは戻り値無いからPDO->exec使うべ
06286252007/05/07(月) 23:16:58ID:???
>>627

どうもありがとーです!
原因は、、、、dbのアクセス権がよろしくなかったみたいです。。orz
アクセス権を修正したら、execでもqueryでも出来ました。><

しかも、「counrty_tbl」のつづりが間違ってました。。orz

でも、627さんのレスのおかげで、再び希望を持つことが出来、原因を突き止めることが出来ました。本当に助かりました!
06296242007/05/07(月) 23:30:11ID:i2xtF+k7
なんとなくわかった気がします。

私がやりたかったのは、
「ある行で、ある文字が検出されたら、それより上の行を全削除する」ってのをやりたかったんです。
0630nobodyさん2007/05/08(火) 01:18:30ID:???
>>613
同じ階層であれば通常は問題ないはずなんだがなぁ〜
なんか特殊なことでもしてる?
単純にクッキーの発行と読み出しだけする
2個のプログラムでも書いて動作確認してみては?

どうでもいいけど $HTTP_COOKIE_VARS はもう古い。
0631nobodyさん2007/05/08(火) 01:21:25ID:???
>>629
なんでそれで行数のカウントなんてするんだ?
0632nobodyさん2007/05/08(火) 03:46:58ID:???
すみません、本を読みつつ作業してるんですがセッションを使った
プログラムがまともに動きません。
買い物カートにモノを入れて、最後のカート内確認画面まで選択情報を
セッションで維持して、最後に確定ってやつなんですが、カートの中身がカラなんです。
phpinfoは以下の通りなんですが、これじゃダメなんでしょうか?

Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
0633nobodyさん2007/05/08(火) 04:01:01ID:???
ソースに問題があるとは考えないんだ
0634nobodyさん2007/05/08(火) 04:01:16ID:???
ソースがなけりゃエスパーの出番だろ
0635nobodyさん2007/05/08(火) 04:11:33ID:???
>>633
いやー、ほんについてたCDのソースをそのまま使ってみたんだけど、
それでも動かなかったので…
基本的な設定がおかしいのかと。
0636nobodyさん2007/05/08(火) 04:18:10ID:???
ブラウザのクッキーがオンになってないんだよ。
0637nobodyさん2007/05/08(火) 04:18:22ID:???
>>635
auto_startがOFFならソース中にsession_start()はあるんだよな?
…という感じで、設定値が正しいかどうかはソースによる。
設定だけ出されても
> Session Support enabled
を見て、使えるかもしれなないね、としか言えない。
save_pathのディレクトリにセッションファイルは生成されてんの?
0638nobodyさん2007/05/08(火) 04:25:38ID:???
貴様の3流ソースなんてパクらねえし、探せば似たようなコードがありふれてんだから
どうどうと晒せよクズ
0639nobodyさん2007/05/08(火) 04:35:11ID:???
晒せだと!?
晒すならお前が晒せよ
0640nobodyさん2007/05/08(火) 04:43:03ID:???
ソースもださずに質問するなっ!!!!
0641nobodyさん2007/05/08(火) 04:46:53ID:???
頭おかしいのかっ!!ふざけんな!!!
0642nobodyさん2007/05/08(火) 04:52:30ID:???
PHP:神の子孫
Perl:漢
asp:いとこ
Ruby:ネカマ
0643nobodyさん2007/05/08(火) 04:53:38ID:???
>>87

>>1の頭に失礼だよ
0644nobodyさん2007/05/08(火) 07:32:02ID:???
>>628
PDO->exec()はほぼSELECT文専用。…というより、コンストラクタコールを
new PDO('sqlite:./test.db',null,null,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION))
にしとけば何が起きてもすぐ解ると思うよ。
06456322007/05/08(火) 08:11:02ID:???
ソース見せろとのご意見、ありがとうございました。
http://sakuratan.ddo.jp/uploader/source/date39691.zip がソースです
セッションの問題ということで、複数のファイルから構成されていて量があるため
見るほうの負担になるんじゃないかと思ったんですがヨロシクお願いします。
0646nobodyさん2007/05/08(火) 10:45:51ID:???
該当部分だけ抜き出せよ
回答者に対して全部読めとかふざけてんの?
どこが関連部分かすらも分かってないからできないんじゃん
0647nobodyさん2007/05/08(火) 10:55:59ID:???
抜き出せだぁ!?
お前が抜き出せよ
0648nobodyさん2007/05/08(火) 11:02:17ID:???
ガタガタいってんじゃねえぞヘボ回答者ども!!
おまえらが晒せっていったんだぞクズ度も!!!
いいから答えろや!!!
あ、ごめんwwwwおまえらレベルひくいんだっけ?wwwwwwwwwwwww
0649nobodyさん2007/05/08(火) 11:41:50ID:???
ソースめんどくさいから見ないが、
なんとなくPHPのバージョンが悪いんじゃないかと思う。
0650nobodyさん2007/05/08(火) 11:46:45ID:???
2004年のソースか
0651nobodyさん2007/05/08(火) 12:34:19ID:???
>>645
肝心の
chap5
が無いけど
それに本のプログラムを勝手に晒すと著作権違反では
0652nobodyさん2007/05/08(火) 12:55:43ID:???
原因の切り分けができてない証拠だな
■ このスレッドは過去ログ倉庫に格納されています