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

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

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

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

過去スレは>>2
0356nobodyさん2006/07/12(水) 20:52:20ID:???
くだらん質問ばかりするなよ
自分で考えろ
0357nobodyさん2006/07/12(水) 21:11:44ID:bxIkUHnK
>>355
http://jp.php.net/manual/ja/index.php
ここに載ってるよ。

てか、ほとんどの質問、ここの関数調べてきゃ普通に一発で行きつくものばっかじゃねーかYO!
くだらない質問というよりも丸投げだろ!
0358nobodyさん2006/07/12(水) 21:12:02ID:???
俺様は優しいから教える

substr ("abcdefghijk", 2, 4);
0359nobodyさん2006/07/13(木) 00:01:37ID:???
>>355
その質問は明らかに悪い
何がしたいのかがわからない

元データがはっきりとわかっていて、取得する文字列もはっきりとわかっているのなら
$foo = "cdef";
とか書かれても仕方ないぞ
0360nobodyさん2006/07/13(木) 00:22:14ID:???
全くだ。
「n桁目〜m桁目までを取り出したいんです」
なのか
「bからgまでの内容を取り出したいんです」
なのか
「cdefって文字があったら取り出したいんです」
なのか、まったくさっぱり。
きみたちゃ小学生レベルかと・・・
0361nobodyさん2006/07/13(木) 00:38:26ID:4CgVM/D8
レンジリクエストって言葉分かります?
0362nobodyさん2006/07/13(木) 01:11:19ID:???
>>361
何だその人を馬鹿にしたような聞き方は
0363nobodyさん2006/07/13(木) 01:13:28ID:???
>>361
PHP関係ないね。Apache辺りのWEBサーバーのスレ行ってみれば?
0364nobodyさん2006/07/13(木) 01:22:32ID:???
>>361
まずググれ。話はそれからだ。
0365nobodyさん2006/07/13(木) 04:51:44ID:???
http://pc8.2ch.net/test/read.cgi/php/1150088761/
0366nobodyさん2006/07/13(木) 09:16:19ID:???
>>361
まずククレカレー。チキンラーメンはそれからだ。
0367nobodyさん2006/07/13(木) 18:03:28ID:4QScch9z
チキンラーメンうめーよ。
03681482006/07/13(木) 18:58:37ID:???
>>148
スレ違いだとは思いますが、開発言語がPHPなのでここで質問させてもらいました。
問題を解決するためにどのような情報(header関係だとは思うんですが・・・)を調べればいいのかわかりません。
ヒントだけでもいいのでどなたかわかる方いましたら宜しくお願いします。
0369nobodyさん2006/07/13(木) 19:02:00ID:???
http://example.com/a/login.php
http://example.com/b/login.php
上記のように「a」と「b」二つのフォルダにそれぞれセッションによる
ログイン認証が必要なスクリプトを置いたとき、「a」でログインした状態で
「b」にアクセスすると、既にログイン済みの状態となってしまいます。

上記の現象は、違うディレクトリ間でセッション・ファイルを共有してしまっている…と
いうことなのだと思うのですが、これってPHPの仕様ですか?
ちなみにサーバはXREA+です。
0370nobodyさん2006/07/13(木) 19:07:50ID:???
この糞暑いのにチキンラーメンなんかくってられっかよ!
0371nobodyさん2006/07/13(木) 19:20:47ID:???
>>369
http://jp2.php.net/manual/ja/ref.session.php

> 複数回のアクセスを通じて特定のデータを保持する手段を実現するものです。

逆に聞くが、ディレクトリやファイルが変わった時に
保持されないようなセッション情報に何の価値があると?

まずはログインしているかどうかの判定を見直せ。
0372nobodyさん2006/07/13(木) 19:38:22ID:???
>>371
そうかねぇ?
http://example.com/admin/login.php
http://example.com/users/login.php
でセッション情報を分離したいとかよくある要求だと思うけど。

>>369
http://jp.php.net/manual/ja/function.session-set-cookie-params.php

