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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/08/25(土) 22:11:08ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0071nobodyさん2007/08/27(月) 17:58:53ID:XzEqAL1W
yum install phpとやってphp5.1.6をインストールし、
その後yum install php-mysqlとやったのですが、
phpinfo()すると--without-mysqlとなっています。
これを有効にするにはどうしたらいいでしょうか?
0072nobodyさん2007/08/27(月) 18:01:11ID:???
>>70
>例えばsitemap.xmlのように
>って知るかよ、んなxmlファイルw

sitemap.xmlのフォーマットを知らないで威張っている奴がいるなw
メジャーな検索エンジンが対応しているのに。

馬鹿丸出し。
0073nobodyさん2007/08/27(月) 18:03:18ID:???
>>71
remove
入れなおす。

>>72
使わん奴はしらんだろ
お前は全知全能の神かw
0074nobodyさん2007/08/27(月) 18:06:24ID:???
>>73
>使わん奴はしらんだろ
>お前は全知全能の神かw
使う使わないは別に、だいぶ前に話題になった話だが。
0075nobodyさん2007/08/27(月) 18:10:31ID:???
>>72
ほう、それはどこの標準化団体が定めた仕様なんだ?
それは"sitemap.xml"という一般名詞なのか?
俺が適当に書いたsitemap.xmlはsitemap.xmlではないのか?
特定の形式で記述されたxmlファイルを検索エンジンが「対応」してるだけだろ。
つまりはそういうこと。
馬鹿丸出しはお前だ。
0076nobodyさん2007/08/27(月) 18:11:29ID:???
日記のスクリプトを作りたいとおもっているのですが、
ログファイルは、今のところひとつのファイルにまとめて、
file_get_contentsで一気に読み込んで分割して表示
という方法しか思い浮かびません。
この方法ではログが多くなったときに重くなりそうなので、
何かほかにログ保存&読み込み方法があれば教えていただけませんか?
0077nobodyさん2007/08/27(月) 18:13:32ID:???
>>76
ファイル形式にこだわるなら月別に纏めるという手もあるよ
火別にまでするのはどうかと思うけどindexを作れば問題ないかな
0078nobodyさん2007/08/27(月) 18:14:39ID:???
>>75
お前は必死すぎwww
そういう屁理屈で自分の無知を誤魔化すやつは実務では使いものにならない典型。
0079nobodyさん2007/08/27(月) 18:15:22ID:???
>>77
月別というやり方がありましたか…
ありがとうございます。それでいこうと思います。
0080nobodyさん2007/08/27(月) 18:30:52ID:C5rbwAW+
俺もsitemap.xmlとか知らない
自作?自作ならニュース配信しか作ったことないや
0081nobodyさん2007/08/27(月) 18:45:33ID:???
sitemap.xmlなんて初耳だったので調べてみた

https://www.google.com/webmasters/tools/docs/ja/protocol.html
これのことだよな?テケテケテッテッテー知識が1増えた

>>78
釣れますか?
0082nobodyさん2007/08/27(月) 18:52:27ID:???
Cakeスレで以下のようなレスを見たのですが

>> secureな方のcookieにhttpのsession id情報持たせておけば基本的に終わりじゃん
>違うぞ。セキュリティの勉強をしたほうがいい。

>Amazonとかみればわかるように、商品をカートに入れるまではhttp
>そのあと会計時はhttps。つまり一連の処理がhttpsだけで完結する処理ではない。

>セキュアな方のクッキーにセッションIDを持たせた場合、
>それをhttpで送ると盗聴されセッションハイジャックできてしまう。

>だからhttp用ととhttps用と二つのセッションIDを使用することになる。
>そしてサーバー内でその二つを紐付けしておかなければならない。
>もちろんhttp用セッションIDは盗聴される可能性があるから
>それを奪われても、その情報だけからhttps用セッションIDを取得できてはいけない

