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

【PHP】くだらねぇ質問はここに書き込みやがれpart8

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2005/08/08(月) 01:18:55ID:54u1h4+D
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/
0877nobodyさん2005/08/31(水) 00:08:42ID:???
>>876
あの、それなら最初から
$page = 0;
while ($page != 20) { ... }
の方が良いですよ。
0878nobodyさん2005/08/31(水) 00:15:28ID:???
$page = 0;
while ($page++ < 20) { ... }
0879nobodyさん2005/08/31(水) 00:19:29ID:???
>>878
それだと、1からになってしまう…
0880nobodyさん2005/08/31(水) 00:21:28ID:???
>>878
その場合は、$page= -1;
0881nobodyさん2005/08/31(水) 01:38:45ID:???
404のエラードキュメントをphpで作りたいと考えてます。
その時に、要求アドレスによって、表示を分岐させたいと考えてるのですが、
要求アドレスがどうしても取得できません。

これは無理なのでしょうか。
0882nobodyさん2005/08/31(水) 02:03:00ID:???
>>881
っ[セッション]
08838812005/08/31(水) 02:33:16ID:???
>>882
セッションを使った方法を考えてみましたが、分かりませんでした。
404を出すアドレスにアクセスした時点では、
何もアクションが起こせないので、セッションも登録できないと思うのですが、
具体的な方法を教えていただけないでしょうか。
0884nobodyさん2005/08/31(水) 02:58:42ID:???
>>881,883
要求アドレスって存在しなかったページって事ですよね?
$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えました。

環境:linux/apache2.0.54/PHP5.0.4
08858842005/08/31(水) 03:01:26ID:???
勘違いしてたゴメン
0886nobodyさん2005/08/31(水) 03:23:57ID:???
>>878だと$pageが18で終わりになる?それとも19?20まではいかないよね?
「インクリメントした後の$pageが20未満」なのか
「インクリメントしたら20未満の$page」なのか
どっちの意味になるんだろ?
08878812005/08/31(水) 03:27:31ID:???
>>884
要求アドレスは存在しなかったページを意味してます。
ですが、無理みたいですね・・・。

phpでは無理なんでしょうか。
0888nobodyさん2005/08/31(水) 03:31:59ID:???
.htaccess使わなきゃ
0889nobodyさん2005/08/31(水) 03:33:40ID:???
>>886
基礎からやり直せ
08908862005/08/31(水) 03:36:04ID:???
「20未満の$pageについてインクリメント&ループ実行」ってことでいいのかな?
08918812005/08/31(水) 03:37:18ID:???
>>888
.htaccessをどのように使えばいいのでしょうか。
今も.htaccessはありますが、ErrorDocumentの記述があるだけです。
08928842005/08/31(水) 03:44:16ID:???
>>887
あれ?ダメですか?
存在しないページなら>884の通り、$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えましたよ。

print "REDIRECT_URL=[".$_SERVER[REDIRECT_URL]."]<br>\n";
print "REQUEST_URI=[".$_SERVER[REQUEST_URI]."]<br>\n";