http://jp.php.net/manual/ja/ref.session.php#ini.session.cookie-path
を限定してあげれば良いと思うよ。
0373nobodyさん2006/07/13(木) 19:44:17ID:???
忘れてた。
http://jp.php.net/manual/ja/function.session-name.php
で session ID を別々に分けておかないとごっちゃになるよ。
0374nobodyさん2006/07/13(木) 19:49:21ID:???
ファイルごとやディレクトリごとにアクセス権限が違うような
状況を想定しているのだろうな
0375nobodyさん2006/07/13(木) 19:57:48ID:???
>>372
それだとCookie無効時に不具合が生じるんじゃ?

セッションデータにユーザレベルなり何なりを組み込んで
そっちで判断した方が良いんじゃないかと思うが。
0376nobodyさん2006/07/13(木) 20:01:30ID:???
>>375
> それだとCookie無効時に不具合が生じるんじゃ?
あ"? そんなの /a/ と /b/ で分離するとかしないとかに関係ない話じゃん。
そもそも Cookie が無効でもセッション情報が扱えるように
URL に ID 付与とかあるわけで、今回の話題と何の関係が?
0377nobodyさん2006/07/13(木) 20:13:10ID:???
>>376
  _, ._
(;゚ Д゚)…!?
0378nobodyさん2006/07/13(木) 21:32:54ID:???
あの・・・素人にも分かりやすいように解説してください
0379nobodyさん2006/07/13(木) 21:45:50ID:???
>>372
http://example.com/a/login.php
でログインした状態で
http://example.com/b/login.php
に行くと既にログイン済みになるという問題が起こっている。

>>371は基本的にセッションデータはサーバ上でひとつなので、
ログイン中かどうかを判断するルーチン
(恐らく『セッションデータがある=ログインしている』とかそんな感じと思われ)
を見直せと言った。

>>372-373
http://jp.php.net/manual/ja/function.session-set-cookie-params.php
でセッションキーを補完するクッキーの有効ディレクトリを制限してやれば
ディレクトリを移った時にはそのクッキーは食わないのでログイン済みにはならないと言った。

>>374>>372の方法だとクッキーを無効にしてある場合、つまり
http://example.com/a/login.php?SID=hagehagehogehoge
のようにURLパラメータとして受け渡す場合に
http://example.com/b/login.php?SID=hagehagehogehoge
のようにされるとやっぱりログイン済みになるので>>372の方法は不完全で、
セッションデータの中に今どちらにログインしているのかを示すデータを埋め込むべきだと言った。
要するに>>371と同じくログイン中かどうかを判断するルーチンを変えろと。

すると何故か>>377=372はキレ出した。

それを見た>>377は呆れていた。




一方ロシアは鉛筆を使った。
0380nobodyさん2006/07/13(木) 21:49:19ID:???
ごめん。

× 補完
○ 保管
0381nobodyさん2006/07/13(木) 21:51:39ID:???
さらにごめん。

× http://example.com/a/login.php?SID=hagehagehogehoge
http://example.com/a/login.php?PHPSESSID=hagehagehogehoge
0382nobodyさん2006/07/13(木) 21:54:18ID:???
>>379
> http://example.com/a/login.php?SID=hagehagehogehoge
> のようにURLパラメータとして受け渡す場合に
> http://example.com/b/login.php?SID=hagehagehogehoge
> のようにされるとやっぱりログイン済みになるので>>372の方法は不完全で、
ログイン済みにはならない。>>373 があるから。
0383nobodyさん2006/07/13(木) 22:14:17ID:???
おーなるほど。そいつはごめん。
03843692006/07/13(木) 22:16:38ID:???
>>369です。
皆さんのご意見を参考に、セッションデータに格納するログイン判定用のデータを、
ディレクトリ毎に変えてみたら上手くいきました。

以下のような感じです。
$_SESSION['loginOK'] = "a-logined"; //「a」でログイン成功時に格納するログイン済みフラグ
$_SESSION['loginOK'] = "b-logined"; //「b」でログイン成功時に格納するログイン済みフラグ

今回のような事例に関しては、意外と気付かないでいる人も多いのではないでしょうか?
同じドメインでディレクトリやサブディレクトリ毎に別のWebアプリを置いていて、
ログイン判定データが同じだったら全部のログイン認証が筒抜け・・・というのは盲点でした。