httpとhttpsを行き来する場合、それぞれ2つのセッションIDを作って、
裏で紐付けするのが一般的なのでしょうか?
0083822007/08/27(月) 18:56:39ID:???
追記。
さらに、HTTPSからHTTPへ行きながらセッションを継続させる場合は、
セッションIDをPOSTで送らないと意味がないですよね?
0084nobodyさん2007/08/27(月) 19:01:18ID:???
>>82
はじめからhttps使えば良いのでは・・・
でなければ鯖にhttpセッションID名の別ファイルを作っておいてhttpsセッションIDと関連付けとくとか
008571 2007/08/27(月) 19:06:01ID:XzEqAL1W
removeしてからもう一度installしましたがダメでした。
なにかヒントはないでしょうか?
php.iniの設定でしょうか?
0086822007/08/27(月) 19:09:02ID:???
>>84
そういわれてみればそうですね。
全てをhttpsにした場合に起こる弊害ってあるんですかね?
0087nobodyさん2007/08/27(月) 19:16:10ID:???
>>85
yum remove php php-mysql
yum install php php-mysql
同時または先にmysqlを入れてないとダメですよ?
--without-mysqlはmakeの段階なのでiniを弄ってどうにかなるものではありません。
今、手元に犬がないから確かめれない。他に何かあったっけ?>ALL

>>86
負荷がかかるくらい
0088nobodyさん2007/08/27(月) 19:25:58ID:Dd+D38dK
>>80
例えばなのでsitemap.xmlじゃなくてもいいのです。
<a href="http://example.com";>このぶぶん1</a>
<a href="http://example.com";>このぶぶん2</a>
<a href="http://example.com";>このぶぶん3</a>
などで、「このぶぶん1〜2」だけを抜き出したいのですが。
0089nobodyさん2007/08/27(月) 19:30:59ID:UW8c1qdS
質問です。
SQLのLIMITみたいなものをファイル操作で行いたく
指定した行から何行取得する関数を作りました。

function read($file, $start, $end){
  $fp = fopen($file, "r");
  flock($fp, LOCK_EX);
  $pos = $l = 0;
  $line = array();
  while(count($line) != $end){
    $c = "";
    $pos = ftell($fp);
    while($c != "\n"){
      $c = fgetc($fp);
    }
    if($l >= $start){
      fseek($fp, $pos, SEEK_SET);
      $line[] = trim(fgets($fp));
    }
    $l++;
  }
  return $line;
}

正常に動作はするのですが、1バイトずつデータを読み込んで行く為
ファイルサイズが膨大になれば遅くならないかな?と思っています。
何か他にいい方法があればご教授お願い致します。
0090nobodyさん2007/08/27(月) 19:36:18ID:???
>>88
>>69で回答されておりますがな
0091nobodyさん2007/08/27(月) 19:36:42ID:???
>>89
ないのでは?
しいて言うならfile関数で全行を一度配列にほりこんで
配列番号で該当区間を取得するとか・・・
0092nobodyさん2007/08/27(月) 19:38:36ID:UW8c1qdS
>>91
file関数でやるのが手っ取り早いのですが、ファイルサイズがでかすぎると
メモリ関係のエラーが予想できますよね。
ですので、その方法は排除しました。
0093nobodyさん2007/08/27(月) 19:41:48ID:???
>>92
メモリエラーって何万行読み込ませるつもりだよ…
0094nobodyさん2007/08/27(月) 19:45:20ID:???
>>92
行単位で読む関数があるけど結局後ろの方を読もうとすれば遅くなります。
別プロセスを嫌うならsqliteなどを検討してみるのも悪くないかもね。
0095nobodyさん2007/08/27(月) 19:45:30ID:UW8c1qdS
>>93
今回、使用する上ではいいとこファイルは10M程度だと思います。
ファイルを操作するクラスを作成しているので、あくまでこれから先を考えての話です。
0096nobodyさん2007/08/27(月) 19:52:44ID:X39h0Mb6
$mlto = "xxxxxxxxx@nifty.com";
$mlfr = "From: " . mb_encode_mimeheader("あああ<test@hoge.com>");
mb_send_mail($mlto,$mlsb,$mlms,$mlfr);

