【PHP】質問スレッドpart24【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/01 04:09:15ID:???・新規質問の方は上げてください。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
0182nobodyさん
04/11/04 12:54:23ID:???マニュアル読むまでも無いと思うが。
list($result, ) = explode("\n", $text, 2);
こんな書き方もある。
それぞれに変数を用意してやる必要はない。
0183nobodyさん
04/11/04 13:18:10ID:XSGSYvoFMIMEの文字列をJISに変換するにはどうしたらよいでしょうか
0184nobodyさん
04/11/04 13:19:32ID:???0185 183
04/11/04 13:28:05ID:???0187nobodyさん
04/11/04 18:57:14ID:???PHPで大量のメールを送信するプログラム作成予定です。
CCやBCCで送信する場合は何件あろうが処理は速く終わるんですが、
宛先にそれぞれの名前だけ表示して送りたい場合は、
やはり一件ずつmail関数で送信をしなくてはいけないんでしょうか。
ちなみに軽く書いてみるとこんな感じでループ回してます。
foreach($str_data as $key => $val){
$to = mb_encode_mimeheader($val['mail']);
mail($to, $subject, $msg_jis, $header);
}
BCCはメアドをつなぎ合わせるから一発。
$mail_enc = implode(",", $mail_str);
$to = mb_encode_mimeheader('[email protected]');
$header .= "Bcc:{$mail_enc}"."\r\n";
mail($to, $subject, $msg_jis, $header);
宛先を各個人にするにはやっぱりループさせるしかないですよね。
これがすさまじく処理に時間がかかるんです。
大量メールの場合や、添付ファイルをつけた場合、
これではサーバーが持たないですかね・・・
宛先に各個人を表示するプログラムってやっぱきついんですかね?
ループさせないで送る方法も考えつかないですし・・・
どなたかよい知恵があれば教えてください。
自分でプロトコル接続プログラムを作成して送信していくのがいいと思う。
サーバーは持つけど長くなるけどね。
うまくPHPを同時に複数走らせたりすればサーバーに適したスピードでの
送信も可能です。そのときは複数送信をしないような方法を考えましょう。
0190nobodyさん
04/11/04 20:56:49ID:???mail関数使わずに、qmail-queueに投げて処理してる。
リモートにしかMTAが無いなら、>>189の言うようにSMTP話すようにして、
1通毎にコネクション切らないようにしてやれば若干マシ。
ところで、間違っても共有サーバで動かそうと思って無いだろな?
0191nobodyさん
04/11/04 21:43:16ID:???俺も興味ある話だから便乗させて。
mail関数使わずに、popen()でパイプオープンして内容を投げればええのかな?
何かよいサンプルソースがあればと思い探してるのだが。。
0192nobodyさん
04/11/04 22:03:07ID:???header("Content-type: application/octet-stream");
header("Content-Disposition: inline; filename=\"test.wmv\"");
header("Content-Length: ".50000);
readfile("test.wmv");
としてみたんですが、メディアプレーヤーが起動してしまいます。
検索して
header("Content-type: application/octet-stream");を
header("Content-type: application/octet-stream-dummy");にするとDLされるみたいに書いてあったのですが、
やはりメディアプレーヤーが起動してしまいます。
ネスケだとうまくいくんでIEのバグかなと思うんですが、もしDLできる方法があればご教授お願い致します。
よろしくお願いします。
#くだ質の方に間違って書いてしまいました。ごめんなさい。
0193nobodyさん
04/11/04 22:17:46ID:???header("Content-Disposition: attachment; filename=\"test.wmv\"");
ならどぉよ。
0197nobodyさん
04/11/05 00:25:22ID:FgI15ehKmysql&phpの方は書き始めてまだ一ヶ月ほどの経験しかありませんが
MySQL 3.23.58とphp4.3.1という環境で簡単な検索システムを作ってみたりしてます。
function print_selectmenu($f_name){
$sql = "select distinct $f_name from HOGE_DB";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
echo "<option value=¥"{$row["$f_name"]}¥">{$row["$f_name"]}</option>¥n";
}
}
こんな感じで、プルダウンメニューにしたい内容をテーブルから読み出して
<select></select>の間にはさみ自動でプルダウンメニューに表示させるまでは出来たのですが
レコードの修正画面においては、選択肢をプルダウンで出すだけでなく
既に登録されてる情報どおりにselectedを付けたいのですがなんか良い方法ないでしょうか?
0198nobodyさん
04/11/05 00:30:58ID:???それはHTMLのお話。
<option 〜 selected>のselectedの部分を ”自分で” 出力すればよい。
他のフォーム要素についても同じ。
0199197
04/11/05 00:54:35ID:FgI15ehKselectedをつければいいということは解ってるのです。
mysql_fetch_arrayで拾い出してくる値のうち、
既に入力された情報のoptionにだけwhileループのなかで
いかにして自動的にselectedをつけるかで悩んでるのです。
0200nobodyさん
04/11/05 00:58:36ID:onIpwNyM0202nobodyさん
04/11/05 01:11:34ID:???| ノ\ ,_ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ (>>200)
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
\ " / | |
\ / ̄ ̄ ̄ /
0203nobodyさん
04/11/05 01:13:58ID:???pearにそういうこともできるパッケージがあるけど、
selectedを付ける程度だったらarray_mapかなんかで実装した方がいいかも知れない。
0204nobodyさん
04/11/05 03:14:21ID:ipfVcK1A自分で作成した(コーディングしてコンパイルしたということです)
SMTPサーバを/usr/sbin/sendmailにインストールしphp.iniで
sendmail_pathを/usr/sbin/sendmailに設定しました.
このときに,PHP(アパッチのモジュールではなくて)で
mb_send_mail()を実行してもSMTPサーバにメールが送られていないようですが,
原因は何が考えられるでしょうか?
エラーメッセージが一切出てこないこともあって,原因がわからなくてこまっています.
(phpインストール時に./configureでマルチバイトストリングが扱えるようにオプションを
つけています.)
0206nobodyさん
04/11/05 03:37:37ID:???> SMTPサーバにメールが送られていないようです
メル鯖のログを見た?
> エラーメッセージが一切出てこないこともあって
mb_send_mail はbooleanを返すけど、それはどうなってるの?
0207nobodyさん
04/11/05 04:27:45ID:???$tset ="
<hr color=#6600ff>
_HTMLEND_;
require 'inc/test.php';
echo<<<_HTMLEND_
<hr color=#6600ff>
";
と書いたtest.incファイルを↓のファイル
<?PHP
// さっきのファイル読出し
require("../test.php");
echo<<<_HTMLEND_
<html><body>
あいうえお<br>
あいうえお<br>
あいうえお<br>
$tset
あいうえお<br>
あいうえお<br>
あいうえお<br>
<hr></body></html>
_HTMLEND_;
?>
てな感じで読み出したい・・・
変数の中に命令文を入れたら
動かないのは分かるのですが
どうすれば出来るのかわかりません
(´・ω・`)ショボーン
初心者ですいませんがお教えい下さい。
0208nobodyさん
04/11/05 06:32:47ID:puzbyGUU今日の寝巻きは黄でした
今日の寝巻きは緑でした
っというような文章があり、
色の部分だけ取り出して変数に入れるにはどうすればよいのでしょうか
入門書の正規表現のところを見ても英語の例しかなくうまくいきません
0209nobodyさん
04/11/05 08:54:15ID:???0210nobodyさん
04/11/05 11:01:51ID:???if ($b==$c) { array_merge($a,$d[$c]);
ここで現在のforeachループを破棄して、
もう一度最初から$aの評価をしたいのです。
($dの内容によっては無限ループに陥る
可能性があるのは目をつぶるとして)
どう書けば良いでしょうか。
0211nobodyさん
04/11/05 11:18:35ID:???0212nobodyさん
04/11/05 11:19:25ID:???reset( $a );
0213nobodyさん
04/11/05 11:26:53ID:???do {
foreach ($a as $b) {
if ($b==$c) {
array_merge($a, $d[$c]):
break;
} // endif
} // endforeach
} while(TRUE)
かな?
このままだと常に無限ループだが、
中のforeachから抜けるには break 2; を使えばいい
0214nobodyさん
04/11/05 11:29:35ID:vAMAiFLGこちらのsocket関数の項目に書かれているスクリプトを自分の
スクリプトに組み込んでますが
自分の使っているサーバーでperl -wcでスクリプトチェックを行ったら
Unquoted string "stdout" may clash with future reserved word at aaa.cgi line 543.
このような警告文が表示されました。
select(stdout);
のstdoutをAAAとか別のものに置き換えたらこの警告文が回避できましたが
別のものに置き換えても正常に動くのでしょうか?
perlのバージョンはThis is perl, v5.8.2 built for i386-freebsdです。
0218212
04/11/05 11:52:41ID:???while( list( $key, $b ) = each( $a ) )
{
if( $b == $c )
{
array_merge( $a, $d[$c] );
reset( $a );
}
}
で、どうだろう。
0219nobodyさん
04/11/05 11:54:48ID:???0220204
04/11/05 12:22:22ID:ipfVcK1Aメール鯖のログは昨日みましたが,やはり何ものこっていませんでした.
mb_send_mailがbooleanを返すということでしたので、今試して見たところ,false
が返ってきています.
phpinfo()をすると,mbstringはenableで,sendmail_pathもちゃんと設定されています.
falseが返る原因として他に何が考えられるでしょうか?
0221nobodyさん
04/11/05 12:36:58ID:???うん。(笑)
試してみたら、resetではforeachはresetされなかった。
>218ならいけそうな予感。
でもいささか古めかしい書き方なのは、仕方ないかな。
無限ループ前提でbreak2で抜けるのとどちらが良いかは、
好みが分かれる所かな?
0222nobodyさん
04/11/05 13:29:12ID:???>mail関数使わずに、popen()でパイプオープンして内容を投げればええのかな?
そんな感じ。厳密には使ってるのはproc-open()だったり、オリジナルのqmail-queue
ではなかったりしてるけど。後は単純にqmail関係の話だから、そっちの資料(本もあるし)
を当たった方が良いよ。
0223nobodyさん
04/11/05 13:49:41ID:???while(4){echo "1";}
これではあかんのかな?
0224nobodyさん
04/11/05 14:11:43ID:???0225nobodyさん
04/11/05 14:13:42ID:???while($i++ < 4){echo "1";}
0226nobodyさん
04/11/05 14:20:15ID:???225を参考にforを使ったやつも考えてみた
for($i=0;$i<4;$i++){echo "1";}
うーん、いろいろ出来るね。サンクス>224-225
0227nobodyさん
04/11/05 14:21:34ID:???0228nobodyさん
04/11/05 14:34:33ID:???0229nobodyさん
04/11/05 14:47:25ID:onIpwNyMんでしょうか?原理的には変わらん気がしますが。
それとも構造が分かりやすくて編集しやすいって利点のみ?
初心者なんでこれらを使わない方が作りやすいんですが・・・
0230nobodyさん
04/11/05 14:48:28ID:???0231nobodyさん
04/11/05 14:54:19ID:???どっちもどっち。
作りやすいほうをどうぞ。
0233nobodyさん
04/11/05 14:58:40ID:???class使うのは、再利用したい為と
共同開発するときに他人にも分かりやすくする為
どっちにしろ、初心者には関係ない
0234nobodyさん
04/11/05 15:15:32ID:???しかし、使わないと吐き気が出るプログラムが出来そうだがw
0235nobodyさん
04/11/05 15:20:26ID:???PDFLib-Liteを入れた後、PHPを再コンパイルする際に、
--with-pdflib=/usr/localをつけたにもかかわらず、
インストールされないってどういうことでしょうか教えてください。
ちなみに、PHP-4.3.Xでは同じ方法でインストールできたと思います。
0236nobodyさん
04/11/05 15:20:40ID:???0238nobodyさん
04/11/05 15:51:10ID:???OOPできなくても、構造化プログラミングぐらいしてないと、
趣味プログラムでも後で泣くよ。
保守できなくて。
色々と工夫してclassとかfunctionとか作ってると、
新しいプログラムを作るときに
新たに書くコード量が減ってきていい感じになる。
functionとかclass使えば、
普通はパフォーマンス落ちるよ。
そのパフォーマンスの落ちが問題なのかどうかってのも、
普通は検討事項。
職業プログラムなら、悩むまでもなくパフォーマンス落ちを取る。
# そもそも気にするほど遅くならない
0239nobodyさん
04/11/05 15:55:45ID:VQSnf7DDこの時に列幅等指定できないのでしょうか?
0240nobodyさん
04/11/05 16:08:36ID:???列幅を扱えるようなCSVファイルなら、そのフォーマットにそって出力すればよい。
ただ、MS-ExcelのCSV出力のように列幅データを持たないものもある。
0241nobodyさん
04/11/05 18:22:31ID:???0242nobodyさん
04/11/05 18:33:36ID:???0243nobodyさん
04/11/05 18:45:09ID:???書籍買って、カウンターのコードサンプルみてふと思ったのですが、
perlの場合、lockしてるのをよくみかけますが、
phpではlockする必要ないのですか?
0244nobodyさん
04/11/05 18:52:44ID:???ロックはしないとぶっ壊れるよ。
0246nobodyさん
04/11/05 19:23:43ID:???なぜなら、まともなコードを書くと入門書では紙面が足りないコードになるから。
一例を挙げれば入力のサニタイジングだって必須だけど省かれるし…・。
文字コードの色々な問題についても省くよね。
初心者になんでもかんでも説明するのは事実上不可能。
しかし、説明の無いコードが大量にあったら糞入門書だ。
つまり、入門書は雰囲気のみ。
実際に使えるコードなど無い。
0247nobodyさん
04/11/05 19:41:36ID:QUoZnGJqヒットしなかった時の値(false=0)が返って来ますよね?
みなさんはどうやって切り分けていますか?
0249241
04/11/05 20:50:01ID:???クッキーオフにしたら機能しなかった・・・。
セキュリティリスク高いからできるだけクッキーは
使いたくなかったんですが、これはしょうがないのかな?
初歩的な質問スマソ
0250nobodyさん
04/11/05 20:59:16ID:???0251nobodyさん
04/11/05 21:05:23ID:???勘違いしてるようだが、クッキーを使った方がセキュリティリスクが低いぞ。
もちろん、secureフラグを使用した場合だが。
0252241
04/11/05 21:06:23ID:???クッキーを使う場合についての注意点として、
・unsetを忘れない
・時間設定しておく
・パスワードなんかの重要情報は暗号化しておく
くらいしか思いつかないんだが、やばいですか?
0254nobodyさん
04/11/05 21:08:44ID:???0255241
04/11/05 21:10:24ID:???はphpとクッキーでログインシステム管理してるみたいだけど、
SSL利用は必須としていないみたいでし。
0256nobodyさん
04/11/05 21:13:20ID:???0257241
04/11/05 21:13:44ID:???0258nobodyさん
04/11/05 21:14:09ID:???0259241
04/11/05 21:23:22ID:???勉強しなおしてきます。ありがとうございました。
0260nobodyさん
04/11/05 21:41:54ID:???0261nobodyさん
04/11/05 21:45:38ID:???無線LAN環境でパケットスニッフしてみると良く分かる.
0262nobodyさん
04/11/05 21:54:28ID:???0265nobodyさん
04/11/05 22:08:57ID:???A%Bで出てきた値が1以上の整数だった場合を真とすれば出来そうだけど整数である事の判定の仕方が分かりません。
教えて下さい。
0266nobodyさん
04/11/05 22:19:44ID:???0267nobodyさん
04/11/05 22:33:34ID:???COOKEI OFFにして
session_start();
print $PHPSESSID;
しても $PHPSESSIDが表示されないぽ。
なぜぽ?
COOKEI ONなら
正しく表示されるのに
なぜぽ?
0268nobodyさん
04/11/05 22:35:31ID:???0269nobodyさん
04/11/05 22:37:13ID:???まず A >= B でなければ偽
さもなくば A == B なら1倍で真
さもなくばBと等しいか大きくなるまでAを足していって
ちょっきりBと等しくなれば真
残りは偽
0270nobodyさん
04/11/05 22:38:22ID:???session_start();
$PHPSESSID = session_id();
print $PHPSESSID;
じゃないの?
0271nobodyさん
04/11/05 22:39:17ID:???まず A >= B でなければ偽
さもなくば A == B なら1倍で真
さもなくば初期値0に対してAと等しいか大きくなるまでBを足していってちょっきりAと等しくなれば真
残りは偽
0273272
04/11/05 22:46:23ID:???でもいいのか。
0275nobodyさん
04/11/05 23:22:14ID:???session.use_trans_sid を 1 にしれ.
もしくは自分でリンクに全部 <?=SID?> をつけれ.
話はそれからだ.
0276nobodyさん
04/11/06 07:02:58ID:T75+ILHOusleep()はWindows上だと動かないので(-_-)ウツ
0277187
04/11/06 12:04:59ID:???>>190
>>191
アドバイスどうもです。
そんな感じの方法で少しがんばってみます。
共有サーバーでこんな思い処理やばいのは百も承知でっす。
でも、使うのは自分じゃないから何とも言えないけども。
1通毎にコネクション切らないで行う方法など、
とりあえずなんかしらで少しでも処理軽くする方法考えます。
popen()ついてですが、自分もなんかしらのソース探してみます。
道のりは長いですね・・・
0278nobodyさん
04/11/06 12:11:31ID:???0279nobodyさん
04/11/06 12:19:48ID:BQGFb7uFそんなことするソフトだったら作らずともいくらでもあるような。
今回はデータ管理でせっかくアドレスもあるからメール送る機能も追加しといてってだけ。
作ってればあれもこれもと欲がでてくるみたい。
きりがないからこっちはお疲れモード。
0280nobodyさん
04/11/06 12:23:30ID:veEoJvKdってのをユーザabcから使ってみたんですが、
ls: `/home/abc': Permission denied
apacheのエラーログにというエラーが表示され、
結果を取得することができません。
perl-suEXECのときはこれでいけたんですが、
PHPってどういった権限で動いてるんでしょうか?
解決方法はありますか?
宜しくお願いします。
0281nobodyさん
04/11/06 12:24:03ID:???> でも、使うのは自分じゃないから何とも言えないけども。
こういう馬鹿のお陰で、今までいくつも便利なサービスが停止されていった。
自鯖でやれ、屑。
■ このスレッドは過去ログ倉庫に格納されています