一種のセキュリティ・ホール(?)になりうるので、このスレのテンプレにも入れたらいかがでしょうか?
0385nobodyさん2006/07/13(木) 22:25:36ID:dYQP4E5n
<form action="<? $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<label>
<input type="file" name="upfile" size="35" />
</label>
<label>
<input type="submit" name="Submit" value="送信" />
</label>
</form>
<?

if($_POST['Submit'] == "送信"){

echo $_POST['upfile']:

}
?>

アップローダーを作ろうと思っているのですが、
上記のようにしても、upfileには何も格納されないのです。
どうすれば格納されるようになるのでしょうか?
03863692006/07/13(木) 23:03:37ID:???
追記です。
さらに実験してみたところ、
仮にログイン判定用のセッション・データ(>>384で書いたログイン判定フラグ)が全く同じ場合でも、
session_name('a');
session_name('b');
などのようにsession_nameをディレクトリ毎に分けて設定する(毎回session_startの前にコールする)という方法でも
大丈夫だということが分かりました。
0387nobodyさん2006/07/13(木) 23:28:13ID:???
当たり前のように
$_SESSION["siteA"]["色んな情報"] = ...
$_SESSION["siteB"]["色んな情報"] = ...
ってやってたけどこれじゃ何か問題あるの?
0388nobodyさん2006/07/14(金) 00:04:24ID:???
>>387
実際にテストしてみれば??
0389nobodyさん2006/07/14(金) 01:29:17ID:???
テキストファイルの最後の行1行だけ削除したいんですが
一度、全ての行を、変数にいれて、
最後の行だけを除いて、保存するというやり方しかないんでしょうか?

テキストファイルがでかくなるとメモリの消費が辛いんですが、変数を節約するいい方法を教えて下さい
0390nobodyさん2006/07/14(金) 01:33:50ID:???
>>389
1行のデータ量が決まってるならシークしてやればいいがそうでないなら無理。
DB使え
0391nobodyさん2006/07/14(金) 03:23:20ID:???
>>389
やりようはあるよ
ftellで場所を記憶しながらfgetsで取得していって
最後にftruncateでいける。

行の長さがある程度予想つくならば、最初にfseekしてパフォーマンスを上げられる。
0392nobodyさん2006/07/14(金) 03:27:25ID:???
>>389
最終行の先頭位置さえ分かればftruncate()で以降を削除できる。

最終行の位置を探すには
1.頭から1行ずつ読み込んでいって行末のftell()を保持しながら最後まで探していく
2.fseek()でファイル末尾に移動して1文字ずつ後ろから読み込んでいって1つ前の行末を探す
3.fseek()でファイル末尾から1行以上の分量だけ戻った位置に移動してそこから行単位に読み込む
などのアルゴリズムが考えられる。
3番は1行の最大長が分かってる場合は比較的有効。これが全然不明だと
100バイト戻って探索→ダメだったらさらにもう100バイト戻って…みたいになって大変。
この辺は対象ファイルのでかさなどからどこまで手間をかけるべきかを自身で判断しる。
処理時間は問題にならず単に消費メモリ量だけの問題なら1番で十分対応できる。

この種の末尾削除処理が頻繁に発生するなら、そもそもファイル書き込みの段階で
各行の先頭位置をインデックスファイルとして別途保存するか
そもそもファイルなんてやめてDB使った方がいい。
0393nobodyさん2006/07/14(金) 03:29:28ID:???
>>389
あと、全部丸ごと変数に入れなくても、
1行読み込み→その行を別のファイルに出力
というのを行単位に繰り返していって、
最後に元ファイル削除&別のファイルをリネーム、
って手順でも単純ながらメモリはほとんど食わずに処理できる。
でも、分量が多いならftruncate()の方が処理が軽いけどね。
0394nobodyさんNGNG
マルチバイト文字をsjisコード(8進)に変換したいのですが、
どうやればいいでしょうか?

"あ" を "202 240"
"犬" を "214 242"

