【PHP】くだらねぇ質問はここに書き込みやがれpart3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/02/07 21:47:15ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
0608nobodyさん
05/02/24 21:02:37ID:???そんな某国の情報操作みたいなことはヤメレ
0611nobodyさん
05/02/24 23:19:05ID:???0612nobodyさん
05/02/24 23:35:47ID:sdrJy1MC0613nobodyさん
05/02/25 00:07:01ID:???<?php
$DATFILE = 'hoge.dat';
if($_GET['msg']){
$fp = fopen($DATFILE,'a');
fwrite($fp,$_GET['name'].' says:'.$_GET['msg']);
fclose($fp);
}
print_r(file($DATFILE));
exit;
?>
0615nobodyさん
05/02/25 00:53:28ID:VA4tKjSS0617nobodyさん
05/02/25 01:54:56ID:???header('Content-Type: text/plain');
入れとかなきゃデフォルトだとhtml扱いされて(+д+)マズー
0618nobodyさん
05/02/25 02:02:40ID:???検索して検索結果が表示されてそのページ内の個々のデータを
見てブラウザの戻るボタンで前に戻ろうとすると
「警告 : ページの有効期限切れ」が表示されます。
Javascriptのhistory;back()でも同じ状態になります。
これを回避して検索結果の状態に戻す方法は無いのでしょうか?
0619nobodyさん
05/02/25 02:33:32ID:???別にブラウザのキャッシュを表示しても構わないようなものなら
静的なhtmlにすればいいような気がするけど。
header() で Cache-Control: とか設定すればよかった気がする。
httpのRFCを読むなりしてそれらしいヘッダがあれば設定してみれば?
0620nobodyさん
05/02/25 02:41:50ID:???ブラウザのキャッシュに戻れた方がいいのかな。
google は確か検索結果をキャッシュするようにしてたから、
telnet google.co.jp 80 してみて、それらしいヘッダを設定する手もあると思う。
0621618
05/02/25 12:32:03ID:???いや、検索結果というのは自身で作成したプログラムです。
例えば会員検索のPHPプログラムがあったとして
検索フォーム(HTML)→検索結果(PHP)→詳細情報(PHP)→
検索結果に戻る→有効期限切れエラー
やはりブラウザに依存するんですかね。。
0622nobodyさん
05/02/25 12:49:33ID:???ここをmethod="get"にしたらどう?
0624nobodyさん
05/02/26 00:15:54ID:DKGm/bS1ことになったのですが、sessionに保存できる上限値みたいな
ものはあるのでしょうか。
昔Perlでcookieを使っていたとき、一つのキーに3000バイト
くらい入れたら500エラーが出たことがあるので、質問させて
いただきました。
サーバサイドで持つものなので大目に取れるのではとは
思っておりますが、ご教示いただけますと幸いです。
0625nobodyさん
05/02/26 02:37:43ID:???Lovemorgue.orgで使われてる右側のメニューのモジュールは
なんですか?
0627nobodyさん
05/02/26 06:16:31ID:???実装上の制限はあるかも知れないけど、100程度だったら問題無いんじゃないの?
心配ならphpのソースコードを見てみれば良いかと。
cookieに関しては、RFC 2109(新しいものが出てるかも知れない)の
6.3 Implementation Limits に、
at least 4096 bytes per cookie の一文がある。
0628nobodyさん
05/02/26 07:28:59ID:1NcE1tZVResource id #2
と出たんですがこれって何をうったえてるんでしょうか?
ちなみにやりたい事は↓これなんですけども…
$handle = fopen('aaa.txt', 'r');
echo $handle;
fclose($handle);
もしかしてaaa.txtのパーミッションは644じゃダメですか?
0629nobodyさん
05/02/26 07:52:03ID:???PHPは型にうるさくない言語なので普段は意識しないかも知れないが、
スカラー型 - 論理値・整数・浮動小数点数・文字列
複合型 - 配列・オブジェクト
特別な型 - リソース・NULL
の計8個の型が存在する。
リソース型の一覧は、
ttp://www.php.net/manual/ja/resource.php
に載ってるが、このうちfopenはファイルハンドルを扱うリソースを生成する。
ファイルハンドルつーのは、、、説明していくとキリが無いな・・
そのページにファイルハンドルを扱う関数の一覧もあるから、それらの説明を参照してくれ。
0630nobodyさん
05/02/26 08:56:17ID:LIYJX+3jInternal Server Errorになってしまいました。
なお、mod_php5, freebsd5.3,apache1.3.33です。
上記の「いつのまにか」が思い出せないのですが、
どなたか、可能性のあるコトや解決方法を教えていただければ幸いです、
なぜmod版なのにInternal Server Errorなのかも不思議ですが。。。
0631630
05/02/26 09:06:46ID:LIYJX+3jmv php.ini php.ini.tmp
してみても、症状変わらずです
0632630
05/02/26 09:14:57ID:???0633nobodyさん
05/02/26 11:02:34ID:???}
って使えないのですね
$lineが空になります
0634nobodyさん
05/02/26 11:38:37ID:???マニュアルによると、
mixed array_pop ( array array)
だから、$lineになんらかの値が入るよ。$logがnullや非配列だったら論外だが。
むしろ疑うならwhileの方じゃないかねぇ。
while(boolean) だから、$lineにarray_popの結果が入った後に
booleanとして評価される(型の変換)。
$lineが FALSEなら当然そこで終了になるし、数値の0や空文字''、文字列の'0'なんかもfalseになる。
0635633
05/02/26 11:46:04ID:???apacheのアクセスログを\nで分割して配列に入れていたのですが
今ログを開いてみたら最後に改行が入っていました;
お騒がせしました
0636nobodyさん
05/02/26 12:47:00ID:???$GrabURL = "hoge.html";
$GrabStart1 = '<!--- aaa1 --->';
$GrabEnd1 = '<!--- /aaa1 --->';
$GrabStart2 = '<!--- aaa2 --->';
$GrabEnd2 = '<!--- /aaa2 --->';
$OpenFile = fopen("$GrabURL", "r");
$RetrieveFile = fread($OpenFile, filesize($open_file));
$GrabData = eregi("$GrabStart1(.*)$GrabEnd1", $RetrieveFile, $DataPrint);
fclose($OpenFile);
echo $DataPrint[1];
だと当然のことながら<!--- aaa1 --->しか出力されません。
これを<!--- aaa2 --->も一緒に出力させるにはどうしたら良いのでしょうか?
# $GrabDataとechoのあたりが怪しいと思うのですがどこをどう書き換えたらいいのかさっぱり…
0637nobodyさん
05/02/26 13:02:24ID:???$reg = "/<!-- (.+?) -->(.+?)<!-- \/\\1 -->/";
preg_match_all($reg,$RetrieveFile,$DataPrint);
こうかな?
0638636
05/02/26 13:33:05ID:???0639nobodyさん
05/02/26 13:42:55ID:???まさか、
$GrabData1 = eregi("$GrabStart1(.*)$GrabEnd1", $RetrieveFile, $DataPrint1);
$GrabData2 = eregi("$GrabStart2(.*)$GrabEnd2", $RetrieveFile, $DataPrint2);
・
・
echo $DataPrint1[1];
echo $DataPrint2[1];
じゃないよな?よな?
637が一番綺麗でスマートだと思うぞ・・・
0640nobodyさん
05/02/26 13:52:37ID:zRP2Hji7設定ファイルには掲示板のタイトルや表示件数などがあり
フォーマットは
----------
Sample BBS,10,5
-----------------
のようにカンマで区切られています。
カンマで区切ると、ユーザーがタイトルのところにカンマを入れた場合
区切り文字だと誤認してしまいます。
これを回避するには、特殊文字に変換するか、URLエンコードして保存するというの
があると思うのですが、通常はどちらの方法をとるのでしょうか?
0641nobodyさん
05/02/26 15:35:04ID:???0642nobodyさん
05/02/26 15:48:19ID:???0643nobodyさん
05/02/26 16:22:16ID:???0644nobodyさん
05/02/26 18:22:21ID:???echo $_SERVER["REMOTE_ADDR"];
echo $_SERVER["REMOTE_HOST"];
echo $_SERVER["HTTP_REFERER"];
echo getenv("REMOTE_ADDR");
echo getenv("REMOTE_HOST");
echo getenv("HTTP_REFERER");
これを試すと表示されるのは両REMOTE_ADDRだけで、HTTP_REFERERに至っては怒られます。
php.iniの設定の問題でしょうか?
どこを見れば良いのかわからないんですが、関係ありそうなところは
register_globals = OFF
register_argc_argv = On
くらいでしょうか?他に見る必要がある場所ありますか?
0645nobodyさん
05/02/26 18:33:50ID:???<pre>
<?=print_r($_SERVER)?>
</pre>
REMOTE_HOSTはサーバーからDNS逆引きしてるわけじゃなく、
クライアント側で付加するかしないかなので、
表示するやつとしないやつがいるのは仕方が無い。
んで、「怒られる」とか訳の分からない表現を使うな。
エラーが出るならそのエラーをまるまるコピペ。
あと、バージョン周りの表記も必要。
php.iniは関係無い気がする。
0646nobodyさん
05/02/26 18:56:53ID:???絶対パスでファイルの内容が丸見えになってしまいますね。
拡張子でアクセス制限するのではなく他に良い手だてはないものでしょうか?。
>>644
E_ALLで変数が存在していないだけでは?
0647nobodyさん
05/02/26 18:58:51ID:???バージョンはPHP Version 4.3.6
Server API ISAPI
Virtual Directory Support enabled
Configuration File (php.ini) Path C:\WINDOWS\php.ini
PHP API 20020918
PHP Extension 20020429
Zend Extension 20021010
Debug Build no
Thread Safety enabled
Registered PHP Streams php, http, ftp, compress.zlib
こんなもんでいいでしょうか?
0648nobodyさん
05/02/26 19:03:52ID:???error_reportingですか?
確かにE_ALLにしてます。
E_ALL & ~E_NOTICEにしたらエラーは表示されなくなりました。が、REMOTE_ADDRしか表示されないのは変わらずです。
表示されないのもあるとの事なのでしょうがないんですね?HTTP_REFERERもそういうことなんですか?
0650636
05/02/26 22:20:10ID:???ご、ごめ…そのまさかです…動くからいいかなって…w
>637のは大変有り難いのは分かってるんですが仕事が鮮やかすぎて
今の俺のスキルではどう使ったらいいのかすら分からなかったんだ…
現状はこのままで、試行錯誤していずれ>637のアイテムを理解できるように頑張ってきます
# 本音:マニュアル読んでも全然わかんねぇ…
0651nobodyさん
05/02/26 22:35:45ID:???REMOTE_HOST はWebサーバ自身が逆引きをしておかないと設定されない。
apacheなら HostnameLookups on。
全アクセスに対して逆引きが実行されるのであんまりお勧めできない。
(webサーバではなく)PHPが逆引きするにはgethostbyaddrという関数が用意されている。
0652nobodyさん
05/02/26 23:43:58ID:zgM2ruO5POSTでバイナリーデータを受け取り、変数に入れる場合、どのようにすれば
良いのでしょうか?どんな情報でも結構ですがので、どうかアドバイスお願い
致します。
0654652
05/02/27 00:04:35ID:Quvh5uNr情報ありがとうございます!
クライアントから送られてきたバイナリファイルは、$HTTP_POST_FILES
でサーバ(PHP)側で受け取れるということであってますでしょうか?
0655nobodyさん
05/02/27 00:12:08ID:G/Og0QBFカゴとクライアントをどのようにつなげてよいかわかりません。
つまり、カゴにIPアドレスを付ければある程度誰の買い物籠か
わかりますが、それではproxyを経由しているPCたちはみんな同じ
カゴになってしまいます。どうしたらよいのでしょうか?
0656nobodyさん
05/02/27 00:16:33ID:???0657nobodyさん
05/02/27 00:21:39ID:???ここはPHP(言語)スレですよ。
買い物カゴのように複数のhttpアクセス間でデータを継続するには
セッションと呼ばれる仕組みを使います。
perlにもセッションを提供するモジュールがありますが、
簡単な物の場合は自作してしまってもよいでしょう。
自作する場合には、
1. cookieや urlの一部に データそのものを付加する
2. データ本体はサーバ上のファイルに保持しておき、
そのデータへのIDとなるものをcookieやurlの一部に付加しておく
の2つの方法があります。
0658nobodyさん
05/02/27 01:13:03ID:G/Og0QBFなるほど、ありがとうございます。場違いな場所…すいませんでした。
クッキーを使ってみます。本当にありがとうございました!!
0659652
05/02/27 02:28:21ID:Quvh5uNr受け取ったバイナリデータを$dataに入れ
filesize($data);
とやってもエラーになるのですが、バイナリデータのサイズはfilesize()
では取れないのでしょうか・・・(T.T)
0660nobodyさん
05/02/27 03:02:55ID:???変数のバイト長ならstrlenでいいんじゃない?
アップロードされたファイルのサイズを知りたいなら一時ファイルのサイズで
filesize()すればいいだけだよ。
0661659
05/02/27 03:51:26ID:Quvh5uNrそうでした。strlen()でいけました。
ありがとうございます。
0662nobodyさん
05/02/27 18:49:25ID:/nNhQDUH内部の文字列を一部変更したいのですが、
どのようにすればいいでしょうか?
0664nobodyさん
05/02/27 23:32:30ID:???実行時に読み出すようにしているのですが、この設定ファイルを当該スクリプト以外から
読み出されないようにするにはどうすればいいでしょうか?
ちなみに共用サーバーなのでサーバー側の設定はいじれません。
0667nobodyさん
05/02/28 00:54:06ID:???そうです。
もしくは読み出されても悪用されないようにデータを暗号化しておくなどでもいいのですが。
あと、サーバー情報ってどんな事を書けばいいのですか?
0668nobodyさん
05/02/28 09:08:11ID:Cd7H0ok5PHPを4.3.10にしようと思い、
・c:\php\以下を全部削除、
・4.3.10の中身をコピー
・php.iniをwindowsフォルダにコピー
そしてapacheの再起動しました。
エラーで起動せず、イベントビューワーにはphp4apache2.dllが見つからないと。
もちろんパスは合っているし、直前まで前VERで動いていた、
何か変更でもあったのでしょうか?
0673nobodyさん
05/02/28 11:23:49ID:???考えているのですが何処かにパターンマッチの参考になる
スクリプト等をご存じないでしょうか?
0674nobodyさん
05/02/28 21:09:40ID:NQSvt/750676nobodyさん
05/02/28 21:57:28ID:???のようにDATAファイルのファイル名を不特定にする表現ってどうするのでしょうか?
英字や数字もカバーしたいんですが「.*」じゃだめでした。
もう一つ質問なんですが、PHPとあまり関係なくて申し訳ないのですが
Windowsは半角のバックスラッシュ(\)は普通に打ち込めるものなんですか?
当方Mac+miなんですがマニュアルサイトをIEで見ると\に化け、
iCabで見るとちゃんと半角バックスラッシュ、それをコピペするとやはり\。
文字パレットでバックスラッシュを打ち込もうとしたんですが
全角しか無く、参ったんですが…
0677nobodyさん
05/02/28 22:06:46ID:???とりあえずプログラミング…というか、PC自体素人?
半角の場合、¥と表示するか、「\」とするかはフォント次第。
Macの見やすいOsakaフォントをWinで使おうプロジェクト
http://osakattf.hp.infoseek.co.jp/
このOsakaフォントはきちんと「\」になってるよ。
漏れ、WinでのPGはOsakaしか使ってない気がする・・・。
で、"*.dat"だけど、どんなときに使うの?
使用する場所によりけりで実装の仕方変えるべきだぞ。
preg_match("/^[0-9A-Z]+\.dat$/i",$hoge)なり使うとかになりそう。
0678nobodyさん
05/02/28 22:06:59ID:???ではドゾー
↓
0680nobodyさん
05/03/01 15:36:15ID:???php4+smarty+jpgraphで、グラフを作っています。
以下を参考にして、MVC(よく理解してませんが)で作ろうとしています。
ttp://www.stackasterisk.jp/tech/php/phpMvc01_02.jsp
この場合、グラフを出力する処理はどこに書くべきでしょうか?
1. index.phpでGETを受け付け、そのGETをそのまま、表示部で引っ付ける
<img src="index.php?action=display_graph&以降パラメータ" >
controller.phpの中でclass/graph.phpを呼び出して、その中で処理。
index.phpがページ表示とグラフ表示を両方行う。
2. graph.phpという別単独スクリプトを作って
<img src="graph.php?以降パラメータ" >
index.phpがページ表示、graph.phpがグラフ表示を行う。
2.は MVCでないような気がします。
1.もなんとなく間違っている気がします。
1.の場合だと、一度パラメータを受け取って、もう一度それを出力すると
いう無駄な処理があるのですが、これでいいのでしょうか?
スマートな方法を教えて頂けないでしょうか?
よろしくお願いします。
0681nobodyさん
05/03/01 21:32:45ID:3VPrEAk/0682nobodyさん
05/03/01 22:17:17ID:???0685nobodyさん
05/03/02 02:32:19ID:???正確には
Uinux系は1024個、 Windows系は128個
じゃなかったか。リファレンステーブルの限度だよな。
0686nobodyさん
05/03/02 03:13:37ID:???ひとつのファイルにまとめて
1<>0<>〜〜
2<>1<>〜〜
3<>1<>〜〜
1番目は記事番号、2番目は0が親記事、1が子記事として
読み込み時に判定させる方法と
親記事と子記事を別々のファイルに保存し、
子記事は親記事の記事番号をキーとして持っており、
親記事は子記事がいくつ存在するかの情報を持たせて、
3つ存在するなら、子記事ファイルのほうから自分の記事番号と
一致する子記事を3つ読み込む
というような方法のどちらを使ったほうが効率がいいのでしょうか?
効率がいいか悪いかの判断は書き込みのほうが多いのか表示するほうが多いのかで
判断するのでしょうか?
0687nobodyさん
05/03/02 03:40:35ID:???親記事と子記事は入れ子になるの?
>効率がいいか悪いかの判断は書き込みのほうが多いのか表示するほうが多いのかで
>判断するのでしょうか?
意味がわからない。
0688nobodyさん
05/03/02 03:58:19ID:???単純に表示だけで考えたら
もしKENTのYY-BOARDのような表示形式を考えてるなら
前者の方が効率がいいと思う
2chのようにスレッドタイトル(親記事)を一覧表示させて
そこから子記事(スレッド)を表示させるっていうなら後者の方が効率がいい
あとファイルサイズとファイル数の問題もある
前者は大規模で使われると途端にファイルサイズがでかくなり
目的の記事を探すのに時間がかかるだろうし
後者は大量の親記事に1個2個程度の子記事が作られたとき
小さいファイルが大量に出来ていく
全然答えになってなくてゴメンって感じだが
要は用途を想定しないと効率なんて考えられないってことだ
0689nobodyさん
05/03/02 05:09:54ID:XnVo8Giwという条件はどう書くんでしょうか?
if ($name == ('abc'|'def'))
ダメですorz
0690nobodyさん
05/03/02 06:27:07ID:???0691689
05/03/02 06:37:20ID:???お早うございます。
やっぱりそう書くしかないんでしょうか?
$name が重複してしまうのが、何となく嫌な感じがして、
perlでは>>689のように書けたような気がしまして。
とにかく、どうもありがとうございました。
0692nobodyさん
05/03/02 08:43:58ID:???正規表現がそのまま書けてしまうのは
ある意味特殊(Perlの特色)なので、必要であれば
"普通"に正規表現関数を使って書けばよいのでは?
0693nobodyさん
05/03/02 08:56:03ID:???意味ねーナ
0694nobodyさん
05/03/02 10:20:55ID:???正規表現使いたければ
if (preg_match("/^(abc|def)$/", $name))
ただ正規表現使うと確実に重くなる
正規表現使う必要がなければorやandを10個並べても全然嫌じゃないです
0695nobodyさん
05/03/02 11:46:53ID:???>if($name == "abc" or $name == "def")
なパターンは、switchで書くようにしてる。
switch($name) {
case 'abc':
case 'def':
echo "Match";
break;
default:
break;
}
0696nobodyさん
05/03/02 12:32:21ID:???こういう単純な比較を10個並べた場合、and/orとpreg_matchはそれほど変わらないと思う
とくにどれにもマッチしないとかそういう時は。
もちろん最初の一個にマッチした場合はorの圧勝だろうけど。
0698nobodyさん
05/03/02 20:53:02ID:???print "PIKA";
}
という条件式を、Perlの場合、
print "PIKA" if $hoge == $hage;
という書き方ができました。
PHPで同じような書き方はできないでしょうか?
0699nobodyさん
05/03/02 21:03:27ID:???echo 'Hellow';
?>
と、
<?php
/*
複数行用のコメント
以下数万行(約10000K)
*/
echo 'Hellow';
?>
<?php
echo 'Hellow';
/*
複数行用のコメント
以下数万行(約10000K)
*/
?>
では、リクエストされてから表示されるまでの時間に差異は出るのでしょうか?
実際に試してみたいのですが、今使っているサーバ自体が糞で、
同じスクリプトを呼んでも、レスポンスにばらつきがありすぎて確認できません。
0700nobodyさん
05/03/02 21:03:47ID:SuYdpkb90701nobodyさん
05/03/02 21:03:56ID:???0702nobodyさん
05/03/02 22:30:57ID:???配列とかで取得できると後が楽でうれしいです。
PHPポケットリファレンスとphp manualを読んでそんな関数が見つからなかったので教えてください。
お願いします。
0703nobodyさん
05/03/02 23:03:36ID:???調べてもわからなかったんで実際に変数作ってみたら100万個までは作成できるみたいなんですけど。
0706nobodyさん
05/03/02 23:10:35ID:???■ このスレッドは過去ログ倉庫に格納されています