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

【PHP】下らねぇ質問はID出して書き込みやがれ 76

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/11/13(木) 04:15:32ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0713nobodyさん2008/11/28(金) 15:51:04ID:skXTPrJy
>>711
ありがとうございます。
よくわかりました。

>>712
なるほど、マニュアルに書いてあったんですね。
ありがとうございました
0714nobodyさん2008/11/28(金) 21:21:59ID:fzzy5FaA
文字の後、<br/>\nみたいに改行の意味を2つ続けて書くのはなぜですか?
0715nobodyさん2008/11/28(金) 21:24:16ID:???
そりゃおまえあれやがな
ウェブで見てもエディタで見ても改行されて見えるからやがな
0716nobodyさん2008/11/28(金) 21:35:12ID:fzzy5FaA
>>715
意味がわかりませんが
0717nobodyさん2008/11/28(金) 22:02:12ID:???
715じゃないが実際にやってみればわかるが
<br>\n<br>\nってやれば
出力されるhtmlのソースは
<br>
<br>
という具合に改行されるが、
<br><br>とやれば
そのまま<br><br>と改行されずに出力される

ソースの見た目であってhtmlの見た目上は問題ない
0718nobodyさん2008/11/28(金) 22:27:32ID:dY3rvFPa
PHPで書かれたフリーのメール送信フォームで
最強、定番のって、どれ?

自動スクリプトで5000通とか送信されて
ぶっこわれたりしない、対策がちゃんと考えられてるやつ。
0719nobodyさん2008/11/28(金) 22:41:20ID:dY3rvFPa
http://kazuizm.com/2007/01/05-222959.php

アホが作るとこういう悲惨なことになるから。
最初からちゃんと聞いたほうがいい。
0720nobodyさん2008/11/28(金) 22:46:47ID:dY3rvFPa
ちょっとまった。

もしかして、サーバー側で
sendmailが停止されている場合、
メール送信フォームを設置しても
動かない可能性が高いのか?
0721nobodyさん2008/11/28(金) 23:04:13ID:???
PHPはコンパイル時に関数も制限できるはず。
0722nobodyさん2008/11/28(金) 23:06:34ID:???
http://jp2.php.net/manual/ja/mail.setup.php
コンパイル時にsendmailのパスを含んでないと駄目。

サーバ管理者がメール送らせたくないって思ってんだから諦めろ。
0723nobodyさん2008/11/28(金) 23:10:48ID:HHS1We1t
sendmail関数を使えないサーバーってあるの?
qmailとかで送れってか?
0724nobodyさん2008/11/28(金) 23:37:30ID:???
PHPにはsendmail関数なんてないだろ。
PHPにあるのはmail関数。

mail関数を使っても、送られてきた情報を
そのままアパッチのsendmailに丸投げするだけだけど。
0725nobodyさん2008/11/28(金) 23:56:55ID:???
アパッチのsendmail?
0726nobodyさん2008/11/29(土) 00:00:45ID:???
php.iniに
sendmail_path = /usr/sbin/sendmail

SMTP = localhost
smtp_port = 25
っていう設定があるけど、mail関数を使った時は、sendmailコマンドに
送られるのかね、それとも、SMTPを直接叩いてくれるんだろうか
0727nobodyさん2008/11/29(土) 00:15:45ID:???
>>726
sendmail に丸投げするだけでしょ
0728nobodyさん2008/11/29(土) 01:35:49ID:???
SMTP鯖に投げられるのはWindows版の仕様、ってマニュアルに書いてなかったっけ?
0729nobodyさん2008/11/29(土) 01:52:20ID:Zwy93qXL
sendmailコマンドに送られる
0730nobodyさん2008/11/29(土) 08:12:28ID:Q7h0AD5b
自分もメールシステム作ってみようかと思ってるんだけど、
やっぱりZendFWやPearの本に載ってるような簡単なサンプルじゃ
大量の送信とかでエラー起こすものなんですか?
0731nobodyさん2008/11/29(土) 08:19:35ID:???
どこでエラーがおきるっていうんだい?
0732nobodyさん2008/11/29(土) 09:19:26ID:???
>>730
その簡単なサンプルがどの程度のものか知らんが、
スパムメール配信システムでも作るの?