というふうにです。
ご存じの方がいればよろしくお願いします。
0395nobodyさん2006/07/14(金) 04:19:14ID:???
>>394
$c = "あ";
$o = decoct((ord($c{0])) . " " . decoct(ord($c{1}));
echo $o;
0396nobodyさん2006/07/14(金) 05:37:32ID:???
>>384>>386
言われてみて自分の管理してるサイト調べてみたら、
別々のシステムなのにログイン情報(セッションファイル)が共通になってた…orz
0397nobodyさん2006/07/14(金) 07:08:44ID:???
>>385
マニュアル嫁
http://jp.php.net/manual/ja/features.file-upload.php
0398nobodyさん2006/07/14(金) 11:50:58ID:uuZ6ZGyp
$fp=fopen("test.txt","w");
fwrite($fp,'こんにちわ');
fclose($fp);

上記のようにファイルを作成する際に、
文字コードをUTF8に指定するには
どう記述すればいいんでしょう???
0399nobodyさん2006/07/14(金) 11:55:52ID:???
>>398
「こんにちは」が UTF8 になっていれば UTF8 になる。
ファイルに文字コードという属性はない。
0400nobodyさん2006/07/14(金) 12:12:07ID:???
fwrite($fp, mb_convert_traditional('こんにちわ', 'UTF-8', '内部エンコード'));
04013942006/07/14(金) 12:26:35ID:???
>>395
ありがとうございました。後で試してみます。

それで、逆を聞くのを忘れていました。

"202 240" を "あ"
"214 242" を "犬"

というパターンです。よろしくお願いします。
0402nobodyさん2006/07/14(金) 12:34:40ID:???
>>401
「decoct」って関数を示されているわけだから、マニュアル読めば関連項目とかで
見つけられそうだ、とは思わないのでしょうか?
http://jp.php.net/manual/ja/function.decoct.php
0403nobodyさん2006/07/14(金) 12:36:45ID:???
ごめん。「ord」の方だった。
0404nobodyさん2006/07/14(金) 12:45:47ID:???
>>401
http://pc8.2ch.net/test/read.cgi/php/1150088761/
0405nobodyさん2006/07/14(金) 12:56:23ID:Gr8Njl8B
マルチバイト文字列関数で正規表現の検索を行う場合、
内部エンコーディングって何が適当ですか?
0406nobodyさん2006/07/14(金) 13:14:14ID:???
EUC-JP
0407nobodyさん2006/07/14(金) 13:52:59ID:mRNg6YQD
SJIS
0408nobodyさん2006/07/14(金) 14:00:17ID:???
UTF-8
例外が少ない
0409nobodyさん2006/07/14(金) 14:05:42ID:???
>>405
そのサーバで使えるならUTF-8が安定してていいと思う
使えなきゃEUC-JP
Shift-JISはカタカナのソとかで面倒だから使わない方がいい
ちなみにコレはPHP書くときの文字コードの話ね
正規表現使うときはデータに合わせて正規表現の文字コードを指定するよろし
0410nobodyさん2006/07/14(金) 16:39:54ID:???
PDOを継承したクラスHogePDOにて、DB1への接続に失敗したら
DB2へ接続するといった処理を行わせようとしているのですが、
HogePDOのコンストラクタでPDOのコンストラクタを2回呼び出し
ても問題ないでしょうか?

class HogePDO extends PDO
{
 //DB1接続挑戦
 parent::__construct(DB1の設定);
 if( DB1接続失敗? )
 {
  //DB2接続挑戦
  parent::__construct(DB2の設定);
 }
}
0411nobodyさん2006/07/14(金) 16:44:17ID:???
>>410
試して出来たら問題ない
0412nobodyさん2006/07/14(金) 16:55:10ID:EKwqojz9
Google Web API のようにGETクエリでXML出力してくれる辞書サービスはないでしょうか?

こんな感じで 'PHP' を辞書から(国語、英和、和英)検索
ttp://dictionary.goo.ne.jp/q=PHP
0413nobodyさん2006/07/14(金) 17:08:35ID:???
//www.sanseido.net/
0414nobodyさん2006/07/14(金) 17:17:08ID:???
あるけど有料しかねえよなあ、海外であったとしても日本語はサポートされてないだろうし
てことで三省堂しか選択肢ないんじゃないかな
0415nobodyさん2006/07/14(金) 17:35:29ID:LYbOhGxK
Win2k+Apache2.2+PHP5.1.4で環境作ろうとしているのですが、
こういうのを参考にインストールしてみました。
http://www.bnote.net/windows/windows/win_php.shtml

Apacheのhttpd.confの
LoadModule php5_module c:/php/php5apache2.dll
があると、Apacheが起動しません。
これをコメントアウトするとApacheが起動できて、htmlは見れます。

PHPはコマンドライン版は動くのですが、
起動しない理由のヒントをください。
0416nobodyさん2006/07/14(金) 17:39:26ID:???
>>415
俺はここみてやったらできたぞ。
ttp://oss.kk-ntc.co.jp/jpug/pukiwiki/pukiwiki.php?PHP%A4%CB%A4%E8%A4%EBWeb%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%B3%AB%C8%AF
04174152006/07/14(金) 18:02:38ID:???
>> 416
おおありがとう!

> 注2)apache_2.x.x系は、今回は使用しません。
> PHP4とApache2の組み合わせは現時点ではお奨めできません。
PHP5を使いたいのにっ _| ̄|○
Apache2.2か!?Apache2.2がだめなのか!?
0418nobodyさん2006/07/14(金) 19:41:12ID:vYtz7wst
$lines = file($filename);
をした後で、$linesにhogeという文字が入っている行のみを見つけ出すには
どうすれば良いですか?正規表現を使うのかなぁという気がするのですが
正規表現を使った経験がなく、どうしたらよいのか方法を教えてください。
0419nobodyさん2006/07/14(金) 19:45:43ID:???
foreach ($lines as $line) {
 if (preg_match('/hoge/', $line)) {
   print("Hit!!\n");
 }
}
0420nobodyさん2006/07/14(金) 19:55:06ID:???
>>418
この質問、かれこれ10回近く見るぞ
釣りか?
0421ぬこえもん(=・ω・) ◆S715eQBvs6 2006/07/14(金) 20:25:24ID:Rg3ieVQg
どんどん語句に関する情報を追加していく辞書ツールみたいのをPHPで構築しようかと思ってるのですが
辞書順に配列するために何かよいアルゴリズムは無いでしょうか??
0422nobodyさん2006/07/14(金) 20:31:27ID:???
>>421
語句の格納先はDB?それともテキストファイルとか?
それとも独自のバイナリ?
0423nobodyさん2006/07/14(金) 20:49:28ID:???
htmlにアクセス解析を埋め込みたいのですが、
iframeを使うとリンク元がそのページになってしまいます。
何か良い方法はないのでしょうか?
(スレ違いならすみません。)
0424nobodyさん2006/07/14(金) 20:51:23ID:???
>>423
.......
<img src="http://hoge.com/hogehoge.php"; />
0425ぬこえもん(=・ω・) ◆S715eQBvs6 2006/07/14(金) 20:53:09ID:Rg3ieVQg
>>422
ごめんなさい、言い忘れてました

