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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/12/21 22:34:55ID:???
のフリをした糞スレ
0591nobodyさん05/01/31 12:23:28ID:qVyRdTkm
>>589
ありがとうございます。
早速試してみます。
0592nobodyさん05/01/31 12:39:44ID:???
>>589
エスパーだね
ところで、eAcceleratorってMMCacheと比較してどんな感じ?
0593nobodyさん05/01/31 12:42:51ID:???
>>590
やりたい事を分割してみていくとこうなる。
1. ユーザがページを見る
2. ページ内のメールアドレス向けにメールを送信する
3. PHPを使ってメールを受信する
4. 3.のデータを元に登録する。

1,2はHTMLの話なので略。
3.は複数の手段が考えられるので後述
4.は分かるだろうから略。

3-1. 外部からメールを直接受信する(受信専用メールサーバをPHPで実装)
 -> 無茶なので考え直す
3-2. PHPがメールソフト(MUA)の振りをしてメールデータを取得
 -> やり方としては素直。ipop関数あたりを参照。トリガーをどうするか要考慮。
3-2. 外部SMTPサーバ->自持SMTP->MDA->鯖内メールデータ(ファイル)
 MDAの処理中に抜き出す(procmail、forward等) -> 場合によっては使えそう
3-3. 3-2の鯖内メールデータに直接アクセスする
 -> 3-1同様強引だが、最後の手段としてはありえそう。
3-4. そろそろ飽きてきた。条件が揃えばPHPで出来るって事は分かったべ?
0594nobodyさん05/01/31 12:42:56ID:???
RewriteEngineでIPによるアクセスを[F]してるのですが、
これだと403が直ぐに返ってしまいます。これを如何にも
サーバーが存在しないように偽装出来ますでしょうか?。
059559405/01/31 12:50:31ID:???
げ・・移動します;
059659005/01/31 13:03:27ID:???
>>593
非常に丁寧な回答ありがとうございました。
空メール受信用のアドレスを用意してPHPで受信し、登録する方法にします。
トリガーはメールマガジン管理画面へのアクセスに。
参考になりました。
0597nobodyさん05/01/31 13:26:21ID:???
>>596
.forwardとか使って、POPサーバへの受信時に
PHPスクリプトをキックする方が楽だしすっきりすると思う。
(3-2の中の自持SMTPはレンタル鯖でも条件があえばできる)
0598nobodyさん05/01/31 13:43:57ID:???
>>592
現時点では設定ディレクティブのプリフィックスがmmcacheからeaccelerator
に変わったくらいしか違いは見受けられないけど、実質的に開発を引き継いで
くれたことには意義があると思う。

ロードマップが未掲載なので先は不明。
http://eaccelerator.net/RoadMapUk
0599nobodyさん05/01/31 14:22:57ID:???
Faxつまったw
0600nobodyさん05/01/31 16:23:59ID:8FwNP7ph
現在ぷーで就職先で悩んでいます。
知人の紹介してくれそうな会社がPHP+Solarisを使ってウェブ構築をやっています。
わたしはC/C++/Ruby/VB6と歩いてきて使いこなせる力は

VB6 >> C++/C >> Ruby

です。
SQLは本当に基本的なところだけ抑えていてOracleを使って開発していました。
言語的に好きなのはC++が一番好きです。

好きとかだけで食っていけないのも世の常なので、皆さんに質問したいのですが。
PHPについて

開発速度/効率/再利用性/どの程度分担作業できるか/開発環境(IDE)はどの程度充実しているか
将来性/言語的メリット・デメリット

等について実際に現場で働いてる方の意見をいただきたいのです。
よろしくお願いします。
0601nobodyさん05/01/31 16:47:40ID:???
>>589
eAcceleratorってrequireとかしたファイルはキャッシュしてないのだろうか、
なんかキャッシュファイルがMMCacheより小さい気がするんだけど。
ただの圧縮関係なのだろうか。
0602nobodyさん05/01/31 17:11:10ID:jB8MTmrN
セッションを使ってユーザー認証を行いたいと思っています。
実際システムではどのような流れで認証を行っているのでしょうか?

私はとりあえず、IDとパスワードをチェックして、両方とも一致したら
IDとパスワードをセッション変数に格納し、
それ以降のページでは最初にセッション変数のIDとパスワードを調べ、
そのつどIDとパスワードを保存してあるファイルから調べるという方法を
とろうかと思っています。

