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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/04/09(日) 01:31:18ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/

【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/

過去スレは>>2-3あたり
0237nobodyさん2006/04/12(水) 14:01:54ID:???
fileやfile_get_contentsでwebページ内容もって来れるのは
わかったんですが、ヘッダを読む方法はありますか?

header()でのヘッダ「送信」の話ではないです
0238nobodyさん2006/04/12(水) 14:33:00ID:???
>>237
array get_headers ( string url [, int format] )
// PHP5
0239nobodyさん2006/04/12(水) 14:44:58ID:???
>>238
おぉ…file関係とは別途でphp5ならストレートなのがあったんですね。
ありがとうございます
0240nobodyさん2006/04/12(水) 15:30:20ID:???
>>232
「個人的」な考えはどうでもよくて、「法律的」にどうなのか、と。

>>234
パイプでメールを渡して、該当スクリプトを起動。
0241nobodyさん2006/04/12(水) 15:45:41ID:???
>>240
メールの「保存」が法律的には問題あるわけがない。
勿論「守秘義務」はあるけどな。

0242nobodyさん2006/04/12(水) 16:44:07ID:???
利害関係人が持ってても法的な効力はないけどなー
0243nobodyさん2006/04/12(水) 16:55:11ID:???
>>240
phpスクリプト側で・・って書いてあるじゃん
0244nobodyさん2006/04/12(水) 16:59:52ID:???
>>234
つ[ STDIN ]
0245nobodyさん2006/04/12(水) 17:10:56ID:???
>>244
>>236
02462272006/04/12(水) 17:12:40ID:8N7Yz7+/
そのようなソフトはないって事でしょうかねぇ。

2chで聞くのが無謀なのかなぁ。
本当に知りたい情報が2chで得られたためしがない。
誰でも簡単にgoogleで調べられるような事しかレスがこない。。。
0247nobodyさん2006/04/12(水) 17:16:49ID:???
>>246
ソフト探すスレじゃないからねぇ
0248nobodyさん2006/04/12(水) 17:22:14ID:???
>>246
自分じゃ調べられなくて困り果てて2chに来たくせに、
期待した回答が得られないと分かった途端にそういう逆ギレした態度を
とってるようじゃ、永遠に誰も教えてくれないよ。

あと、とにかく日本語がおかしいのを直しなさいよ。
誰も答えてくれないのは、質問の文章がおかしいのも一因だと思うぜ。
0249nobodyさん2006/04/12(水) 17:26:52ID:???
>>246
他人の情報や経験がタダだと思ってるバカは1秒でも早く氏んだほうがいいよ。

この世で最も価値があるのは車でも家でもダイヤでもなくて、情報だぜ。
それが分からずに調子コイた戯言をぬかしてるお前は一生底辺で終わる。
02502272006/04/12(水) 17:28:09ID:8N7Yz7+/
>>247
そうですね。該当スレが見つからなかったもので。すいません。


それと、メール保存は違法ではないかとか、保存されるのは嫌だとかいう意見がありましたが、
メールサービスを提供した時点で、メールボックスにはメールデータは保存されます。
保存場所を移したいだけです。もちろん悪用するわけではありません。
なぜ保存場所を移したいのかというと、Webメールサービスに近いものも提供したいからです。
しかし、メールボックスの容量も制限したいです。制限値を超えた時の処理なんですが、受信拒否となっては困ります。
古いものから自動的に削除されていくような容量制限が出来れば、特に保存場所を移す必要もありません。

環境はqmail+vpopmail+ezmlm+mysqlでメールサーバーは動かしてます。
ソースが読めれば簡単なんでしょうが。。。
02512272006/04/12(水) 17:32:33ID:8N7Yz7+/
>>248、249

偉そうな物言いで申し訳ありませんが、事実ではないですか?
私の経験ではそうでした。
0252nobodyさん2006/04/12(水) 17:37:58ID:???
>>251
情報が得られないとわかったなら何も言わずに立ち去れ。
いちいち捨て台詞を吐くのは非常に失礼。
事実かどうかなんていうお前の主観は発言が許される理由にならない。