上記のようなFromに全角文字を含み、且つniftyドメイン宛に
メール送信を行うと、受信者側では、Fromヘッダが

あああ<test@hoge.com>@nifty.com



あああ<test@hoge.com>@Return-Pathの@以下

といった形で送信されてしまいます。

環境1:
ロリポのレンタルサーバ
OS:Linux
Server:Apache
PHP:4.4.6

環境2:
自前のサーバ
OS:Win2003Server
Server:IIS
PHP:5.2.3

上記2つの環境で試しても同じ結果になりました。

niftyドメイン以外への送信は問題ないのですが、
何が問題として考えられますでしょうか。
ちなみに、niftyに問い合わせても回答はもらえませんでした。
0097nobodyさん2007/08/27(月) 19:56:29ID:UW8c1qdS
>>95
元々、PHP5+MySQLで作成していた問い合わせシステムなんですが
クライアントの都合により、サーバーの環境が変えられないらしく
PHP4+ファイル操作に直してくれと、要望があったんですよね…

SQLiteは自分も検討したのですが、クライアントの環境の詳細が分からないので
やめたほうが無難かなっと考えました。

>行単位で読む関数があるけど結局後ろの方を読もうとすれば遅くなります。
やはりこれはしょうがないと割り切り素直に作成した関数で乗り切ろうと思います。
0098nobodyさん2007/08/27(月) 19:57:08ID:UW8c1qdS
↑アンカーミスです。

>>95

>>94
0099nobodyさん2007/08/27(月) 19:59:45ID:???
>>97
表示の仕方によるけど削除等で空ブロックを作る事を前提とするなら
ID等から複数のファイルに分割して読み込み速度を向上させる事は
可能ですね。
0100nobodyさん2007/08/27(月) 20:03:53ID:???
>>95
そんな先の事考えるなら先にファイルの分割や
DBの利用を検討するような方向のほうがいいんじゃないの?
0101nobodyさん2007/08/27(月) 20:22:24ID:???
>>95
ファイルが極端にでかくなったら、PHPでいくら必死に頑張っても
素直にシェルでheadとtailを繋いだ方が速かったりするよ。
いっそCで書いてPECL拡張で使えるようなもの作んなきゃ。
0102nobodyさん2007/08/27(月) 21:21:19ID:???
78ですが、日記スクリプトの制作でもうひとつ質問が・・・
月単位でログを保存しているのですが、
ログ月の移動の為に簡単なカレンダーを表示して、その月のログが保存されている所だけをリンクしたいと思っています。
2007 01 02 03 04 05 06 07 08 09 10 11 12
上のようにしたいのですが、
「一つ一つログの存在をfile_existsで確認して、trueの場合だけリンクを出力する」以外に方法はないでしょうか?
file_existsの負荷が心配で・・・どなたか教えてください。
0103nobodyさん2007/08/27(月) 21:23:02ID:???
「作ったときにどっかに作ったことを記録しとく」
0104nobodyさん2007/08/27(月) 21:24:03ID:???
>>103
何度もすみません。
ありがとうございます。
0105nobodyさん2007/08/28(火) 00:04:08ID:???
長い文字列を短くする関数ってありませんでしたっけ?
どこかで見た覚えがあるのですが、忘れてしまって…
01061052007/08/28(火) 00:04:31ID:ed8362dv
すいません、ID出し忘れです。
0107nobodyさん2007/08/28(火) 00:19:42ID:???
短くするっていうか部分をカットするっていう感じでいいならsubstr
0108nobodyさん2007/08/28(火) 02:26:09ID:???
ばかじゃねえのsubstrじゃええよバカだね。
ほんとにレベルひくいな
0109nobodyさん2007/08/28(火) 02:32:07ID:VJugMAtZ
嫌な奴>>108
0110nobodyさん2007/08/28(火) 02:34:27ID:???
>>108
煽るだけしかできないカスは黙ってろ
ていうかそうおもうなら自分で答え言えばいいだろ
0111nobodyさん2007/08/28(火) 02:37:35ID:???
まぁまぁそう熱くならずに、自分のおならの臭いを嗅いでエクスタシー感じようよ。
0112nobodyさん2007/08/28(火) 02:45:05ID:???
少ないヒントで答えを出そうとする>>107のエスパーぶりは評価しないとな
0113nobodyさん2007/08/28(火) 03:00:00ID:???
>>110が答えてあげればそれで終わる。
0114nobodyさん2007/08/28(火) 03:03:52ID:???
>>113
時間ぴったり
0115nobodyさん2007/08/28(火) 08:29:23ID:oYOChStQ
おかしな事になっているので
お暇な方いたらちょっとお付き合いください。