それとも、IDとパスワードが一致した時点で、認証済みを判断する変数をひとつ用意して
それの値を1にし、それでそのつど判定するのでしょうか?

0603nobodyさん05/01/31 17:11:43ID:???
>>600
> 開発速度/効率/再利用性/どの程度分担作業できるか/開発環境(IDE)はどの程度充実しているか
> 将来性/言語的メリット・デメリット

最初から順番に
-人によるけど遅くはない
-人によるけど悪くはない
-設計によるPEARとかmojaviとか使えばそれなりに。
-デザイナとプログラマで分けたいなら、可能。複数プログラマでの作業分担は普通に出来る。
-IDEなんて無くても開発できる。phpEclipseが良いらしい。
-知らないけど、先行きは暗くはない。
-使用人口が多いので情報が豊富。・ノイズも多い。

#ぷーは余計なこと考えずにまず働け
0604nobodyさん05/01/31 17:24:51ID:???
正規表現が分からず困ってます。
imgタグを抜き出したいのですが、そのイメージをアンカータグが囲っている場合、
そのアンカータグごと抜き出したいのです。
その際マッチの順番は変えたくないので、一回の処理で終わらせる方法はないでしょうか?
preg_match_all('/<a .*?><img (.*?)><\/a>|<img (.*?)>/i', $body, $match);
正規表現が余り得意でないので、書き方さえ間違っているかもしれないですが、分かる方よろしくお願いします。
0605nobodyさん05/01/31 17:39:20ID:???
>>603
禿ワロス
0606nobodyさん05/01/31 17:52:08ID:???
>>604
その正規表現でも一応1回で抜けるんじゃないの?
0607nobodyさん05/01/31 17:57:27ID:???
あ、ひょっとして「1回で抜く為にはこの正規表現でいいのか?」
ってことを聞きたいのか?
アンカータグとイメージタグの間に空白文字\s*は入れておいたほうがいいかもなぁー。
060860405/01/31 18:00:59ID:???
>>607
一回で抜きたいのですが、アンカータグ付きの正規表現しかマッチしていないようなのです。
もしかしてor文の書き方が間違っているのかなぁ?と思って聞いてみたのですが。
060960005/01/31 18:09:32ID:???
>>603

ありがとうございます。
キーワードを頼りにいろいろ見てましたが悪くないなと感じました。

> #ぷーは余計なこと考えずにまず働け

ごもっともorz
0610nobodyさん05/01/31 18:11:35ID:???
>>608
アンカー無しも抜けそうな気がするが、PCREライブラリによって違うのかな?
/(<a .*?><img (.*?)><\/a>)|(<img (.*?)>)/i
という感じで全体を()で括ってみるとか。
061160405/01/31 18:21:53ID:???
>>610
/(<a .*?><img .*?><\/a>)|(<img .*?>)/i
こう書いたら$matchに返ってきた配列は別でしたが、imgのみも抜けました。
ちょっと色々試してみます。
ありがとうございました!
0612nobodyさん05/01/31 19:18:27ID:ZbMy7NkR
すみません、フォームからのsubmitで同時に二つのスクリプトを呼び出すことって
出来ますでしょうか? なぜこんな質問をしているのかといいますと、
下記のようなメルマガ登録フォームを設置してるんですが、
その登録者数をカウントしたいと思ってるのです。

<FORM ACTION="http://regist.mag2.com/reader/Magrdadd" METHOD=POST TARGET="_top">
メルマガ名<INPUT TYPE=HIDDEN NAME="MfcISAPICommand" VALUE="MagRdAdd">
<INPUT type=text NAME="rdemail" size=30 VALUE="">
<input type=hidden name="magid" value="00000xxxxx">
<INPUT TYPE=SUBMIT VALUE="登録"> </FORM>