>>248-249の口調もほめられたものじゃないが内容は完全に同意。
02532272006/04/12(水) 17:55:11ID:8N7Yz7+/
わかんないんだったら、自分たちもレスしなきゃいいのに。

小学生からやり直せとか、日本語勉強しろとか言われるために書き込みしたわけじゃない。
こいつらが人に言えるほど語学力と知識があるとは到底思えませんがね。
謙虚になれという事はそういう事かい?

人を失礼だと思う前に自分も失礼ではないかと考えてみたらいかがでしょうか。

なんて不毛な掲示板だ。
0254nobodyさん2006/04/12(水) 18:00:47ID:???
>>253
だから不毛だと思うならカエレ
0255nobodyさん2006/04/12(水) 18:11:41ID:LsBK61rA
>>253
キミにはその仕事を請けるスキルが無いんだから、他に回すなり業者に発注するなりしなよ。
せめてここの回答やgoogle先生の結果で何とかできる程度のアタマが無いとさ。
つーか、SQL書ける?
書けるならその案件程度のテーブル設計くらいできるよね?
だったら、何が疑問?
02562272006/04/12(水) 18:26:46ID:8N7Yz7+/
>>255
おっしゃるとおり、スキルはありません。外注も考えています。
ただ、そういうソフトがあれば教えてもらいたかったのです。

SQLは書けます。
vpopmailはSQLにメール毎ぶちこめましたっけ?
ユーザー管理にしかSQLは使っていませんが。
0257nobodyさん2006/04/12(水) 18:30:48ID:???
そんなことASP.NETならちょこっとコード書くだけでできるのにな
02582272006/04/12(水) 18:37:35ID:8N7Yz7+/
>>257
PHPやperlで書くなら実現できます。
ただ、メール転送だけはMTUに任せたいのです。