OOPの勉強していて、あるプログラムを作ってみたのですが
エラー表示が出ずに
http://www.gomo.jp/exp/ref_logger.php
「表示が出きません。サーバーが見つからないか、DNS エラーです。」という画面
(たぶん他の方もそう見えると思うのですが、うちではこのページはそういう画面です。)になります。

このプログラムがなぜ動かないかはさておき、なぜエラーじゃなくこういう画面になるのでしょうか?
以前にも別のサーバーで同じような状態になり、デバッグに非常に手間取ったことがあります。
その時はたしか、存在しないファイルをrequireしていたのか、存在していないクラスをnewしてたとか、そんな感じの間違いだった思います。

くどいようですけど、いちおう確認のため・・・
私が疑問に思っているのは、このソースがなぜ動かないかではなく、なぜエラー表示が出ないかです。

ちょっと恥ずかしいけどソースさらします。
http://www.gomo.jp/exp/ref_logger.txt

お願いいたします。
0116nobodyさん2007/08/28(火) 08:53:43ID:???
>>115
うちの環境でも動かないから大丈夫w
ループして落ちているようにしか見えませんよ
0117nobodyさん2007/08/28(火) 09:24:43ID:???
>>115
エラーメッセージが出るような間違いをしてれば画面も出るだろうけど、
何も表示せずに終わってしまうようなバグも多いよ。
バグってのは必ずしもエラーとは限らない。
(ロジックミスとかは、エラーではなく変な動きのまま正常終了してしまう)
その場合、出力が空っぽのためブラウザが認識できず
相手先のサーバーが繋がってないようだ、と誤認識される。

むしろ
> その時はたしか、存在しないファイルをrequireしていたのか、存在していないクラスをnewしてたとか、
このケースでメッセージが出てこないってのが不思議。
php.iniでエラー出力を「なし」に設定してたんじゃあるまいな?
0118nobodyさん2007/08/28(火) 11:40:28ID:/qxtkLLI
変数$nameに

AAA_○○○
AAA_○○○_BBB
AAA_○○○_BBB_CCC
AAA_△△△
AAA_△△△_BBB
AAA_△△△_BBB_CCC

のような文字列が格納されている時、○○○や△△△の部分のみを取り出すにはどのような記述をすれば良いですか?
preg_match('/AAA_(\w+)/', $name, $matches);
ここまでは考えたのですが、その先が思いつきません。
宜しくお願いします。
0119nobodyさん2007/08/28(火) 11:44:43ID:???
$a = explode('_', $name);
echo $a[1];
0120nobodyさん2007/08/28(火) 11:46:09ID:???
AAA_(\w+).*
0121nobodyさん2007/08/28(火) 12:00:05ID:/qxtkLLI
お二方、ご回答ありがとうございます。
わざわざ正規表現を使わなくても良かったんですね^^;
01221152007/08/28(火) 12:20:51ID:oYOChStQ
>>116
>>117
レスありがとうございます。
エラーは全部出るようにしています。