メールサーバーによっては同時配信数に制限をかけているものがあるから、
その最大数に合わせて分割配送とか独自のキューを実装する必要があるかもね。
Web経由でやるんなら、タイムアウトとかもケアするとか。
0733nobodyさん2008/11/29(土) 09:20:37ID:???
スパマーだろ
放置放置
0734nobodyさん2008/11/29(土) 10:14:58ID:Q7h0AD5b
>>732-733
いや、そんなの作る気ないよ>スパム
せっかくサーバ借りるからやってみようって好奇心だけなんだけど
変なものできてトラブりたくないから聞いてみた 気に障ったならごめんね
0735nobodyさん2008/11/29(土) 14:10:37ID:???
mysql_connect() or die;
とかの or die の使い方がのっているマニュアル該当部分てありますか?
探したんですが、orじゃ検索できないしいまいち動作がはっきりしないので情報を探しています。

論理演算子の or と同じ意味でしょうか。
0736nobodyさん2008/11/29(土) 14:24:46ID:???
>>1
07377352008/11/29(土) 14:27:57ID:khza+QN5
test() and print("after or!");

function test(){
print "in test()!!";
return true;
}

とか色々やってみてやっぱり演算子なんですね。
しかも、die以外もprintなら使えるけど、date()は使えない。
でも、自作関数使えるみたいで
test() and test();
は出来た。

dateは駄目で、自作関数は駄目って基準が分からないw
0738nobodyさん2008/11/29(土) 14:29:57ID:???
マニュアル読め
0739nobodyさん2008/11/29(土) 14:37:15ID:???
>>737
式を評価する優先度と順番の問題。
A or B
でAがtrueならBは評価しない。だから、Aがfalseの時にしたい処理をBに書く。
C and Dで
CがfalseならDは評価しない。
0740nobodyさん2008/11/29(土) 14:43:38ID:???
>>739
737のはどちらも実行されますよ。
その上でprintと自作関数は実行されるのに、dateとかは駄目というのが現在の疑問です。

>>738
論理演算子
http://www.php.net/manual/ja/language.operators.logical.php
は読んだんですが・・。

ここまで書いて、booleanを返さないといけないということに気づきました。
ありがとうございました。
07417352008/11/29(土) 14:48:51ID:khza+QN5
下記の通りで問題なく、他の関数も実行できました。
dateに限ってはprintを実行してなかっただけという orz

test() or print(date("Y"));

function test(){
print "in test()!!";
return false;
}

function test2(){
print "in test()!!";
//return false;
}

0742nobodyさん2008/11/29(土) 14:51:43ID:???
うーん、釣り?
function testがtrue返してんだから、
test() and test()
は、最初がtrueだから、次をチェックしにいくんだから、両方実行されて当然でしょ。
仮にtestでfalse返してみなよ
test() and test()は1度しか実行されないから
07437452008/11/29(土) 14:52:05ID:???
補足ですが、>>740の「booleanを返さないといけない」は大嘘ですね、すいません。
だらだらと書きましたが、誰かの参考になれば幸いです。

test() or ($test = date("Y"));
print $test;

function test(){
print "in test()!!";
return false;
}

とかやって、エラーフラグを変数に代入していけば、一個ずつif書くよりいいかもとか思いました。
0744nobodyさん2008/11/29(土) 14:52:19ID:???
date()は空文字返すでしょ
0745nobodyさん2008/11/29(土) 14:52:27ID:???
or dieはperlの真似した特殊な式だから
perlのほうで調べてみ
0746nobodyさん2008/11/29(土) 14:53:07ID:???
printの返り値とか考えてる?
07477352008/11/29(土) 14:54:31ID:khza+QN5
>>742
えーと、そこは意図してそのような動作に・・。
既に書きましたが、test() or の後にdie以外を見たことが無かったので試していたら混乱したということです。
結果的には普通に何でも出来ますね。

アドバイス頂きありがとうございました。
0748nobodyさん2008/11/29(土) 15:00:07ID:???
>>1も読まないマニュアルも読まずに見当違い質問して混乱させるとかひどい
07497352008/11/29(土) 15:01:17ID:khza+QN5
>>744,746
なるほどそのあたりも漏れてました。
しかし、>>741のtest2()で試したところ返り値があるかないかは、論理演算子の右辺は関係ないかと。

>>745
情報ありがとうございます。
perl絡みで調べてみます。
どうもこの構文はPHPとしては唐突でしっくりこなかったんですが、そういう経緯もあるんですね。
07507352008/11/29(土) 15:02:35ID:khza+QN5
>>748
ここってくだ質じゃないんですか?
何か勘違いしていたらすいませんw
0751nobodyさん2008/11/29(土) 15:07:41ID:???
くだらない質問用スレだけど下らない人間用スレじゃない
いい加減にしてくれ
0752nobodyさん2008/11/29(土) 15:20:06ID:???
perlかphpかは関係ないと思うな。
構文のパースに過ぎないんだから。
チューリングマシンの基礎だな。

