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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/04/11(金) 06:38:35ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0029nobodyさん2008/04/12(土) 06:22:25ID:???
ざっくり言うと、まだphpで読めないデータの固まりみたいな感じかな
0030nobodyさん2008/04/12(土) 09:17:11ID:???
ただのIDじゃねえの?
0031nobodyさん2008/04/12(土) 13:21:32ID:???
arr
0032nobodyさん2008/04/12(土) 14:40:23ID:???
>>28
実際にはリソースIDがはいってるが、概念的にはDBからの結果が入ってるって事じゃないの
0033nobodyさん2008/04/12(土) 14:44:24ID:???
mysql_queryの返り値に結果なんて入ってねぇよw
0034nobodyさん2008/04/12(土) 14:50:46ID:???
fopenの$fpのようなもの
0035nobodyさん2008/04/12(土) 15:17:48ID:???
返り値じゃなく戻り値に統一してください。マニュアルも書き直してください。
0036nobodyさん2008/04/12(土) 15:26:42ID:???
返り血はいかんよ
0037nobodyさん2008/04/12(土) 15:52:39ID:???
モド・リッチ
0038nobodyさん2008/04/12(土) 16:04:06ID:???
>>33
だから概念だと言っているんだけど。
違うなら違うでいいけど、俺の理解を書いただけ。
0039nobodyさん2008/04/12(土) 16:08:49ID:???
概念でも違うわボケw
0040nobodyさん2008/04/12(土) 16:19:05ID:???
そうか、ありがとう勉強になった
0041nobodyさん2008/04/12(土) 16:22:01ID:???
リソースを参照するためのIDが返ってくる、が正解。
0042nobodyさん2008/04/12(土) 16:23:20ID:???
俺の概念ではPHPはプチエッチなピクチャーです。
違うなら違うで良いけど、俺の理解はそうなんです。
0043nobodyさん2008/04/12(土) 16:28:06ID:???
>>32>>41の違いは用語だけのような気がするけど。
根本的にどこが間違っているの?
0044nobodyさん2008/04/12(土) 16:38:27ID:???
     _n_n
    _/ィV"Vj
   /Oィ(゚Д)
  〈 <`ー"^"^i  だからカイマンだと言っているんだけど。
  rシ つ三づ
i\rシ ノ三ノ
ヾ__イ_)シ_)

004528 ◆IiyUHoZM0E 2008/04/12(土) 16:54:45ID:???
28で質問したものです。
$hogeの中には実際のデータの塊とかが入るのではなくて、
mysql内のデータを参照するためのポインタのようなものが
入っている、という解釈でよろしいでしょうか?
0046nobodyさん2008/04/12(土) 16:55:26ID:???
レンタルビデオ屋でカード式のとこがあるだろ、
カードを持ってレジのお姉さんに渡すとビデオ本体を奥からもってくるとこ、
つまり

ID    :カード 
リソース:ビデオ本体

に例えろ、IDそのものには何の価値もないのだ、
くれぐれもパッケージと中身の違いに騙されるな。
0047nobodyさん2008/04/12(土) 17:10:55ID:???
キャバクラの店頭に飾ってる写真と同じか
0048名無しさん@アイコンいっぱい。2008/04/12(土) 19:26:42ID:QH24pWr1
アフィリエイターはなぜ3ヶ月でやめるのか?
http://kakitarou.com/url/files/accel.html
0049nobodyさん2008/04/12(土) 19:31:23ID:???
>>45
そう
0050nobodyさん2008/04/12(土) 19:46:20ID:???
>>48
書き方がいつも同じでワロタ

一ページで構成、文章長い。
途中に体験談が出てきて、
最後に、金額。
0051nobodyさん2008/04/12(土) 20:00:26ID:???
でいつまでも値下げ
0052nobodyさん2008/04/12(土) 20:57:30ID:???
SQL書くのマンドクセからフレームワークの使い方覚えたけど
結局複雑なリレーションはSQL書かないといけないのね、イヤン!
0053nobodyさん2008/04/12(土) 20:59:17ID:???
SQLのほうが楽でいいじゃん
0054nobodyさん2008/04/12(土) 21:10:36ID:pm7T1kPT
PHPでSQL文意識せずにクエリ作れるライブラリってどんなのがあるの?
0055nobodyさん2008/04/12(土) 21:17:35ID:???
意識しろ
0056nobodyさん2008/04/12(土) 21:49:43ID:???
感じろよ
0057nobodyさん2008/04/12(土) 22:07:14ID:???
getdate()['year']って書けないのは何の嫌がらせなの?
0058nobodyさん2008/04/12(土) 22:10:44ID:???
まぁ確かにPHPらしくないわな
0059nobodyさん2008/04/12(土) 22:12:18ID:???
'functionHoge'()
これもだよな
0060542008/04/12(土) 22:22:06ID:pm7T1kPT
悪かった、SQL文をただ意識するだけなら構わない。
だが生のSQL文を弄れてしまうとSQLインジェクションの知識が必須になってしまうから
そこをライブラリ側で隠蔽化してやってくれるもので、なるべく独立したライブラリってないの?
0061nobodyさん2008/04/12(土) 22:29:36ID:???
>>60
つプレースホルダ
0062nobodyさん2008/04/12(土) 23:11:19ID:???
>>61
lol
0063542008/04/12(土) 23:31:51ID:pm7T1kPT
>>61
あ、なるほと、プレースホルダって何なのか今理解した。
PDOってのを使ってprepareではユーザ入力値を入れないようにすれば良いわけか。
何かこれ常識なことを質問してしまったみたいだな。皆ごめん、どうもありがとう。
0064nobodyさん2008/04/12(土) 23:36:36ID:???
てかSQLインジェクションの知識もなしでよくシステム作る気になれるね。
損害賠償くらわないようにね。
0065nobodyさん2008/04/12(土) 23:55:06ID:???
損害賠償については皆が皆仕事のWebプログラム書いてるわけじゃないし。
末端プログラマが皆セキュリティ技術者では居られないし。
公表されたセキュリティ問題に低リスク/コストで対応するためにライブラリを使うんだし。
0066nobodyさん2008/04/13(日) 00:12:05ID:???
末端でもSQLインジェクションは解ってないといけないと思います。webプログラム書くなら。
個人的にはむしろ、入門書でも最初に教えるぐらいしないと。と、思う。
0067nobodyさん2008/04/13(日) 00:22:36ID:???
SQLインジェクション知らない

ライブラリ使って楽しよう

とかいろんな意味で終わってる(笑)
0068nobodyさん2008/04/13(日) 01:26:09ID:???
なんか意図せず極論になってしまってる気がするので物申したいんだけど、
SQLインジェクションにおいて新しい攻撃法が今後発見されることは100%ないの?
セキュリティ技術者ってのは最新の攻撃を常に把握してるよね、それが仕事だもん。
でもプログラムを書いたらその後運営には携わらない末端プログラマは居るでしょ。
そしてそのプログラマは当時のSQLインジェクションの知識で自前でサニタイズしていたら。
つまり「解っている」というのが、その時点についてのみではダメってことでしょ。

これを名の知れたライブラリと一般化したサニタイズ手法を使って文書として残しておけば、
保守として全てを理解していなければならないプログラマは不要であり、
かつ必要な最低限のセキュリティのチェックは可能になるでしょ。

俺はWebの仕事はやったことないからズレてること言ってるのかも知れないけど、
殆どの仕事はASP的な形態で同じプログラマがずっと関われるようなものなの?
0069nobodyさん2008/04/13(日) 03:26:06ID:???
実用上はライブラリ通せば無問題だが、
概念上それくらい常識として知っておけ、
ってことじゃねーの?
0070nobodyさん2008/04/13(日) 03:34:36ID:???
>>68
現実にそれが可能ならセキュリティ技術者なんて要らんわな

夢から覚めなさい
0071nobodyさん2008/04/13(日) 03:54:16ID:bEpE13Rl
アップロードして保存されたファイルのその保存日を判別する方法ありますか?
ただし、画像ファイル名に保存日を書き込めないとします(20080413.jpgなどはダメ)
phpの関数でそんなのあるんでしょうか?
一定期間が過ぎたら削除する処理に利用したいと思っています
0072nobodyさん2008/04/13(日) 04:24:29ID:hN58mjIP
毎朝6時以降、最初のアクセスでデータを更新するプログラムを作っています。
(クーロンを使えというのはなしで)
前回のデータ取得はキャッシュされていて更新時間は変数として使えます。

現在の日付時間、デーの更新時間、毎朝6時

これらをどう組み合わせて計算すればいいでしょうか?頭がこんがらがってしまいました(?_?)
よろしくお願いします。
0073nobodyさん2008/04/13(日) 05:23:53ID:???
filemtime


if(date(更新時間-6時間)<date(今-6時間)){
0074nobodyさん2008/04/13(日) 05:27:15ID:???
×date
○mktime
orz
0075nobodyさん2008/04/13(日) 05:37:33ID:???
"6時間"じゃなくね?

>>72
宿題か?
デーの更新時間に日付が入ってないなら無理だ
頑張れ
0076nobodyさん2008/04/13(日) 05:51:50ID:hN58mjIP
デーの更新時間はタイムスタンプなので日付に変換できます^^;

6時間じゃなくて朝6時です

6時以降の最初のアクセスをトリガーとして作動させたいのです

0077nobodyさん2008/04/13(日) 06:49:43ID:???
if(更新日時 < 前日朝6時 or 更新時 < 朝6時 and 現在時 >= 朝6時) 更新;
0078nobodyさん2008/04/13(日) 07:50:58ID:???
意外と難しいなw

>>77
これだと前々日の場合が駄目じゃね
毎日アクセスがあるとは限らない場合を想定すれば
0079nobodyさん2008/04/13(日) 08:06:52ID:???
更新日時 < 前日朝6時 の所が2日前や1週間前もカバーしてるような?
入ってるデータが全部タイムスタンプなら>>77でよさそうだけど、寝起きだから自信ないな
0080nobodyさん2008/04/13(日) 08:54:53ID:y9NKt7wS
PHPでサーバ上のセッションを全て廃棄する方法はありませんか?
(現在のセッションの、全てのセッションデータの廃棄ではありません)

マニュアルを見た感じではみつかりません。
http://jp2.php.net/manual/ja/ref.session.php

具体的には、PHPのプログラムを更新する場合に、その前からのセッションが生きてるのは、嫌だなぁって事なんですが。

PHPは5.2 使ってます。
0081nobodyさん2008/04/13(日) 09:16:12ID:???
>>80
session.nameを変えるとか。
session.save_pathを変えるとか。

0082nobodyさん2008/04/13(日) 09:25:53ID:y9NKt7wS
>>81
なるほど。
session.nameはPHP_INI_ALLだから session_startより前で設定すればできそうですね。

ありがとうございました。
0083nobodyさん2008/04/13(日) 09:52:09ID:/FusEZA8
毎時間処理させるにはどうすればいいですか?
0084nobodyさん2008/04/13(日) 09:53:02ID:???
>>83
cron
0085nobodyさん2008/04/13(日) 10:05:23ID:???
>>83
手動
0086832008/04/13(日) 10:09:53ID:/FusEZA8
>>84-85
ありがとうございます。

cronについて調べてみましたが、いまいち使用方法がわかりません。
簡単なサンプルを示していただけませんか?
(1時間ごとにtest.PHPを呼び出す例など)

使用しているサーバはoroti.comのw8サーバです。
http://www.abcoroti.com/~rent/rspace/server.html
0087nobodyさん2008/04/13(日) 10:41:22ID:???
>>83
右手
0088nobodyさん2008/04/13(日) 10:43:16ID:???
>>86
読んでないけど、クーロソが使えると言うならば、鯖屋の指示通りに
設定すればいいだけ

(本来は鯖の設定ファイルを書き換えるようなのだから、それなりの権限がなければできない)

使えなければ、前に出てたアクセスをトリガー
(アクセスがあったら、それを契機に)スクリプトで処理するという方法で解決
0089nobodyさん2008/04/13(日) 10:43:55ID:???
>_
0090nobodyさん2008/04/13(日) 10:46:12ID:???
>>86
どの程度まで調べたの?
0091nobodyさん2008/04/13(日) 12:13:21ID:???
サウンドハウス事件は何故おきたのか検証してみないか?
0092nobodyさん2008/04/13(日) 12:57:13ID:???
今日からPHP始める。






でっていうwww
0093832008/04/13(日) 13:02:10ID:/FusEZA8
>>87-91
ありがとうございます。

質問板にてcronに関するスレを発見しました。
質問者:cronは使えまか?
管理人:cronつかえますよ。

cronに関するスレはこれだけで、鮎の方にも設定方法が紹介されていませんでした。
この場合どうすればいいでしょうか?
htaccessみたいなかんじで毎時間処理するよう記述したファイルをUP
するんですか?
0094nobodyさん2008/04/13(日) 13:14:28ID:???
simplexmlって名前空間つきの要素へのアクセスはどうすればいいの?
xpath使えって話?
0095nobodyさん2008/04/13(日) 13:22:57ID:/XYVoWCv
PHPにて、
PEAR::Image_Graph(オープンソース)を使用して
円グラフを作成しています。
マーカー部分に、"項目名 XX%"の用に表示させたいと思っています。
項目名を表示する方法をわかる方がいれば教えてもらえないでしょうか?

PHPとは少し違いますがお願いします。
0096nobodyさん2008/04/13(日) 13:28:26ID:???
最近Image_Graphの質問が立て続けに出てるが同一人物か?
いい加減PEARはスレ違いだっつうの
0097nobodyさん2008/04/13(日) 13:37:47ID:???
時間処理の質問見てて思いついたのだが、
任意の引数でタイムスタンプ作成する、dateの逆関数みたいなものって無いものかね
mktimeより楽に使えると思うのだがどうか。

$timestamp=inv_date('08年04月13日13時40分','y年m月d日H時i分');
みたいな
0098nobodyさん2008/04/13(日) 13:41:24ID:???
当然あるわボケ
0099nobodyさん2008/04/13(日) 13:48:35ID:???
>>91
HACKER SAFE使ってたって書いてあるけど、
ああいう外部からのチェックサービスって
結局CGIプログラムのソースコードは見ないんだろうから、
その中にある脆弱性には甘いんだと思うよ。
色んなサービスを動かすサーバ建てて、
その中に脆弱性のあるバージョンや機能が無いか調べるには良いと思うけど。
0100nobodyさん2008/04/13(日) 14:55:35ID:/XYVoWCv
>>96
すみませんでした。
0101nobodyさん2008/04/13(日) 16:58:04ID:mSGmcBg3
質問です。
たとえば、数十個のディレクトリ名を定数として利用する場合、配列でなくdefineでも問題ないと思いますが、
状態遷移に必要な情報を管理する多次元の配列の定数が必要な場合、どのようにするのがベターなのでしょうか?
・グローバルなところに変数として置く(現在はこの考えを利用)
・オブジェクト定数で管理
・XML/YAMLなどでデータ分離
あたりが思いつくのですが、常套手段などがあったらご教授お願いします。
0102722008/04/13(日) 17:59:49ID:???
>>73-79
ありがとうございます
明日の6時になったら動作するか確認してみます
0103nobodyさん2008/04/13(日) 18:29:39ID:cn35Eo4d
20で質問した者です。

ord()とchr()を使用することでバイナリの扱いを解決することができました。
答えてくださった方々、ありがとうございます。

もうひとつ質問なのですが、phpの配列の要素数に上限はあるのでしょうか?

要素数が100000くらいのときはプログラムが正常に動くのですが、
要素数が1000000くらいになると途中でプログラムが止まってしまいます。

どなたかご存知であれば教えてください。
お願いします。
0104nobodyさん2008/04/13(日) 18:56:04ID:cn35Eo4d
103です。
追記します。
このようなプログラムを組んでおり、
容量が1MBを超えるようなファイルだとプログラムが途中で止まります。

$fno = fopen("sample.mp3", 'rb');
while (!feof($fno)) {
$data[] = fread($fno, 1);
}
fclose($fno);
0105nobodyさん2008/04/13(日) 19:33:29ID:???
>>104
[PHP] 配列に値を入れていくとエラーになりプログラムが落ちます。
http://q.hatena.ne.jp/1145420732
と同じ現象じゃないかな。
つまりPHPスクリプト一つに許可されている使用メモリ量をオーバーしているんだと思うよ。

デフォルトでは8MBか16MBに設定されているらしいのに、
たった1Mのファイルでオーバーしちゃうなんておかしいと思われるかも知れないけど、
PHPは配列の要素毎にも変数の型を持っているだろうから、余計にメモリを食っちゃうんだろうね。

単純に読み込んだデータにバイト単位でアクセスしたいのなら、
$data = fread($fno, filesize("sample.mp3"));
として一つの変数へ一気に読んじゃえば、配列と同じに$data[0]って感じで読めるんじゃない?
上のは試してないから嘘かもしれないけど。
0106nobodyさん2008/04/13(日) 21:43:31ID:RGnLfYK/
phpgroupwareを入れたら下記のエラーが出てしまいました

NOTE: You must have cookies enabled to use setup and header admin!*

ブラウザ側ではクッキーは有効にしてるんですが・・・・どうすればいいでしょう?
0107nobodyさん2008/04/14(月) 00:14:07ID:???
このindex.cgiがエラーがでるんですが修正できますか?(属性755)
http://www.borujoa.org/upload/source/upload18138.zip
0108nobodyさん2008/04/14(月) 00:42:56ID:???
そんな餌で(ry
0109nobodyさん2008/04/14(月) 00:46:10ID:???
fscanfがおかしいですだって?
0110nobodyさん2008/04/14(月) 04:32:32ID:???
>>98
教えてくれ
0111nobodyさん2008/04/14(月) 07:07:30ID:???
>>110
>>1
0112nobodyさん2008/04/14(月) 11:41:38ID:6hAyd3lA
浮動小数点を表示すると、元の数値によって指数形式になったり
ならなかったりします。どういうルールで変換されているんでしょうか。

php -n -r "print(floatval(1100000));" → 1100000 が表示される。
php -n -r "print(floatval(1200000));" → 1.2E+6 が表示される。
php -n -r "print(floatval(1300000));" → 1300000 が表示される。
php -n -r "print(floatval(1300000));" → 1.4E+6 が表示される。
php -n -r "print(floatval(1500000));" → 1500000 が表示される。

環境は以下の通りです。

$ php --version
PHP 5.2.5 (cli) (built: Mar 3 2008 14:30:26)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Xdebug v2.0.2, Copyright (c) 2002-2007, by Derick Rethans

OS:Windows XP SP2
0113nobodyさん2008/04/14(月) 14:26:42ID:???
すごくくだらない質問ですが、教えて下さい。
PHP5に元から入っているSQLiteのバージョンは2ですよね?
これを、バージョン3にしたいのですがインストールがいまいち分かりません。
環境は、WinXP Apache2 PHP5 です。

DB板に書くべきか悩みましたが、
PHP関係なのでこちらに書きました。
0114nobodyさん2008/04/14(月) 14:39:54ID:???
SQLite3はPDOでされます。
0115nobodyさん2008/04/14(月) 15:31:07ID:???
>>114
日本語でおk
0116nobodyさん2008/04/14(月) 17:23:23ID:???
えすきゅうらいとさんはぴーでぃーおでされます。
0117nobodyさん2008/04/14(月) 18:17:04ID:???
質問です。

PHPを記述しているページのアドレスをhttp://○○.phpではなく
http://○○.htmlまたは.php以外のモノにしたいのですが
やりかたが分かりません。

PHPを使っていると思われるサイトでも
アドレスが、http://○○.htmlとなっているのを見かけるのですが
どうやっているのでしょうか?

知っている方がいましたら教えてください。

0118nobodyさん2008/04/14(月) 18:24:35ID:???
>>117
htaccessのAdd-Type
0119nobodyさん2008/04/14(月) 18:47:51ID:???
htaccessでリネーム?するんですね。
検索してやり方を調べてみます。ありがとうございました。
0120nobodyさん2008/04/14(月) 19:11:38ID:???
リネームじゃない
Apacheに拡張子htmlをPHPとして動かすように指示するだけ
Add-Type application/x-httpd-php .html
とかにすれば拡張子htmlのものがApacheでPHPとして扱われる
まぁこれ以上は板違いなんで
.htaccessについて深く知りたければWeb制作板へどうぞ
0121nobodyさん2008/04/14(月) 19:42:46ID:???
その昔、
拡張子phpを使いたいという理由だけでPHPを始めた俺が来ましたよ
(突っ込みは無用)

アドレスが*.phpなのがオサレなんだと思ってた時期もありました
0122nobodyさん2008/04/15(火) 00:26:29ID:???
>>112
それってPHPじゃなくてもなるんじゃなかったっけ。
CPUに詳しい人に聞いた方が良いと思う。
0123すのっぶ2008/04/15(火) 02:01:01ID:LJ3oHWbN
php限定という訳じゃなくてすいません。
md5だと32桁の16進数値になりますが、大文字小文字を区別した表示でもっと短いhashはどのようなものがありますか?
ある携帯サイトで送られてくるメールのURLにそれらしきものがあり、「RJgYbxmTqnN5」という表記でした。
0124nobodyさん2008/04/15(火) 02:04:11ID:???
0125nobodyさん2008/04/15(火) 02:12:30ID:???
それはbase64では
0126nobodyさん2008/04/15(火) 02:38:46ID:???
crypt
0127nobodyさん2008/04/15(火) 07:42:07ID:LJ3oHWbN
http://jp.php.net/crypt
crypt だった。サンクス > 126

ちょっと古いサーバで試したんだけど、salt を指定しない場合、「$1$Qgv55ZYN$likCiswhSgaLSaWdJeObY.
」とかで、しかも毎回内容が変わってた。これはこれで役にたつものなの?どうやってパスワードチェックするんだろう。

ちなみにそのサーバの定数値は以下
CRYPT_SALT_LENGTH 12
CRYPT_STD_DES 1
CRYPT_EXT_DES 0
CRYPT_MD5 1
CRYPT_BLOWFISH 0

OS REDHAT 9
0128nobodyさん2008/04/15(火) 09:26:21ID:???
指定されないソルトは乱数で生成されるから、それは正しい。

パスワードのチェックの時は、ソルトを読み取ってから
入力されたパスワードのハッシュを計算する

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