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

【PHP】質問スレッドpart19【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/07/16 07:12ID:KvHeypq/
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 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-4


抜けているものがあったら補足願います
065564904/08/02 09:17ID:???
あ、鯖にうpしたらできました^^;
どうやら使っているPHPエディタが問題のようです;;
ありでした〜
0656nobodyさん04/08/02 09:21ID:???
ファイルロック機能の動作テストをしようと思たのですが、
PHP全体は、ひとつのプロセスが終ってから次のプロセスを実行するのでしょうか?
テキストファイルに、ただ10000回ほど読み込んだ物をまた上書きするだけのスクリプトを書き、
3,4窓で同時に回したのですが、どうも終ってから動き出しているような気がしてなりません。
ファイルロック用の関数を外した場合でも同じようでした。
そもそもテストの仕方が間違っているのかもしれません;;
環境はWindowsXP、AnHttpd、PHP4.3.2です。(同じPC、同じブラウザ)

また、正しいファイルロックのテストの方法を教えていただけたら幸いです…。
0657nobodyさん04/08/02 09:36ID:???
>>655
そのPHPエディタって何? ほんとにエディタと関係あるのか?
065865504/08/02 09:42ID:???
DzSoft PHP Editor(体験版)です
0659nobodyさん04/08/02 09:57ID:???
>>656
まず WindowsXP、AnHttpd、PHP4.3.2 を
*BSDもしくはLinux、Apache 1.3.31、PHP 4.3.8 に変えてはどうでしょう?
#OSはともかく、httpdとPHPはマジ。

で、ロックをかけたとき、書き込み中、ロックを解除したときに何らかの出力をさせると良いかと。
あと書き込み中にusleep()してわざと処理に時間がかかるようにすると分かりやすいかも。
flock($fp, LOCK_UN);し忘れてるってのは無しの方向でよろ。
0660nobodyさん04/08/02 09:58ID:???
<?php
#記事の読み込み
$message = file($logfile);
$count = count($message);
if ($count>=$page){
$count = $page;
}
for ($i=0;$i < $count;$i++){
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2) = split( ",", $message[$i]);
print " <FONT size=2>$no2</FONT><INPUT type=checkbox name=edit value=$no2> <font size=bSize color=$tCol><b>$title2</b></font>";
if ($mail != ""){
print " <FONT size=2>投稿者:<A href=mailto:$mail2>$name</A></FONT><BR>";
}else{
print " <FONT size=2>投稿者:$name2</FONT><BR>";
}
print " <font size=bSize color=$color>$comment2</font>";
}
?>

HTML内に上を記述するとページが何も表示されなくなりました・・・
なぜでしょうか・・・
0661Imo ◆.jC7ANgFY. 04/08/02 10:02ID:???
>>660
if ($count>=$page){
$count = $page;
}
ここで$countがリセットされているようですよ。
0662nobodyさん04/08/02 10:02ID:???
>>659
有難う御座います。まずはApacheを入れてみる事にします。
0663Imo ◆.jC7ANgFY. 04/08/02 10:08ID:???
>>656
それと正しいファイルのロック方法は
$fn = fopen($file, 'w');
flock($fn, LOCK_EX);
fwrite($fn, $data);
fclose($fn);
ではなく
$fn = fopen($file, file_exists($file) ? 'r+' : 'w+');
if (flock($fn, LOCK_EX)) {
ftruncate($fn, 0); rewind($fn);
fwrite($fn, $data);
} else {
// ロック失敗
}
fclose($fn);
ですよ。ロックは失敗する可能性もあります。
0664nobodyさん04/08/02 11:01ID:FFy40LXR
初めて質問します。
cgiとphpを使っていますが、

cgiファイルを使って、一部phpファイルを使いたいです。
たとえばcgi掲示板の中にphp表示(例えば別の掲示板も表示)するとか・・・

ご指導ください。
0665nobodyさん04/08/02 11:09ID:???
外部コマンドとして呼び出して結果を表示すればよい。
0666nobodyさん04/08/02 11:13ID:???
>>663
ロックに失敗するのって例えばどんな場合?
0667nobodyさん04/08/02 11:16ID:???
>>662
バグフィクスされてるのでPHPを4.3.8にするのも忘れずにがんがってください。
下記URIがApacheとPHP4.3.8のインストールに良さげと思った。
ttp://allabout.co.jp/career/database/closeup/CU20031114/