> 論理演算子の右辺は関係ないかと。

そう書く気持ちはわかるが、そういう考えでは本質は理解できんよ。
0753nobodyさん2008/11/29(土) 15:28:41ID:???
くだらない質問用スレだけど、下らない回答者用のスレでもないがな
07547352008/11/29(土) 15:34:46ID:khza+QN5
>>752
個人的には基礎が足りないというのは理解しております。。
もしよろしければですが、どういうアプローチをしたら右辺の意味について理解できるでしょうか?
0755nobodyさん2008/11/29(土) 15:57:48ID:Q7h0AD5b
>>751
「まあ答えてやるか」って人間がいる限り、そういう書き込みが一番空気悪くする
いやなら答えなきゃいいし見なきゃいいだけだと思うが
0756nobodyさん2008/11/29(土) 16:27:03ID:yRFYIZ4c
じゃあまとめるね。
・式だけでも正しい構文
・PHP では and/or は短絡評価
・functionはreturn文が実行されなかったときはNULLを返す
バージョンによる違いは調べてません。
0757nobodyさん2008/11/29(土) 17:19:53ID:N9fdCVij
Zend_Dbでは、行、カラムを指定してfetchOneすれば、
単体の値を抜き出せるのに、Zend_Db_Table使うと、
結局イテレータで出てきちゃうので、
$row->カラム名
ってしないと値が取り出せず、面倒な気がするんですけど・・・。

何か良い解決方法があったら教えてください。

0758nobodyさん2008/11/29(土) 17:30:09ID:???
ZFスレで聞けよ
07597352008/11/29(土) 17:30:45ID:khza+QN5
>>756
ありがとうございます。
・式だけでも正しい構文
というのは計算式だけでもOKって事でしょうか?

自作関数だけでもnullが返ってるんですね。勉強になりました。
たしかにvar_dumpで見たらnullが返ってました。
これもざっと見るとマニュアルに書いてないような・・。

やっぱりorの両辺は返り値(何らかの値)が無ければ駄目って事かな・・。
0760nobodyさん2008/11/29(土) 18:44:16ID:???
>>759
論理演算子で解釈できるようなものならOK
基本、関数ならいいけど命令ならダメ。
右辺なら関係ないとかやめてね
test1() or test2() or test3()
こういうことも可能なわけで、右辺はいつでも左辺になる可能性がある。
test() or echo "error";とかダメだから
0761nobodyさん2008/11/29(土) 18:55:54ID:yRFYIZ4c
2項演算子の右と左を右辺、左辺というのですか?
0762nobodyさん2008/11/29(土) 18:57:37ID:???
式だろ
0763nobodyさん2008/11/29(土) 19:02:02ID:???
左辺値/右辺値
0764nobodyさん2008/11/29(土) 19:04:04ID:???
うーんまぁ、式なんだけど、彼流に言えばって話
0765nobodyさん2008/11/29(土) 20:05:02ID:dnGnExVM
あるオブジェクトが、
自分に渡された引数が自分自身(同じインスタンス)かどうかを調べるには
どうすればいいですか?
===は、ちょっと違いますよね?
0766nobodyさん2008/11/29(土) 20:06:02ID:???
>===は、ちょっと違いますよね?
なんで?
0767nobodyさん2008/11/29(土) 20:19:38ID:???
オブジェクトの話をするなら、phpのバージョンは必須じゃね?
まぁ、省略したらphp5ってことで桶てなら、>>1のテンプレに加えた方がいいかも。
0768nobodyさん2008/11/29(土) 20:35:59ID:yRFYIZ4c
「5なら○○だ」って回答して、「4なんですけど…」って返ってきたら
「先にいえボケ」って言えばいいんだよ。
0769nobodyさん2008/11/29(土) 22:44:20ID:oQuyl2Tg
PHP5です。
===は、値と型の同一性チェックで、
オブジェクトが自分自身の場合のチェックには使えないのでは?
0770nobodyさん2008/11/29(土) 22:45:12ID:???
ID変わったけど769=765です
0771nobodyさん2008/11/29(土) 22:53:24ID:???
>>769
オブジェクトが自分自身の場合は値と型が異なるの?
0772nobodyさん2008/11/29(土) 22:58:17ID:???
>>769
マニュアルの「PHP 5におけるオブジェクトの比較」読みました?
===はインスタンスの同一性チェックって書いてない?
0773nobodyさん2008/11/30(日) 02:32:51ID:???
>>772
そのとおりでした
ありがとうございました。
0774nobodyさん2008/11/30(日) 22:01:17ID:l1FWuDL6
こんばんは
CSVは一つ一つデータを検索する必要がありますが、XMLだとどうなんですか?
XMLの方がデータ検索は高速になるんでしょうか?

mysqlはナシで
0775nobodyさん2008/11/30(日) 22:05:26ID:???
XMLは単なる記述形式
0776nobodyさん2008/11/30(日) 22:25:19ID:???
どれでも検索する必要はあるよ
関数が実装されてるかどうかの違いじゃないの。
0777nobodyさん2008/11/30(日) 22:48:33ID:???
CSVを舐めていくのが早いかXMLをパースするのが早いかって話なら、
試してみればいい。そして結果をここに報告すればみんな幸せ。
0778nobodyさん2008/11/30(日) 23:11:39ID:???
どっちが早いかなんて実装方法次第だろ
イメージではパースする分XMLの方が遅い
0779nobodyさん2008/12/01(月) 02:35:22ID:L8HEfjQ3
一般的なレンタルサーバーに自前のPHPのスクリプトをアップして実行させたはいいけど、
下手くそなプログラムが災いして暴走し出した場合、これを止めるにはどうしたらいいと思う?

たとえば誤って無限ループを入れてしまったりした場合とか。
0780nobodyさん2008/12/01(月) 02:39:01ID:???
鯖缶の仕事だから好きなだけ無限ループさせてもおk
0781nobodyさん2008/12/01(月) 03:10:28ID:???
max_execution_timeで止まると思う。
0782nobodyさん2008/12/01(月) 12:02:32ID:qgihvL7P
アクセス解析で疑問があるのですが
日がたつとIPからホスト名への変換は正しくできるのか疑問でして
たとえば11/1に121.32.2.1というOCNのIPがあったとします。
そのIPを12/1にホスト名変換したときにOCNとして取得できるのでしょうか?

IPとホスト名は両方ログに書き込んだほうがいいですか?
0783nobodyさん2008/12/01(月) 12:08:52ID:???
>>782
変わり得る。
ダイナミックDNSでもなけりゃそうコロコロ変わるもんでも無かろうけど。
0784nobodyさん2008/12/01(月) 12:09:17ID:???
一体なんのために解析してるの?そこをまず考えないと
0785nobodyさん2008/12/01(月) 12:12:39ID:???
いや、その理由分かるな。大量のアクセスがあるサイトだと、
ホスト変換に時間が掛かる。俺もログに書込む時はIPアドレスだけにして、
cronで、ホスト変換するプログラムを書いている。

そのプログラム分けて上げても良いけど、20万円でどう?期間は無制限でいい。
0786nobodyさん2008/12/01(月) 12:14:18ID:???
5分で書けるだろw
0787nobodyさん2008/12/01(月) 12:14:56ID:???
貧乏SOHOが必死に宣伝中wwwwww
0788nobodyさん2008/12/01(月) 12:16:16ID:???
webalizer入れるだけで解決しそうな予感。
0789nobodyさん2008/12/01(月) 12:16:29ID:???
残念ながら500円ぐらいですね^^;
0790nobodyさん2008/12/01(月) 12:18:49ID:qgihvL7P
アクセス拒否をしたいのですがIPですとコロコロ変わるため
ホスト名でu1.p102.tokyo..setagaya.OCN.jpみたいに取得しておけたら
ピンポイントで規制できると考えてます。
プロバイダへ接続の度にIPが変わる所もあるのですが、そうアクセス拒否する機会もそんなにないとは思うのですが
規制する時になったときのことを考えてどうしたらいいのかわかりません。
ちなみにcronは使えません。
0791nobodyさん2008/12/01(月) 12:21:59ID:???
そんなに負荷が死ねるくらいアクセス数があるの?
0792nobodyさん2008/12/01(月) 12:23:23ID:qgihvL7P
2500〜5000/1dayぐらいです
ネタは情報発信系です
0793785 2008/12/01(月) 12:26:36ID:???
>>792
それなら、俺の書いたプログラムが最適。
通常は20万円だけど、同じ2chの同胞ってことで18万円でいいよ。どう?
0794nobodyさん2008/12/01(月) 12:27:26ID:???
>>792
余裕すぎじゃん
0795nobodyさん2008/12/01(月) 12:32:42ID:L8HEfjQ3
>>780
>>781
どうも(・ω・)ノシ

