【PHP】質問スレッド Part5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/11 14:15ID:FWA0CpdU■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ及び注意事項等は、
>>2-10あたりにきっと誰かが……。
0421s
02/10/15 13:02ID:MW777drM0422nobodyさん
02/10/15 17:15ID:60o/Yyha$hogeで受け取るのと何が違うの?
0425418
02/10/15 18:50ID:???eregi()で検索する方法をやめて、
mb_strpos()を使うようにしたらうまくいきました…
0426nobodyさん
02/10/15 18:54ID:MbJ1xrNTだれかこれ使ってる人居ない?
0427nobodyさん
02/10/16 02:07ID:???iamview.php
<html><head></head><body>
<?php
echo "I am View<br>\n";
echo "PHP_SELF = ".$_SERVER[PHP_SELF]."<br>\n";
include "iambean.php";
$iambean = new iambean;
?>
</body></html>
iambean.php
<?php
class iambean{
function iambean(){
echo "I am Bean<br>\n";
echo "PHP_SELF = ".$_SERVER[PHP_SELF]."<br>\n";
}
}
?>
結果
I am View
PHP_SELF = /php/iamview.php
I am Bean
PHP_SELF = /php/iamview.php
2個目はiambean.phpになってほすぃ
0428nobodyさん
02/10/16 02:21ID:???__FILE__は?
0429nobodyさん
02/10/16 02:37ID:???class iambean{
function iambean(){
echo "I am Bean<br>\n";
echo "PHP_SELF = ".$_SERVER[PHP_SELF]."<br>\n";
echo "SCRIPT_FILENAME = ".$_SERVER[SCRIPT_FILENAME]."<br>\n";
echo "PATH_TRANSLATED = ".$_SERVER[PATH_TRANSLATED]."<br>\n";
echo "SCRIPT_NAME = ".$_SERVER[SCRIPT_NAME]."<br>\n";
echo "__FILE__ = ".__FILE__."<br>\n";
}
}
?>
結果
I am View
PHP_SELF = /php/iamview.php
SCRIPT_FILENAME = c:/program files/apache group/apache/htdocs/php/iamview.php
I am Bean
PHP_SELF = /php/iamview.php
SCRIPT_FILENAME = c:/program files/apache group/apache/htdocs/php/iamview.php
PATH_TRANSLATED = c:/program files/apache group/apache/htdocs/php/iamview.php
SCRIPT_NAME = /php/iamview.php
__FILE__ = c:\program files\apache group\apache\htdocs\php\iambean.php
いけました!こんなのマニュアル載ってましたっけ??
ありがとうございました。
0430nobodyさん
02/10/16 02:53ID:QXwwjHEP私はめんどくさいのでUTF-8Nです
0431nobodyさん
02/10/16 02:56ID:m/rwzFSQ・複数のファイルを選択してアップロード出来ますか?
・ファイルではなくディレクトリを指定して、その階層下のファイル、サブディレクトリをアップロード出来ますか?
0432nobodyさん
02/10/16 03:05ID:FAL4tSOv0435nobodyさん
02/10/16 11:40ID:FAL4tSOv0436nobodyさん
02/10/16 12:35ID:???0437nobodyさん
02/10/16 15:28ID:???基本的にそれでいいけど、formの方で
<input type="file" name="file[0]"> とやって受ける方で
配列の数だけループさせんのが楽です。
0438nobodyさん
02/10/17 13:19ID:wnOpV9llブラウザを閉じなくてもセッションが切れてしまうみたいです。
php.iniのsession.cookie_lifetimeとかsession.gc_lifetimeとかも
いろいろいじっみたんですがやっぱり30分前後で切れてしまうようです。
もっとセッションを長く持つことはできないのでしょうか・・・
0440nobodyさん
02/10/17 13:56ID:frKHjIQwDefaultだとセッション情報の生存時間は24分になってる
session.max_lifetime = 1440
ただし、24分以降のアクセスが有った場合に
session.gc_probability = n
で定義されているn%の確率でガベージコレクション処理が
実行される。
アクセスがなければ、セッション情報はアボーンされない。
デフォルトはsession.gc_probability = 1
だから、結構なアクセス数がないとgcは開始しないはず
何だけど
0441440
02/10/17 13:58ID:frKHjIQws/max_lifetime/gc_maxlifetime/
0442x
02/10/17 14:28ID:93YjN7NA↓ ↓ ↓
http://www.dream-express-web.com/space-trust.htm
0443438
02/10/17 14:51ID:dtum+/dqgc_maxlifetimeってそういう意味だったんですね
ドキュメントみてもよくわからなくて。
アクセスが結構あるのでこの値を大きくしてみます
0444nobodyさん
02/10/17 17:30ID:B8kY3RPw0445nobodyさん
02/10/17 17:40ID:???echo $id;
0446nobodyさん
02/10/17 18:23ID:B8kY3RPw$better_token = md5(uniqid(rand())); // 推測が困難であり、より優れている。
0449nobodyさん
02/10/17 23:11ID:???ここのレスだけじゃなくMLもな
0450nobodyさん
02/10/18 11:07ID:???$mail_status = mb_send_mail($form["recipient"],$form["subject"],$mailbody,$mail_header);
の$mail_headerに一部日本語を含めてます(From:[email protected](名無しさん) みたいに)
で、mb_send_mail は、仕様として、最後の引数(ヘッダ)だけは文字コード変換してくれないのでしょうか?
上記のままだと、本文やタイトルは文字化けしてませんが、
From:[email protected](名無しさん) の日本語だけ、化けてます。
なので、
$mail_header = mb_convert_encoding($mail_header, "JIS", "JIS, eucjp-win, sjis-win");
としたら、文字化けは解消されたのですが。。。
こういう仕様なんでしょうか?
0452450
02/10/19 03:30ID:Rs0UFwL7マニュアル見ても、string mb_language ( [string language])の設定によって、変換・エンコードされる
としか書いてないです。。。
やぱ、
boolean mb_send_mail ( string to, string subject, string message [, string additional_headers [, string additional_parameter]])
のstring additional_headersは、そのままスルーなんでしょうか・・・?
0453nobodyさん
02/10/19 04:44ID:???セキュリティ上望ましいと、聞いたことあります。
で・・・質問です。
<インクルードされるファイルは「*.inc、*.conf」の拡張子に限る>というルールをつくった上で、
<Files ~ "\.(inc|conf)$">
order allow,deny
deny from all
</Files>
をhttpd.confに加えれば、htdocsの下に「*.inc、*.conf」を置いても、セキュリティ上の問題は、
ないんじゃなかろうかと思ったんですが、実際、どうなんでしょう?
0454age
02/10/19 10:02ID:???0455nobodyさん
02/10/19 10:46ID:3cLIDoBpそれで安全だろ。
0458nobodyさん
02/10/20 07:20ID:???たとえばレスをはじめから10件読む場合には、
1行づつ読み込んで、10行目を読み込んだ時点でファイルを閉じればいいですね。
しかし、「最新のレス10件」を読み込む場合には、
レスの範囲を計算するためには、「全部で何行あるか」を調べなくてはいけませんね。
そうすると、feofまで読み込んで、fseek等をしつつ、行数を調べてから、
改めてファイルを読み込むと言うことになります。
それなら、fileで一気にファイルを配列に読み込んで、その後でarray_spliceなりを
施せばいいのですが、データファイルが200KB,300KBにもなるとそれは
さけたいですね。
アドバイスをお願いします。
0459458
02/10/20 07:25ID:???それにしても、この板、人口少ないですね。
0460nobodyさん
02/10/20 08:06ID:???> データファイルが200KB,300KBにもなるとそれは
> さけたいですね。
その程度なら全部を配列に読みこんでも良いのでは?
0461nobodyさん
02/10/20 09:19ID:3NSvh+yz書き込み時に、何行書き出すか取得して、それを別ファイルに落とす。
んで、その別ファイルには何行あるか、と言う数値が1行ずつしか書き込まれない。
で、その別ファイルを10行分読み込んで、10行分の数値を全て足した数値+タグ分の数値で、
何行まで読み込めばいいか、処理出来ると思うが。
これだと、メッセージ編集した場合の書き換え処理が大変だが、メッセージ編集しないのであれば
これでいいと思われ。
0462redeclareさん
02/10/20 11:43ID:TH9l9BrQFatal error: Cannot redeclare class logger in
c:\apache\htdocs\php\logger.php on line 2
と言われてしまいます。
Javaでは同じクラスを何度もimportできるのに・・・。
この場合どのような構成にしたらよいのでしょうか?
コードを以下に示します。
0463redeclareさん
02/10/20 11:49ID:TH9l9BrQ<?php
include "hello.php"; $hello = new hello;
include "goodbye.php"; $goodbye = new goodbye;
?>
<html><head></head><body><?=($hello->msg().$goodbye->msg())?></body></html>
hello.php
<?php
class hello{
function msg(){
$msg = "Hello,2chWorld.<br>\n";
include "logger.php"; $logger = new logger; $logger->log();
return $msg;
}
}
?>
goodbye.php
<?php
class goodbye{
function msg(){
$msg = "Goodbye,2chWorld.<br>\n";
include "logger.php"; $logger = new logger; $logger->log();
return $msg;
}
}
?>
logger.php
<?php
class logger{function log(){}}
?>
0465redeclareさん
02/10/20 12:21ID:TH9l9BrQできました!
今までリクエストが送られるたびに
初期処理的にfactoryクラスを呼んで
$GLOBALSに共通利用されるクラスをいれて使用するという
なんともまどろっこしいことをしてましたが
これで解決です。感謝!
0466nobodyさん
02/10/20 16:50ID:jWiCSXPtって、もっとスマートな書き方
($HTTP_SERVER_VARS[DOCUMENT_ROOT] なんて使わずに)
あります?
SSI include みたいな。
0467nobodyさん
02/10/20 17:06ID:???でいいんじゃないの?
0468458
02/10/20 19:58ID:???php.iniもさわれないし、.htaccessにもかけない環境の方は、
define("INCDIR",$_SERVER['DOCUMENT_ROOT'] . "/hoge/hage/");
として、
include(INCDIR . "foobar.inc");
でいいんじゃ?
0469s
02/10/20 20:06ID:7cHVMr6a$INCLUDE_PATH = ini_get('include_path');
$new_include_path = "{$INCLUDE_PATH}:{$DOCUMENT_ROOT}/hoge";
ini_set('include_path', $new_include_path);
0471nobodyさん
02/10/21 00:42ID:???0472nobodyさん
02/10/21 01:33ID:az6boZmG自分でコードを書くしかないのでしょうか?
0474nobodyさん
02/10/21 01:54ID:???0475nobodyさん
02/10/21 02:56ID:???$|=1;
open(STDOUT,"| /bin/gzip -1 -c");
この二つはPHPではどう書けるのでしょう。
0480nobodyさん
02/10/21 06:56ID:???おすすめの書籍とかないでしょうか?
0482471
02/10/21 11:00ID:???ログに$_SERVER[PHP_SELF]とfunction名と行を出そうと思ってるのですが
function名を文字列として渡すのは面倒&function名が変わったら修正増
ということでなんとかして関数その他で取れないかな、と。
0484nobodyさん
02/10/21 16:27ID:???・ひたすらがんばる
$array = array("a", "b", "c".......................................................);
・forでまわしてみる
for($i = ord("a").................................................)
というのが簡単に思いつくんですが、もう少し簡単で綺麗な
書き方はないでしょうか
0485nobodyさん
02/10/21 16:59ID:RKsFdcBa$alpha = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
$a = explode(",", $a);
print_r($alpha);
こんなんで、どや
0486すいません
02/10/21 17:00ID:???本当にくだらない質問なんですが
PHPで、ユーザーエージェントによって
携帯端末用とPC閲覧用で表示を変えたいのですが
どういう風にすればよいのでしょうか?
なんとなく形はわかるんですが、それを実際に
PHPで動作させるのがわかりません><
たぶん・・・
環境変数からユーザーエージェントを見て
i-mode/j-sky/ezwebならこっちを表示
それ以外ならアッチを表示・・・というプログラムになると思うのですが・・・。
どなたかお優しい方ご教授お願いいたします。
0487485
02/10/21 17:01ID:???$alpha = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
$a = explode(",", $alpha);
print_r($a);
0490458
02/10/21 20:12ID:Z25MjzcQUserAgentのデータベースを作りましょう。
http://www.hyuki.com/yukiwiki/wiki.cgi?UserAgent
サルにもわかる正規表現入門
http://www.mnet.ne.jp/~nakama/regexp1.html
制御構造について
http://homepage1.nifty.com/~takaot/prprpr/controlblock.html
PHPマニュアル
http://www.php.net/manual/ja/
0491hmk
02/10/21 21:09ID:???私は、$array = array("a", "b",...); にするべきだと思う。
他人がコードを読むときのことを考えると、意味がはっきりするほうが良いと思います。
0492458
02/10/21 21:14ID:Z25MjzcQ同意。
たとえだと思うけど、a〜z間での配列を作る前に、それが本当に必要なのか、
検討すべきだと思う。
俺は、他人がコードを読むときなんてあんまりかんがえんが、
a-zと綺麗に並んだ配列を用意する時点で遠回りしている感じはするね。
で、1字づつの配列でいいのなら、
$array="abcdefg......";
でええのとちゃう。
0494nobodyさん
02/10/22 00:47ID:n3viipFn簡易伝言板のようなものを作ってるんですが、ログファイルが変なことに。。。
---------
name<>mes<>date
name<>mes<>date
name<>mes<>date
--------
といった感じに、改行数がどんどん多くなってしまいます。。。
表示などには特に問題は起きないんですが、ログファイルが見づらくなるので。。。
よろしければ対策を教えて下さい。
0495494
02/10/22 00:48ID:n3viipFnif($_POST{'name'} && $_POST{'mes'}) {
$name = $_POST{'name'};
$mes = $_POST{'mes'};
// 現在日時取得
$date = gmdate("d(D) h:i a", time() + 60 * 60 * 9);
// フォーマット
$data = "$name<>$mes<>$date\n";
$logs = file($logfile);
$fp = fopen($logfile, "w");
fputs($fp, $data);
$log_max--;
for($i=0; $i<$log_max; $i++) {
fputs($fp, $logs[$i]);
}
fclose($fp);
}
http://php.s3.to/tt/tt5.php
ここにあるサンプルのゲスブも同じ事態になりました。。。
0496nobodyさん
02/10/22 09:50ID:???0497nobodyさん
02/10/22 10:08ID:TXJWZ2fS1台のサーバでApacheのVirtualHost機能を使って
aaa.hogehoge.com
bbb.hogehoge.com
を作るとします(ドメインは同じ)
この場合、aaa.hogehoge.comで登録したセッション変数を
bbb.hogehoge.comで参照することはできるのでしょうか?
同一サーバなので/tmpが参照できるから問題ないのかなあとか
思うんですけど、環境が作れなくて実験できません。
やったことのある方、すみませんが教えてください。
基本的には可能。
但し、cookie経由でSessionIDを取得することは普通出来ない。
相対リンクでないので、URLに自動付加もしてくれない。
で、PHPSESSID=....を自力で出力する必要があると思う。
0499497
02/10/22 16:46ID:TXJWZ2fSPHPマニュアルに「session.cookie_domain」ってのがあったんですけど
これを指定すればcookie経由で使えないですかね?
教えてクンでごめんなさい。
なるほど、
session.cookie_domain=hogehoge.com
ってことだな。
運営上セキュリティに問題がない場合はそれでいいんじゃない。
0501nobodyさん
02/10/22 18:25ID:AaVCn9+u\rコードを削除すればいい。
0502458
02/10/22 19:13ID:TmLjz4JJデリミタをタブやカンマじゃなくて<>にするのは、
流行ってるの? 壺の影響か?
0503nobodyさん
02/10/22 19:45ID:???俺もやっているが、俺はKENT氏の真似。つか、ログ互換にしたかったので使った。
<>は、htmlでは <> に変換されるから、内部表現に使えて便利。
カンマにしてcsvにしても良いが、カンマを含む文字列を使う時は""でくくる必要が
あるけど、fgetcsvを使うほうが効率的かな?
0504458
02/10/22 19:48ID:X7v1eaNofwritecsv(int fp, array data, str delimiter)
というのがあれば便利なんだけどね。
0505nobodyさん
02/10/22 20:43ID:???流行ってるとかじゃなくて単に普通の文書中では
まず使われる事がなく、且つフィールドの境界が
目で見て分かりやすいからじゃないのかな。
0507503
02/10/22 21:12ID:???ぉぃぉぃ、俺は &lt;&gt; って書いたはずだぞ。
2chは & を & に変換しないのか?
0509努力が&rlo;いなり足
02/10/22 21:38ID:???0510503
02/10/22 21:50ID:???> <>は、htmlでは <> に変換されるから
ぉぃぉぃ、俺は <> って書いたはずだぞ。
2chは & を & に変換しないのか?
0513nobodyさん
02/10/23 00:49ID:y/QVQMdnことにしている。
読み出すときに、<>&"'などを「&xx;」に変換して表示するようにしている。
のでデリミタを<>はしないです。
0514nobodyさん
02/10/23 02:04ID:???0516nobodyさん
02/10/23 03:06ID:???\t オーソドクスに
↓
, CSV
↓
| psqlマンセー
↓
<> Kentさん好き!!
↓
Unicode NULLモジ
↓
\t に戻る。
0517nobodyさん
02/10/23 07:08ID:???0519nobodyさん
02/10/23 11:25ID:???0520nobodyさん
02/10/23 13:02ID:knm2mfqY末尾に要素を追加するにはどうすればいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています