【PHP】下らねぇ質問はID出して書き込みやがれ 94
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/03/17(水) 23:17:41ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 93
http://pc11.2ch.net/test/read.cgi/php/1266229386/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0496nobodyさん
2010/03/31(水) 02:16:32ID:???0497nobodyさん
2010/03/31(水) 05:34:24ID:1040mT1O本番サーバのCentOS5/64bitで、escapeshellcmdを通すと日本語(たとえば「てすと」)が
消失する現象が出ています
文字コードはUTF-8です
どうしたものでしょうか
0498nobodyさん
2010/03/31(水) 05:44:45ID:???0499nobodyさん
2010/03/31(水) 08:26:19ID:???cliだと問題ないなど謎ですが
strtrで自前エスケープするようにしました・・
ちなみに5.2.13です
64bitだからかなぁ・・
0500nobodyさん
2010/03/31(水) 09:09:20ID:???0501nobodyさん
2010/03/31(水) 09:19:16ID:???こんな関数はじめてみました
ありがとうございました
0502477
2010/03/31(水) 15:20:08ID:???みなさん遅れてすみませんありがとうございました!
テクニックがあるんですね知りませんでした。
理解できました!
0503nobodyさん
2010/03/31(水) 16:03:31ID:qgSssQGeerror_reporting(1)を最初に追記しました。
PHP Notice: Undefined offsetはでなくなりましたが、error_reporting(1)は
追記したファイルにのみ有効という解釈でいいんでしょうか?
test1.phpとtest2.phpでエラーで発生していて、test1.phpにだけerror_reporting(1)を追記した場合
test1.phpはエラーは出なくなりtest2.phpではエラーは出るという事で大丈夫でしょうか。
0504nobodyさん
2010/03/31(水) 16:20:45ID:???<?php
error_reporting(1);
include './test2.php';
0505nobodyさん
2010/03/31(水) 16:49:51ID:???そもそも、どうやって指示すれば良いのかもわかりません。
hoge.ttfと0×0050とかで指示できたりしますか?
0506nobodyさん
2010/03/31(水) 19:21:18ID:???記号のフォントってのがいまいちだけど、文字コードと出力される字形は別モンなので単純に
chr(0x50)
でいいんじゃ?
0507nobodyさん
2010/03/31(水) 22:34:38ID:5rD6sntL0508nobodyさん
2010/03/31(水) 22:42:26ID:F5ZddSdm一括して行う方法というのは無いでしょうか(オブジェクトの表記を省略したい)。
(VBScriptのWithステートメントのようなモノを考えています)
$object->method1();
$object->method2();
$object->method3();
これを
With($object){
->method1();
->method2();
->method3();
}
こういう風に省略できたら見た目にもすっきりしていいなーと思うのですが。
また、無いとしたら何か他に何か、良い短縮方法というのはありますか?
因みに間違えてプログラム板でこの質問をしてしまったんですが
「短縮は可読性を下げる」と言われてしまいました。
やはり短縮しないで書いた方がいいんでしょうか。
0509nobodyさん
2010/03/31(水) 22:49:36ID:???0511497
2010/04/01(木) 02:38:01ID:H0tjueQL動作は教えていただいた方法で解決できたのですが、
「PHPで使われるロケール設定」はどこで設定したものが使われているのでしょうか?
テスト・本番の両環境で、
/etc/sysconfig/i18n
にてja_JP.UTF-8をロケールに設定しており、
シェル上のlocaleコマンドでも確認できますが、
それはPHP内では使われていないようです。
まともに動いていたテスト環境でも、
LC_CTYPE=en_US.UTF-8;等と設定されており、
これもどこに由来するのか分かりません。
「偶然うまく動いていた」に過ぎないようです・・
0513nobodyさん
2010/04/01(木) 03:12:48ID:???apacheユーザの環境変数っぽいですね
デーモンの環境変数なんて考えたことなかったなぁ・・
0514nobodyさん
2010/04/01(木) 10:33:51ID:???baz
bna
test: hoge
hage: new
hoge
これらの文字を
foo: barbazbna
test: hoge
hage: newhoge
に置換したいのですが何か良い方法はないでしょうか?
0515nobodyさん
2010/04/01(木) 10:34:49ID:???foo: bar
baz
bna
test: hoge
hage: new
hoge
0516nobodyさん
2010/04/01(木) 10:58:43ID:???質問はIDを出しましょう
それとその問題が解けないなら、そもそもプログラミングをする意味が無いと思うよ
まず日本語で処理内容を書き出してみてからPHPに変換してみたら?
0517nobodyさん
2010/04/01(木) 20:31:38ID:8+z5A+wF0518nobodyさん
2010/04/01(木) 20:37:49ID:???でもなんかパラメータ渡したいだけなら、requireの前に変数を定義すればそのまま使えるよ
0519nobodyさん
2010/04/01(木) 20:52:22ID:8+z5A+wFありがおう!
0520nobodyさん
2010/04/01(木) 22:05:34ID:X1UHe/PEものすごく重いです。自作だとそんなものですか?
無料サービスのはサクサク動くのに、すごく微妙です。
0521nobodyさん
2010/04/01(木) 22:18:00ID:???自作したの?それとも有り物を設置しただけ?
自作ならソースみないとなんとも言えん
http://ideone.com/
0522nobodyさん
2010/04/01(木) 22:28:41ID:X1UHe/PE拾ってきたソースを加工したものです。
http://ideone.com/GyBDpmCC
0524nobodyさん
2010/04/01(木) 22:46:44ID:???13個もURLを読み込んでるの?
だとするとページを13個開くのと一緒だから重くなるで
対策としては、一度ダウンロードしたRSSをキャッシュすればいいんだけど、
XML_RSSにキャッシュ機能はなさそうだから
$r =& new XML_RSS($rssurl);
の前に、自前でRSSのキャッシュチェックして、キャッシュがなければダウンロード、あればそのままキャッシュをfopen
まとめると
//URLに対して固有のキャッシュパスを設定
$cache_path = 'cache/' + md5($rssurl);
if (!file_exists($cache_path) || filemtime($cache_path) < time() - (60 * 60 * 6)) {
//キャッシュファイルが存在しない、もしくは6時間以上経過
$f = $fopen($rssurl);
}
else {
//キャッシュを使う
$f = fopen($cache_path);
}
$r =& new XML_RSS($f);
つかれた
0525nobodyさん
2010/04/01(木) 22:50:18ID:???マルチスレッド化した方が早くなる
0526nobodyさん
2010/04/01(木) 23:00:45ID:???cakephpに習って管理用カラムをidのauto_incrementとし、
英字のカテゴリ名と日本語のカテゴリ名を設定したいです。
以下のような感じにしようと思いましたが、keyが予約語なので、嫌な感じがします。
一般的に英字と日本語をひとつのテーブルに設定する場合、このようなカラム名にするといいよ
というのが、ありましたら教えて欲しいです。
create table category(
id int not null auto_increment primary key,
key varchar(10),
name varchar(20)
)
0528nobodyさん
2010/04/01(木) 23:23:50ID:???で
0529nobodyさん
2010/04/01(木) 23:24:15ID:X1UHe/PE(´;ω;`)$fopenのところだけ@にしましたが、動きません。
>>525
マルチスレッドですか。ぐぐって見ましたが、概要だけしかわかりませんでした。
ソースが置いてある所があればありがたいです。
0531nobodyさん
2010/04/01(木) 23:38:44ID:X1UHe/PEありがとうございます。以下に変更しましたが、
$cache_path = 'cache/' + md5($rssurl);
の部分のキャッシュを作れていないようで、動作はしますが重いままです。
foreach ($rdf as $k=>$rssurl) {
//URLに対して固有のキャッシュパスを設定
$cache_path = 'cache/' + md5($rssurl);
if (!file_exists($cache_path) || filemtime($cache_path) < time() - (60 * 60 * 6)) {
//キャッシュファイルが存在しない、もしくは6時間以上経過
$r =& new XML_RSS($rssurl);
}
else {
//キャッシュを使う
$r =& new XML_RSS($cache_path);
}
if (PEAR::isError($r)) continue;
$r->parse();
if ($r->getChannelInfo()) $ch[$k] = $r->getChannelInfo();
$ch[$k]['items'] = $r->getItems();
}
usort($ch, "cmp");
0532nobodyさん
2010/04/01(木) 23:45:14ID:???・キャッシュ表示とキャッシュ作成を別にする
・・キャッシュ作成は定時処理にする
・個々を取得するphpを作成する
・・ajaxで読み込むurlをリクエストし、表示する。
0533nobodyさん
2010/04/01(木) 23:45:55ID:???存在しなければ新規作成したうえで読み書きモードでファイルオープンさせたいと思っています。
出来る限りスマートに記述するとしたらどういう方法をとるべきですか?
0534nobodyさん
2010/04/01(木) 23:48:57ID:???0535nobodyさん
2010/04/02(金) 00:09:05ID:cOHYaj0gはい、初めて作るのでその通りです。
1から書くのは不可能なので、なんとか今の技術で作りたいです。
0537nobodyさん
2010/04/02(金) 00:50:45ID:cOHYaj0gはい、cacheフォルダ作りました。ローカルapacheでエラーになります。
Warning: fopen() expects at least 2 parameters, 1 given in
0538526
2010/04/02(金) 00:53:20ID:dljz4vKA0541nobodyさん
2010/04/02(金) 02:10:49ID:cOHYaj0gはい、w+モードにしました。
$f = fopen($cache_path,"w+"); を
$f = fopen($rssurl); の上に持ってきたりとか、いろいろしてみましたが
キャッシュを読み込まないです。
なぜかキャッシュフォルダじゃなく同じフォルダにキャシュらしきものが出来たので
無理矢理それをフォルダに詰めても動かないままです。
0543nobodyさん
2010/04/02(金) 03:08:21ID:???ダメだろこいつ
0544nobodyさん
2010/04/02(金) 03:42:47ID:???そうやって生成したファイルは所有者が"99"とか"nobody"となっていて
パーミションが rw-r--r-- となっている。
まあこの状態でPHPから追記なり上書きなり自由に書き込めるわけだが
レンタルサーバーのコントロールパネル上から
「全ファイルの所有者をユーザーに変更する」
を実行すると所有者は確かに俺のアカウントになるんだがパーミションが
rw-r--r-- のままだから今度はPHPからそのファイルに書き込みができなく
なるんだよ。再度書き込みがしたければログファイルのパーミションを片っ端から
rw-r--rw- に変更していかなければならない。それも手動で(´・ω・`)
手動だから当然変更し忘れてしまうログファイルだって出てくるしそうなると
PHPスクリプトの動作に支障を来してしまう。
PHPでファイル生成時に最初から rw-r--rw- というパーミションのファイルを
生成できれば悩まずに済むんだけどそういう方法って無い?
みんなはこの問題に対してどう折り合いを付けている?
0545nobodyさん
2010/04/02(金) 03:48:26ID:???0546nobodyさん
2010/04/02(金) 03:52:43ID:???確かにログファイルの所有者変更なんてやる必要もないが、他のファイルの所有者変更をしたくなったとき
ログファイルも含めた全てのファイルが道連れに所有者変更されてしまうんだよ。
特定のファイルだけ選んで所有者変更できればこんな質問してない。
0548nobodyさん
2010/04/02(金) 04:08:48ID:???0549541
2010/04/02(金) 06:21:13ID:cOHYaj0gそこで以下に変更したらエラーが出てしまいました。syntax error, unexpected T_ELSE
$rはRSSの中身だと思って、それを書き込むために$rをfopenの前に持ってこないと
ダメだと思ってif文の中に2つ$rを定義する文を入れたのですが・・・考え方として間違っていますか?
foreach ($rdf as $k=>$rssurl) {
//URLに対して固有のキャッシュパスを設定
$cache_path = 'cache/'.md5($rssurl);
if (!file_exists($cache_path) || filemtime($cache_path) < time() - (60 * 60 * 6)) {
//キャッシュファイルが存在しない、もしくは6時間以上経過
$f = fopen($rssurl);
$r =& new XML_RSS($f);
if (PEAR::isError($r)) continue;
$r->parse();
if ($r->getChannelInfo()) $ch[$k] = $r->getChannelInfo();
$ch[$k]['items'] = $r->getItems();
}
$f2 = fopen($cache_path,"w+");
fputs($f, $r);
fclose($f);
}
else {
//キャッシュを使う
$f = fopen($cache_path);
$r =& new XML_RSS($f);
if (PEAR::isError($r)) continue;
$r->parse();
if ($r->getChannelInfo()) $ch[$k] = $r->getChannelInfo();
$ch[$k]['items'] = $r->getItems();
}
usort($ch, "cmp");
}
0550nobodyさん
2010/04/02(金) 09:18:47ID:BmqWcFAu1時間ごとにcronで休講情報発表サイトを巡回し、条件にマッチした場合指定のアドレスに休講お知らせメールを送ります。
この時、一度お知らせメールを送った後は、24時間たたないと同じ条件がマッチしてもメールを送らないようにしたいのです。
このような場合、PHP,mySQL,Cronの設定、どの部分でどのように制御すればよいのでしょうか?
ヒントだけでも教えてもらえればありがたいです。
キーワードをサイト情報とマッチさせてメールを送るスクリプトは下記です。
http://www.imagecheese.com/gallery/jpg.jpg
環境:
さくらレンタルサーバ:スタンダード PHP 5.2.12
Cronの設定期間は1時間ごと:
サーバはmySQL
CakePHPで開発です。
0551nobodyさん
2010/04/02(金) 10:09:56ID:???http://pc11.2ch.net/test/read.cgi/php/1268874059/
メールを送った相手と、送る条件と、送信時刻
この3つが鍵なわけだからそれを管理すればいいのでは?
0552nobodyさん
2010/04/02(金) 10:16:53ID:???メール送付した時にDBに送付日時を入れておいて
次のメール送付時に前回メールの送付日時を確認して24時間たってなければ送付しなければいい
余談だは24時間という計算はDBにやらせたほうが楽
(now() - INTERVAL 1 DAY とか)
0553550
2010/04/02(金) 10:41:15ID:BmqWcFAuCakeのスレの話題かちょっと悩みました。。
>>552
ありがとうございます。
現在は
【usersテーブル】 id, address, hash
【keywordsテーブル】 id,name,user_id
といったデータベース構成なので、keywordsテーブルに mail_sent_date というフィールドを
追加するといった形で試してみようかと思います。
0554nobodyさん
2010/04/02(金) 12:46:44ID:???ダメだorz・・・
chownもchmodも効かない・・・
最初にchownでファイル所有者を自分に変更して、そのあとにchmodで0646に変えてやろうと思ったんだが・・・
たぶんレンタルサーバーの管理人以外はchownできないような仕組みになってるんじゃないかな?
そしてchownできない限りchmodも無力化されてしまうと・・・
0555nobodyさん
2010/04/02(金) 12:51:24ID:???超能力者なら分かるかもしれないけど。
0556nobodyさん
2010/04/02(金) 12:57:28ID:???0557nobodyさん
2010/04/02(金) 13:01:17ID:???0558nobodyさん
2010/04/02(金) 13:18:04ID:H+Jv7Iis【PHPのバージョン】php5.26
全文の中から、最初の一致分「あいうえお」だけ削除したいのです。
$hoge = "あいうえお、かきくけこ、さしすせそ、たちつてと、あいうえお、かきくけこ";
$aiueo = "あいうえお";
$date = str_replace($aiueo,"",$hoge);
これだと、全ての「あいうえお」が消えてしまいますので、
$aiueo = "あいうえお";
$sakujo = "^.*?$aiueo";
このような最短マッチみたいなのを使って削除したらいんだと思いますが、
どうやればいいのか分かりません。教えて下さい。お願い致します。
0559nobodyさん
2010/04/02(金) 13:24:43ID:???0560nobodyさん
2010/04/02(金) 13:27:11ID:???0561nobodyさん
2010/04/02(金) 13:51:33ID:???【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
0562nobodyさん
2010/04/02(金) 15:39:52ID:H+Jv7Iis僕がやりたいパターンの場合だとうまくいきません。
$hoge = "あいうえお---かきくけこ---さしすせそ---あいうえお---かきくけこ---さしすせそ"
みたいなランダムな文章になってて、
$pattern = "^.*?---";
mb_ereg($pattern,$hoge,$honbun);
を使って、最初の「---」までを抽出しています。
この抜き出した文章を使って
$hoge = preg_replace("/$honbun[0]/","",$hoge,1);
というプロセスを経ると、全く抜けなくなります。
forの中で実行してるので、無限ループに陥って困ってます(汗)
原因を教えて頂けませんでしょうか。
0563nobodyさん
2010/04/02(金) 15:43:09ID:???0564nobodyさん
2010/04/02(金) 15:48:48ID:H+Jv7Iis吐き出すものがずっと同じものなので、抜けないのです。
例を上げますと
hoge ="あえ@えれ---れれあえ@れ---あえ@えれ---あえい@れえれ---えあら@れえ"
のようになってて、@マークがなくなるとwhileを抜けるようにしてるのですが、
最初の「---」までが抜けていないので、@マークが減らずに無限ループに陥るのです。
上の例の$honbun[0]は確実に、抜き出したい文章を抜き出しているのですが、
教えて頂いた構文に入れると、その該当する文章が抜けないのです。
0565nobodyさん
2010/04/02(金) 16:07:46ID:???テストしてるソース張り付けられない?
0566nobodyさん
2010/04/02(金) 16:31:04ID:H+Jv7Iisこんな感じです。
メールアドレスを「---」で区切って格納しているものがあって、
それを上から1つずつ抜き取りたいのだけれども、全部の羅列の中に
同じアドレスが2つ以上あった場合でも、上から1つずつ抜き取りたいのです。
で、一番上のメールアドレスを「---」までで抜き取ったやつを、
$hoge = preg_replace("/$honbun[0]/","",$hoge,1);
教えて頂いた↑で抜き取ると、抜き出せないのです。
ちなみに最初は
$hoge = str_replace($honbun[0],"",$hoge);
これでうまくいっていたのですが、複数ある場合に
全部が抜き出されてしまって、困ってしまって、質問させて頂いたわけです。
0567nobodyさん
2010/04/02(金) 16:35:17ID:???0568nobodyさん
2010/04/02(金) 16:40:04ID:???というか文字列を --- で区切ればいいんじゃないの?
explode使って。
0569nobodyさん
2010/04/02(金) 16:41:37ID:???0570nobodyさん
2010/04/02(金) 16:48:58ID:H+Jv7Iisとりあえずこれを入れると、簡単なソースでは成功しました。
ありがとうございました。
これから実際に使ってるプログラムの方に導入してみて、
ちゃんと動くか実験してみます。ありがとうございました。
0571nobodyさん
2010/04/02(金) 17:07:28ID:???> PHPでファイル生成時に最初から rw-r--rw- というパーミションのファイルを
> 生成できれば悩まずに済むんだけどそういう方法って無い?
umask
でも大抵はchmod。
0573nobodyさん
2010/04/02(金) 20:09:21ID:???> umask
> でも大抵はchmod。
ありがとう、できたわ(゚∀゚)
http://www.phppro.jp/phpmanual/php/function.umask.html
↑のサイトを参考にして
$old = umask(0);
chmod("file.log", 0646);
umask($old);
でできたわ。所有者が99だったりnobadyであってもumaskつかえばchmod出来ちゃうんだね。
強力なコマンドなぶん、使い方誤るとセキュリティ的にやばそう・・・
ところで冒頭の umask(0) の引数"0"って何を意味してるんだろう?
0574nobodyさん
2010/04/02(金) 20:58:12ID:peh3ZVn3phpスクリプト以外からアクセスすると(正確にはサーバ外のファイルから)
アクセスが弾かれるようにするにはどうすればいいんでしょうか?
0575nobodyさん
2010/04/03(土) 00:10:03ID:???ファイルへのURLを直接入れたら表示したくないってことかな?
権限を上手いこと設定するか、.htaccessあるいはapacheの設定ファイルで
その特定ファイルへのアクセスを禁止する
詳しくは「htaccess アクセス制御」等で検索するかApacheスレへ
0576nobodyさん
2010/04/03(土) 10:14:00ID:dm+pMn6c..
...
....
return $str;
}
この戻り値を
print <<<HTML
hogehoge{returnstr($a['test'])}hogehoge
hogehoge
HTML;
のように出力の中に書きたいのですがどのように書くのが正しいのでしょうか?
0577nobodyさん
2010/04/03(土) 10:17:07ID:???0578nobodyさん
2010/04/03(土) 10:18:58ID:dm+pMn6cとしてそれを入れるしかないってことですね。
ありがとうございます。
0580nobodyさん
2010/04/03(土) 13:31:38ID:???($hoge == "foo") で $hoge に 0 が入って true になってた。
比較演算子の問題はちゃんと把握してるつもりだったけど
やっぱりよく注意してコーディングしてないとハマるね
0582nobodyさん
2010/04/03(土) 16:17:13ID:???0583nobodyさん
2010/04/03(土) 18:45:24ID:???"hoge" は数字にすると0(数値に相当するものが入ってない)だから。
$hogeに数字が入ってると、自動的に数値で比較してくれる便利機能がついてる。
警告の一つも出してくれりゃいいのになぁ。
0584nobodyさん
2010/04/03(土) 22:10:28ID:???のように画像を開くときは画像ファイルへのパスを指定する必要があるわけですが
絶対パス(realpath()で得られるパス)は受け付けてくれません。
代わりにドキュメントルートからのパス(多くの場合はpublic_htmlから)を指定する必要があるわけですが
/zettai/path/public_html/pic/1.gif
のように絶対パスで与えられているファイル名をドキュメントルートからのファイル名
/pic/1.gif
に変えるにはどういう方法を使えばいいでしょうか?
0585nobodyさん
2010/04/03(土) 23:17:14ID:???0586nobodyさん
2010/04/04(日) 01:01:02ID:???しかも>>55でもうやってるしwせっかく作ったんだし公開しておこう
http://ideone.com/QMVoQhKL
0587nobodyさん
2010/04/04(日) 11:32:33ID:VKZUtm2V【PHPのバージョン】PHP 5.2.12
【連携ソフトウェア】
【質問内容】
(sakuraレン鯖使用です)
ttp://www.abe-tatsuya.com/web_prog/php/mail2php.phpのサイトを参考にして
メールを受信してtwitterに投稿するPHPを作っています。
受信したものをそのまま投稿するのは上手くいくのですが、
アドレスに応じて名前を追加しようとするとうまくいきません。
(というより別関数で本文に内容を付加するのがうまくいかないです。)
原因は何でしょうか?
(使用しているファイルを次に投稿します)
0588nobodyさん
2010/04/04(日) 11:40:00ID:VKZUtm2V[.mailfilter]
to "| /usr/local/bin/php -q /home/user/www/tweet/mail.php"
[mail.php]
<?php
#-- PEAR の Mail/mimeDecode.php を読み込む
require_once '../../pear/php/Mail/mimeDecode.php';
require_once("post.php");
require_once("xml.php");
#-- メールデータ取得
省略:参考サイト通りstdinで取得
#-- From フィールドの取得
$from = $mail_data->headers['from'];
#-- To フィールドの取得
$ToAddress = $mail_data->headers['to'];
#-- Subject フィールドの取得
$Subject = $mail_data->headers['subject'];
$Subject = mb_convert_encoding($Subject,"UTF-8","JIS");
#-- 本文の取得
$MailBody = $mail_data->body;
$MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS");
//アドレス処理はあとでやる
$fff = "mail";
$aaa = add_name($fff,$MailBody);
$MailBody = $MailBody.$aaa;
//twitter投稿
Post($MailBody);
?>
0589nobodyさん
2010/04/04(日) 11:44:58ID:VKZUtm2V連投スミマセン;;
改行が多すぎるって怒られました><
[xml.php]
<?php
function add_name($from,$body){
$xml = simplexml_load_file('document.xml');
foreach($xml->person as $person){
if($person->mail == $from ){
$body = $person->name . $body;
return $body;
}
}
}
?>
[document.xml]
<?xml version='1.0'?>
<data>
<person>
<mail>mail</mail>
<name>たろう</name>
</person>
</data>
0590nobodyさん
2010/04/04(日) 18:50:22ID:z61eZwKM0591nobodyさん
2010/04/04(日) 19:51:07ID:???0592nobodyさん
2010/04/04(日) 20:06:00ID:???本当に JIS なのか?
mb_language('uni'); // unicode
とかになってないかい?
ちなみに、mb_detect_encoding では正しく JIS が判断できないよ。
バグじゃないけどね。
0593587
2010/04/04(日) 21:40:37ID:VKZUtm2V>>590
質問内容が悪かったですね(汗
メール送信したときに、add_name()など関数を使うと値が返ってきません。
mail.phpをブラウザで叩いたときは値が返ってきます(echoで確認しました)
>>592
文字コードはとりあえず文字化けしなかったのであんまり気にしていませんでした><
コンバートしなくても良いといいことですか??
0594nobodyさん
2010/04/05(月) 06:07:53ID:uTolPHHQ【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】
a.htmlからa.phpを呼び出しています。
a.htmlには、
<input type="checkbox" name="cb_op3" value="1">
とデフォルトでチェックがされていません。
a.phpでは、
$cb_op3 = $_POST['cb_op3'];
の様に参照しています。
チェックボックスがチェックされていない場合、
PHP Notice: Undefined index: cb_op3 in D:\htdocs\a.php on line XX
のようにPHP Noticeが出力されます。
これが出ないようにするには、どうすれば良いですか?
よろしくお願い致します。
0595nobodyさん
2010/04/05(月) 06:53:11ID:???$cb_op3 = (isset($_POST['cb_op3'])) ? $_POST['cb_op3'] : "";
0596nobodyさん
2010/04/05(月) 06:58:11ID:uTolPHHQご回答、ありがとうございます。
$cb_op3 = htmlspecialchars(@$_POST['cb_op3']);
とすることで、自己解決しました。
■ このスレッドは過去ログ倉庫に格納されています