テキストファイルだとかに生ファイルとして書き込みしようかと考えています。
それだとソフトウェアで再生することもできますし。

DBではこんなこと考えなくてもいいのかもしれませんね
0426nobodyさん2006/07/14(金) 21:03:00ID:???
>>424
ありがとうございます。
試してみたところ、カウントされる様子はないのですが・・・
0427nobodyさん2006/07/14(金) 21:05:37ID:???
>>425
textだとまず該当する語句がそのファイル内にあるかどうかの
真偽を判定しなきゃならんが、語句の数が多くなってくるとPHP標準の
関数で配列とかに読み込むとメモリ食うし、ソート処理も時間かかる。
DBにまかせた方がベター
どうしてもtextでやるんなら力任せ検索で真偽判定して偽であれば追加、
っていうのが面倒くさくなさそう。Boyer検索とかもあるけど。
0428nobodyさん2006/07/14(金) 21:18:26ID:???
>>423
リファラが欲しいなら、JavaScriptを使って
画像なりを出力するサーバースクリプトに引数として渡して呼び出すか
HTMLをPHPとして実行できるように設定するかの
どちらかかな。

04294262006/07/14(金) 21:18:30ID:???
ちなみにタグは
<img src="./count/count.php" width="0" height="0" />です。
0430ぬこえもん(=・ω・) ◆S715eQBvs6 2006/07/14(金) 21:50:14ID:Rg3ieVQg
>>427
そうですか・・・・
やっぱりそれしかないのですね・・・・

