【PHP】質問スレッドpart30【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/10/25(火) 06:50:06ID:Q4oGlTH3【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0152nobodyさん
2005/11/03(木) 23:51:31ID:???届いたメールを表示させることは可能ですか?
0154nobodyさん
2005/11/04(金) 01:01:56ID:???危ない。FreeBSDだが、まず一部のrequireが利かなくなったがinclude_pathで全て指定
すると利くようになった。しかし子プロセスがexit signal Bus error (10)で落ちる。
extensionからzlib.soを外すと落ちなくなるが、is_dirが問答無用でfalseを返すようになる
などなど。
ところがWin32版PHP4.4.1では同じアプリケーションが、全く変更しないでも、問題なく
動作してしまう。
0155136
2005/11/04(金) 12:10:20ID:???うわーすっごいボンミス。。。
ダブルクオートしたら動きました。。。
くだらない質問に答えてもらってありがとうございました。
ひとつ疑問なんですが、先に変数を展開してくれるんですね。
/^$regex+$/
/^{$regex}+$/
でも同じ動きしたので。
0156nobodyさん
2005/11/04(金) 12:33:17ID:???""の中の$変数を解釈(展開)するのが渡された関数ではなく、
phpのパーサであることを考えれば当然の動作では?
0157nobodyさん
2005/11/04(金) 12:50:23ID:???と揚げ足をとってみるテスト。
0159nobodyさん
2005/11/04(金) 15:04:55ID:???0160nobodyさん
2005/11/04(金) 16:45:40ID:???0161nobodyさん
2005/11/04(金) 16:51:13ID:???レクサ○ ← ス が入る
0162nobodyさん
2005/11/04(金) 16:54:04ID:???0163nobodyさん
2005/11/04(金) 21:35:57ID:Q83NQbMF0164nobodyさん
2005/11/05(土) 00:08:24ID:w/1ugKYJページ毎のアクセスランキングを設置したいのですが何処かにPHPカウンターの配布とかありますか?
1から勉強しなおさないと出来ませんでしょうか・・・PHP全く知らないです(マニュアル読みましたけどまだ半分位も理解できてないですし
ググってもそれらしいものが見当たりませんでした、鯖の仕様はPHP4のsafemodeらしいです
0165nobodyさん
2005/11/05(土) 00:19:53ID:???0166nobodyさん
2005/11/05(土) 00:22:11ID:???// ̄~`i ゝ `l |
/ / ,______ ,_____ ________ | | ____ TM
| | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>>
\ヽ、 |l | | | | | | | | ``( (. .| | | | ~~
`、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二=''
ヽヽ___// 日本
______________ __
| | |検索|←をクリック!!
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄
〇ウェブ全体 ◎日本語のページ
0167164
2005/11/05(土) 00:28:06ID:EXt1uRpt有難う御座います
ググり続けてきます
0169nobodyさん
2005/11/05(土) 01:44:21ID:???ウェブ イメージ グループ ディレクトリ
______________ _____
|トンネル | |Google検索| 検索オプション
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ 表示設定
◎ウェブ全体から検索 〇日本語のページを検索
トンネルぐぐってぐぐって〜
0170nobodyさん
2005/11/05(土) 02:49:09ID:???(・∀・)ノ~~~ バイバーイ♪
0171nobodyさん
2005/11/05(土) 06:11:01ID:???0172nobodyさん
2005/11/05(土) 08:48:34ID:???0173nobodyさん
2005/11/05(土) 12:00:25ID:???高 テ|:::::::::::::::::::::::::::::::::::
け .ン |ーノノーヽ⌒ヽ:::
| シ|ノ ノ ノ ノ:::
. じ ョ| ; ;;;;;;;/ヽヽ::
ゃ ン| ;; ;;|::::
ん | :::/⌒ヽ ;;; |:::::
| ;;/ O ヽ;; |::::::
/ υ '''';;;;ー´ |:::::
_ _ノ:: |::::::
::::::V:::::::::::: ヾ |:::::::::
:::::::::::::::: ;;,, ,,, ) i |:: |
:::::::::::::::...... し |::/
_____ .|
|ー――――| /
|_____| /
,,,,,,,,,,,,,,,,,,,,, /
\ /
\____/
0175nobodyさん
2005/11/05(土) 16:21:46ID:???だけ生存期間を短くしたいのですが、
どうすればいいのでしょうか
誰かお願いします
0177nobodyさん
2005/11/05(土) 18:25:59ID:???1.メールアドレスを入力して送信
2.メールにURLが表示
3.URLをクリックするとアカウント登録完了
としたいのですが、URLを
***.php?[メールアドレス][日時][アドレスと日時のハッシュコード]
という風にしてハッシュの整合性をチェックして
アカウント作成、という風にしたら
何か問題があると思いますか?
ハッシュが解読されない限り大丈夫だとは思うんですが、何か心配です
0178nobodyさん
2005/11/05(土) 18:26:47ID:???0179nobodyさん
2005/11/05(土) 18:36:03ID:???0180nobodyさん
2005/11/05(土) 18:48:45ID:???どっちかを見分ける必要がありますよね
鍵付きのハッシュで鍵を長くしても駄目でしょうか
0181nobodyさん
2005/11/05(土) 19:12:30ID:???1.メールアドレスを入力させる
2.ユーザはメールアドレスを入力しPOSTする
3.システムがメールアドレスからハッシュを取得する
4.システムはハッシュ値と日付をどこかに保存する(DBとか)
5.システムが
http://example.com/hoge.php?[ハッシュ]
を含んだメールを入力されたアドレスに送信する。
6.ユーザが上記のアドレスにアクセスする
7.システムは保存されたハッシュを検索する
以下略
0182nobodyさん
2005/11/05(土) 19:29:17ID:???0183nobodyさん
2005/11/05(土) 19:43:57ID:???なるほど。
177さんではありませんが勉強になります。
0184nobodyさん
2005/11/05(土) 22:10:21ID:???GLOBALSに外部ユーザーからの値を受け取らないように組んでればOK
ってことだよね
若干騒ぎすぎな気がする。
0185nobodyさん
2005/11/05(土) 22:20:31ID:???0187nobodyさん
2005/11/05(土) 22:58:28ID:???0188nobodyさん
2005/11/05(土) 23:09:30ID:???0189nobodyさん
2005/11/05(土) 23:17:36ID:???0191nobodyさん
2005/11/05(土) 23:20:54ID:???0194nobodyさん
2005/11/06(日) 02:19:18ID:???サーバ上で呼び出されたのとを
区別する方法ってありませんでしょうか?
0196nobodyさん
2005/11/06(日) 02:44:47ID:???$argv は php.ini の register_argc_argv が On なら CLI じゃなくてもありますよ。(CLI では強制 On)
CLI + Apache モジュールなら php_sapi_name() 関数か PHP_SAPI 定数で判別できますね。
CGI としてインストールされてるなら判定用の環境変数を仕込むのがいいんじゃないかと。
0198nobodyさん
2005/11/06(日) 15:31:18ID:???メール本文はどこで定義していますか?
メール本文に受け付けたクエリを載せるとしたら
やっぱりそのプログラム内部に .= とか ヒアドキュメントとかで
書くしかないのかな?
メール本文だけ外部ファイルにして、
requireしようかと思ったけどなんか違う。
外部ファイルをevalしようかと思ったけどこれもまたなんか違う。
やっぱり本文に書くのみ!?
別変数で定義しておいて、
あとから参照しようとしても上と同じことになるし…
Perl使ってたときは、外部ファイルにして
クエリ載せるところは正規表現で全部置換してたんだけどなぁ
0200nobodyさん
2005/11/06(日) 15:42:46ID:???>クエリ載せるところは正規表現で全部置換してたんだけどなぁ
じゃあそすればいいじゃない。
つうか、別に正規表現使わなくてもできるよね。
0201nobodyさん
2005/11/06(日) 15:43:46ID:???どうしっくり来ないのか判らないんだけど、漏れは外部ファイルに置いて
文字列に取り込んでる。
$message = file_get_contents('mailtemplate.txt');
0202198
2005/11/06(日) 15:51:28ID:???駄文申し訳ない。別に問題ないことなんだけど、
周りはどうしてるのかなーと気になっただけです。
>>200
PHPらしく考えると、正規表現を使うよりは
変数展開の方がいいかなーと勝手に思ってしまったです。
そうなると外部ファイルに持つ方がしんどくなるので…
>>201
メール本文がクエリによって可変でないなら
file_get_contentsがスマートですね。
可変になったらどうしてます??
0204198
2005/11/06(日) 15:54:49ID:???なるほどどうもです。
PHPだと <?=$hoge?> で変数展開できるのに
変数毎に置換することを考えると
ちょっとしっくり来ないんですよね。
(どうでもいいことか…
0205201
2005/11/06(日) 16:11:54ID:???あ〜、なるほど。しっくり来ないのはその辺なんすね。
HTMLファイルなんかもそうだけど、テンプレートはあくまでもテンプレートであって
必ずしもPHPプログラマがいじる物とは限らないので、PHP色は排除してる。
もう少し具体的に書くと、こんな感じ。
これがベストとは思わないけど、ウチではこうやってるよ、ということで。
実際にはサニタイジング、文字コード変換等やっているので、その辺のツッコミはなしよ。
---mailtemplate.txt(テンプレートファイル)---
送信者:#FROM#
タイトル:#TITIE#
ご質問内容:
#MESSAGE#
---php---
$message = file_get_contents('mailtemplate.txt');
$message = str_replace(
array('#FROM#', '#TITLE#', '#MESSAGE#'),
array($_POST['from'], $_POST['title'], $_POST['message']),
$message);
mb_send_mail(SUBJECT, $message, ...);
0206nobodyさん
2005/11/06(日) 16:27:23ID:???なるほど、非常に参考になります。
外部ファイルの置換文字列自体を
<?=?>等のPHP変数にして、
本体からrequireしてしまえば
いいかなとも思ったんですが、
本体見ないと何してるのかわからないんすよね…
ってrequireじゃダメか…
となるとeval…となるとエスケープがめんどい。。
201さんのやり方が一番いいかもしれないすね
0207198
2005/11/06(日) 16:27:53ID:???0208nobodyさん
2005/11/06(日) 17:28:47ID:???require使いたければ
$hoge = "aaa";
$piyo = "bbb";
としておいて
require "orz.php";
----- orz.php
....
{$hoge}さまへのメール
{$piyo}のお知らせ
-------
とかでいいじゃね?
0209208
2005/11/06(日) 17:31:56ID:???---- orz.php
$mail_body = <<<EOF
{$hoge}さまへのメール
{$piyo}のお知らせ
-------
ということね^^;
0210nobodyさん
2005/11/06(日) 19:14:21ID:???0211198
2005/11/06(日) 21:25:54ID:???レスありがとうございます。
<?=?>にこだわっているというよりは、
PHPらしさにこだわっているってことでしょうか(汗
確かにrequireだと、ヒアドキュメントとかになっちゃうんですよね。
(そうなるとあまり外部にする旨みがなくなってしまうかな…)
0212nobodyさん
2005/11/06(日) 21:32:52ID:???ob_*を使って任意の変数に取り込めばいい
phpコードを含められるって利点くらいしかなさそうだけど。
0213198
2005/11/06(日) 21:39:10ID:???レスありがとうございます。
なるほど、ob_* って手もありましたね。
ただここまでくると、PHPコードで展開するか
既定文字列を置換するかどっちかですね。
今までどおりプログラム本体にヒアドキュメントが
一番楽でシンプルかな…
ありがとうございます
0214nobodyさん
2005/11/07(月) 00:19:44ID:VYJqOcB8アトリビュートの値)を抽出するようなライブラリはないでしょうか。
PerlだとTemplate::Extractというのがあるようです。
ttp://naoya.dyndns.org/~naoya/mt/archives/000833.html
XML_HTMLSaxでも実現可能そうですが、Template::Extractのように
ルール定義だけで抽出できるようなのを探しています。
0215nobodyさん
2005/11/07(月) 16:30:23ID:QyO81Mjh0216nobodyさん
2005/11/07(月) 19:07:15ID:???設置したのですが、GDは入っているのにGDを使う部分だけ動作しません。
GDを動かすにはどのようにすればいいでしょうか。ご教授願います。
環境は Vine Linux , Apache1.3 , php 4.4.1 です。
0218nobodyさん
2005/11/07(月) 19:13:03ID:???0220nobodyさん
2005/11/07(月) 19:34:47ID:O90JEyy/と
@fopen
の違いってなんでつか?
0221nobodyさん
2005/11/07(月) 20:12:54ID:???CGIの方ではGDが入っているかを判別して使わないようにしているようです。
どうやらPHPでGDが認識されてないみたいです。
>>219
やってみましたが駄目でした。
GD自体はapt-getを使用してインストールしました。
0223216
2005/11/07(月) 20:34:32ID:???ttp://rep2.net/up/data/630.txt
0224nobodyさん
2005/11/07(月) 20:49:47ID:???gdの文字を探しても見つからないから、
鯖の中にGDライブラリは存在するが、PHPと連携できるようになっていない。って所かと。
vineのrpmってこんなさっぱりしたconfigureなのかなぁ。。。
自力でconfigureするなら、--with-gd(必要なら=DIR)てな感じでgdを使うよーって指定してあげてください。
0226nobodyさん
2005/11/07(月) 21:01:33ID:???GD入ってるの確かならライブラリ入ってるPATHを
ld.so.confに念のため追加して
./configure --with-gd=PATH 追加してmake してみたら?
0227nobodyさん
2005/11/07(月) 21:03:59ID:???インストールできたらphpinfoで↓が出るはず。
gd
---------------------------------------
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
Jpeg GIF Freetype などのライブラリも入れるの忘れるなよ。
0228nobodyさん
2005/11/07(月) 21:05:10ID:???0229nobodyさん
2005/11/07(月) 21:13:03ID:???0230nobodyさん
2005/11/07(月) 21:19:54ID:???0231nobodyさん
2005/11/07(月) 22:27:26ID:vt3MtPM6$form->addElement('select ', 'address[]', '東京都中央区');
$form->addElement('select ', 'address[]', '東京都千代田区');
$form->addElement('select ', 'address[]', '東京都新宿区');
$form->addElement('select ', 'address[]', '東京都渋谷区');
と書きたいのですが、当然[]がsmartyの方でエラーになってしまい、使えません。
何かよい方法ありますか?
0233nobodyさん
2005/11/07(月) 22:37:12ID:???0234nobodyさん
2005/11/07(月) 22:37:33ID:vt3MtPM60235nobodyさん
2005/11/07(月) 22:56:57ID:vt3MtPM60236nobodyさん
2005/11/07(月) 23:29:36ID:+B+7rA332: $strXsl = "./test.xsl";
3: $obj=xslt_create();
4: $result=xslt_process($obj,$strXml,$strXsl);
xmlファイルをローカルに置いてやってみるとエラーもなく動くのですが
↑のように他のサーバーにあるXMLを読み込もうとすると
Warning: Sablotron error on line 1: XML parser error 4: not well-formed (invalid token) in /test.php on line 4
というエラーが出てしまいます
解決策がありましたらお願いします
0237216
2005/11/08(火) 00:17:30ID:???色々試してみましたが、どうもうまくいきませんでした。
path指定無しのGD付き指定configureだと状況変わらずだし。
path指定してみたら今度はファイルが足りませんと。むずかしいなあ。
まだやってない方法もあるのでまた試してみます。
レスしてくださった皆様ありがとうございました。
0238nobodyさん
2005/11/08(火) 01:27:12ID:???Linuxよく知らないんだけど/usrに色々入ってると仮定して、こんな感じで。(パスは適宜読み替えてね)
--with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-freetype-dir=/usr/X11R6 --enable-gd-native-ttf
0239nobodyさん
2005/11/08(火) 13:44:53ID:SGMtFQHwで 末尾の{が、
preg_replace("/\{.*\}$/", "", $line);
で { hogehoge;} が消えてくれないんだけど、何か間違ってる?
0240239
2005/11/08(火) 13:46:30ID:SGMtFQHw0241nobodyさん
2005/11/08(火) 13:52:23ID:???俺のとこでは消えたけど。
ダメならこうしたら?
preg_replace("/\\{\$/", "", $line);
preg_replace("/\\{.*\\}\$/", "", $line);
0242239
2005/11/08(火) 14:40:48ID:SGMtFQHw変数に受け取ってませんでした(汗
ありがとうございました。
0244nobodyさん
2005/11/08(火) 14:57:23ID:???テンプレ側
{foreach from=$form.address item=element}
{$element.html}
{/foreach}
024586
2005/11/08(火) 15:30:56ID:???以下のPerlをPHPにしたいのですが、
とりあえず
>>87さんのおかげで(遅レスすみません)
PHPでPOSTメソッドで送信を行うには
HTTP_requestを使えばよいというのがわかったのですが、
cgiプログラムに ファイル 'test.txt'を
渡す部分がPHPでどう書けばよいのかが
分かりません。
よろしくお願いします。
my $argv = shift @ARGV;
my $browser = LWP::UserAgent->new;
my $url = 'http://www.hogehoge.jp/cgi-bin/hogehoge.cgi';
my $response = $browser->post($url ,
[
foo => '2ch' ,
bar => 'orz',
file => [
undef, 'test.txt',
Content_Type => 'text/plain',
Content => $argv]
] ,
Content_Type => 'form-data'
);
die " Error!", $response->status_line unless $response->is_success;
print $response->content;
0246nobodyさん
2005/11/08(火) 15:51:28ID:???ttp://www.1x1.jp/php/manual_pear/html/package.http.http-request.html
読んでからもう一度
0247"php include"で調べましたが、よく分かりません。
2005/11/08(火) 16:09:10ID:KaRV4LV5ssiでインクルードして表示させることは出来るようになりました。
<?php
error_reporting(E_ERROR);
require_once './rss_fetch.inc';//設定ファイル
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'hogehoge.rdf'; //rssのありか
$rss = fetch_rss($url);
$title = $rss->channel['title'];
echo "<h2><a href=\"$url\">$title</a></h2>\n";
foreach ($rss->items as $item ) {
echo "<dl>\n";
$title = htmlspecialchars($item['title']);
$description = htmlspecialchars($item['description']);
$url = htmlspecialchars($item['link']);
$time = $item[dc][date];
$time = Rtrim("$time","\+09:00");
$time = StrTr("$time","T-"," /");
echo "<dt><a href=\"$url\">$title</a></dt>\n";
echo "<dd> ($time)</dd>\n";
echo "</dl>\n\n";
}
?>
これをphpで実行させ、表示するとなるとどうすればよいのでしょうか。
つまり、ssiの<!-- #include virtual="./xxx.php" -->に相当する手法を知りたいです。
<? php include=('xxx.php')?>ではうまくいきません。どなたかご教示ください。御願いします。
0248nobodyさん
2005/11/08(火) 16:33:26ID:???つ【マニュアル】
0249nobodyさん
2005/11/08(火) 16:55:03ID:???HTTP_Request
void addPostData(string name, string value [, bool preencoded])
PEAR_Error addFile(string name, string file_path [, string content-type])
addFileが呼ばれると自動的にmultipart/form-data形式になる
0251247
2005/11/08(火) 17:49:51ID:KaRV4LV5あ、すみません。
.htaccessの設定がおかしいみたいです。
他のディレクトリでは普通にphpのincludeで出来ました。
お騒がせしました...orz
(でもおかしい設定は無いと思うのだけれど・・・
phpinfoさえも出来ないディレクトリってなんでだろう・・・)
0252247
2005/11/08(火) 17:52:50ID:KaRV4LV5無理なんじゃ・・・同一ディレクトリだったら問題ないし。
ああ・・・
■ このスレッドは過去ログ倉庫に格納されています