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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/03/17(水) 23:17:41ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0698nobodyさん2010/04/09(金) 14:13:35ID:???
誰も決めてなかったらしくエラー吐かなくなった
えらいぞ俺
0699nobodyさん2010/04/09(金) 15:29:21ID:Mp0D6Mth
POSTで送信されたか調べる時、REQUEST_METHODを付けて

if($_SERVER['REQUEST_METHOD'] == "POST" && $_POST["text"] != "")

みたいな方法を知り合いから「するべき」と言われたのですが、
これって別にREQUEST_METHODを付けなくても良いのではないでしょうか?
if($_POST["text"] != "")
だけあれば、十分「POST[text]に値が存在するか)を調べられると思うのですが・・・

なにか理由があってREQUEST_METHODを付ける場合は、その理由を教えてください。
0700nobodyさん2010/04/09(金) 18:35:51ID:???
POSTされていないときに、 $_POST["text"] != "" が null で通るからかな。
0701nobodyさん2010/04/09(金) 18:40:19ID:???
未定義と空の文字列を1つの式で検出するテクニック
if( isset($_POST['example'][1]) ){

}
0702nobodyさん2010/04/09(金) 19:33:09ID:???
>>701
それだと$_POST['example']がない場合にエラーでない?
0703nobodyさん2010/04/09(金) 19:35:30ID:???
へぇ、出なかった!
ほんと自由な言語だわ
07046992010/04/09(金) 20:04:18ID:Mp0D6Mth
みなさんありがとうございます。
少し疑問に思ったのですが、>>700のってどういう場合に起こりえるのでしょうか?
外部フォームからPOSTされたとしても通らないと思うし。
「POSTされてないとき」の場面が想像できません。
0705nobodyさん2010/04/09(金) 20:15:57ID:???
どんまい
0706nobodyさん2010/04/09(金) 20:22:33ID:???
>>704
クライアントからどういうデータがくるかなんてわからない
メソッドなんて自由に変えられるし、
HTML改ざんして$_POST["text"]に該当するフォームを消すこともできる

0707nobodyさん2010/04/09(金) 20:33:09ID:???
ポストされたけど値が無いのと、ポストされてないけど(とうぜん)値が無いときと分ける必要がなければそうだね。
0708nobodyさん2010/04/10(土) 09:26:10ID:3YvP476N
if文での and と ネスト で質問があります。

and でつなげられる場合、出来る限りネストを使わないほうが
処理は速くなるのでしょうか?
0709nobodyさん2010/04/10(土) 10:14:52ID:???
別に同じ
0710nobodyさん2010/04/10(土) 14:30:13ID:???
1994年生まれの人集まれ!★3
http://gimpo.2ch.net/test/read.cgi/nendai/1269784099/
0711nobodyさん2010/04/10(土) 14:54:51ID:3YvP476N
>>709

ありがとうございます。
同じだったとは。。

ループは重くなりやすいけど、ifのネストは関係ないのですね。
0712nobodyさん2010/04/10(土) 15:02:37ID:3YvP476N
たびたび申し訳ありません。

mb_strpos($allInfo, $key) !== FALSE
mb_strpos($allInfo, $key) == TRUE

上と下は同じと考えてよいでしょうか?

可視性から下にしたいのですが、サンプルコードが上のやり方で
書いてあることがよくあるのです。
0713nobodyさん2010/04/10(土) 15:09:07ID:???
全然違う
0714nobodyさん2010/04/10(土) 15:14:07ID:???
>>712
関数の戻り値を調べれば何故そう書いているのかわかると思うんだがな

TRUEと同等値が戻ってきた時とFALSE以外が戻ってきた時
0715nobodyさん2010/04/10(土) 15:32:22ID:3YvP476N
>>713 >>714

ありがとうございます。

mb_strpos
文字列 haystack の中で needle が最初に現れる位置を数字で返します。 needle が見付からなかった場合、FALSE を返します。

と書いてあるので、trueを返すのはでく、数字で返すからこのような書き方じゃないといけないわけですね。
勉強になりました。
0716nobodyさん2010/04/10(土) 16:58:06ID:+kV5bvKp
配列の値を含む文字列を判定するこんな感じの関数ってありますでしょうか?
無いならこのまま使うんですが元々あるならそっち使いたいと思いまして。

function test($arr,$str){
foreach ($arr as $a){
if( strpos($str,$a) !== FALSE )
return TRUE;
}
return FALSE;
}
0717nobodyさん2010/04/10(土) 17:20:07ID:Q/DxsTmS
phpでエラーが発生すると
Warning: 〜 in /home/aaaa/aaaa.php on line 337
みたいにエラーが表示されますが、これを隠すことは出来ますか?
例えば、「エラーが発生しております」のような別の文言にカエルのでもOKです。
0718nobodyさん2010/04/10(土) 17:29:37ID:???
>>716
strpos(implode($arr), $a)
でいいんじゃない?
>>717
エラー制御演算子
error_reporting
display_errors
trigger_error
とか
0719nobodyさん2010/04/10(土) 17:31:25ID:???
ごめん最後はerror_handlerだった
0720nobodyさん2010/04/10(土) 17:41:00ID:Q/DxsTmS
>>718
エラー制御演算子初めて知りました
ありがとうございます
0721nobodyさん2010/04/10(土) 19:18:53ID:+kV5bvKp
>>718
それは結果が違ってくると思います。
おそらく preg_match('/'.implode('|',$arr).'/',$str) > 0 もできないことはないですが
正規表現使わず配列で解釈させたいので>>716のような関数がないのならあのまま使うことにします。
0722nobodyさん2010/04/11(日) 00:06:02ID:???
>>721
結果が違うってなんで?
0723nobodyさん2010/04/11(日) 02:16:00ID:???
>>722
function test($arr,$str){
foreach ($arr as $a){
if( strpos(implode($arr),$a) !== FALSE )
return TRUE;
}
return FALSE;
}
じゃわけわからんし

function test($arr,$str){
if( strpos(implode($arr), $str) !== FALSE )
return TRUE;
return FALSE;
}
のつもりだったとしてもおかしいだろう
0724nobodyさん2010/04/11(日) 02:28:18ID:???
>>723
おかしいってなんで?
0725nobodyさん2010/04/11(日) 02:29:55ID:???
実際走らせてみればいいじゃん。
0726nobodyさん2010/04/11(日) 02:37:29ID:???
>>723が何をいいたいのかはよく分からないけど、

$arr[0] = 'ab'
$arr[1] = 'bc'
で、abを検索するとマッチしちゃうようになると思うよ。
0727nobodyさん2010/04/11(日) 02:38:25ID:???
じゃないや、bbです。
>>723の後者はこれを言ってんのかな
0728nobodyさん2010/04/11(日) 02:49:16ID:???
$str = 'ABC';
$arr = array('AA','AB','AC');
var_dump(
    // AA,AB,ACのどれかが ABC内にあれば真→○
    test($arr, $str),

    // AAABAC が ABC内にあれば真→×
    strpos(implode('',$arr),$str)!==FALSE
);
function test($arr,$str){
    foreach ($arr as $a){
        if( strpos($str,$a) !== FALSE )
            return TRUE;
    }
    return FALSE;
}
求めてるのは上の機能であって下のではないんでないの。
配列の値から文字列探索すんなら in_array array_search 使えばいいだけだし。
0729nobodyさん2010/04/11(日) 03:45:47ID:???
implode使うって話はstrpos($str, implode('', $arr))なんだとおもうよ。
配列の中身を全部連結したものに対して検索すればいいんでない?っていう。
0730nobodyさん2010/04/11(日) 07:03:55ID:???
>>729
パラメータが逆だし
strpos(implode($arr), $str)だと境界がなくなるので結果が変わるっていうことでしょ
絶対に使いそうもない文字をはさんで文字列を作ればOK
strposはバイナリデータOKなので例えば
strpos(implode(0x00,$arr), $str)
0731nobodyさん2010/04/11(日) 08:06:03ID:???
>730
注意: implode()は、歴史的な理由により、引数をどちら の順番でも受けつけることが可能です。
0732nobodyさん2010/04/11(日) 10:01:49ID:3X2bc6FO
配布されてるスクリプトを見ると、
いちいち設定ファイル以外のメインスクリプトでdefinedで定数をチェックして、
なかったら定義したりしてますが、
あれはユーザーが定数を設定するとき削除したりコメントアウトしたり、
予期せぬことをしたときの対策にやっているのでしょうか?
もしそうなら個人的にはそんな勝手にいじるなら動かなくて当たり前ですよ的なスタンスでいいと思うのですが、
何か他に意味はあるのでしょうか?
0733nobodyさん2010/04/11(日) 10:25:51ID:???
>>732
予想外のスクリプトを叩かれた場合の誤動作の穴が生じるのを防ぐため
0734nobodyさん2010/04/11(日) 10:39:38ID:???
いままでMYSQLを必要な分だけぐぐって使ってたのですが、DBサイト作るにあたって真面目に
DB基礎本読んで正規化を学んだんですが、
PHPのサイトや最近流行のPHP+MYSQL本を読んでも、外部キーや参照の話って全くありません。
重複した値があるフィールドは別テーブルにするとか、正規化しても
外部キーとかつかった実例が紹介されてないので、実装していいものか悩みます。
PHP+MYSQLで外部キーや参照を使わない理由ってあるのでしょうか?
0735nobodyさん2010/04/11(日) 10:40:06ID:xQs0jEVq
すいません上げ忘れました
0736nobodyさん2010/04/11(日) 11:25:37ID:???
DBとアプリケーションの関係わかっとるかな?
0737nobodyさん2010/04/11(日) 11:49:58ID:xQs0jEVq
すいません、もうちょっと具体的にお願いします。
たぶんわかってません。
0738nobodyさん2010/04/11(日) 12:36:15ID:???
学ぶよりまず先に手を動かせ
0739nobodyさん2010/04/11(日) 12:58:23ID:???
>>734
MySQLのデフォルトストレージエンジンMyISAMが外部キー制約をサポートしなかったり、
制約自体がデータの不整合を減らすための仕組みなだけなので
面倒くさがりな入門書なら省いちゃうかもね
パフォーマンスのためにあえて使わないケースもあるけど
よく分からないから使わない、はNGだねぇ
0740nobodyさん2010/04/11(日) 13:11:36ID:???
postgresql使え
0741nobodyさん2010/04/11(日) 14:11:50ID:8e9aaJ3F
VBのinstr()関数のような、何文字目に目的の文字列があるか調べ、マッチする文字列があった場合は先頭から何文字目にあるかを返す関数はありませんか?
0742nobodyさん2010/04/11(日) 14:12:44ID:???
あるよ
0743nobodyさん2010/04/11(日) 14:13:09ID:???
なんだっけ・・・
0744nobodyさん2010/04/11(日) 14:20:27ID:???
ねーよ
0745nobodyさん2010/04/11(日) 14:33:37ID:xQs0jEVq
>>738
10年手ばっかり動かして学んでこなかった結果、場当たり的なプログラミングしかできない奴に育ってしまったので
基礎学んでます。
>>739
RDBなのに全然リレーショナルしない話ばっかで、なんか使わない理由あるのかな?ってすごい不思議です。
DB本だとかならず正規化するといいよ!って話がでるのに。
入門書だけでなく、本屋にあるPHP本全部みても話題にでてないし、ぐぐっても解説してるところがほとんどないもので・・・
参照してるやつは消せないとか、具体的な実装例とかそういうのみたかったのですが、自分で試すしかない感じです。

>>741
strposとかpreg_matchとか
0746nobodyさん2010/04/11(日) 14:43:20ID:???
基礎を学びたいと言っておいて結局コピペできるサンプルを欲しがってるだけじゃないの?

DB本で正規化のこと学んで、PHP本でAPIの使い方学べば、あとは自分で正規形のDBを操作するPHPアプリ作れるだろ
0747nobodyさん2010/04/11(日) 14:47:32ID:xQs0jEVq
そうですね。自分で解決することにします。お騒がせしました。
0748nobodyさん2010/04/11(日) 14:51:14ID:???
>>747
ここの連中はバカとはさみは使いようって感じで情報聞き出せればおk程度に思っといたらいいよ
丁寧に聞いてるとなかなか言わないからな、天邪鬼だから。

例えば間違いをわざと誇張するとかオススメ。
自信満々なアホが釣られて正しく答えてくれる。
0749nobodyさん2010/04/11(日) 14:53:59ID:???
そこまでしないと情報を獲得できないなんて情弱は哀れだな
0750nobodyさん2010/04/11(日) 14:57:52ID:???
基本的にすぐ煽るやつは質問者よりも技術的にレベル低い事多いから、
自分で調べた方が速いよ。
>>746とかいい例。
質問の意味を理解してない。
0751nobodyさん2010/04/11(日) 15:01:52ID:???
情弱ほど情弱という言葉使いたがる不思議
0752nobodyさん2010/04/11(日) 16:00:17ID:???
>>748
おまえ、質問したけど態度が悪すぎて答えてもらえなかったから恨んでるんだなw
0753nobodyさん2010/04/11(日) 16:11:17ID:???
>>750
え?普通に合ってると思うが。
0754nobodyさん2010/04/11(日) 16:16:31ID:???
>>739
>よく分からないから使わない、はNGだねぇ
仕事では、「よく分からないものは使わない」が正解だと思うけど
0755nobodyさん2010/04/11(日) 16:17:08ID:???
それが使うべきものかもしれないじゃないか
0756nobodyさん2010/04/11(日) 16:21:46ID:???
だったら、よく分かるまで勉強しろ
0757nobodyさん2010/04/11(日) 16:24:07ID:???
739はそれを言ってるんだろw
0758nobodyさん2010/04/11(日) 16:34:59ID:???
>>752
お前よく釣られるタイプだろw
0759nobodyさん2010/04/11(日) 18:01:14ID:xnCsJMSA
昨日からPHPの勉強はじめたんだがなんでXAMPPじゃ駄目って言う人多いの?
なんかセキュリティがどうとか、本番では使わないとかいってるんだが
0760nobodyさん2010/04/11(日) 18:03:41ID:???
>>759
気にするな
0761nobodyさん2010/04/11(日) 18:10:02ID:???
うむ気にするな 自己責任だ
0762nobodyさん2010/04/11(日) 18:12:05ID:???
>>759
> 昨日からPHPの勉強はじめたんだがなんでXAMPPじゃ駄目って言う人多いの?

俺もそこらへん知りたい。

EclipseでPHPを実装しようと思ってるんだけど
実行環境やデバッグ環境はどれを選んだらいいんだろう?

XAMPPでPHP・Apache・MySQLを一式インストールして実行・デバッグ環境を構築するのが今のトレンド?
0763nobodyさん2010/04/11(日) 18:18:17ID:???
>>762
勉強で使うなら好きにすればいいと思うけど
そもそもなんでDBがMySQLって固定されてるんだ?
俺はPostgreSQL派なのでw

自分用のカラオケ(リクエスト番号)リストのwebアプリを作ったときは、
普通のエディタでつくったけどね
テストは、外部に出てるサーバにあげて、そのまま本番運用w
自分用だしね
0764nobodyさん2010/04/11(日) 18:38:02ID:xnCsJMSA
勉強用で使うなら、って事は将来的には変える事になるってこと?
0765nobodyさん2010/04/11(日) 18:42:10ID:???
XAMPPは開発が楽なように各種設定がセキュリティ的にゆるく
なってるんだよ。
それだけだから気にするな
0766nobodyさん2010/04/11(日) 18:44:10ID:???
>>764
仕事で使うときは必ずしも自分が好きな環境が使えるわけじゃないよ
IDEごときに振り回されるようじゃやってられません
0767nobodyさん2010/04/11(日) 18:55:49ID:???
ニートの俺は勝ち組ってことか
0768nobodyさん2010/04/11(日) 20:15:20ID:???
tet
0769nobodyさん2010/04/11(日) 20:37:42ID:???
仮想環境にLINUXをインストール、LAMPを構築してsambaとかじゃねーか将来のためにヴァージョン管理も入れておけ
0770nobodyさん2010/04/11(日) 22:35:31ID:???
別にXAMPPを使っているからといって大して問題にもならないし
後で困ったらその時また勉強出来ていいじゃまいか
0771nobodyさん2010/04/11(日) 23:28:59ID:???
好きな環境使えばいいよ。
それでやった考え方は言語や環境変わっても役には立つ。
0772nobodyさん2010/04/11(日) 23:36:45ID:???
しかし、apache、php、mysqlをインスコするのが面倒といわれたのには驚いた
0773nobodyさん2010/04/11(日) 23:49:11ID:???
面倒っつ〜かセキュリティ的にね・・・
0774nobodyさん2010/04/11(日) 23:53:42ID:???
http://builder.japan.zdnet.com/news/story/0,3800079086,20384129,00.htm
ここの通りインスコした場合セキュリティ的にはどう?
0775nobodyさん2010/04/11(日) 23:56:59ID:???
>>773
>>765と言ってることが違ってますなあ
0776nobodyさん2010/04/11(日) 23:58:09ID:???
>>772
いや、それは慣れててスムーズに出来ても面倒なことに変りないだろ。
「俺は面倒じゃないぜ!」なんてかっこつけにもなっとらんぞ。
手間かけなくて良いときはかけないほうが賢い。
0777nobodyさん2010/04/12(月) 00:02:10ID:???
はいはいXAMPP使ってる人は賢い賢い
0778nobodyさん2010/04/12(月) 00:04:20ID:???
だからさ、何度も言ってるけどXAMPPは個別に入れてもXAMPP使っても全く同じことができる人のための物で
決して知識の無い初心者でも手軽に鯖環境を構築できるための物じゃないんだよ
0779nobodyさん2010/04/12(月) 00:06:13ID:???
XAMPPはNGってことで
0780nobodyさん2010/04/12(月) 00:16:27ID:???
どうしてもダメだってことにしたい必死な人がいるんだよね。このスレに。
0781nobodyさん2010/04/12(月) 00:18:34ID:???
信者が必死ですね
0782nobodyさん2010/04/12(月) 00:19:31ID:???
XAMPPを入れて完璧に使いこなせてる奴以外は使うな
0783nobodyさん2010/04/12(月) 01:12:05ID:???
>>730
> strpos(implode(0x00,$arr), $str)
この例は動くのか?
0784nobodyさん2010/04/12(月) 01:26:18ID:???
動くが0x00ってつまり0だから意味ない。
意味のあるデリミタにするなら"\x0"かchr(0)じゃないと。

しかしどっちにしろ>>716の関数だと探索するのは$arrのどれか1つであって
$strじゃなくね?
0785nobodyさん2010/04/12(月) 02:08:32ID:???
意味がないというか、意味が変わっちゃうよね。
要素またいでいても引っかかっちゃう。
0786nobodyさん2010/04/12(月) 02:10:30ID:???
え? XAMPPってローカル開発環境でしょ?
いくらなんでもあれそのままグローバルに公開する人いないでしょ。
0787nobodyさん2010/04/12(月) 02:12:51ID:???
いざグローバルになると困るんだとさ。意味がさっぱり分からんけど。
与えられた特定の環境でしか使えない人間が言いそうだよね。
0788nobodyさん2010/04/12(月) 02:18:52ID:???
ああ、XAMPPで入門すると本番環境構築できないよ、ってこと?
そんなのプログラムの勉強とサーバの勉強切り分けりゃいいんじゃねーの?

Linuxメインで開発してる身からするとWindowsは開発環境構築めんどくせーなと
思ってたからXAMPP出たときは便利になったなーと思ったけどな。
0789nobodyさん2010/04/12(月) 02:55:47ID:???
XAMPP使って鯖の質問してくる奴にそう言え
0790nobodyさん2010/04/12(月) 03:58:34ID:???
実際の鯖をインストール&稼働するのではなく仮想的な環境を構築してその中で実行できないものかね?
0791nobodyさん2010/04/12(月) 06:45:02ID:???
すればいいじゃん
楽になる面も多々あるよ
0792nobodyさん2010/04/12(月) 07:22:04ID:???
技術的なことになると簡単なことでもわざわざ難しく書くキチガイが多くて初心者が戸惑いやすいっていう現象が起こっている気がする
本でもネットでも掲示板でもそう
0793nobodyさん2010/04/12(月) 07:47:23ID:???
例えばどういうの?
0794nobodyさん2010/04/12(月) 08:09:50ID:???
ただ単に知識がないから難しく聞こえるだけだろw
0795nobodyさん2010/04/12(月) 08:43:40ID:???
さすができるプログラマさんパネェっす
0796nobodyさん2010/04/12(月) 09:03:59ID:???
XAMPP禁止でいいだろ
信者がうぜえし
0797nobodyさん2010/04/12(月) 09:06:43ID:???
信者よりもアンチのほうが鬱陶しい
好きなもん使えばいいだろ
■ このスレッドは過去ログ倉庫に格納されています