ちなみにイモ回答者の言うことは微妙に間違ってるから信じちゃだめですよ。
0668nobodyさん04/08/02 12:49ID:???
下の2枚の画像合わせて見ると立体に見えるらしいのですが
http://members.home.nl/saen/Special/Zoeken.swf
PHPで実現するにはどうすればよいのでしょうか?
0669nobodyさん04/08/02 12:54ID:???
>>668
3回氏ね
0670nobodyさん04/08/02 13:04ID:???
>>668
Ming
0671nobodyさん04/08/02 13:11ID:???
セッション情報をクリアしたいのですが、
セッションIDだけはクリアせずそのまま使用したいのですが
何かいい方法はないでしょうか?

現在はsession_unsetを使ってクリアしようとしています。
067266004/08/02 13:43ID:???
>>661
if ($count>=$page){
$count = $page;
}

もし$pageより$countのがでかければ
$countに$pageを代入したいのですが・・・
067366004/08/02 13:51ID:???
お・・・できてました・・・

しかしこんなバグが残ってしまいました
Aを書き込みする、Bを書き込みすると更にAが書き込みされる・・・
なーぜだああああああああああ
067466004/08/02 13:58ID:???
$message = file($logfile);
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2) = split( ",", $message[0]);
if ($no2 == ""){
$no = 1;
}else{
$no = $no2+1;
}

if ($name != $name2 && $comment != $comment2){
$put = implode(",", array($no,$name,$mail,$subject,$comment,$time,$host,$color,$pass));
$message = file($logfile);
$fp = fopen($logfile, "a");
rewind($fp);
fputs($fp, "$put\n");
if($max <= sizeof($message))
$num = $max - 1;
else
$num = sizeof($message);
for($i = 0; $i < $num; $i++){
fputs($fp, $message[$i]);
}
fclose($fp);
$taju = 0;
unset($message);
}else{
$taju = 1;
}
0675nobodyさん04/08/02 13:59ID:???
丸投げヤメロ
0676nobodyさん04/08/02 14:01ID:FFy40LXR
>>665
cgiの外部コマンドでphpを呼び出せるそうですが、
出来るんですね。ただ解説しているサイトがない・・・_| ̄|○
0677nobodyさん04/08/02 14:06ID:???
`php file.php`
0678nobodyさん04/08/02 14:23ID:FFy40LXR
>>677

#!/usr/local/bin/perl
$command = `php file.php?q=php&hl=ja&lr=lang_ja`;
print "Content-type: text/html\n\n";
print "<HTML><HEAD><TITLE>結果</TITLE></HEAD>\n";
print "<BODY BGCOLOR=\"#ffffff\">\n";
print "$command\n";
print "</BODY></HTML>\n";

でよろしいでしょうか?
0679nobodyさん04/08/02 14:28ID:9GDxpHGw
PHPを使用して、JPEGイメージにコメントヘッダを書き込むには
どうしたら良いですか?
068066204/08/02 14:31ID:???
>>663
サンプルコード有難う御座います。
ロック機能本体についても勉強中です。

