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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001 ◆HhTh8Gv36s 2005/10/18(火) 05:53:51ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
0951nobodyさん2005/10/31(月) 11:44:35ID:vz5n2QeI
じゃあここのは悪い例?
ttp://www.phpweb.jp/
0952nobodyさん2005/10/31(月) 11:54:52ID:???
これでメンテナンスしやすいと思うんならいいんでないかい。
0953nobodyさん2005/10/31(月) 11:59:48ID:???
なんでもかんでもクラスにすればいいってもんじゃないからね
0954nobodyさん2005/10/31(月) 12:21:47ID:???
2ちゃんねるっぽい掲示板を作っていて、
スレッドとレスのログファイルを分割している構造にしていて、

スレッドログ
11111111,title,,name,mail,投稿日,内容
22222222,title,name,mail,投稿日,内容

レスログ
1111111,name,mail,投稿日,内容,レスID
1111111,name,mail,投稿日,内容,レスID
2222222,name,mail,投稿日,内容,レスID

このような書き込み方をしているときに、
最新10件の表示の方法がおもいうかびません(つд`)
レスIDは2から始まって1000までという形です。

表示するときは、
スレッドキーに該当するレスのスレッドキーと同じ物をIDの順番で表示しています。
0955nobodyさん2005/10/31(月) 12:33:31ID:???
>>954
2ちゃんねるとログ互換にしないんならデータベース使った方が
0956nobodyさん2005/10/31(月) 12:33:51ID:???
>>951
クラスってのは何かメリットがあって使うわけよ。
逆を言うと、何かメリットを享受できるような形のクラスを作成するわけよ。

そこのスクリプト(掲示板を1つDLしてみた)は、
クラスを使う事で便利になった(or 後になるだろうと期待する)部分が感じられない。
ただ、functionを並べて書いて最後にclassで囲んだって感じだよね。
まぁ、ページ全体を作成する別の枠組みからこれらのクラスを
パーツとして使うって事もあるかも知れないけど。
(でもソースを見る感じそれもないか。。)
あんまり言うと作者降臨するかも知れないのでこの辺で。
0957nobodyさん2005/10/31(月) 12:53:16ID:???
>>954
「最新10件」とは全スレッドで10件なのか、
各スレッド毎に10件なのか。

# 俺ならスレッド毎にレスを格納するファイルを分離するね。
0958nobodyさん2005/10/31(月) 13:00:13ID:???
>>954
ファイル全部読み込むしかないよ。file()が一番楽かと。
現在の件数を別口に記録してあるなら、fgetsで適切な回数読み捨てる手もあるけど。
まあDB使えばそんな心配もせずにすむわけで。
0959nobodyさん2005/10/31(月) 13:10:08ID:???
めんどいから一緒にすればいいじゃん。1スレ1ファイル1000行で。
スレ一覧→ファイルがあるかチェックして表示
スレ内→ファイルから読み込み
みたいな。
データベースの方がいいと思うが。
0960nobodyさん2005/10/31(月) 13:24:26ID:???
>>951
PEARのライブラリとかこれと似たようにやってるのが結構ある。
多分PEARのは関数名が被らないようにってだけだと思うけど。
0961nobodyさん2005/10/31(月) 14:03:20ID:???
>>951
そのサイトの「ツリー型掲示板」ってのを見てみたけど。
作者さんには申し訳ないがクラスの *使用例* としては良い例ではないな。
汎用性がないから他で使い回せないし、現状ではクラス化しているメリットはない。
もっとも、作者さんがクラスの使用例としてアップしているわけではないから、
この点をグダグダ言う必要はないんだろうけど。

元々の話が一つのクラスと複数のクラスでどっちが重い?という話だけど、
ベンチとってみないと判らない、ってのが正直なところ。
ただ、クラス化するのはプログラマが楽をするためであって、重い、軽いとは
次元の違う話だと思うよ。
掲示板であれば、データの保存方法、データの取り出し方法が重い、軽いに
大きく影響を与えるから、これらと比べると些末な事ではないかと。
0962nobodyさん2005/10/31(月) 14:27:01ID:???
boolのプロパティーのセッターは
trueにする場合、falseにする場合、それぞれどんな名前がよいですか?
0963nobodyさん2005/10/31(月) 14:29:00ID:???
SetFlagにでもしとけ。
0964nobodyさん2005/10/31(月) 14:30:00ID:???
二つに分ける必要ないんじゃないの?
名前はオブジェクトのキャラクターにあわせてつけろ
0965nobodyさん2005/10/31(月) 14:41:31ID:???
Geter,Seterの話じゃないの?
0966nobodyさん2005/10/31(月) 14:57:07ID:???
取得 is<状態(名)> ex. bool isSecure()
設定 set<状態(名)> ex. void setSecure()
てな話じゃないの?
get<X>、set<X>でもいいけどさ。
0967nobodyさん2005/10/31(月) 15:47:28ID:???
クラス名、関数名、メソッド名、変数名で
1.先頭を大文字にする(ToString()など)
2.単語の区切りはアンダーバー(is_null()など)
3.2単語目以降は大文字(imageCreateFromJpeg()など)
4.すべて小文字(imagecreatefromjpeg()など)
一般的にはどれですか?
0968nobodyさん2005/10/31(月) 15:55:34ID:???
class FooBar ← 単語の頭は大文字
{
  var $hoge; ← 変数は小文字
  var $hoge_hoge;  ← 単語はアンダーバーで区切る
  function toString(){} ← メソッドは動詞+名詞の形.最初の単語は小文字
  function getHtml(){} ← HTML ではなく Html
}

function to_string() ← 通常の関数は小文字でアンダーバー区切り

こんな感じ. PEAR CS 準拠.
0969nobodyさん2005/10/31(月) 16:07:27ID:???
通常の関数も toString() でないかい。
0970nobodyさん2005/10/31(月) 16:18:34ID:???
>>969
ごめ,そうみたい.ラクダ式.
http://pear.php.net/manual/en/standards.naming.php
09719672005/10/31(月) 21:54:47ID:???
分かりやすい解説をありがとうございました!
0972nobodyさん2005/10/31(月) 22:22:25ID:???
指定したURLのファイルが、テキストか画像か判断する方法ありませんか?

//テキスト
http://www.sample.co.jp/aaa.html
//画像
http://www.sample.co.jp/bbb.jpg
//テキスト
http://www.sample.co.jp/ccc.php
0973nobodyさん2005/10/31(月) 22:24:12ID:???
htmlでも画像に偽装できるし、jpgでもテキストに偽装できる。
受信してHTTPヘッダみないと分からん。
0974nobodyさん2005/11/01(火) 00:07:52ID:???
HTTPヘッダも変更出来るから、直接ファイルを確認しないと(ry
0975nobodyさん2005/11/01(火) 07:42:09ID:???
>>973
Apacheは拡張子見てヘッダー決めてるから拡張子偽装したらヘッダも変わるよ
0976nobodyさん2005/11/01(火) 08:57:02ID:???
>>975
Apacheの送出が全てでは無いがな
0977nobodyさん2005/11/01(火) 09:03:24ID:???
>>975
そんなこと言ってたら.phpや.cgiで画像の出力できないしな。
0978nobodyさん2005/11/01(火) 12:30:46ID:???
PHP(abc.php)が表示したXML文書をサーバにabc.xmlと
いう風に残したいんですが、どのようにしたらいいですか?
教えてください。
require(abc.php)とか使うんですかね?
0979nobodyさん2005/11/01(火) 12:33:52ID:???
>>978
ob_startとかどうよ?
09809752005/11/01(火) 12:38:00ID:???
俺はApacheのmime.typesファイルのことを言ってるだけです。
これでcontent-typeと拡張子を関連付けてるよってことです。
0981nobodyさん2005/11/01(火) 12:40:15ID:???
>>980
言い訳〜
0982nobodyさん2005/11/01(火) 12:56:38ID:???
>>979 下記のようにしたのですがうまくいきませんでした。
間違いを指摘していただけるとありがたいのですが。
<?php

ob_start();

require("abc.php");

$buffer = ob_get_contents();
ob_end_clean();

$fp = fopen("abc.xml","w");
fputs($fp,$buffer);
fclose($fp);

?>
0983nobodyさん2005/11/01(火) 13:00:57ID:???
>>982
echo $buffer;
も加えてやってくれ。

ちなみに、$bufferがあまりにもデカイ場合はob_startでcallback関数を指定して、その中で標準出力+ファイル出力したほうがいいかもね。
0984nobodyさん2005/11/01(火) 13:19:15ID:???
>>972
http://jp.php.net/manual/ja/function.mime-content-type.php
0985nobodyさん2005/11/01(火) 13:23:00ID:???
>>980
mime.typesファイルでの割り当ても偽装されている可能性には言及せんのか?
09869802005/11/01(火) 14:13:31ID:???
>>985
すいません
>>973が拡張子偽装してもHTTPヘッダでわかるような書きかたしてたので
ヘッダ見てもわからないよといいたかっただけです

結局拡張子やヘッダーからは判断できないということで
mime magicも偽装できるし完璧な方法はないということですね
GIF8で始まるテキストはgifにされるし
0987nobodyさん2005/11/01(火) 14:34:17ID:???
<?php
// セッションの開始
session_start();
?>
<html>
<head>
<title>session_start1.php</title>
<!-- セッションの開始:セッションIDの確認 -->
</head>
<body>
<?php
print "session_id = " . session_id() . "<br>";// セッションIDの確認
print "session_name = " . session_name() . "<br>";// セッション名の確認
print "session_save_path = " . session_save_path() . "<br>";// セッション情報格納ディレクトリの確認
?>
</body>
</html>


これを自鯖で実行してみたら↓


session_id = 39899d30896bb687e6f4e8f3d1511ccf
session_name = PHPSESSID
session_save_path =


session_save_pathだけ空欄になった。
この環境で問題なくセッションの操作ってできるんだろうか?
0988nobodyさん2005/11/01(火) 14:53:26ID:???
>>987
空の場合、テンポラリディレクトリ(UNIX系なら/tmpや/var/tmpなど)が
指定されたものとして扱われるので大丈夫。
一度、これらのディレクトリを覗いてみそ。多分 sess_xxx ってファイルがいるはず。
0989nobodyさん2005/11/01(火) 14:56:47ID:???
>>987
問題ない。勝手に一時ディレクトリに保存される。
気になるならsession_save_path()で引数指定するなり、php.iniのsession.save_pathを指定するなりすればよい。
0990nobodyさん2005/11/01(火) 14:59:37ID:???
>>988-989
( ´∀`)ノ
0991nobodyさん2005/11/01(火) 14:59:52ID:???
>>987
自鯖ならphp.iniで設定すればいい
0992nobodyさん2005/11/01(火) 15:12:45ID:???
>>988-989
あ、あともうひとつtmpフォルダがらみで質問をば。
一時ディレクトリにsession関係のファイルがたまっていくとのことだけど
こちらで消さない限りsessionが貼られるたびにファイルはたまっていく一方?
0993nobodyさん2005/11/01(火) 15:18:55ID:???
>>992
session.gc_probability/session.gc_divisorの確率でsession.gc_maxlifetime秒経過したファイルが削除される。
0994nobodyさん2005/11/01(火) 15:22:57ID:???
>>993
( ´∀`)ノ
0995nobodyさん2005/11/01(火) 16:39:53ID:???
セッションをURLに埋め込みたいんだが

<a href="./ahya.php?<?= SID ?>">リンク</a>

なぜかahya.phpへのURLにセッションIDが付与されない。
何か書きミスでもある?
0996nobodyさん2005/11/01(火) 16:45:35ID:9QgZWF8q
foreach ($arr as $val) {
 …
}

で $arr が空の時 warning が出てしまうんですが
みなさんどう対処していますか?
empty()とかで最初に調べるのはあまりしたくないんですが。
0997nobodyさん2005/11/01(火) 16:46:08ID:???
>>995
$SIDじゃなくて?
0998nobodyさん2005/11/01(火) 16:52:25ID:???
>>995
SIDが未定義とかエラーはでてないのけ
session_start()してる?
0999nobodyさん2005/11/01(火) 16:59:51ID:???
待て待て、セッションの渡し方がおかしい。
1000nobodyさん2005/11/01(火) 17:00:52ID:???
げと1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。