つまりレン鯖のユーザーとしては一度暴走を許してしまったプログラムに関しては
鯖管が見つけて止めてくれるまでどうしようもないということでok?
0796nobodyさん2008/12/01(月) 12:33:46ID:qgihvL7P
でもやっぱりipとホスト名を両方書くのはログが増えるのでやめます
>>785さんのプログラムだと私のサーバではcronが使えないのです
ホスト名で取得することにします
どうもありがとうございました
0797nobodyさん2008/12/01(月) 12:35:58ID:???
>>796なーんだ 自分で答え出せるじゃん

>>795シグナルアラーム使えば?
0798nobodyさん2008/12/01(月) 12:39:31ID:???
IPも変わればDNSも変わるんじゃないの?
07997982008/12/01(月) 12:40:28ID:???
DNSじゃなくてホスト名だ・・・
ネットワークプログラミングってむずかしいね
0800nobodyさん2008/12/01(月) 12:52:20ID:L8HEfjQ3
>>797
シグナルアラーム( ´・ω・)?
0801nobodyさん2008/12/01(月) 12:52:55ID:???
ネットワークプログラミングですらないし
0802 ̄ ̄ ̄ ̄ ̄)/ ̄ ̄ ̄ ̄ ̄ ̄ ̄2008/12/01(月) 12:58:29ID:???
     /⌒ヽ
    / ^ ω^j、
 _, ‐'´  \  / `ー、_
/ ' ̄`Y´ ̄`Y´ ̄`レ⌒ヽ
{ 、  ノ、    |  _,,ム,_ ノl
'い ヾ`ー〜'´ ̄__っ八 ノ
\ヽ、   ー / ー  〉
\ \`ヽ-‐'´ ̄`冖ー-く
|| \ \         \     ∧_∧
||   \ \         \  ( ´Д`) オイ、なんか変なのがいるぞ
||    \ \         \ /     ヽ
||      \ \         / |  | |
||       \ \∧_∧ (⌒\|__/ /
          ヽ(     )絶対目合わせるな  ∧_∧
           /   く          \  (    ) うわー、なんか言ってるよ
           |     \           \/    ヽ
0803nobodyさん2008/12/01(月) 13:22:43ID:???
kentwebではホスト名を記録してるから7年間ホスト名で記録してる俺が通りますよ
0804nobodyさん2008/12/01(月) 13:24:10ID:???
それはサーバ側で変換してくれてんだよ
0805nobodyさん2008/12/01(月) 15:04:18ID:YUzphIUV
http://x-row.cc/igwebcap/
これってphpでどうやってんですか?
0806nobodyさん2008/12/01(月) 15:37:34ID:L8HEfjQ3
>>797
> >>795シグナルアラーム使えば?

signal()
alarm()

に関してもう少しkwsk・・・
0807nobodyさん2008/12/01(月) 17:55:32ID:???
ふつうの設定では、クライアントが接続を切ったら(停止ボタンを押したら)
PHPの実行は停止されるよ。

ignore_user_abort() とか調べてね。
0808nobodyさん2008/12/01(月) 18:11:17ID:L8HEfjQ3
>>807
それだとwhile(ture)ループや、一度始めると時間がかかる処理を途中で停止させることはできないよね?
0809nobodyさん2008/12/01(月) 18:41:30ID:???
>>808
PHP内部の処理なら、ループの中だろうとなんだろうと接続断で死ぬ。
外部コマンドをコンソールを切り離して(1>&2 > /dev/nullとかで)実行してたなら
そいつは生き残るはず。
0810nobodyさん2008/12/01(月) 18:47:06ID:L8HEfjQ3
>>809
> PHP内部の処理なら、ループの中だろうとなんだろうと接続断で死ぬ。

え?そういう仕様だったの?

> 外部コマンドをコンソールを切り離して(1>&2 > /dev/nullとかで)実行してたなら
> そいつは生き残るはず。

一度プログラムが呼び出されればユーザーがいなくても処理を続行させる方法と、
そうやって一度動か始めたプログラムを途中で好きなタイミングで停止させる方法を
解説してくれたサイトってない(´・ω・`)?
0811nobodyさん2008/12/01(月) 18:52:18ID:???
>>810
マニュアル
0812nobodyさん2008/12/01(月) 19:16:24ID:L8HEfjQ3
>>811
マニュアル無さす(´・ω・`)
■ このスレッドは過去ログ倉庫に格納されています