>>667
半日かけてなんとかApach導入できました(汗
結果、恐らく今度は同時に動いており、ロック外した状態でリセットされまくりでした。良かったです。
0681nobodyさん04/08/02 14:36ID:lglFWosb
PHP4.3で、画像ファイルの添付メールを送るにはどうしたら良いですか?
<input type="file">形式で、アップロードされた画像は添付できるのですが
元々サーバ上にある特定の画像を添付してメールしたいのです。
0682nobodyさん04/08/02 14:58ID:???
>>681
アップロードされた画像を添付できるなら、もともとある画像の添付もわけないと思うが、
ひょっとしてアップロードされた画像をメール配送するスクリプトをどこかでひらってきただけか?
なんか、丸投げのヨカソ。
PEARのMail_mimeでも使えばよろしいかと。
0683nobodyさん04/08/02 15:03ID:N/tiSL6x
下記のHPを見るとき、http://www.bridal-vip.co.jp/ 時々、開けないときがあります。
表示されないとき、上記のHPを見ると以下のようなソースが書いてありました。このようなHPを多くの人が見れるように改善するときに、最小限の修正をするとしたら、どういった改善方法をとれば、いいのでしょうか。詳しくは、ソースを見てください
0684nobodyさん04/08/02 15:21ID:???
>>679
5万で教えてやるよ。
0685>>67404/08/02 15:23ID:???
わかんね
0686nobodyさん04/08/02 15:42ID:???
phpの文字列の実装ってどうなってるんでしょ。
長さは保持してるのかいな。
最初に確保されるメモリーのサイズは?
CopyOnWriteで実装されてるのか、そうじゃないのか。
0687nobodyさん04/08/02 15:46ID:???
>>686
つかマニュアル嫁よアホが。確保されているメモリのサイズはデフォで8Mだ。
068868104/08/02 15:46ID:???
>>682
凡ミスで、送れていなかっただけでした…。
PEARを使わずに出来れば良いのだけれど(便利で結局使うが)
0689nobodyさん04/08/02 15:48ID:???
>>681
PEAR使わないなら自分でBoundaryを作ってマルチパートに埋め込んで
送るしかないなぁ。俺は一応その手のライブラリ作ってるけどPEARのが便利だね( ´-ω-)y‐┛~~
勉強にはなったけど。
0690nobodyさん04/08/02 16:01ID:???
初歩的な質問なんですが
aとwの違いってなんですか?
0691nobodyさん04/08/02 16:07ID:???
マニュアル読んでも意味がわからなかった?
0692nobodyさん04/08/02 16:31ID:???
#記事削除
if ($action=="記事削除"){
$fp = fopen($logfile, "w");
$message = file($logfile);
fclose(fopen("$logfile", 'w'));
if($max <= count($message)){
$num = $max - 1;
}else{
$num = count($message);
}

for($i = 0; $i < $num; $i++){
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2,$color2,$pass2) = split( ",", $message[$i]);
if ($number==$no2){
if ($inpass==$pass2){
fputs($fp, $message[$i]);
}else{
$nopass=1;
}
}
}
fclose($fp);
}

記事削除する文打ったつもりなんだが
「記事削除」を押すとパス違ってても全ての記事が消えてしまう・・・
HELPME!!!
0693Imo ◆.jC7ANgFY. 04/08/02 16:36ID:???
>>644
マニュアルには以下のように書いてありますので
私の書いた処理でもファイルを0Byteすることはできます。

'w' 書きこみのみでオープンします。
ファイルポインタをファイルの先頭に置き、
"ファイルサイズをゼロにします"。
ファイルが存在しない 場合には、作成を試みます。
0694nobodyさん04/08/02 16:41ID:???
>>671
マニュアルのセッションの章を全部読んでください。

>>679
PHPの関数には無いようなので、JPEGのフォーマットを調べて
ファイル関数群を使って書き込むことになります。
誰か作って公開してるかも知れんけどね。

>>686
実装が気になる場合はソース嫁
0695Imo ◆.jC7ANgFY. 04/08/02 16:46ID:???
>>679
EXIFブロックならばexif_read_dataを使って読むことができますよ。
0696Imo ◆.jC7ANgFY. 04/08/02 16:49ID:???
>>692
$fp = fopen($logfile, "w");
$message = file($logfile);
ここの部分がおかしいですよ。
069769204/08/02 17:03ID:???
あり、とりあえずいろいろ修正して

#記事削除
if ($action=="記事削除"){
$message = file($logfile);
fclose(fopen("$logfile", 'w'));
if($max <= count($message)){
$num = $max - 1;
}else{
$num = count($message);
}

for($i = 0; $i < $num; $i++){
print "1 $no2 2 $number 3 $inpass 4 $pass2";
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2,$color2,$pass2) = split( ",", $message[$i]);
if ($number==$no2 && $inpass==$pass2){
}else{
$fp = fopen($logfile, "w");
rewind($fp);
fputs($fp, $message[$i]);
fclose($fp);
}
}
}

にしたのですが、記事が消えません;;
パスあってるのに〜;;
0698Imo ◆.jC7ANgFY. 04/08/02 17:03ID:???
>>692
ファイルを開いているときの0Byteにする場合はftruncate関数を使います。
ファイルを開いていない場合は'w'モードで開くだけで0Byteになります。
'w'モードで開いた時点でファイルは0Byteになります。
その後にファイルを読み込むと0Byteの文字列が返されることになります。
0699Imo ◆.jC7ANgFY. 04/08/02 17:08ID:???
>>697
私がふとそのまま書いたらこんな感じになります。
とはいってもこれを直接使うといろいろ面倒なので
このソースを見て何かを得てみてください。
あくまで参考までに、、、、