ループして、PHPが何もヘッダーを送らずダウンしたってことでしょうか?
不正終了したときもエラーを出すように設定できないものでしょうか?
何かしらヒント出してくれると、デバッグも楽なのですが。

> その時はたしか、存在しないファイルをrequireしていたのか、存在していないクラスをnewしてたとか、
このケースは、勘違いでしょう。すいません。
いろいろな部分をコメントアウトして、やっと動いたのしか覚えてません。
何かをnewしてるとこあたりだったので勘違いしたんでしょうかね。
その時も、ループしてひたすらインスタンスつくりまくってたのかも。

今、マニュアル見てみたんですけど、staticなメンバーってstaticなメソッドからしかアクセス出来ないみたいですね
そこでエラー表示出してくれても良いような気もするけど
0123nobodyさん2007/08/28(火) 12:44:12ID:???
質問があります
本当にくだらないのですが、簡単なスクリプト(掲示板やカウンター)などを作られるときに、関数を沢山作って管理するほうですか?
参考にしたいので、よろしくお願いします。
0124nobodyさん2007/08/28(火) 12:46:04ID:???
ファイル入出力やフィルタリングは
外部ファイルにクラスを作って使い回していますが何か?
0125nobodyさん2007/08/28(火) 13:08:32ID:???
>>123
作っといたほうが楽
0126nobodyさん2007/08/28(火) 13:09:11ID:???
>>124
質問に質問をぶつけておまえ頭悪いだろ
0127nobodyさん2007/08/28(火) 13:13:10ID:???
まぁ、確かに関数より記録リソースの操作モジュールでも作っといたほうが色々楽だろうけどねぇ。
0128962007/08/28(火) 13:53:56ID:y77U9tuf
自己解決しました。

$mlfr = "From: " . mb_encode_mimeheader("あああ<test@hoge.com>");



$mlfr = "From: " . mb_encode_mimeheader("あああ") . "<test@hoge.com>";

とすることで正しくFromヘッダが送信されました。
niftyのメールサーバは何か特殊なんですかね・・・。
0129nobodyさん2007/08/28(火) 13:56:39ID:Vlzye/6Z
$data = array(
 array('id'=>1,'cnt'=>5,'title'=>'hoge'),
 array('id'=>2,'cnt'=>4,'title'=>'foo'),
 array('id'=>3,'cnt'=>0,'title'=>'bar')
);

こんな配列があったとしてcntの順にソートしたいのですが可能でしょうか?
どんな方法で出来ますでしょうか?
0130nobodyさん2007/08/28(火) 13:59:22ID:YkG/SsxW
>>4の簡易FAQの5ですが
print <<< DOC
<form method="POST" action="$_SERVER['SCRIPT_NAME']">
DOC;
のように他の文字列が隣接してないのにエラーが出てしまうのは、
どういう解釈がされるからなのでしょうか?

あと変数を波括弧で囲む時
{$_SERVER['SCRIPT_NAME']}
${_SERVER['SCRIPT_NAME']}
の2種類の書き方がありますがこの違いってなんなのでしょう?
0131nobodyさん2007/08/28(火) 14:24:19ID:GM5VT/dP
$format="%-s %-35s %-60s %-s";
printf($format, $a, $b, $c, $d);

1行目にある「%-s」や「%-35s」などにあるマイナス文字はどのような意味
なのでしょうか。
0132nobodyさん2007/08/28(火) 14:32:21ID:???
オプションの符号指定子。これは、 数値で符号 (- あるいは +) を使用するよう指定します。 デフォルトでは、数値が負の場合の - 符号のみが使用されます。 この指定子により、正の数にも強制的に + 符号をつけることができます。 これは PHP 4.3.0 で追加されました。
0133nobodyさん2007/08/28(火) 14:33:14ID:???
マニュアル読まないクズは市ね
0134nobodyさん2007/08/28(火) 14:35:54ID:???
>>129
cntでソート用の配列作ってarray_multisort( )
>>131
文字列の場合は-は左詰で表示
0135nobodyさん2007/08/28(火) 18:30:13ID:???
$sumの値がokでなければループ