構築できたらそれだけでDBソフトとして利用できそう
0431nobodyさん2006/07/14(金) 21:53:15ID:3oB/DzeI
え?何でiframeとか使うの?
0432nobodyさん2006/07/14(金) 22:38:02ID:???
>>430
・単語単位にファイルを作る
とか
・記録は登録順にしておいて各単語の順番を保持するindexを作る
とか
・1行の長さを固定にするか行の位置をindexに記録しておいて自由に挿入削除可能にする
とか。
ちなみにテキストファイルじゃないけど固定長レコードで高速キー検索できるようにした
ファイルを使ったDBもどきとしてはdbmというのが既にある。Perl辺りじゃ標準装備。
0433nobodyさん2006/07/14(金) 22:39:39ID:???
>>420
同じ学校の生徒が揃って宿題片付けにきてるんじゃね?
0434nobodyさん2006/07/14(金) 22:43:12ID:???
>>402
彼らは「仕組みを知りたい」んじゃなく「こうやったらこうなる」という
結果が出てくる方法だけをケーススタディとして知りたいだけなんじゃないかなー。
WEBから入ってJavaScriptのサンプル集とかでしかプログラムしたことないやつには多そう。
もしも「そんなことはない!」というなら漏れなく消防レベルの知能指数と断定してやろうw
0435nobodyさん2006/07/14(金) 22:48:12ID:???
そんなことわない!
0436ぬこえもん(=・ω・) ◆S715eQBvs6 2006/07/14(金) 23:17:25ID:Rg3ieVQg
>>432
はあくしました
サンクスです
0437nobodyさん2006/07/14(金) 23:31:36ID:???
>>418
複雑な条件を探すんならともかく、単にhogeって単語を探すだけなら
正規表現は使わない方が速いし確実。
strpos()使え。
0438nobodyさん2006/07/14(金) 23:35:14ID:???
phpでhotmailの登録画面みたいな画像チェックコードを使用した認証みたいなものって
作れますでしょうか?
phpですとなかなか資料が見当たらなくて・・

perlだと「ひみこーど」?というのがあるみたいですがphpで可能でしょうか
0439nobodyさん2006/07/14(金) 23:54:51ID:???
画像認証は視覚障害者にあまりにも不親切だからいずれ廃れると思うけどね。
0440nobodyさん2006/07/14(金) 23:55:40ID:???
>>438
可能です
0441nobodyさん2006/07/15(土) 00:04:59ID:???
>>438
PEAR::Text_CAPTCHA
ttp://pear.php.net/package/Text_CAPTCHA
ttp://pear.plus-server.net/package.text.text-captcha.html
紹介ページ
ttp://www.doyouphp.jp/sample/sample_others_captcha.shtml
ttp://kawama.jp/archives/2006/05/peartext_captch.html
ttp://blog.poyo.jp/archives.php/categ-1/year-2005/month-1/id-1106990727
0442nobodyさん2006/07/15(土) 10:01:30ID:???
>>418-419
preg_grep というすばらしい関数がある。

$mutches = preg_grep('/hoge/', $line);
0443nobodyさん2006/07/15(土) 10:02:55ID:???
grep は、perlだと、正規表現だけでなく条件の真偽を元に配列を返えす使い方もできるんだが、
PHPだと無理?
0444nobodyさん2006/07/15(土) 10:54:50ID:???
>>443
無理じゃね?PHPの関数はそういう本来の用途外に使うような汎用性は持たせない作りになってるし。
04454382006/07/15(土) 11:03:38ID:???
>>441
おおっありがとうございます!!!!
感謝です!
0446nobodyさん2006/07/15(土) 12:13:33ID:DUyjY8jk
ある条件(ゲームに勝つ等)をクリアした者だけにファイルをダウンロードさせるスクリプトを書こうとしてます。
phpをCGI(Suexec)で動かして、ダウンロードさせるファイルのパーミッションを400にし、↓のようなスクリプトでダウンロードさせようと考えています。

if(ある条件をクリアしたら){
 header("Content-Disposition: inline; filename=\"".basename($path_file)."\"");
 header("Content-Length: ".$content_length);
 header("Content-Type: application/octet-stream");
 if (!readfile($path_file)) {
  die("Cannot read the file(".$path_file.")");
  }
 }