$fn = fopen($logfile, 'r+');
if ($fn and flock($fn, LOCK_EX)) {
  $data = explode("\n", trim(file_get_contents($logfile)));
  $data = array_slice($data, 0, $max);
  $hit = preg_grep("/^$number,.*,$inpass\$/", $data);
  if (count($hit)) {
    $hitnum = array_keys($hit);
    unset($data[$hitnum[0]]);
    ftruncate($fn, 0); rewind($fn);
    fwrite($fn, implode("\n", $data));
  } else {
    echo '該当する記事がないかパスワードが違います';
  }
} else {
  echo 'ファイルが開けなかったかロック失敗';
}
@fclose($fn);
070069704/08/02 17:10ID:???
シラナイ命令文イパーイでシボンヌ_| ̄|○

    ||
   (  )
   ∪ ∪
    ∪∪
0701Imo ◆.jC7ANgFY. 04/08/02 17:16ID:???
>>700
あえてあなたの書いたコードを修正するならばこう。
でもファイルロック処理とかしていないから込み合う
サイトではデーターが消えたりします。

// 記事削除
if ($action=="記事削除"){
  $message = file($logfile);
  $fp = fopen($logfile, 'w');
  if($max <= count($message)){
    $num = $max - 1;
  }else{
    $num = count($message);
  }
 
  for($i = 0; $i < $num; $i++){
    // print "1 $no2 2 $number 3 $inpass 4 $pass2";
    list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2,$color2,$pass2) = split(",", $message[$i]);
    if ($number==$no2 && trim($inpass)==trim($pass2)){
      // 該当記事
    }else{
      fputs($fp, $message[$i]);
    }
  }
  fclose($fp);
}
0702軟式PHP04/08/02 17:17ID:???
>>693
まぁアホは相手にしなさんな。・゚・(ノ∀`)・゚・。
0703nobodyさん04/08/02 17:22ID:???
>>701
ありです><
なんとかできました(*´д`)ハァハァ
(trimてなんだろ・・・)
0704nobodyさん04/08/02 17:23ID:???
マニュアルを見る癖をつけろ
0705軟式PHP04/08/02 17:23ID:???
trimとかchopとかは覚えとけよ。・゚・(ノ∀`)・゚・。
http://www.php.net/manual/ja/function.trim.php
0706nobody04/08/02 17:25ID:tyWsL5gt
アマゾンのWebサービスからXMLを取得し、SimpleXMLでデータを引き出そうと思っています。
環境はPHP5、WindowsXPpro、Apache2.0です。

例えば、
ttp://xml-jp.amznxslt.com/onca/xml3?t=webservices-20&dev-t=webthreads&locale=jp&KeywordSearch=Amazon&mode=books-jp&type=lite&page=1&f=xml
上記で取得したXMLから、

foreach($xml->Details as $details){
echo $details->ProdctName;
}

などのようにデータを取り出すことはできましたが、取得したXMLのなかで、
著者名(Author)など、各詳細情報(Details)内でも複数あるデータについて
foreachなどでデータを取得することができません。
単純にキーを指定して、$details->Authors->Author[2] などのようにすれば
データは取れるのですが、ループで取得できないとなんとも不便です。
とりあえずこんな感じに書いてみましたがうまく動作しません。

foreach($xml->Details as $key => $details){
echo $details->Manufacturer;
foreach($details->Authors as $authors){
echo $authors->Author;
}
}

これだと著者名の最初1件しか拾えません。countなどでAuthorを数えてみても
正しくカウントされないようです。
これはこういう仕様なのでしょうか?
なにか間違った記述をしているのでしたらご指摘いただけると助かります。
よろしくお願いいたします。
0707Imo ◆.jC7ANgFY. 04/08/02 17:27ID:???
>>703
fileで読み込んだ配列はどうしても最後に"\n"が入ってしまうからtrimで除去したんですよ。
パスワードのあとに","が入っているプログラムなら大丈夫なのですが、、、
070870304/08/02 17:29ID:???
そういえば一番後ろにpassがあったような_| ̄|○
本当にアリガトー><

PS.目的別PHPハンドブックを読んでいるがワカンネェ
0709Imo ◆.jC7ANgFY. 04/08/02 17:30ID:???
$details->Authorsが複数存在してるのではなく
$details->Authors->Authorが複数(配列として存在している)のならば
こうあるべきでは?

foreach($details->Authors->Author as $authors){
  echo $authors;
}
0710軟式PHP04/08/02 17:32ID:???
今日はImo氏がいるからアホの言いがいが無いな…。
また明日な。・゚・(ノ∀`)・゚・。
0711nobodyさん04/08/02 17:32ID:???
>>699
一瞬でもにでもファイルを 0バイトにすると外部から読み込みが入ると怖いのであまり 0バイトには
しない方が安全だと思う。
やるとすれば以下のような感じかな。実用するならもう少しエラーチェックを真面目にするけど。