while ($sum != "ok"){
..........
}

これでできないんですがどこがおかしいのでしょうか
01361352007/08/28(火) 18:32:18ID:???
すみません、>>1読むの忘れてきたのと、
マニュアルに載っていたのを見ていませんでした
出直してきますね
0137nobodyさん2007/08/28(火) 18:34:42ID:wOTpbT+K
フォームに\だけを書いてポストして
$_REQUESTを表示させると\\になります
この現象は何ですか
0138nobodyさん2007/08/28(火) 18:36:13ID:???
>>137
エスケープ
0139nobodyさん2007/08/28(火) 18:38:35ID:wOTpbT+K
>>138
これを中止させるにはどうすればいいですか?
0140nobodyさん2007/08/28(火) 18:40:05ID:???
>>139
エスケープを解除する関数
「PHP エスケープ」出てくるんじゃね?
0141nobodyさん2007/08/28(火) 18:45:15ID:???
>>139
PHP.INIのマジッククォートを停止させる
0142nobodyさん2007/08/28(火) 18:49:44ID:???
>>140-141
ありがとうございました
0143nobodyさん2007/08/28(火) 18:49:48ID:???
function en_stop($str)
{
$tmp=ereg_replace("[\][\]","\x5c",$str);
$tmp=ereg_replace("[\][']","'",$tmp);
$tmp=ereg_replace("[\][,]",",",$tmp);

return $tmp;
}
0144nobodyさん2007/08/28(火) 19:43:38ID:???
>>合ってるとオモ
動かないか?
0145nobodyさん2007/08/28(火) 19:44:29ID:???
>>135
0146nobodyさん2007/08/28(火) 19:44:51ID:???
内部コードutf8、pcサイトutf8、携帯サイトsjis
で運用しようと思っています。
この運用だと、ポストされるエンコードがsjisとutf8になりますよね
sjisだった場合は当然utf8に変換しないといけないのですが、
mb_detect_encodingは
携帯の絵文字が混ざった文章もちゃんとsjisと判定できるのでしょうか?
あるいはもっといい方法があれば教えて下さい
0147nobodyさん2007/08/28(火) 19:50:54ID:???
>>146
できる
0148nobodyさん2007/08/28(火) 21:27:05ID:???
まぁまぁ、そう熱くならずに自分のおならの臭いを嗅いでエクスタシー感じようよ
0149nobodyさん2007/08/29(水) 02:34:35ID:???
>>147
そうなんですか
絵文字はsjisの範囲内で実現してるんですね
ありがとうございました
0150nobodyさん2007/08/29(水) 06:42:45ID:uYM+HrXL
$test = "テスト";

$template = <<<_TMP_
テンプレートです。
タイトル:{test}
おしまい
_TMP_;

preg_replace('/{(.*)}/', '$$1', $template);

{hogehoge}を$hogehogeに格納されている値に置き換えたいのですが
何か良い方法はありませんでしょうか?

このやり方では、「$test」と出力されてしまいます
0151nobodyさん2007/08/29(水) 08:42:05ID:???
>>150
<?php
$test="テスト";
?>
テンプレートです。
タイトル:<?=$test;?>
おしまい
0152nobodyさん2007/08/29(水) 09:19:27ID:uYM+HrXL
>>151
早速のご回答ありがとうございます