上記はまぐまぐで用意されているフォームHTMLですが、
これでデフォルトのまぐまぐスクリプト(http://regist.mag2.com/reader/Magrdadd)
だけでなく、自作の「regcnt.php」も呼び出して、登録してくれた人の
人数を数えたいのです。

こういうことって可能でしょうか?
それとも実は私がすごい勘違いしてて、もっと簡単なやり方があったりして・・・。
0613nobodyさん05/01/31 19:23:18ID:???
>>612
まぐまぐ自体に登録者数の集計機能って無いの毛?
061461205/01/31 19:29:36ID:ZbMy7NkR
あ、もう一つのやり方候補を書くの忘れてました。

もう一つ考えたのは、まず最初のFORM ACTIONをregcnt.phpに変更して、
そこで数だけカウントして、フォームから受け取った各変数をそのregcnt.phpから
直接http://regist.mag2.com/reader/Magrdaddに渡す…という
方法(つまりユーザーからしてみればregcnt.phpの存在にはほとんど気づかずに
すぐにまぐまぐの「登録完了」が表示される)も考えたのですが、
肝心の渡す方法が検索しても分からなくて挫折しました。

もしかしたらこれもまるっきりアホなやり方かもしれませんが。。。
上級者様のご意見を仰ぎたいです。
0615nobodyさん05/01/31 19:29:40ID:???
>>612
まずカウントを集計するスクリプトに飛ばして集計処理をした後、
まぐまぐのフォームへデータをPOSTすればよいだけだと思うが。
061661505/01/31 19:32:24ID:???
>>614
思いっきりかぶった(w
それでいいよ。

POSTのやり方分からんのなら
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0+post+http%E3%83%98%E3%83%83%E3%83%80&num=50
ほれ。
061761205/01/31 19:33:27ID:ZbMy7NkR
>>613
フォームを複数設置しているため、どのページからの登録が
多いのかを調べたいと思っていまして。。。

>>615
そうですね、たぶん私が614で書いたのと同じ意味で
おっしゃって頂いているのだと思いますが、
その「phpスクリプトからまぐまぐへデータをPOST」の方法がイマイチ分からなくて…。
スクリプト内から「HTMLフォームのsubmit」と同じ動作を命令できるのでしょうか??
なんか無知過ぎてすみません。
061861205/01/31 19:36:59ID:ZbMy7NkR
>>616
あ、私も思いっきりかぶりましたww
教えていただいてありがとうございます!
早速指示していただいたGoogle検索結果を読んで理解しに行きます。

自分でもいろいろ検索してたんですが、
「httpヘッダ」なんて、自分じゃ考えもつきませんでした。
本当に助かりました。ありがとうございます。
061961505/01/31 19:37:09ID:???
>>617
> たぶん私が614で書いたのと同じ意味で
そう。全く同じ意味。考え方としては正しい。

> スクリプト内から「HTMLフォームのsubmit」と同じ動作を命令できるのでしょうか??
できる。↑の検索結果見ながら頑張れ。
062061505/01/31 19:37:55ID:???
なんかシンクロしとるな(w
まぁ頑張ってくれ。
0621nobodyさん05/01/31 20:18:23ID:???
君達、仲いいね。
0622nobodyさん05/01/31 20:25:32ID:???
>>612
くだ質スレでやれよ
062352405/01/31 22:37:00ID:???
結局 >>527のようなコード以外、思いつきませんでした。

正しい in_arrayの使い方を教えてもらえないでしょうか?




0624nobodyさん05/01/31 23:25:36ID:???
>>623
マニュアル読んで わからないなら くだ質
0625nobodyさん05/02/01 14:14:36ID:07WWszEk
ezweb用(xhtml)のサイトをphpで開発している方、デバッグってどうやってます?

path_infoなURLで拡張子無しで、
www.○○.jp/hoge/abcdef/123_456/ (hoge.phpにアクセスしている)
アクセスした場合実機では「リクエストされたページは表示できません。」
Openwave SDK6.2では406エラーになり、
www.○○.jp/hoge.php/abcdef/123_456/
の場合実機(タルビー)では変わらず、Openwave SDK6.2では問題無く表示されます。

UAからSmartyのテンプレートを切り替えで表示キャリアを分けていて、
i-modeとvodafoneに関してはオフィシャルなシミュレータと実機で表示確認済みです。

Openwave SDK6.2には下記のようなログがありました、
HTTP/1.1 406 Error
Date: Mon, 01 Jan 2005 00:00:00 GMT
Server: Apache
Alternates: {"hoge.php" 1 {type application/x-httpd-php} {length 733}}
Vary: negotiate
TCN: list
Connection: close
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: Chunked

解決へのポインタもしくは、ezwebサイト用のシミュレータ等でもっと詳細なログを吐いてくれる
ものがあれば教えてください。
Apache 1.3.33
PHP 4.3.10
Smarty2.6.2
0626nobodyさん05/02/01 14:58:03ID:???
FC2, rpmの4.3.10使ってますが,
mktime, gmmktimeの結果が1970年以前では
壊れた挙句に,9時間毎(OSがJSTの場合)にループしませんか?.

RH7.3, rpmの4.1.2でも同じみたい

Vine(バージョン不明)のrpm 4.2.3 ではうまくいく

PHPではなくOS側の問題ですか?.
設定で回避できるようなら教えてください.
0627nobodyさん05/02/01 15:09:47ID:???
>>626
マニュアル嫁アホ
0628nobodyさん05/02/01 15:12:03ID:???
>>627

英語版?
0629nobodyさん05/02/01 15:49:12ID:???
>>627

すんません,わからないです.教えて

time_tは符号付32ビットだから有効範囲は1901-2038だと英語版にも書いてある.
1970以前と以降について特にmktime()とgmmktime()の両者の使い方が変わるとは書いてない

Windowsではないから1970年以前の制限はないはず

だとすれば,
mktime(23,59,59,12,31,1969)とmktime(0,0,0,1,1,1970)の差は1のはず
実際には,

<?= mktime( 23,59,59,12,31,1969 ) ?>
-1

<?= mktime( 0,0,0,1,1,1970 ) ?>
-32400

になる
0630nobodyさん05/02/01 16:26:02ID:???
>>629
MacOS X 10.3.7 / PHP 4.3.10
% TZ=GMT php -r 'var_dump(mktime(0,0,0,1,1,1970));' => int(0)
% TZ=GMT php -r 'var_dump(mktime(23,59,59,12,31,1969));' => int(1)
% TZ=JST-9 php -r 'var_dump(mktime(0,0,0,1,1,1970));' => int(-32400)
% TZ=JST-9 php -r 'var_dump(mktime(23,59,59,12,31,1969));' => int(-32401)
% TZ=JST-9 php -r 'var_dump(gmmktime(0,0,0,1,1,1970));' => int(0)
% TZ=JST-9 php -r 'var_dump(gmmktime(23,59,59,12,31,1969));' => int(-1)
0631nobodyさん05/02/01 16:27:54ID:???
おっと、コピペミス。2段目の結果は int(-1) ね。
0632nobodyさん05/02/01 16:47:15ID:???
>>630
ありがとう,だめでした
$ env TZ=JST-9 php -q
<?= mktime( 23,59,59,12,31,1969 ) ?>
-1
 GMTだと,env TZ=GMT php -q
<?= mktime( 23,59,59,12,31,1969 ) ?>
-1
 いけたか?,と思ったが,
$ env TZ=GMT php -q
<?= mktime( 0,0,0,9,15,1965 ) ?>
-14462
$ env TZ=GMT php -q
<?= mktime( 23,59,58,12,31,1969 ) ?>
-1
$ env TZ=GMT php -q
<?= mktime( 23,59,57,12,31,1969 ) ?>
-1
 なんかだいぶおかしい,もともと,1970以降はgmmktime()とmktime()の差は
9時間出てたので,TZ設定してなくてもOSのlocaleちゃんと読んではいるみたい・・・・
0633nobodyさん05/02/01 22:40:14ID:???
>>626,629,632
試さなくていいから、マニュアルのmktimeの説明部分をテキスト入力してみろ。
英語なんか訳さなくていいから和訳されたものをそのまま入力してくれ。
>Windowsではないから1970年以前の制限はないはず
どこにそう書いてあるんだ。都合よく解釈するプロ市民だな。
2038年問題って何かコメントしてくれ。
0634nobodyさん05/02/02 00:21:44ID:???
>>625
とりあえず、text/htmlでプレーンテキスト送ると「リクエストされたページは表示できません。」って言われる。

おれはそういう時telnet。
0635nobodyさん05/02/02 00:36:53ID:???
やっとわかった ありがとう

> year は2桁または4桁の値を指定可能で、
> 0-69の間の値は2000-2069に、70-99は1970-1999にマップされます。
> (今日最も一般的なtime_tが32ビットの符号付き整数であるシステムで、
> yearとして有効な範囲は1901から2038の間です)

 自分は4桁入力してたから関係ないと思ってたが,よく考えたらintになった時点で
1901-2038なのか1970-2069なのかは判別つかんってことだな.
 でOS側のシステムコールのmktime()がどっちに対応してるかによって動作に違いが出てくると
0636nobodyさん05/02/06 15:04:04ID:???
自分で定義した関数を、後から未定義にする方法ってないですか?

function nemui()
{
  return "kyou ha mou kaerimasu.";
}
undef nemui; // こんな感じで未定義にする命令が欲しい。
nemui();    // ここで未定義ですというエラーが発生してほしい。
063763605/02/06 15:05:00ID:???
PHPのバージョンは4.3.6以降であればよいのですが。
ageわすれたのでage.
0638nobodyさん05/02/06 15:46:14ID:???
レッツPHPさんの PHP-I-BOARD の不具合?仕様を解決したくお知恵拝借

PHP-I-BOARDの過去ログの表示なんですが、
親記事があってレス1レス2とあったばあい、その記事が過去ログに移動すると
表示がレス2→レス1→親記事の順に表示されてしまいます。
これを通常通り、親記事→レス1→レス2としたいのです。

レッツPHPさんのほうでおききしたところ

確認しましたが確かに現在のログは順に出るのに過去ログは逆向きで出力されて見にくい気がしますね。
ソースを眺めただけなので未検証で無責任で発言をすれば
ibbs.phpの819行目のforステートメントの条件を変更して逆向きに動作するように変更するか、
ステートメント終了後に$arg['past']内の配列を全てひっくり返すような処理を付け加えたら
いいんじゃないでしょうか

と回答いただいたんですが力不足でこの「ひっくり返すような処理」というのがどういうもので
どこにつければいいのかがわかりません。

無知な自分が公式のほうで何度もやりとりするのはかえって迷惑かかりそうなのでこちらで
アドバイスか検索するとっかかりを頂きたいです

マルチになるようだったらすいません(公式では回答いただいて終わってるとおもったので)
0639nobodyさん05/02/06 16:04:35ID:???
>>638を読む。- 10秒
chm版のマニュアルのショートカットをクリックしつつ「ひっくり返す」は「reverse」だなと考える - 1秒
chmの検索タブをクリック - 1秒
「reverse」と打ち込み検索 - 2秒
結果リストを見渡しarray_reverseを見つける - 1秒
煽り文句を考えながらレスを書く - 60秒
0640nobodyさん05/02/06 16:12:06ID:???
>>639
gj
0641nobodyさん05/02/06 17:50:33ID:ytGnrXBl
特定の変数が、ただの変数か、配列か、連想配列か確認する方法って
ありますか?
フォームから受け取った変数が連想配列(チェックボックス)だと分かる
方法ありましたらご伝授下さい。
宜しくお願い致します。
0642nobodyさん05/02/06 17:55:00ID:???
<html><body>
<?php
 $file=array();
 if($fp=@fopen("./log.dat","r")){
  flock($fp,1);
  while($buf=fgets($fp)){
   array_push($file, $buf);
  }
  fclose($fp);
 }
 $counter=trim($file[count($file)-1]);
 printf("we have ".$counter." visitors\r\n");
 array_push($file,($counter+1)."\r\n");
 if($fp = fopen("./log.dat", "w")){
  flock($fp, 2);
  foreach($file as $f){
   fprintf($fp, $f);
  }
 fclose($fp);
}
?>
</body></html>
のような簡単なPHPプログラムを作ったのですが、
どういうわけか1アクセスごとにカウントが2増えます。
教本殆どそのままなのに、なんでこんな事が起きるのかチンプンカンプンです。
原因と解決法を教えて頂けないでしょうか
0643nobodyさん05/02/06 18:38:57ID:???
|-`).。oO(\r\nが怪しいな・・と思うけど検証が面倒なので他の人に任せよう・・・・・・・)
0644nobodyさん05/02/06 20:04:09ID:???
>>642
コピペして全角スペース取り除いて実行したけど
ちゃんと1ずつ増えました。
>>641
is_arrayとかis_scalerとかあるけどフォームから配列で送れば確認するまでも無く配列に決まってますが。
0645nobodyさん05/02/06 20:07:02ID:???
scalerじゃなくてscalarでした。
ちなみにPHPには配列と連想配列の区別はありません。
普通の配列も数字をキーにした連想配列です。
0646nobodyさん05/02/06 22:13:27ID:???
データベースへの連続書き込みが上手くいかないことがあるので、
一つ処理が終わったら、1秒ほど待機して次の書き込みを行なうようにしたいのですが、
どういった関数を使えば宜しいでしょうか?
0647nobodyさん05/02/06 22:22:14ID:???
そのまんまsleep関数つーのがあるけど、原因を究明した方がいいかと。
0648nobodyさん05/02/07 00:34:24ID:???
よく掲示板で見かける
書き込みにアドレス(http://...)が書き込まれたら、
その部分だけ自動でリンク張るのはどうするとよいか?
0649nobodyさん05/02/07 00:35:16ID:???
>>648
書き込みにアドレス(http://...)を見つけたらアンカータグで囲うとよいかと
0650nobodyさん05/02/07 00:39:28ID:WG7KP6M+
モジュール関数のfile()でURLを開こうとすると自分のサーバーの/hmoeより上に行けません。
ini_set関数でスクリプトから設定して回避できる問題でしたら、どう設定したら良いか教えてください。
0651nobodyさん05/02/07 00:51:52ID:???
>>648
俺のソースをやろう
auto_linkの引数$valにアドレスを入れればリンク付きで返ってくる

//-------------------------------------------------
// オートリンクの作成
//-------------------------------------------------
function auto_link($val){
//オートリンク
if (config("auto_link"))
return preg_replace("/(https?|ftp)(:.*)([a-z]|[A-Z]|[0-9]|\/)/i","<a href=\"\\1\\2\\3\" target=\"_blank\">\\1\\2\\3</a>", $val);
else
return $val;
}
0652nobodyさん05/02/07 00:54:34ID:???
おっと、余計なものまで書いてしまった。
こっちを使ってくれ

//-------------------------------------------------
// オートリンクの作成
//-------------------------------------------------
function auto_link($val){
return preg_replace("/(https?|ftp)(:.*)([a-z]|[A-Z]|[0-9]|\/)/i","<a href=\"\\1\\2\\3\" target=\"_blank\">\\1\\2\\3</a>", $val);
}
0653nobodyさん05/02/07 01:01:06ID:???
>>650
詳しく
065464805/02/07 01:04:27ID:???
>>651
感謝、感謝、どもです。
0655nobodyさん05/02/07 01:06:15ID:WG7KP6M+
>>653
レスありがとうございます。

Warning: php_network_getaddresses: getaddrinfo failed: Name or service not known in /homeからのphpスクリプトのパス on line 4
Warning: file("http://www.*/index.html") - Bad file descriptor in /homeからのphpスクリプトのパス on line 4

こんなエラーが出ます。
0656nobodyさん05/02/07 01:17:55ID:???
>>655
http://ns1.php.gr.jp/pipermail/php-users/2004-June/022456.html
エラーメッセージでググレば出てくるだろ( ゚Д゚)ゴルァ!!
0657nobodyさん05/02/07 01:19:39ID:???
>>655
DNS引けてないんじゃない?
0658nobodyさん05/02/07 01:22:33ID:WG7KP6M+
>>656,>>657
ゴメンナサイ
DNSが引けてないらしいです
IPアドレス指定で試してみます
0659nobodyさん05/02/07 01:26:24ID:WG7KP6M+
皆さんありがとうございました。
うまく行きました。
0660nobodyさん05/02/07 02:08:59ID:???
おまいら、外部でホスティング鯖のDBはどのくらいの
頻度でローカルにバックアップしてまつか?
0661nobodyさん05/02/07 10:01:54ID:???
>>660
その日の気分で
0662nobodyさん05/02/07 11:02:51ID:???
include か requireで、

Warning: Unknown(パス): failed to open stream: No such file or directory in Unknown on line 0
Warning: (null)(): Failed opening 'パス' for inclusion (include_path='インクルードパス') in Unknown on line 0

というエラーを出さずに、
'インクルードファイルがよめねぇYO!'
見たいに自分でカスタムしたエラーを表示する方法ってありますか?

他の命令なら
@meirei() die('エラーだYO!');
って die命令でできるけど includeではできなかったのできいてみますた。
(@マークを先頭に付ける事によってその命令でのエラーを表示しない)

includeでエラーになったときにちょっとかっこ悪いので修正したいのです。

参考になるURLだけでも結構ですので教えてください。
0663nobodyさん05/02/07 11:09:02ID:???
>>662
includeの場合はif (!@include(filename)) die('file not found.');
としないとダメみたいよ
066466205/02/07 11:15:00ID:???
>>663

やってみたらエラーすら表示されなくなった orz........

file not found. と出ないYO!
0665nobodyさん05/02/07 11:16:57ID:???
今試したができたぞ
066666205/02/07 11:20:00ID:???
if( !@require('なんたら.php')) die('file not found.');

if (!@include('なんたら.php')) die('file not found.');

上でやってたのでできなかったみたいです。

includeでやったらできました。


requireではできないんでしょうかね?
066766205/02/07 11:31:05ID:???
事故解決・・・・・・。
663氏 サンクス

if( !@require('なんたら.php')) die('file not found.');

if (!@include('なんたら.php')) die('file not found.');

require命令の時点で処理終了してるからdieまでこないのね orz.........

というか、include に dieつけてる時点でrequireと同じ動作(その後実行しない)なのね・・・・。


いまさら気づいた・・・・・・。 orz........
0668nobodyさん05/02/07 12:20:54ID:???
>>667
includeは読み込みに失敗しても処理を続けるから気をつけた方が良いよ
0669nobodyさん05/02/07 14:08:23ID:FLQt/DDH
die('内容')

と

print '内容';
exit;

と同じ事にならない???





0670nobodyさん05/02/07 14:14:31ID:???
>>669
マニュアルをちゃんと読んでいれば、そういう恥ずかしい事を言わなくて済みますよ。
die なり exit なりの説明を参照。
0671nobodyさん05/02/07 14:25:02ID:Um6cfrSt
XHTML中には
<a href="URN:ISBN:**-****-****-*">hoge</a>
として,実際に表示する時には
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/***********>;hoge</a>
と置き換えたいんですが.
Javascriptで置き換えるのは見たことあるんですが,
それをPHPに書き換えることができなかったり・・・orz
0672nobodyさん05/02/07 14:30:36ID:???
       ____
|.._  |   //. ̄ ̄ ̄,`
| ' l |   || `゙` ゙``   
| : l=.|   ||
|...」 |   || / ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|_ |   |/. ( ・∀・)<     >>671 頑張れはできますよ!
l文|. |  /   ( 建前 )   \_______________
| ̄ | ./   人 ヽノ     
|   |/   し(__)  
|  /    |    ヽ      
|. /   .  |       ヽ        
.         |       ヽ   _    
       ( ̄ ̄ ̄)本音ヽ ( \  
       ヽ  ̄ ̄  ./ ヽ ヽ,>  )  
        ミ'     |∩|  ` /   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         |    (~●~)  彡   <  自分でやる気あんの?
         ヽ  ○   ○ |       \___________
           |\      ノ     
           ∪ ̄ ̄ ̄∪
0673軟式PHP05/02/07 15:24:13ID:???
>>671
<?php

$strValue = '<a href="URN:ISBN:12-3456-7890-1">hoge</a>';
$strUrl = 'http://www.amazon.co.jp/exec/obidos/ASIN/';
$strPattern = "/URN:ISBN:([0-9]{2})-([0-9]{4})-([0-9]{4})-([0-9])/i";
$strValue2 = preg_replace( $strPattern, $strUrl."$1$2$3$4",$strValue);

print $strValue2;

?>
067467105/02/07 16:02:43ID:???
>>672,>>673さんどうも.

<?php
$urn = '/href="URN:ISBN:(\d)-?(\d+)-?(\d+)-?([x\d])"/i';
$amzn = 'href="http://www.amazon.co.jp/exec/obidos/ASIN/$1$2$3$4"';
$contents = preg_replace($urn, $amzn, file_get_contents("http://foo/book.html"));
echo "$contents";
?>

結局こんな感じでやることにしました.
本当はbook.htmlを読み込むのではなく,book.html中に追記するだけで
済むようにしたかったんですが….
それとDOM使ってみたりもしたんですが,DOMオブジェクトに展開するときの
文字コードかなんかでうまくいかずに挫折しました.
0675nobodyさん05/02/07 16:12:52ID:???
>>674
book.html をphpとしてパースしていると仮定して、
output bufferingを使えば追記のみで行けるんじゃない?

auto_prependが設定できれば追記の必要もないね。
0676nobodyさん05/02/07 17:44:22ID:???
>>636
ないよ。どうしてもというならグローバル配列に匿名関数を突っ込む形になると思う。
あるいはフラグ変数で代替するか。
けど、関数を未定義にしたい場合ってどんなん? 設計のレベルで解決したほうがいい気がするよ。

コードレベルだと、たとえば未定義判定したいなら !function_exists() を使をばいいし、
再宣言を防止したいなら ifブロック内で関数宣言する、require_onceを使う、等々の手段が。

So-netが規制されてたから遅レスで悪いけど。
0677nobodyさん05/02/08 13:56:04ID:???
http://shu.sub.jp/xoops/modules/tinycontent/rewrite/tc_5.html

ここのPHPの掲示板作った人おる?
第1回目の投稿が受け付けてくれない他(yylog.phpが開けね〜とか言われる)
各投稿にナンバーが振られないからその後の修正や削除が
全くできない出来損ない掲示板だぞ。
フリーで作ってくれるのはありがたいがオリジナルのKENT-WEBの掲示板の
名を貶めるような劣化コピーはやめてくれ。
0678nobodyさん05/02/08 13:57:42ID:???
>>677

552 名前:名無しさん@お腹いっぱい。[sage] 投稿日:05/02/07(月) 19:52:37
ttp://shu.sub.jp/xoops/modules/tinycontent/rewrite/tc_5.html
ここのYY-PHPの掲示板を xreaで設置して動いてる方いますか?

なぜか "Open Error: ./yylog.php" エラーがでてしまう
パーミッションも606で設定して間違いないのに・・・


いい加減作者に直でメールした方がいいんじゃないか?
0679nobodyさん05/02/08 14:01:27ID:???
>>677-678邪魔
0680nobodyさん05/02/08 14:14:59ID:???
>>679
作者乙
0681nobodyさん05/02/08 14:20:56ID:???
>オリジナルのKENT-WEBの掲示板の名を貶めるような劣化コピーはやめてくれ。

KENT-WEBにあるWebプログラムってそんなに凄いものか?
ちょっとでも、CGIの知識があれば、簡単に自作できるような物ばっかりのような気がするんだが・・・
0682nobodyさん05/02/08 14:22:07ID:???
>>681
オリジナルの優劣を議論してる訳じゃないだろ
0683nobodyさん05/02/08 14:30:19ID:???
>>682
あぁ…わるいわるい…
あたかも、KENT-WEBのCGIは凄い!って言ってるように見えたので
0684軟式PHP05/02/08 14:33:31ID:???
どっちにしろ質問スレとは関係ないから他スレいっとけ。
0685nobodyさん05/02/08 14:37:54ID:???
>>683
> あたかも、KENT-WEBのCGIは凄い!って言ってるように見えたので

まぁシンプルかつ機能はまとまっているとは思うがな
0686nobodyさん05/02/08 14:40:39ID:???
ソースは見るなよ・・・
0687nobodyさん05/02/08 14:42:18ID:???
>>686
    ,-ー─‐‐-、
   ,! ||     |
   !‐-------‐
  .|:::i ./ ̄ ̄ヽi
  ,|:::i | (,,゚д゚)||  < ・・・
  |::::(ノ 中濃 ||)
  |::::i |..ソ ー ス||
  \i `-----'/
     ̄U"U ̄
0688nobodyさん05/02/08 14:45:02ID:???
ソースも仕様もトンデモの嵐じゃん

KENT WEB 総合スレ Part2
http://pc5.2ch.net/test/read.cgi/php/1078991985/
0689nobodyさん05/02/08 14:55:51ID:???
global使いまくりで吐き気がしますね^^
0690nobodyさん05/02/08 15:02:05ID:???
>>688
そこは精神科病棟隔離施設だ
■ このスレッドは過去ログ倉庫に格納されています