if (fwrite($fn, implode("\n", $data))) {
  ftruncate($fn, ftell($fn));
}

あと、fopen で開いているファイルを file_get_contents で開くのはちょっと好きでは
ないので、以下の方法で読み込むとか。

$data = fread(filesize($logfile));
0712nobodyさん04/08/02 17:34ID:???
>>708
ひとまずWebの日本語マニュアルでも、殆ど問題ない。
http://php.s3.to/man/
0713Imo ◆.jC7ANgFY. 04/08/02 17:37ID:???
>>711
でもその方法でやると後半部分のデータがくずれたりしますよ。
すべての部分(書き込みするために読み取る部分と、書き込みする部分)で
ロック処理をしておけばよっぽどのことがない限り大丈夫なはずです。

file_get_contentsはphpでは推奨しているといかなくとも、
「OSによっては高速になる」との記述もあります。
まぁちょっとの差でしょうけどね。

# それとちょっと間違えてるよ
# $data = fread($fn, filesize($logfile));

0714軟式PHP04/08/02 17:40ID:???
>>711
|Д`)
0715nobody04/08/02 17:43ID:tyWsL5gt
>>709
レスありがとうございます。
本当だ。できました。ありがとうございます。

こんな簡単なことに気が付かないとは恥ずかしい・・・。
071671104/08/02 18:25ID:???
>>711 で rewind を忘れていた。本当は fwrite の結果を取得してから
if 文を行った方が安全だけど。

rewind($fn);
if (fwrite($fn, implode("\n", $data))) {
  ftruncate($fn, ftell($fn));
}

>>713
後半部分のデータがくずれるというのがよく分からない。
そのために、ftell で書き込み終わったファイルポインタの位置を取得して、
それ以降の部分を切り捨てている。

fwrite から ftruncate までの間に別からファイルの読み込みがあった場合は
確かにくずれるかもしれないけど、0バイトで読み込まれるよりはましだと
思ったということで。

一瞬でもファイルを 0バイトにしたいくないのは、fwrite で失敗、例えば
HDD のディスクが一杯になったりして、ftruncate でファイルを 0バイトに
した後にfwrite が失敗したりするとファイルは 0バイトで止まってしまうと
いう問題もあるからだけど。

711 で書いた fread の引数は確かに間違い。
ただ、fopen で既にファイルを開いていた場合は file_get_contents よりは
fread で全部読み込んだ方が早いのは確か。一応、ベンチマークを取って
確認した。
fopen から fclose までの一連の処理を行うよりは file_get_contents の方が
早いけど。
071768604/08/02 18:37ID:???
>>687
"最初に確保されるサイズ"ってのは文字列オブジェクト一つのことなんですけど。
あとデフォで8Mってのはmax_limitのこと?
これは「確保できる最大メモリーサイズ」であって、
どこにも「最初に確保されるサイズ」ってかいてない。
それとも別のオプションがあるのかな。

とりあえず適当に実験してみたところphpの文字列はC文字列で、長さは保持しない感じ。
この辺はあまり気にしてもしょうがないんだが。
0718nobodyさん04/08/02 18:51ID:???
PHPを使ってHTMLやPDFの内容を
動的に画像生成したいのですが、可能でしょうか?
0719nobodyさん04/08/02 19:05ID:???
>>718
PHPはファイルを読み込むことができます。
PHPは画像生成をすることができます。
718はhtmlやPDFのレンダリングエンジンを作ることができます。
結論 -> 可能です。
0720nobodyさん04/08/02 19:07ID:???
ある会員登録の登録フォームで無料メールアドレスでの登録を拒否するようにしたいのですが、
どんな風にスクリプトを書けばいいでしょうか。
流れだけでもわかりませんか?
0721Imo ◆.jC7ANgFY. 04/08/02 19:12ID:???
>>716
そこでそのようなことをしなければならないようじゃ、
それをしてもデーターの後半はくずれてしまいますよ。
と言いたかっただけですよ。

私は一般共用サーバーで使うことを前提にしてやっている
のでそこまで考えていませんが(HDDがいっぱいになるとか、、、

私も調べてみましたがまぁそうっぽいですね。
ファイルサイズがかなり巨大になってくると逆になりますが。
file_get_contentsは引数が少なくて個人的に好きです。
というよりかネットワーク処理のときにfreadの第二引数に
だまされて避けてるだけですが、(ローカルでは問題ありません

# FreeBSD+PHP4.3+PHPAで10000回ループさせた結果
# fopen&fclose:    0.253ms
# fread:         0.223ms
# file_get_contents: 0.335ms
0722nobodyさん04/08/02 19:17ID:???
>>720
無料メールアドレスのリストを作成し、入力されたメールアドレスを比較すればいいです。
有料メールアドレスのリストでもいいですよ。
0723Imo ◆.jC7ANgFY. 04/08/02 19:19ID:???
>>717
でも文字列中に"\x00"も含められるということは文字の長さを保持しているわけだし、
変数といわれても型がいろいろあるわけで、最低10Byteは消費しているなと思ったり。
推測なんでなんともいえませんが、
0724Imo ◆.jC7ANgFY. 04/08/02 19:24ID:???
>>720
私だったらこんなの書きますよ。

$deny = array('hotmail.com', 'mail.goo.ne.jp');
list($mail_user, $mail_domain) = explode('@', $mail, 2);
if (in_array($mail_domain, $deny)) {
  die('別のアドレスで登録してくださいませ');
}

072567904/08/02 19:33ID:???
レスありがとうございます
>>684
高いっす
>>694
知り合いから頼まれて作っているのですが(携帯用待ち受け画面サイト)、
端末に合わせて自動的に画像を拡大縮小してほしいということで
 元ファイル読み込み→GDでリサイズ→imagejpegで出力
という処理をしています(ファイルとしては書き出していません)。
で、携帯のほうで転送不可にしたいということで、ドコモ用・au用で
違った転送不可フラグを書き込みたい、と。
やはり一度書き出さないと無理なのでしょうか?
気合入れてググってきます・・・。
>>695
そのexif_read_data()の逆の関数があればラクなんですけど・・・
exif_write_data($image,"comment","hogehoge");みたいな。
0726Imo ◆.jC7ANgFY. 04/08/02 19:39ID:???
>>725
packでがんばって処理するしかないようですね。
とりあえずJPEGのフォーマット関連のサイト、書いときますね。
ttp://www02.so-net.ne.jp/~koujin/jpeg/jpeg.html
ttp://www.yk.rim.or.jp/~mamo/Computer/DS-7/exif.html
ttp://www2.airnet.ne.jp/~kenshi/exif.html

ここは消えてるけどweb.archiveになら残ってるからアドレスだけ
ttp://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif.html
0727nobodyさん04/08/02 19:58ID:???
>>722さん>>724さんレスありがとー

今のところhotmailが対象なのですが、他のメールも登録を考えた方がいいかな?と
思ってるので、そのリストを作成してみます。

ソースの提示もしていただき感謝です。
今のスクリプトへうまく組み込めればいいのだけど、最近php始めたもので^^;
参考にしてやってみます!

0728nobodyさん04/08/02 22:18ID:???
flockでロックしているファイルを、
file()で読み込もうとするとどうなりますか?
flockを使うならファイル処理はfopenで揃えた方がいいでしょうか?
0729nobodyさん04/08/02 23:11ID:lHZ4GoiW
>>725
二つアドバイス。

一つ目
生成されるファイルサイズに気をつけてね。
vodafoneのV3/4シリーズは、ファイルサイズ最大6Kbyteだ。
QVGAサイズで6Kbyteは早漏圧縮率を上げないとね。

二つ目
QVGA対応端末の中には、Webアクセス時、QVGAサイズの画像を表示できない端末があります。
そやつらは、vodafoneだったら四分割、ezwebだったらダウンロードさせるしかないです。

0730nobodyさん04/08/02 23:17ID:lHZ4GoiW
おながいします。
千通ちかいメールを送る必要があります。
Mail::send()を使おうと思ってるんですが、sendmailで送るのと、smtpで送るのとで、速度面ではどちらが高速でしょうか?
ちなみに、MTAはqmailです。
0731nobodyさん04/08/02 23:41ID:d5GNjYEU
変数に文字列が入ってるんですが、最初から20文字までを表示したいプログラムって、どのように組んだらいいのでしょうか?
for分を使ってカウントしようとしたのですが、文字そのものをカウントできなくて困ってます。

よろしくお願いします。
0732nobodyさん04/08/02 23:42ID:8RF4q1S0
フォームからメール送信時のBccについて質問させて下さい

$to = '[email protected]';
$bcc = "[email protected]";
$from = "[email protected]";
$title = "sampletitle";
$headers = "From: $from\r\n";
$headers .= "Bcc: $bcc\r\n";
$msg = file("./mailtxt.txt");
$msg = implode("",$msg);
mb_send_mail($to,$title,$msg, $headers);
のように書いてtoの他にbccでも送信したいのですが
送信されません、マニュアルをみるとmb_send_mail()はヘッダの区切りが\nになっていましたが
mail()の方は\r\nになっていましたので両方試しましたがダメなのはそこではなさそうなのですが
どこがおかしいかご指摘いただけますか。

旧サンのコバルトのraQ550、Apache/1.3.20+php4.0.6です。
0733nobodyさん04/08/02 23:47ID:???
ポカーンな質問でとても申し訳無いのだけども...

スクリプト内部に"->"という記述があるのだけども
これってどんな意味があるのかどうかご教授を...

余りにも漠然としたワードなんで
ググっても全くヒットしなかったデスん('A`)
0734nobodyさん04/08/03 00:00ID:7JP71wHz
>>733
http://www.php.net/manual/ja/language.oop.php
0735nobodyさん04/08/03 00:02ID:???
phpとクラスとかオブジェクトとかで検索すると
出てくるんでないかあい?
0736nobodyさん04/08/03 00:05ID:???
>>731
substr()
0737nobodyさん04/08/03 00:57ID:???
>>734 >>735
なるほど!
クラスを用いた時のメンバ変数やメソッドにアクセスする為の
演算子という事が少しずつ分かってきました