「テンプレートです。
タイトル:{test}
おしまい 」
これは外部ファイルとして保存しておいて
呼び出してから文字列の置き換えを行いたいのです
0153nobodyさん2007/08/29(水) 09:25:27ID:bOc70w1/
拡張子phpにしてincludeでおk
0154nobodyさん2007/08/29(水) 09:54:17ID:uYM+HrXL
何度もすみません
詳しく言うと、アップーロードにて一般の方にテンプレをUPしてもらい
そのテンプレを元に作成したいのです
なので、拡張子はtxtがメインになると思います
0155nobodyさん2007/08/29(水) 10:17:47ID:???
>>154
アップロードしてもらって移動した時点で拡張子を変えればおk
0156nobodyさん2007/08/29(水) 10:18:17ID:???
>>154
指定先にファイルがあれば拡張子がなくてもincludeできる
0157nobodyさん2007/08/29(水) 10:51:00ID:???
>>154
preg_replace('/{(.*?)}/e', '$$1', $template);
0158nobodyさん2007/08/29(水) 11:06:55ID:???
>>154
外部のユーザからアップロードされたファイルをincludeして実行するという話を
本気にしてはダメだ。eスイッチも同様。

動的にやりたいならpreg_replace_callbackで。
そうでないなら preg_replace(//,array("hoge"),array($hoge)); とか。
0159nobodyさん2007/08/29(水) 11:14:14ID:???
>>148
理由は単純で殺人未遂だから。

おならには、硫化水素という有毒なガスが含まれていて、
量によっては即死する。
つまりおならによって人が死ぬことも理論的にはありえるわけで、
そのような殺人未遂行為(不可罰であるが)が、人から嫌がられるのは当然。
0160nobodyさん2007/08/29(水) 11:27:16ID:uYM+HrXL
>>157-158
ありがとうございます

preg_replace_callbackを参考に

$test = "aaaaaa";

$text = <<<_TEXT_
test
{test}
test
_TEXT_;

function getVar($matches){
$matches = trim($matches[1]);
global $$matches;
return $$matches;
}

$text = preg_replace_callback("/{(.*)}/","getVar",$text);

echo $text;

としてみると見事に解決しました。
0161nobodyさん2007/08/29(水) 12:08:32ID:???
Basic認証をしてアクセス管理をしているのですが、
ブラウザを閉じない限りログアウトできませんよね?
再度認証できる方法はないのでしょうか?

0162nobodyさん2007/08/29(水) 12:25:58ID:???
日本語でおk
あと>>1
0163nobodyさん2007/08/29(水) 12:29:31ID:???
すいません、やはりBASIC認証では無理みたいですね。
失礼しましたm(..)m
0164nobodyさん2007/08/29(水) 12:50:14ID:???
>>159
DHMOの危険性に比べたら、とてもとても
0165nobodyさん2007/08/29(水) 13:26:20ID:???
>>160
それでいいのなら別にいいのだけど、
その実装だとテンプレートをアップロードできる人が
変数を全部参照できることになるから注意してね。

つまり、$mysql_passwordにパスワードを入れとくとやばいとかそういうこと。
0166nobodyさん2007/08/29(水) 13:34:48ID:uYM+HrXL
>>165
ありがとうございます
特に重要なものは取り扱わないので大丈夫です
0167nobodyさん2007/08/29(水) 13:39:40ID:???
>>166
個人的にはテンプレート用の配列のみを置換するようにした方が便利だと思うよ。
$replaceStr['test'] を {test} に置き換えるとか。
0168nobodyさん2007/08/29(水) 17:24:45ID:???
ヒアドキュメントの中に関数(例えばif)などを入れて動作させることは可能でしょうか?
以下のようにやってみたのですが出来ないようです。

echo <<<EOF
I am <?php if($test == 1) {echo 'hoge'} ?>
EOF;
0169nobodyさん2007/08/29(水) 17:29:18ID:???
1はtrue
0170nobodyさん2007/08/29(水) 17:32:42ID:???
>>168
無理
■ このスレッドは過去ログ倉庫に格納されています