0259nobodyさん2006/04/12(水) 18:37:43ID:???
さぁ、益々下らなくなってまいりました。
0260nobodyさん2006/04/12(水) 18:42:12ID:???
なんだってー!
すごいなPHP&Perl
0261nobodyさん2006/04/12(水) 18:48:49ID:???
普段だったら気にならない個所なのに、こういう流れだから
メール転送を任されて戸惑ってるMTUやRWINの図が浮かぶ。
0262nobodyさん2006/04/12(水) 18:57:56ID:???
fopenの時に、ファイルが存在しなければ
ファイルを作成したいのですが
そういう場合はどうしたらいいですか?
0263nobodyさん2006/04/12(水) 19:09:40ID:???
空気が読めない奴って当然の如く去り際も心得て無いよな
0264nobodyさん2006/04/12(水) 19:09:42ID:???
>>262
'w'ならデフォルトで新規作成される。
'r'でファイルが存在しなかった場合に新規作成したいならtouch($file);とか書けばいい。
0265nobodyさん2006/04/12(水) 19:22:21ID:???
>>258
というか、ここはPHPで書くための質問スレなんだけど。
PHPで書かないための質問は他所で。
0266nobodyさん2006/04/12(水) 19:32:24ID:???
典型的な初心者にワラタ
0267nobodyさん2006/04/12(水) 20:24:31ID:fK671VOd
227はイタイな
答えられないのに文句だけ言う奴もウザイけど
0268nobodyさん2006/04/12(水) 20:37:47ID:zZpSpaHD
このウェブサイト(http://cubic9.com/PukiWiki/%B2%FE%C2%A4/%C0%C5%C5%AA%A5%B3%A5%F3%A5%C6%A5%F3%A5%C4%A4%CB%B5%B6%C1%F5/%A5%DA%A1%BC%A5%B8/%A5%B3%A5%E1%A5%F3%A5%C8/ )を参考に

  <?php
  $arg = input_filter($_SERVER['QUERY_STRING']);
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: /'.anchor_replace(rawurlencode($arg)).'/');
  ?>

とすると、
  [12-Apr-2006 20:15:54] PHP Fatal error:
  Call to undefined function: input_filter() in /home/user/public_html/slash.php on line 2
というエラーが出てしまいます。
この関数やエラーについて調べてみたのですが、手がかりがつかめませんでした。
これはどうなっているのでしょうか?
0269nobodyさん2006/04/12(水) 20:43:40ID:???
>>268
input_filterて関数が無いってメッセージ出てるやん。

リンク先に
>でぃあばぁ(管理者) at 2005-11-13 (日) 20:05
>func.phpからinput_filterとanchor_replaceをコピーしてくれば動きます。ただし何のチェックもしていないので、
>一つ間違うと無限ループです 一応 RewriteOptions MaxRedirects=1 で避けていますが、正直全くお勧めできません。
とあるが、理解可能?
0270nobodyさん2006/04/12(水) 20:57:48ID:zZpSpaHD
>>269
うーん、よくわかりません…
でぃあばあ氏は、このようにスラッシュを補完しているのですが、もっと効率的な方法とかあるんでしょうか?
0271nobodyさん2006/04/12(水) 21:15:18ID:???
>>270
効率とか関係なく、func.phpからinput_filter()をコピペしてきてないから動かないだけだろ。
02722622006/04/12(水) 21:30:17ID:???
>>264
ありがとうございます
$file = './dat/env.dat';
if( ! file_exists( $file)) touch( $file);
こう書いてみたのですが、うまく動きません
根本的に間違っているのでしょうか?
0273nobodyさん2006/04/12(水) 21:35:33ID:zZpSpaHD
>>271
ありがとん。

PHPの方はエラーを吐かなくなったのですが、http://example.com/slash.php/ にリダイレクト
され、500 Internal Server Error となってしまいます。(Connection: close
)
0274nobodyさん2006/04/12(水) 21:46:12ID:???
>>273
少しは、ソースの中で行われていることを
一つずつ追ってみようって気にはならないのか?
0275nobodyさん2006/04/12(水) 21:51:23ID:zZpSpaHD
>>274
すみません、PHPやApache設定に関しては全くの無知なので・・・
「RewriteRule ^.+$ slash.php?$0 [L]」これが原因でInternal Server Errorになるのでしょうか。
0276nobodyさん2006/04/12(水) 21:51:53ID:???
>>273
エラーが出るたびにこのスレで質問するのは迷惑だよ。
まず自分で調べて考えてみようね
0277nobodyさん2006/04/12(水) 21:59:09ID:zZpSpaHD
ξ
0278nobodyさん2006/04/12(水) 22:14:03ID:???
>>272
./dat/ ←のディレクトリのパーミッションは707あたりになってる?
02792622006/04/12(水) 22:27:29ID:???
>>278
ありがとうございます
ご指摘のとおりパーミッションの問題でした。
.datを777にしたら問題なくさくせいされました

お手数をおかけして申し訳ありませんでした
0280nobodyさん2006/04/12(水) 22:35:28ID:KG2NZf4e
BASIC認証を利用しているのですが
ダイアログが出てきた時に
デフォルトでIDが表示されているように
出来ませんでしょうか?
(PASSを入力するだけの状態)

よろしくお願いします。
0281nobodyさん2006/04/12(水) 22:39:25ID:???
>>280
ブラウザ依存の機能につき無理
0282nobodyさん2006/04/12(水) 22:46:27ID:???
>>280
標準のダイアログにID文字列を勝手に入れるのは無理じゃないかな。
やるなら、HTMLのFORMでIDとパスを受け付けるようにするとか
JavaScriptのダイアログで受け付けるようにするとかにしないと。
0283nobodyさん2006/04/12(水) 23:38:10ID:???
くっそおおおおおおおおおお
俺のソースは汚いぞおおおおおおおおおおおおお
0284nobodyさん2006/04/13(木) 01:42:46ID:???
preg_replaceの使い方で質問です。

$main_text = 同一ファイル内ヒアドキュメント、内容はHTML(htmlのタグ含む)
$words = '1111111111'で区切られた単語とURLが1行1レコードのファイルをfile()で拾って来た配列

で、foreach($words as $line){
list($word[],$url[]) = explode('1111111111',$line);
}
として$word、$urlをprint_r()して中に期待した配列が入っていることを確認しました。
その次に
$replacement = "<a href=" . $url . " target=_blank>" . $word . "</a>";
$main_text = preg_replace($word,$replacement,$main_text);
とすると
Warning: Unknown modifier '?' in /パス/test.php on line 410
Warning: Unknown modifier '?' in /パス/test.php on line 410
と2回エラーが表示されました。$wordと$urlの要素が2個になっていたのでそこが関係していると思うのですが…。

またpregをeregに変えるとエラーを吐かなくなりますが配列で置換できないようで要求をみたせませんでした。
何かアドバイスくださいまし
0285nobodyさん2006/04/13(木) 02:01:28ID:???
>>284
$word が正規表現として解釈されることを前提に、適切にエスケープしたり書式を整えたりしてる?
$word の中身をここにコピペしてみたら?
0286nobodyさん2006/04/13(木) 02:07:48ID:???
一行のコードを複数行に分けて書きたい場合はどうしたらいいのでしょうか?
解像度が低いPCで書いているのですが、どうしてもよみづらくて・・。
0287nobodyさん2006/04/13(木) 02:13:11ID:???
>>284
$word[] = "/ABC/sUi";
$word[] = "/DEF/sUi";
$replacement[] = "えーびーしー";
$replacement[] = "でぃーえふ自慰";
$main_text = preg_replace($word,$replacement,$main_text);

ってこんな風に使うんじゃなかったっけ
0288nobodyさん2006/04/13(木) 02:21:23ID:???
>>286
「ここ、スペースあってもなくてもいいよね?」と感じる個所で改行
02892842006/04/13(木) 02:22:12ID:???
レスありがとうございます
とりあえずprint_rの結果をば
Array
(
[0] => テスト
[1] => テスト2
)
Array
(
[0] => http://www.exsample.jp/1
[1] => http://www.exsample.jp/2
)
ファイルは全てEUCです。
ブラウザのエンコードをeuc以外にしたら化けたので文字コードはおk、
エンコーディングが必要な文字列は(今はテストデータだからですが)無いようでした。
>>287
ごめんなさい、提示していただいたサンプルとの違いが読み取れなかったのですが…。添字も数字になりますから一緒ですか?
0290nobodyさん2006/04/13(木) 02:23:11ID:???
>>284
> $replacement = "<a href=" . $url . " target=_blank>" . $word . "</a>";
それって「<a href="Array" target=_blank>Array</a>」にならんか?
配列をそのまま文字列として連結ってどういう意味よ

> $main_text = preg_replace($word,$replacement,$main_text);
$wordが配列なら$replacementも配列にせんと。
0291nobodyさん2006/04/13(木) 02:24:29ID:???
>>289
$replacementもprint_rしとけ
02922872006/04/13(木) 02:32:32ID:???
>>289
ガ━━(゚Д゚;)━━ン!
02932842006/04/13(木) 02:32:34ID:???
>>291

…$replacementが
<a href=Array target=_blank>Array</a>
になってしまっていました。
これでは目的が達成できないとおもいつつとりあえず
preg_replaceのエラー吐いているのだけでも何とかしようと思い
$main_text = preg_replace($word,$url,$main_text);
としてみましたが上記と全く同じエラーを吐きました…。
ちょっと試しに>>287さんのコードをまんま試してきます。
と思ったら>>290さん、その通りでした
orz
0294nobodyさん2006/04/13(木) 02:43:13ID:???
>>293
エラーになってるのは$wordの中身が /〜/ 形式になってないせいじゃなかろか。
02952842006/04/13(木) 02:48:19ID:???
>>294

ご指摘の通りでした。
$word = "/ABC/";
$replacement = "/http:/";
として通りました。
後は配列となっているURLをどうaタグにするか、考えてみます。
ありがとうございました。
全然関係ないですが皆さん遅い時間まで起きますね。
差し支えなければ、今何なさっているか晒してもらってもいいデスカ?
02962872006/04/13(木) 02:56:09ID:???
>>295
俺なら
foreach($words as $line){
の処理の中で
"<a href=" . $url . " target=_blank>" . $word . "</a>";
を配列に突っ込むかな。
0297nobodyさん2006/04/13(木) 02:56:14ID:???
TV見てる
0298nobodyさん2006/04/13(木) 03:02:07ID:???
ベース弾きつつネット
もう寝る
0299nobodyさん2006/04/13(木) 12:31:27ID:???
$abc = "a,b,c";
を
$abc2[0] = "a";
$abc2[1] = "b";
$abc2[2] = "c";
にするにはどうすればいいでしょうか?
指定文字で分割する関数があったと思うのですが、
公式マニュアルみてもちょっとわかりませんでした。
いつも逆引きリファレンス本使ってるんですが、無いと死にますね・・・
0300nobodyさん2006/04/13(木) 12:42:53ID:???
>>299
ツ explode
0301nobodyさん2006/04/13(木) 12:55:47ID:???
299と似てますが、改行だけの行を境目に文字列を分けて配列に格納するのって
どうすればいいですか?
0302nobodyさん2006/04/13(木) 13:02:18ID:???
Mon, 10 Apr 2006 18:18:53
を一気に 2006-04-10 18:18:53
に変更するような簡単な方法きぼんぬ
0303nobodyさん2006/04/13(木) 13:02:58ID:???
>>301
explode("\n\n", 〜
preg_split('/([\r\n]|\r\n){2,}/', 〜
とかかな
0304nobodyさん2006/04/13(木) 13:04:18ID:???
>>302
date('Y-m-d H:i:s', strtotime('Mon, 10 Apr 2006 18:18:53'))
03053032006/04/13(木) 13:09:41ID:???
ごめん。正規表現のほう間違い。
これじゃ\r\n1つでも区切っちまうわ
0306nobodyさん2006/04/13(木) 14:18:17ID:???
文字数の表示制限って出来るのでしょうか?

例えば、$textに入っている文字数が200文字だとして
一覧に表示する時は20文字しか表示しないなど
0307nobodyさん2006/04/13(木) 14:22:10ID:???
専用のかんすうありまっせ
0308nobodyさん2006/04/13(木) 14:23:23ID:???
日本語環境なら
mb_strimwidth()
0309nobodyさん2006/04/13(木) 14:25:27ID:???
mb_strimwidth($text,0,20,'(以下略)');
mb_strimwidth($text,0,20,'...');

などなど
03103062006/04/13(木) 14:30:07ID:???
>>307-309
ありがとうございます。また、その関数でも検索して勉強します。
0311nobodyさん2006/04/13(木) 19:10:41ID:???
自己流ゴリゴリコーディングから脱皮したいので綺麗とかPHPらしいとか
言われるような読むのにオススメなソースコード教えてください。
0312nobodyさん2006/04/13(木) 21:31:24ID:???
>>311

ttp://koders.com/
ソースコード検索エンジン。色付きでソース見れてちょー幸せ。
0313nobodyさん2006/04/14(金) 01:47:26ID:AD++CmCG
一定時間ごとにスクリプトを起動させたいのですが
どのように書けばいいのでしょうか。
学生なのですがよくわからないので教えてください。
0314nobodyさん2006/04/14(金) 01:58:34ID:aAV+eb7H
PHPの基礎を自分でも作りながら勉強できる
チュートリアルのようなサイトご存知ないですか?
マンモス本を読み出して1部チャプター3で早くもくじけそうです・・・。
0315nobodyさん2006/04/14(金) 06:41:02ID:???
レッツPHPのぁぷろだ、うpされて1週間後に自動的に削除されるような改造って出来ますか?
0316nobodyさん2006/04/14(金) 07:28:18ID:???
>>313
cronかスクリプトで永久ループしながらsleep
学生だから知らないちゅー言い訳はヤメレ
>>314
根性入れろや
>>315
出来ますか?じゃなくて
やってみてわからないことを質問する>強く推奨
0317nobodyさん2006/04/14(金) 07:41:14ID:???
>>315
スクリプト起動時にファイルの日付をチェックして1週間以上前のものを削除する
opendir
whileでループ
readdir
filemtimeかstat
unlink
ループ終了
closedir
0318nobodyさん2006/04/14(金) 11:29:45ID:???
大量にファイルがあり、1週間アクセスが無かった後の
アクセスって無茶苦茶重くなりそうだな

上手くやれば回避できそうだが、そこまで知ったこっちゃないか
0319nobodyさん2006/04/14(金) 11:55:13ID:???
ファイルが大量にあるのかどうかも分からんし、
その辺はシステムの性格に応じてチューニングでよかろ
0320nobodyさん2006/04/14(金) 12:46:56ID:???
それこそcronなりで定期的に処理すればよくね
0321nobodyさん2006/04/14(金) 13:30:41ID:???
phpなんか使わなくてもfindコマンドでできるでしょ。そのほうが速いし。
0322nobodyさん2006/04/14(金) 13:49:41ID:???
>>320-321
まあそれだとLinux板行けということになるし、PHPでの処理方法を聞きたいのかもしれんし
0323nobodyさん2006/04/14(金) 14:35:43ID:9w4nbvJu
定数に以下のようにして値を設定しようと思っているのですが
セキュリティー的に問題があるのでしょうか?

define('HTTP_SERVER', 'http://'.$_SERVER[HTTP_HOST]);
0324nobodyさん2006/04/14(金) 14:45:48ID:???
その後どう利用するかだろう
0325nobodyさん2006/04/14(金) 14:57:36ID:???
>>323
定数の定義だけじゃセキュリティ上の問題は無い。
'HTTP_HOST' は、「現在のリクエストに Host: ヘッダが もしあればその内容。」となる。

ユーザから送られてきた値だから信頼はできねーぞ。
この意味分かるな。
Apacheのデフォルト設定だと、どんなHostヘッダでも受け付ける。
バーチャルホスト上のホストなら不正なホスト名だとサーバが受け付けないこともあるが
それを信用してはならない。
0326nobodyさん2006/04/14(金) 15:12:40ID:9w4nbvJu
>>324
画像のリンクなどのURLフルパスとして利用したかっただけなので
問題ないようですね

>>325
了解しました。

ありがとうございます
0327nobodyさん2006/04/14(金) 15:31:10ID:???
>>326
URLフルパス??そんなのに使える内容か?それ。
0328nobodyさん2006/04/14(金) 15:38:15ID:???
>>326
お前、325の言ってる意味わかってないだろ
0329nobodyさん2006/04/14(金) 15:40:35ID:???
>>326
>>325の内容了解していないお前は問題なくない
0330nobodyさん2006/04/14(金) 15:43:39ID:???
>>326
設定した定数(HTTP_SERVER)を、そのままSQLに突っ込んだりすると危険
($_SERVER[HTTP_HOST] にSQLインジェクションされる文字列とか入ってり)

結局は>>324の言うとおり、使い方次第

っGoogle検索「サニタイズ」
0331nobodyさん2006/04/14(金) 15:46:41ID:???
画像リンクとかってようするに毎回のHTML表示だろ?
困るのってその変なホスト名をよこしてきたユーザ本人だけでは。
0332nobodyさん2006/04/14(金) 16:15:18ID:???
>>322
PHPのCLI版で書いてcronで定期実行がスレに合ってるかな・・
シェルスクリプトでいいならそれでいい気もするけど
0333nobodyさん2006/04/14(金) 16:21:09ID:???
>>331
単純に考えてそうでも将来的にそれを利用した攻撃方法が発見されないとも言い切れないんだし、
htmlspecialcharsを通すべき。

03343262006/04/14(金) 16:21:41ID:???
>>327
使うんですよ
>>328
分かってますが?
>>329
基本的にドメインとダミーでバーチャル切ってるので問題なし
>>330
だから「html出力で画像のリンクに使用」といってるのですが…
>>331
そのとおりだと思っています
03353332006/04/14(金) 16:22:17ID:???
危険性のある変数だけエスケープするのでは無く、
エスケープしてはならない理由があり、かつ、安全性が確認できている変数のみエスケープしないというポリシーのが安全。

0336nobodyさん2006/04/14(金) 16:24:37ID:???
// HTMLタグの無効化
function h($value) {
return htmlspecialchars($value);
}

こんな関数作ったらどうです?
変数を h( と ) で囲むのはたいした手間じゃないでしょ。

高木浩光流のセキュリティ対策ブログでも読んでみたらどうかな
■ このスレッドは過去ログ倉庫に格納されています