この場合、ダウンロードさせるファイルは、99%不正にダウンロードされないと思っていいのでしょうか?
あと、他にパフォーマンスやセキュリティ面で勝る方法があれば、教えていただけるとありがたいですm(_ _)m
0447nobodyさん2006/07/15(土) 12:16:29ID:???
>>446
$path_fileとかいうのがDOCUMENT_ROOT以下に置いてないんなら
まー不正ダウンロードされることはないっしょ。
あとはそのif条件を不正に成立されたりしないかくらいでないの?
0448nobodyさん2006/07/15(土) 12:28:11ID:???
>>447
レスありがとうございます

DOCUMENT_ROOT以下においた場合はかなり危険ですか?
0449nobodyさん2006/07/15(土) 12:41:31ID:???
>>448
パーミッション400なら大丈夫じゃないかな
ついでに.htaccessで制限しとけば
0450nobodyさん2006/07/15(土) 12:46:12ID:DUyjY8jk
>>449
安心しました。ありがとうございますm(_ _)m
念のため.htaccessも使おうと思います
0451nobodyさん2006/07/15(土) 13:19:27ID:dl9oNIQi
>>443
そういうのはarray_filterとかarray_reduceだと思うけど、grepと比べたら使い勝手は悪いかも。
0452nobodyさん2006/07/15(土) 13:35:16ID:???
つか、全般的にPHPの関数は融通という意味ではPerlほどの使い勝手は無いよ。
PHPの関数はあくまでC言語ライクだが、Perlの関数はシェルスクリプトライクなわけで。
でも、だからこそ誰が書いても比較的一定のコーディングスタイルを保ってられるんだと思うけどね。
0453nobodyさん2006/07/15(土) 14:37:30ID:RYeH9Y82
 PHPの文字コードについて質問なのですが、どなたか教えて頂けますでしょうか。
環境は、SunCobaltRedHatLinux7.0+PHP5.0.4+nkf2.0.4です。
「ココ,ココリコ,ココ数」とだけ書いたsample1.csvをUTF-8(改行コードCR+LF)
で作成します。そして、test1.phpというファイルをUTF-8(改行コードCR+LF)で
作成し、<input type="file"〜>でファイルアップロードが出来、fgetcsvで、
アップロードしたCSVファイルの要素を取得出来るように、test1.phpに記述します。
test1.phpに、
list($field1,$field2,$field3)=fgetcsv(アップロードしたファイル名);
print("1番目".$field1."2番目".$field2."3番目".$field3);
と書くと、
「1番目??コ2番目??コリコ3番目??コ数」
と、先頭の文字が「??」に文字化けしてしまうのです。この原因は、どなたかお分
かりでしょうか?先頭の「コ」以外は文字化けしていないので、「コ」という文字
が原因ではないと思います。test1.phpの先頭に「mb_internal_encoding();」と書く
と、「ISO-8859-1」と出て来ました。これが原因かと思って、
「mb_internal_encoding("UTF-8");」としたのですが、やはり同じ文字化けのままでした。

 ちなみに、他のPCにFedoraCore2+PHP5.0.4+nkf2.0.4をインストールし、全く同じ(!)
sample1.csvとtest1.phpで試した結果、「1番目ココ2番目ココリコ3番目ココ数」と
なり、正しく表示されました。けれども、本番機はSunCobaltRedHatLinux7.0で動いて
いますので、本番機の文字化けを直さなくてはならないのです。どなたかお分かりで
しょうか?教えて頂ければ、幸いです。
0454nobodyさん2006/07/15(土) 14:47:39ID:???
>>453
とりあえず、サーバにアップロードした後のcsvファイルを確認してみて、
異常がないか調べてみれば?
04552322006/07/15(土) 14:50:39ID:???
preg_match_al関数で質問があります。

<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$out, PREG_PATTERN_ORDER);

print_r($out);

?>

以上を実行すると以下の配列が出力されます。

Array ( [0] => Array ( [0] => example:
               [1] => this is a test
     [1] => Array ( [0] => example:
              [1] => this is a test ) )

これだと配列が取り出しにくいので

Array ( [0] => example:
      [1] => this is a test )

↑こんな感じに$outに配列を格納することは出来ませんか?
0456nobodyさん2006/07/15(土) 14:51:40ID:???
>>453
mbstring.language は何になってんの?
■ このスレッドは過去ログ倉庫に格納されています