激しく目から鱗です、謝々!!
0738nobodyさん04/08/03 01:30ID:???
アロー演算子な
0739nobodyさん04/08/03 02:10ID:OM2Aei59
コンストラクタでnewしてそのクラス内で
$this->オブジェクト->メンバ名
としても
Object->メンバ名
となってしまうんですが、どこがおかしいのでしょうか?
0740nobodyさん04/08/03 02:22ID:Q+9yurzP
その「Object->」はどっから出てきたんだ?
具体的なエラーメッセージor挙動を書きなさい
074173904/08/03 02:29ID:OM2Aei59
すいません、言葉足らずでした(^^;
設定情報を格納するクラスをつくっていて、
他のクラスのメンバにそのクラスのオブジェクトを生成・代入し、
print "なんたらかんたら$this->オブジェクト->メンバ名";
みたいな感じで出力させたところ、何故か出力が
Object->メンバ名
になってしまうのです。
一応C++をやっていたのですが、PHPではpublicなメンバみたいなのは使えなかったりするのでしょうか?
0742軟式PHP04/08/03 09:13ID:???
<?php
/*-----親クラス-----*/
class Oya{
//メンバ変数
var$musukoObj;
//メンバ関数
function Oya(){
$this->musukoObj = new Musuko;
print$this->musukoObj->GetData();
}
}
/*-----子クラス-----*/
class Musuko{
//メンバ変数
var$data;
//メンバ関数
function Musuko(){
$this->data = 100;
}
function GetData(){
return $this->data;
}
}
//--クラス定義終了
$objOya = new Oya();
?>
100が出力されるけど、こういうことではない?
0743軟式PHP04/08/03 09:14ID:???
あ、タブで区切っちゃってた。・゚・(ノ∀`)・゚・。
適当なところにスペースよろしく。
0744Imo ◆.jC7ANgFY. 04/08/03 10:39ID:???
>>741
print "なんたらかんたら{$this->オブジェクト->メンバ名}";
こうやってみたらいかが?
0745nobodyさん04/08/03 13:20ID:WVIz7Nic
PHP4.1.2時代に作ったプログラムを4.3.8用に修正したんだけど、
PHPのバージョンを4.3.8に上げる前に、
プログラムは前もって4.3.8に修正したヤツを
現行のサーバーに入れようと思ってます。

文法をより適切に修正しただけで、新しい関数などは用いてはいないので
4.3.8用に修正したプログラムでも4.1.2で動くかと思ったら、
一箇所ダメなところが。
「mb_ereg()」関数が4.1.2時代にはまだ「mbereg()」としてしか存在していなかったようで、
mb_ereg()関数を呼び出しても未定義と怒られる。
なので、

function mb_ereg($str1,$str2,$str3){
return mbereg($str1,$str2,$str3);
}

のような感じで関数をとりあえず定義してバージョンアップ前まではお茶を濁そうと思っていたら
三番目の引数が問題でうまく動かない。

mb_eger("(hoge)$",$data,$regs);

とした場合に正規表現にマッチした部分を$regs[1]として
取り出すことができなくなってしまうのでお手上げ。

なので、「mb_ereg()」と自作した関数をそのまま「mbereg()」関数に
リンク(エイリアス?)するような方法はないでしょうか?
074673904/08/03 13:36ID:???
>>742-744
レスどうもです!

>>742,743
やっちゃいますよね、それ。
内容は大体そんな感じです。
結局のところ、原因は・・・

>>744
まさにこれでした!
便利さには危険が付きまとうんですね(笑

皆さん、どうもありがとうございました。m(_ _)m
0747Imo ◆.jC7ANgFY. 04/08/03 14:19ID:???
>>745
たとえばこんな感じ?

function mb_ereg($str1,$str2,&$str3){
return mbereg($str1,$str2,$str3);
}
074874504/08/03 14:27ID:???
>>747
なるほど、参照渡し。
PHPで参照渡しってほとんど使ったことなかったから思い付きませんでした。
ありがとうございます。助かりました。
0749nobodyさん04/08/03 15:05ID:???
ていうか参照渡しとすぐ分かるだろうに・・・
0750nobodyさん04/08/03 15:27ID:KxZQfxxV
ググってもよく分からないので有識者の方にお聞きします。

いままで、結構な規模のPHPプログラムをincludeを使って書いています。
このソースを外部に公開することになったのですが、
functionを使う感覚でincludeを使って処理を別ファイルに書き出していたので、
プログラム的にちょっとみっともないかな、と思っています。

ですが、問題はここではなくて、
includeとfuctionで同じ(ような)処理を呼び出す場合、
処理スピードが違う等のメリットはあるのでしょうか?
functionではメモリにキャッシュされるような気もするのですが、
それに関するドキュメントが見つかりませんでした。

メリットが特になければ、
「スピードには問題ない!」で押し通そうと思っているのですが...
0751nobodyさん04/08/03 15:41ID:???
セッション情報をクッキーでブラウザに渡すとき、
Set-Cookie ヘッダは session_start() 関数を実行するときに表示されているんでしょうか?
環境は 4.3.6 + FreeBSD のレンタル鯖です。
0752nobodyさん04/08/03 16:03ID:BfqwKzi+
ApacheとTomcatを連携させている所にPHP4.3.8をインストールして
HTMLに<?php include("test.jsp"); ?>と記述してみたのですが、
test.jspのソースがそのまま表示されてしまいます。
Apacheのhttpd.conf中のAddType application/x-httpd-phpに
「.jsp」を追加してみたのですがだめでした。

JSPのファイルからJSPをインクルードする方法なら簡単なのですが、
どうしてもHTMLからJSPをインクルードしたいんです。
JSPを表示する方法が分かる方がいたら教えてください。
0753nobodyさん04/08/03 16:11ID:???
>>752
>>488
0754nobodyさん04/08/03 16:17ID:???
>>749
「人生いろいろ、会社もいろいろ、社員もいろいろだ」 
小泉純一郎首相様が言ってました。
■ このスレッドは過去ログ倉庫に格納されています