で存在しないページ(例:http://192.168.0.111/test/ttt.html)が「/test/ttt.html」として取得できました。
SERVER_ADDRやHTTP_HOSTでIPアドレスも取得できるからURLも取得できますし。
ためしに404のエラードキュメントPHPで print_r($_SERVER); してみては?

その前に404のエラードキュメントをPHPで使えるようになっているのでしょうか?
08938812005/08/31(水) 03:51:02ID:???
>>892
REDIRECT_URLは空文字で、
REQUEST_URIの方には404.htmlの方が入ってました。

マニュアルでREQUEST_URIの箇所を読む限りでは確かにこれで取得できそうですが…。

$_SERVERは、print_rで見ましたが、それらしき値はないです。
0894nobodyさん2005/08/31(水) 03:56:32ID:???
>>890
ttp://www.php.net/manual/ja/language.operators.increment.php
08958812005/08/31(水) 04:00:18ID:???
解決しました。

ErrorDocumentの書き方がまずかったようです。
絶対パスを指定したのですが、これを相対パスにすることで直りました。
絶対パスだと、ページ自体のリダイレクトが行われてるんですかね。

丁寧に答えてくださった方、ありがとうございました。
0896nobodyさん2005/08/31(水) 04:04:38ID:???
>>893
自前サーバ? レンタルサーバ?
要求アドレスの取得に関係なくPHPファイルがエラードキュメントとして使えるようにしてますよね?
0897nobodyさん2005/08/31(水) 07:34:23ID:???
>>886
$var++と++$varの違いは基本なので
0898nobodyさん2005/08/31(水) 09:11:56ID:eJmHKqbd
これでどうして 2005-08-31にならないのかな?

$dy=mktime(0,0,0,date("m"),0,date("Y"));
echo date("Y-m-d",$dy);
0899nobodyさん2005/08/31(水) 10:48:10ID:???
echo date("Y-m-d", time())
0900nobodyさん2005/08/31(水) 11:42:07ID:???
2005-08-00→2005-07-31と修正されるからでしょ。
echo date("Y-m-d")でいいじゃん。
0901nobodyさん2005/08/31(水) 12:30:49ID:???
>>861
ありがとうございます。
感謝感謝
0902nobodyさん2005/08/31(水) 14:01:37ID:???
携帯サイト作ってるんですが、USER AGENT偽装対策する方法ありますか?偽装してる場合はエラーを吐くような。
0903nobodyさん2005/08/31(水) 14:14:29ID:???
>>902
hostで判断するしかないんじゃないか?
docomo.ne.jp以外は弾く、みたいな。
0904nobodyさん2005/08/31(水) 14:20:31ID:???
携帯から失礼します。
今オークションを携帯で見れるようなものを作ってます。

まず題名のみを抽出して表示するところまではできました。
題名を押すとリンク先を表示するところで行き詰まってます。
一応できたのですが題名を押すとphp?no=1という所に行きまた詳細を抽出する方法です。
このno=1とうのを20個近く作らなければいけない無駄なやり方でした。

これをもっとスマートにしたいのですが良い方法が思い浮かびません。

何か良い方法があったら教えてほしいです。
説明へたですいません。
0905nobodyさん2005/08/31(水) 14:55:32ID:???
>>904
題名とno=○を配列に入れてforで回すのではダメなの?
0906nobodyさん2005/08/31(水) 14:59:23ID:???
>>903
おぉ、その手がありましたね。USER AGENTにばかり目がいってました。ありが�d。
0907nobodyさん2005/08/31(水) 15:05:27ID:???
デストラクタの使い方がよく分からないのですが、
class hoge {
var $test;
function __construct($a, $b) {
$this->test = array($a, $b);
}
function __destruct() {
unset($this->test);
}
}
こんな感じでいいのでしょうか。
0908nobodyさん2005/08/31(水) 15:13:20ID:???
>>907
俺も良く判らんけど、__destruct って、そのオブジェクトを解放するときに処理するんじゃないの。
メソッドもオブジェクトに含まれるので、unsetする必要はないかと。

class hoge {
var $test;
function __construct($a, $b) {
$this->test = array($a, $b);
}
function __destruct() {
print_r $this->test;
}
}
$ob = new hoge(1,2);
unset($ob);
0909nobodyさん2005/08/31(水) 15:18:41ID:???
そんな感じかねえ。

以前、DB接続クラスを作って、
デストラクタにDBをクローズするメソッドを呼び出すようにしたら、

まだクエリすら呼び出しても以内のに勝手に不要とみなされ、
勝手にDB切断されて困ったことがあった。
使い方がいまいち。オブジェクト解放のタイミングを調整できればいいのだが。
0910nobodyさん2005/08/31(水) 15:20:51ID:???
ついでにわしも質問です。

__autoload()関数が役に立ったことがあるという人、いますか?
もし、役にたったならば、どんなときに役に立ちましたか?

require呼び出しでは使えるものでしたか?

09119072005/08/31(水) 15:29:11ID:???
>>908>>909
あ〜なるほどね。
デストラクタってパフォーマンス向上のためにある関数なのかと思ってたんだけど、そうじゃないのか。

>>910
ん〜手間が省けて結構便利だと思うんだけどな。
0912nobodyさん2005/08/31(水) 17:08:30ID:/SaEXI7W

セーフモード&SAFE_MODE_GIDがoffのレン鯖で
phpスクリプトが書き出したphpファイルにブラウザからアクセス
する技はありまつか?


0913nobodyさん2005/08/31(水) 17:18:11ID:???
>>912
た、多分、ブラウザからそのURLたたけばいいんじゃないかな・・・
0914nobodyさん2005/08/31(水) 17:27:03ID:???
file関数で1000行×20列くらいの掲示板のログファイルを一気に読み込んでるんですが高い負荷がかかったりしますかね?一日2000〜3000アクセスくらいなんですが。
0915nobodyさん2005/08/31(水) 17:29:08ID:???
>>914
file関数よりもfgetsの方が処理は速いって聞いた。
0916nobodyさん2005/08/31(水) 17:36:34ID:???
夏休みは宿題を済ませてから遊べとあれほど……
0917nobodyさん2005/08/31(水) 20:08:29ID:???
1000行全て表示して誰が読むんだか・・
0918nobodyさん2005/08/31(水) 20:40:45ID:kcRQHeGx
すいません 898 です。
mktime(0,0,0,date("m"),0,date("Y")); # 8-31となって欲しいが7-31になる
「当月末日」の表現で使っていたんですが、これじゃ使えないね

 ttp://php.s3.to/man/function.mktime.html
「指定した月の最後の日は次の月の -1 番目の日ではなく、"0" 番目の日として表すことが可能です。」
0919nobodyさん2005/08/31(水) 20:47:45ID:???
つ「date("t")」
0920nobodyさん2005/08/31(水) 20:50:45ID:???
「次の月の-1番目の日」ではなく「次の月の0番目の日」って意味でしょ。
「2005年8月の0番目の日」が「2005年7月の最後の日」になる。
だからmktime(0,0,0,date("m"),0,date("Y"))は「先月末日」の表現にしかならない。
0921nobodyさん2005/08/31(水) 21:02:22ID:kcRQHeGx
>920 ありがと。
勘違いしてたヨ。下記例にもちゃんとあったな。
$lastday = mktime (0,0,0,3,0,2000);
echo strftime ("Last day in Feb 2000 is: %d", $lastday);
0922nobodyさん2005/08/31(水) 22:19:18ID:N4cNKOEk
初めまして 
質問させて下さい
PHPを使ってweb上でメール受信できますか?
http://php.s3.to/net/#popでできてるみたいなんですけど、
内容を変数に扱いたいと思っています。
なにをしたいかというとYahoo!オークションのアラートで送られてくる
メールの画像を一括してみようと思っています。
そういうサイトがあれば一番いいんですけど
だれか作ってくれませんか?
0923nobodyさん2005/08/31(水) 22:32:34ID:???
それは質問とは言わない。
他力本願というのだよ、それは。
無いなら、自分で調べて作ればいいじゃん。
0924nobodyさん2005/08/31(水) 23:18:18ID:???
>>922
金くれるなら
0925nobodyさん2005/09/01(木) 02:25:07ID:???
画像投稿の掲示板つくるんだけど、画像はfileでもってたほうがいい?
DBにいれてかんりしたほうかいい?
0926nobodyさん2005/09/01(木) 02:36:18ID:???
>>925
投稿時にファイル名を自動で付すなら
ファイル名だけデータベースで持っておいて
画像は特定のフォルダに放り込むのが簡単。

良し悪しは何で判断する?
0927nobodyさん2005/09/01(木) 08:14:05ID:eoQpZPGA
普遍性と効率性を聞きたかったんでしょ。
0928nobodyさん2005/09/01(木) 13:27:49ID:???
--template.php--
<?=$contents?>

--edit.php--
class Edit{
  function excute(){
    global $contents;
    $abc = 'abc';
  }
}
$contents=<<<EOL
ほえほえ{$abc}
EOL;

--index.php--
include( 'edit.php' );
$obj = new Edit();
$obj->excute();
include( 'template.php' );

以上のスクリプトで、「ほえほえabc」という出力を得たかったのですが、
実際は「ほえほえ」になってしまいます。

function excuteのなかが著しく怪しいとは思うのですが、
マニュアルhttp://www.php.net/manual/ja/language.variables.scope.phpを
見ても解決の手掛かりが掴めません。。。
何かヒントを頂ければ幸いです。。。
0929 ◆SyMIZYHImA 2005/09/01(木) 13:42:40ID:???
中身入りのディレクトリを問答無用で削除するにはどうしたらいいのでしょうか。

調べたら「実行演算子」とやらで
`rm -Rf $del_dir`;
こう書くように書いてあったのですが、消えません。

実行演算子がシェルに命令を送るだけのものだとすれば、
win鯖の実験用環境では無理ということなのでしょうか。
0930nobodyさん2005/09/01(木) 13:50:52ID:???
Winにrmコマンドはない。
0931nobodyさん2005/09/01(木) 13:53:01ID:???
>>928
スコープというものが分かってないな。
excuteの中$abcはそこで完結しており、そのままだと外には出られない。
0932 ◆SyMIZYHImA 2005/09/01(木) 14:04:38ID:???
>>930
えと、じゃあやっぱり両対応にするにはopendirとかreaddirを使って
ディレクトリ内のファイルやフォルダを全部調べつつ削除する
ルーチンを作るしかないのですね・・・
0933nobodyさん2005/09/01(木) 15:02:38ID:???
>>931
とりあえず、以下な感じで逃げました。
ああ、$contents<<<EOLを別の所におきたい。。。
別ファイルにしようかなぁ。。。

--template.php--
<?=$contents?>

--edit.php--
class Edit{
 function excute(){
  $abc = 'abc';
  $contents=<<<EOL
  ほえほえ{$abc}
  EOL;
  return $contents;
 }
}

--index.php--
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
0934nobodyさん2005/09/01(木) 15:12:34ID:???
>>933
コンストラクタを用意して、$contentを喰わせるようにしたら?
0935nobodyさん2005/09/01(木) 15:59:31ID:???
inculdeについてなんですが例えば以下のようなディレクトリ構造の時
index.php
└■A
..├a.inc
..└■B
....└b.inc
index.phpを実行中にA/a.incをinculdeして、さらにB/b.incをinculdeするにはA/a.inc内の記述は
inculde("B/b.inc");
inculde("A/B/b.inc");
どちらが正しいんでしょう?
0936nobodyさん2005/09/01(木) 16:20:33ID:???
>>935
やってみればいいんじゃないでしょうか?
0937nobodyさん2005/09/01(木) 16:38:03ID:???
>>935
ワーキングディレクトリ(working directory)つー概念があって、
この場合 index.phpがあるディレクトリがそれに該当する。
includeやrequireで相対指定した場合はそこからの指定になる。
それぞれのファイル中で echo getcwd(); してみればどういう扱いをされるのか分かるよ。
0938nobodyさん2005/09/01(木) 16:50:30ID:???
--with-gdオプションで画像に対する処理が出来ますが
文字(フォント)を画像として出力するなんてのは無いですよね?
09392352005/09/01(木) 16:54:55ID:???
>>936
そうですよねー、なんかメンドクサかったので。
0940nobodyさん2005/09/01(木) 16:55:50ID:???
>>938
とりあえずgdのマニュアル嫁
09419382005/09/01(木) 17:07:13ID:???
>>938
http://ponk.jp/php_gd/index.php?page=1
こことか見るとのってるね
0942nobodyさん2005/09/01(木) 17:45:59ID:HGt94pY+
includeで便乗質問。

PHPでファイルを読み込む関数(include require require_once)で絶対パスを使うと
サーバから見たパスになりますよねー。

/usr/ID/public_html/file/

ってな風に。
でも、サイト作ってる時はドメインからみたパスにしたいんですよ。

/file/

ってな風に。
これってどうにか対処法はありますか?
0943nobodyさん2005/09/01(木) 17:55:33ID:???
PEARのNet_FTPを使ってリモートサーバでファイル操作をしようとしています。
「リモートにディレクトリがあればそれを削除して、無ければ削除しない」
ということをやりたいのですが、ディレクトリがあるかどうかをチェックする関数が
ありませんでした。

あってもなくても削除するように、
$ftp->rm( 'tmp_dir', TRUE );
としましたが、ディレクトリが無い場合にエラーが発生してしまいます。
(当然といえば当然ですが…)

何かスマートな方法はありますでしょうか?
よろしくお願いします。
0944nobodyさん2005/09/01(木) 18:26:58ID:???
>>942
実行時にライブラリのパス変更して、相対パスを使う。
さすがに /file/ は無理だけど、./file/ ならできるのでは。
09459432005/09/01(木) 19:25:27ID:???
すいません、自己解決しました。

$ftp->ls( 'tmp_dir' );
の結果が空であれば存在しないという判断で対応できました。
お騒がせしました・・・
0946nobodyさん2005/09/01(木) 19:52:13ID:???
セッションの使い方で質問です。
色々例題等試してみて、機能的なことはだいぶ解ったのですが、
フォームで複数の入力画面を行き来する可能性があるようなものの場合、
そこに出てくるセッションで保持したい変数(例:$_POST['hoge'])すべてを

例1
if(isset($_POST['hoge1'])){$_SESSION['hoge1'] = $_POST['hoge1'];}
if(isset($_POST['hoge2'])){$_SESSION['hoge2'] = $_POST['hoge2'];}
if(isset($_POST['hoge3'])){$_SESSION['hoge3'] = $_POST['hoge3'];}
続く・・・・
ってセッションに入れないといけないのでしょうか?
if(isset($_POST)){$_SESSION = $_POST;}
じゃ、なんだかうまく逝かなかったです。配列を配列に入れちゃうから無理なのかな?

あと、スクリプトのなかでhtmlに埋め込むときは、セッション変数をどういう風に扱えばよいでしょうか?
自分は{$_POST['nantoka']}って感じで使ってるので、上記「例1」のあとで

if(!isset($_POST['hoge1'])){$_POST['hoge1'] = $_SESSION['hoge1'];}
if(!isset($_POST['hoge2'])){$_POST['hoge2'] = $_SESSION['hoge2'];}
if(!isset($_POST['hoge3'])){$_POST['hoge3'] = $_SESSION['hoge3'];}
続く・・・・
とこれまた面倒なことをしてるんですが。

$_SESSION['hoge1']とか$_POST['hoge1']はそのまま使わずに$hoge1などのような変数に代入した方がいいのでしょうか?
常識的にどうするかって部分が記述されてるサイトを見つけられずちょっと悩んでます。
アドバイスおながいします。
0947nobodyさん2005/09/01(木) 19:55:01ID:???
>>946

$_SESSION = array_merge( $_SESSION, $_POST );
0948nobodyさん2005/09/01(木) 21:30:30ID:???
POSIX正規表現に関する詳細については、PHP配布ファイルのregexディレクトリに
あるregexのmanページを参照ください。 このページはmanpageフォーマットであり、
読むには man /usr/local/src/regex/regex.7のようにします。

http://jp.php.net/manual/ja/ref.regex.php

とありますが、どうやれば読めるのかわかりません。
regex.7の日本語訳などネット上にありませんか?
0949nobodyさん2005/09/01(木) 21:46:46ID:???
>>948
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man7/regex.7.html
0950nobodyさん2005/09/01(木) 21:49:24ID:???
>>949
即レスどうもです。
0951nobodyさん2005/09/01(木) 22:39:25ID:???
>>943
$ftp->ls('tmp_dir');

0952nobodyさん2005/09/01(木) 22:40:12ID:???
既レスだたた
0953nobodyさん2005/09/01(木) 22:40:49ID:???
>>934
こんな感じでしょうか?
これだと、{$abc}は置き換えられず、「ほえほえ」だけになってしまうのです。
必ず、<<<EOLの前に$abcを定義しないと逝けないんですよね。
やりたいのは、templateを定義しておいて、excute()でデータを生成して、
templateに埋め込んで、出力する、これだけなんですけどねぇ。。。
やっぱり、別ファイルにしてincludeかなぁ。。。
テンプレートファイルを沢山作りたく無いんだよなぁ。。。

-- template.php --
<?=$contents?>

-- edit.php --
class Edit{
 var $template;
 function Edit(){
  $this->template = <<<EOL
ほえほえ{$abc}
EOL;
 }
 function excute(){
  $abc = 'abc';
  return $this->template;
 }
}
-- index.php --
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
0954nobodyさん2005/09/01(木) 22:49:41ID:???
>>953
>>934じゃないけど、ちげーよ!思わずつっこんじゃうよ!

class Edit{

 function Edit(){
  return $this->execute();
 }

 function excute(){
  return $abc = 'abc';
 }
}

-- index.php --
include( 'edit.php' );
$contents = new Edit();
include( 'template.php' );
0955nobodyさん2005/09/01(木) 22:51:59ID:???
あ、ごめんコピペして書き直したから関数名間違えてた。
fucntion execute()
ね。まさかexcuteだとは思わなんだ。
0956nobodyさん2005/09/01(木) 22:53:45ID:???
PHPでMySQLの操作について聞きたいのですが、
既にデータの入っているTABLEにデータを追加する場合、
1項目が同じデータがあった場合はその行の更新(UPDATE)を、
無い場合は、追加(INSERT)したいのですが出来るでしょうか?
やっぱり一度取得して削除して追加になるんですかね・・・
09579462005/09/01(木) 23:04:08ID:???
>>947
ありがとうございます、ヒントになりそう。調べてみます。
ホントに普通はどうするのか?ってとこがわからんです。
その時々で、違う、ってことなのかな?
0958nobodyさん2005/09/01(木) 23:04:42ID:???
>>956
PHP関係ないね。
MySQLのテーブルの作り方によるが、replaceはどう?
0959nobodyさん2005/09/01(木) 23:21:01ID:???
>>954
それだと、「ほえほえ{$abc}」は何処へ?
なんか頭が煮えくり買って北尾
>>955
(><;;)テラハズカシス
09609542005/09/01(木) 23:35:16ID:???
>>959
あのさ、つられてやるけど、
ほんとにわからない?
それにこのクラスのまま使うつもりならとても疑問に思うけどね。
return ’ほげほげ’.$this->execute();
つられ過ぎかなぁ・・・。寝よっと。
あ、PHPのマニュアルってとっっても優秀だと思うから、ちゃんと読んだ方がいいよ。
下手な解説本より役に立つ。
0961nobodyさん2005/09/02(金) 00:17:51ID:???
>>953
テンプレートを先に作っておきたいなら、
変数埋め込みじゃなくて、str_replaceでの置き換えを使った方がいいと思う。
0962nobodyさん2005/09/02(金) 00:36:30ID:???
>>960
申し訳ないです、本気で質問してます。
ただ、return ’ほげほげ’.$this->execute();と来るとは思ってませんでした。。。

>>961
pukiwikiのソースではstr_replaceとかpreg_replaceとかが大活躍してますね。
実はあまり好きではないのですが、一旦視野を広げて、見直してみる必要がありそうです。。。
0963nobodyさん2005/09/02(金) 01:01:31ID:???
>>962
こんなふうに書いてもいいんだけど、
なんだか気持ち悪いんだよなぁ。

--template.php--
<?=$contents?>

--edit.php--
class Edit{
  function excute(){
    $abc = 'abc';
    return setTemplate($abc);
  }
}

function setTemplate($abc){
  return <<<EOL
ほえほえ{$abc}
EOL;
}

--index.php--
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
0964nobodyさん2005/09/02(金) 03:25:11ID:BIWfF3gY
mb_language('ja');
mb_internal_encoding('EUC-JP');
if(function_exists('mb_send_mail')) {
$to = mb_encode_mimeheader(mb_convert_encoding($nm.'様', 'iso-2022-jp', 'EUC-JP')).' <'.$ma.'>';
$subject = mb_convert_encoding('ご登録ありがとうございます。', 'JIS', 'EUC-JP');
$rcd = mb_send_mail($to, $subject, $body, $header);
}
このようにしてメールを送っているのですが、件名が「Subject: ご登録ありがとうご$6$$$^$9!#」
のように一部文字化けしてしまいます。
文字化けさせないようにするにはどうすれば良いのでしょうか
0965nobodyさん2005/09/02(金) 03:43:33ID:???
mb_send_mail() を使っているならわざわざjisに変換する必要はないんじゃないかな。
ていうか、iso-2022-jpとjisがなぜ混在しているの? べつにいいけど。
0966nobodyさん2005/09/02(金) 03:51:49ID:???
>>965
jisにしないとなぜか文字化けしてしまいます
あっ置き換えが足らなかったみたいです(;´▽`A``
0967nobodyさん2005/09/02(金) 04:26:07ID:???
おまいらPear使ってる?
0968nobodyさん2005/09/02(金) 04:31:07ID:???
もうperlなんか使う気しねー
0969nobodyさん2005/09/02(金) 04:47:56ID:???
>>933
思うのだが、

コンストラクタは
従来はクラス名と同じとしていたが、
PHP5になってから__constract()という関数が加わり、これをオーバライドするような
形で自作クラスに定義して使えるが、
クラス名と同じよりも、こっちの新しい__constract()を使ったほうがいいのだろうか?

それから__get(), __set()なんてものも、まるで、C#のプロパティそっくりだが。
使うべきなのだろうか?
JavaBeansの影響を受けて、いつも何も考えず、
class Bean {
 private ClassName className;

 public function getClassName(){
  return $this->className;
 }

 public function setClassName(ClassName $className){
  $this->className = $className;
 }
}
としてる。

0970nobodyさん2005/09/02(金) 04:56:56ID:???
>>953

これはどうだろう?

> -- template.php --
<?
 $edit = new Edit('abc');
 $contents = $edit->execute()
?>
> <?=$contents?>

> -- edit.php --
> class Edit{
>  private $template;
>  public function __constract($abc){
>   $this->template = <<<EOL
> ほえほえ{$abc}
> EOL;
>  }
>  pulic function excute(){
>   return $this->template;
>  }
> }
> -- index.php --
> include( 'edit.php' );
> include( 'template.php' );

動作確認していないのでなんともいえないけど。
09719702005/09/02(金) 05:11:45ID:phrYpD5o
スペルミスがあったが修正したら問題なく動いた
あと、これはPHP5で動作確認した。
-- template.php --
<?php
$edit = new Edit('abc');
$contents = $edit->execute();
?>
<?=$contents?>

-- edit.php --
<?php
class Edit {
 private $template;
 public function __construct($abc) {
  $this->template =<<<EOL
ほえほえ{$abc}
EOL;
 }

 public function execute() {
  return $this->template;
 }
}

-- index.php --
require_once( 'edit.php' );
require_once( 'template.php' );
0972nobodyさん2005/09/02(金) 06:34:02ID:???
>>969
俺はまだPHP4ベースだから使ってないけど
PHP5ベースに移行したらどちらも使うつもり。
Delphiをよく使ってるってのもあるが、
意味を明示してるような気がするから。

クラス名と同名の関数がコンストラクタってのは慣習的なものだし、
プロパティを表現するなら__set、__getは良いと思う。

しかしなんつうか宗教臭いな。
0973nobodyさん2005/09/02(金) 08:30:25ID:???
>>972
__get __setはDBとかとあわせるとキモチイイ。
0974nobodyさん2005/09/02(金) 08:42:51ID:???
>>933でつ。

>>969
自分は数日前にphp5.1rc1を入れたばっかなので、未だphp4の書き方になってます。
コンストラクタはどっちにしようか迷ってます。
自分の愛読しているオブジェクト指向の本に、疎結合の為にアクセッサを…とあったので、
アクセッサは使う方向で逝きたいのですが、マンドクセ('A`)

>>971
index.phpをrequire2つで済ませるなんて、考えなかったですー。
漏れの脳みそテラカタス(><;;)

>>972
宗教なんて言わずに、自らが築いてきた哲学と言いましょう。

自分にレスして頂いた皆様には申し訳ないのですが、
結局edit.phpで使うテンプレート(ほえほえ{$abc})を別ファイルにして、
includeする形にしまいました。
何か有る度にincludeで時間を食うのはどーかなーとは思うのですが、
きもいヒアドキュメントが消えて気分爽快スッキリ清潔なのは否定出来ず。。。
0975nobodyさん2005/09/02(金) 08:45:47ID:???
宗教くさくない高級プログラム言語ってそもそもあるんかいな。
0976nobodyさん2005/09/02(金) 09:39:42ID:???
レン鯖がPHP4なんで使ってないが__construct()ってなんか利点あるの?
可読性が上がるくらい?
レス数が950を超えています。1000を超えると書き込みができなくなります。