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

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

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

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

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0577nobodyさん2013/07/09(火) NY:AN:NY.ANID:???
>>576
つ鏡
0578nobodyさん2013/07/09(火) NY:AN:NY.ANID:???
>>576
IDだせゴミクズ
0579nobodyさん2013/07/09(火) NY:AN:NY.ANID:k7B6tgkb
576=567
0580nobodyさん2013/07/09(火) NY:AN:NY.ANID:???
567叩いてるおれカッケーwwww
0581nobodyさん2013/07/09(火) NY:AN:NY.ANID:???
>>567が糞すぎる

どんな教育受けてきたんだ
0582nobodyさん2013/07/09(火) NY:AN:NY.ANID:eZcG40Bc
>>578
はい。
でももっかい彼が書かないことにはどうにもならんなこれ
0583nobodyさん2013/07/09(火) NY:AN:NY.ANID:IrNQ7IWS
>>578
はい。
でももっかい彼が書かないことにはどうにもならんなこれ
0584nobodyさん2013/07/09(火) NY:AN:NY.ANID:eZcG40Bc
さすがだわw
0585nobodyさん2013/07/09(火) NY:AN:NY.ANID:7W64c/4q
>>578
はい。
でももっかい彼が書かないことにはどうにもならんなこれ
0586nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
驚異の糞スレ
0587nobodyさん2013/07/10(水) NY:AN:NY.ANID:CN5V3Wu/
そもそも最底辺が集まる板だし
0588nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
少し前の状況に戻っただけだな。最近マシになりすぎてた感すらある。
0589nobodyさん2013/07/10(水) NY:AN:NY.ANID:BysYyNl3
よんだ?
0590nobodyさん2013/07/10(水) NY:AN:NY.ANID:hhzOdqYq
PHPの3項演算子について質問です。
コロンの後に、exit()を用いても大丈夫ですか?
以下の文は、期待通りに動くのですが、後々、問題になるのを避けたいです。

$val = !empty($arg) ? $arg : exit('error');
0591nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
>>590
or die使った方がいいね。
05925902013/07/10(水) NY:AN:NY.ANID:E8EpK5eU
なるほど。
と思いましたが、次のようにするとTRUEかFALSEが代入されてしまいます。
どのように or die を使えば良いのでしょうか。

$val = !empty($arg) or die('error');
0593nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
>>592
http://codepad.org/iVif3kSL
05945902013/07/10(水) NY:AN:NY.ANID:E8EpK5eU
>>593
<?php
$arg = 1;
$val = !empty($arg) or die('error');
echo $val, PHP_EOL;
結果 1

これは確かに1を出力します。
なぜなら、!empty($arg) の返り値がTRUEであり、出力すると1になるから。

しかし、$arg = 5;にしても1になってしまいます。
この点は不具合です。

<?php
$arg = 5;
$val = !empty($arg) or die('error');
echo $val, PHP_EOL;
結果 1
0595nobodyさん2013/07/10(水) NY:AN:NY.ANID:85QoHIBq
>>594
1じゃなく、何になって欲しいの?
不具合というなら、期待していた結果もお願いします
05965902013/07/10(水) NY:AN:NY.ANID:E8EpK5eU
>>595

$arg = 5;
$val = !empty($arg) ? $arg : exit('error');
結果 5

これと同じ結果になるように or die を使う例を教えてください。
というか最初の質問とずれてきていますが。。
0597nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
>>590
そもそも三項演算子があまりお勧めではないし、
> $val = !empty($arg) ? $arg : exit('error');
のような書き方もまあ普通はしないから、そういう書き方はあまりしない方が良いとしか言えない。
0598nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
$val = !empty($arg) ? $arg : null;
if ($val === null) exit('error');
0599nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
>>595
スレを荒らすつもりがないならゴミの相手はするな
0600nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
if (empty($arg))exit('error');
$val = $arg;
でいいじゃん。

emptyが値を受ける5.5以降なら empty($val=$arg) or die('error');  って書けるけどさ、
素直に書くのがいいよ。
0601nobodyさん2013/07/10(水) NY:AN:NY.ANID:85QoHIBq
>>596
いろいろ見間違えてた。ごめん。
or dieを使って、同等の結果を生むコード
http://codepad.org/MExebqFq

ただ、個人的には条件演算子も、or dieも使わない書き方をすると思う。
0602nobodyさん2013/07/10(水) NY:AN:NY.ANID:85QoHIBq
>>600
unset($arg) 状態で動かすとnotice出るんじゃないの。
empty使うメリットが失われてるかと。たぶん。
0603nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
そだね
06045902013/07/10(水) NY:AN:NY.ANID:65tBLdRF
>>597
: exit() は、確かに、行儀の悪いコードですよね。
>>601
or die の使うやり方、理解できました。
コードを載せて頂き、有難うございます。

やはり、: exit()は、推奨される書き方ではないようですね。

if(){} else{} を使うと4行ほどになったり、インデントでコード量が
多く感じるので、1行にまとめたいと思った次第です。
有難うございました。
0605nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
4行になると何が困るの?
06065902013/07/10(水) NY:AN:NY.ANID:65tBLdRF
>>605
コードが4倍になります。
たとえば、if else のコードが合計1000個ある場合、
1000行のコードが、4000行になり管理が大変です。
0607nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
そんなに同じコードが出てくるのかよ?
そうなったらコードを生成するコードのほうを管理するか、
バイナリにしてしまうとか。
0608nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
行数増えても管理はかわんねーよ
0609nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
1000個wwww
どんなコード書いてるのか見てみたい
0610nobodyさん2013/07/11(木) NY:AN:NY.ANID:9TxHvupT
>>606
もし読んでいないならマーチンファウラーのリファクタリングを読んでみて。

>>607
> そうなったらコードを生成するコードのほうを管理する
大抵の場合、それは悪。
そうする場合は最大限の注意を払わなければ代償は信じられないほど大きい。
0611nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
>>606
関数化すれば?
0612nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
1000個を連想配列にしてループを使えよ。実質的には
$arg1、$arg2、$arg3、でも
$arg[1]、$arg[2]、$arg[3]、でも同じ用途に使えるだろ。
0613nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
行数よりも可読性の高さのほうが大事
0614nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
>>611は遅いし >>612はメモリがだめ
なんの書き方してもメリットデメリットあるし好きにすればいいよ
0615nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
関数化が遅いって謎すぎるw
0616nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
呼び出しコストを知らないらしい
0617nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
>>606は管理が大変になるって言ってるんだけどwww
しかも1000個は例示だしw
0618nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
でお前は何が言いたいんだ?
自分の手法を突っ込まれて悔しかったのか?
0619nobodyさん2013/07/11(木) NY:AN:NY.ANID:rFR/PQIZ
APCの質問です
phpのファイル名が同じだと、別のディレクトリにあっても、同じキャッシュが適用されて同じコードが実行されてしまうことを確認
これ大変困ってるんですけど解決策ないでしょうか?
APCをオフにする以外で
0620nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
同じって、、、相対指定してんの?
apc.stat をオンでいいんじゃないかな
0621nobodyさん2013/07/11(木) NY:AN:NY.ANID:rFR/PQIZ
詳しく書くと、数人で同じプロジェクトで作業してて
それぞれの作業ディレクトリに同じ構成でファイルが置かれている
で、ブラウザから
http://example.com/user_a/abc.php
http://example.com/user_b/abc.php
みたいにアクセスして、各々の動作確認してる

ユーザーAがabc.phpを書き換えてUPし、
http://example.com/user_a/abc.php
を実行すると
http://example.com/user_b/abc.php
を実行しても、同じコードが走ってしまう

という問題です

>>620
チェックしてみます
0622nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
少なくともうちでは同じファイル名が結構あるけど、chache entryを見たら別ものと認識してたよ
0623nobodyさん2013/07/11(木) NY:AN:NY.ANID:rFR/PQIZ
apc.statはONになってました
他にそれっぽい設定項目が見つからない…キャッシュエントリ見てみます
0624nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
>>623
ローカルで試してみたけど、ちゃんと別ものとして認識してくれたよ。

$ mkdir /var/www/html/user_a
$ mkdir /var/www/html/user_b
$ vi /var/www/html/user_a/abc.php
--
<?php echo 'abc'; ?>
--
$ cp /var/www/html/user_a/abc.php /var/www/html/user_b
--
ここでuser_a/abc.phpとuser_b/abc.phpにアクセスしてみると、それぞれ別にcacheされた
--
$ vi /var/www/html/user_a/abc.php
--
<?php echo 'ABC'; ?>
--
user_a/abc.phpにアクセスするとABCと表示され、user_b/abc.phpにアクセスするとabcと表示される。
user_a/abc.phpは再chacheされていた。
--
APC Version 3.1.15-dev
0625nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
時間が古いファイルを上書きしてキャッシュが更新されないのをフォルダのせいだと勘違いしてんだろ。
0626nobodyさん2013/07/11(木) NY:AN:NY.ANID:9TxHvupT
>>625
更新していないはずのbが、新しくなったaの動きをするって話じゃ
0627nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
include で ../abc.php とかやってると怪しいw
0628nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
でもそれも stat onなら問題出ないはずだけどな
0629nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
今日も馬鹿ばっか
正しい情報調べれば解決なのに
中途半端な知識で意見交換ごっこ
0630nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
目くそ鼻くそを笑う
0631nobodyさん2013/07/11(木) NY:AN:NY.ANID:rFR/PQIZ
>>624さん他ありがとござます
どうも全てのファイルがそうなるわけではなく、何か発生する条件があるようです
厄介な問題ですねこれ…更に調べてみます
0632nobodyさん2013/07/11(木) NY:AN:NY.ANID:u2co9nyd
ブラウザの挙動すらわからないならwgetなり適切なものを適切に使って確認しろよ馬鹿共
0633nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
何の話なんだろう
0634nobodyさん2013/07/11(木) NY:AN:NY.ANID:9TxHvupT
…なぜwget?
わからないなら口出すなという定番のレスをもらうかもしれないけど、それが適切な場面とは思えないんだよなぁ
0635nobodyさん2013/07/12(金) NY:AN:NY.ANID:iv8k8+L5
馬鹿が適切だと思ってやることは間違いなんだから仕方ないな
適切なことを適切なことだと判断できるのなら
その時点でこの馬鹿板の住民より上だからな
0636nobodyさん2013/07/12(金) NY:AN:NY.ANID:jzIu4enx
>>621の件、この例のabc.phpみたいな単純な形だと起きないようで、
abc.phpがclass.phpみたいな他ファイル内の親クラスを継承していて
ユーザーAがclass.phpを書き換えてUPし、apc.phpを実行したら
ユーザーBのabc.phpがユーザーAのものと同じ挙動になってしまう
ということが起きているようです
が、これが必要十分条件かわからないので、更に調べてみます
0637nobodyさん2013/07/12(金) NY:AN:NY.ANID:GnfS9HXK
URLがディレクトリを指しているのに、phpで処理しているって
いうのは、どうやっているんですか?
0638nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
具体例をだしてみ
0639nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
>>636
俺も似たような経験あるわー
apcやめて、eaccerareterに戻ったわー
0640nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
http://ime.nu/api.cakephp.org/2.3/class-Component.html
にアクセスすると、
/api.cakephp.org/2.3/class-Component.html
というページじゃなくてスクリプト実行になるけど、
これはどういう風に実現しているのでしょうか?
0641nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
は???
PHPじゃなくてHTMLの質問じゃねーか
アンカーテキストのURLとリンク先が一致してないだけだろ
0642nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
http://ime.nu/に
class-Component.html
というファイルが存在するわけではありませんよね?
0643nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
そういうことか
htaccessで設定してあるんだろうな

http://blog.katty.in/89
0644nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
>>640
PHP=脆弱性の塊。
安全なウェブサイトを作る方法の一番最初に「PHPは使わない」
と書いてあった時代に流行った、
apacheの設定を変更して、拡張子を偽装するという手口の名残りだろう。
0645nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
>>644
PHPを忌み嫌ってるのにもかかわらずPHPスレに顔出してるだけあって、池沼級の馬鹿なんだなと思った
0646nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
転送先URLをパラメータとして、受け取って加工して表示してるだけだ。
PHPが使われてるかどうかも不明だし
静的に生成しているんだったらHTMLだけで実現できる。
0647nobodyさん2013/07/12(金) NY:AN:NY.ANID:jzIu4enx
>>645が馬鹿で笑った
0648nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
>>645
初心者が騙されて産廃を使って人生の何時間かを無駄にしないようにしてやるのも
ITに関わる者の務めの一つだと心得ている

自分さえよければそれでいい、信者増えて楽しければそれでいい、
そういった公共の福利を無視したPHP偸とは違うんたよ
0649nobodyさん2013/07/12(金) NY:AN:NY.ANID:sxqmWfDI
>>636
ユーザA、Bは同一のclass.phpを参照しているの?
それとも、ユーザごとに分かれている?

>>637
みんなが書いてるように、mod_rewriteとかで実現してる。
ただ、HTMLの問題だとか、HTMLで実現してるという言葉はうそなので信用しないように。
0650nobodyさん2013/07/12(金) NY:AN:NY.ANID:iv8k8+L5
引数で出力変える程度PHPみたいなごみ使う必要もない
0651きら 忍法帖【Lv=40,xxxPT】(1+0:8) ◆Kira.u9zNc 2013/07/13(土) NY:AN:NY.ANID:9o8w/POD
しょうもない質問かもしれませんが、
CGIのhttp://hoge.com/fuga.cgi/foo/のように、
PHPでもbar.php?foobar=testではなく、
bar.php/foobar/test/というように
パラメータを渡す方法を教えてください
0652nobodyさん2013/07/13(土) NY:AN:NY.ANID:???
>>651
SEOのため?
0653nobodyさん2013/07/13(土) NY:AN:NY.ANID:I87hYon8
>>651
それもapacheならmod_rewriteでできる。
自分でやるのが面倒なら、フレームワーク使うなど。
0654nobodyさん2013/07/13(土) NY:AN:NY.ANID:???
PHP関係ない。
それはサーバーソフト依存。
0655nobodyさん2013/07/13(土) NY:AN:NY.ANID:MyVXWbK4
$js = $_POST[ "js" ];
$replacing = preg_replace("/\x5c\x5c\x22/", "\x22",$js); // 【\"】 を 【"】 にする
$replaced = preg_replace("/\x5c\x5c\x27/", "\x27",$replacing); // 【\'】 を 【'】 にする

$post_Data = json_decode($replaced, true);

このとき、送られてきた文字列にマルチバイト文字があると、
jsonエンコードをかけてクライアントに返すとクライアント側(jQuery)で
日本語が文字化けします(/uxxxx/uxxxxの/が消える)

デコードとエンコードは必須です
何か良い対応策があれば教えてください
0656nobodyさん2013/07/13(土) NY:AN:NY.ANID:???
JavaScript Object Notation - Wikipedia
JSONテキストはUnicodeでエンコードするとされている (SHALL)。デフォルトのエンコーディングはUTF-8である。



BSON は、 binary encoded serialization of JSON-like documents のことです。
http://bsonspec.org/
BSON は、ドキュメントに "拡張" 情報を持ちます。
length prefix を持つことで、高速に解釈することができます。
http://kaworu.jpn.org/kaworu/2012-04-10-1.php
0657nobodyさん2013/07/13(土) NY:AN:NY.ANID:???
SEOのイタチごっこを戦い抜く戦力の人件費と
広告代はどっちが得なんだろう
0658nobodyさん2013/07/13(土) NY:AN:NY.ANID:MyVXWbK4
>>656
ありがとうございます。

送り手も受けても間違いなくUTF-8に設定されています。
JSONを使うのは仕様なので、変更できないんです…。
0659nobodyさん2013/07/13(土) NY:AN:NY.ANID:???
>>658
文字化けが発生する最低限のコードを、何も省略せずに書いてみて
0660nobodyさん2013/07/13(土) NY:AN:NY.ANID:???
EUCかSJISとかになってるんだろ。
PHPの設定と、扱える文字コードは同じではない。
0661nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
三連休にPHPかよw
本当にお前らって時間をドブに捨てるのが好きだよなw
0662nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
>>661
おやおや、こんな夜中にドブさらいですか? ご苦労様。
0663nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
米青  ネ申  禾斗  ιこ  彳テ  ιナ  !!
0664nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
本当にここはゴミの掃き溜めだよね
0665nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
彳って何て読むの?
0666nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
>>665
米青  ネ申  禾斗  ιこ  彳テ  ιナ  !!
0667nobodyさん2013/07/14(日) NY:AN:NY.ANID:XtTloFXy
dbでの検索をより高速にするために[a-zA-Z0-9]の文字列を数値化してるんですが
ハッシュ→10進数って変換する以外にいい方法無いでしょうか?
0668nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
バイナリ文字列を4バイトずつ整数として扱えばいい。
0669nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
dbでの検索をより高速にするために?
0670nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
>>669
質問するのにID出さない糞は二度とくるな
0671nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
なんでそんなことしようと思ったんだろうね
0672nobodyさん2013/07/14(日) NY:AN:NY.ANID:XtTloFXy
本当に申し訳ないんですが具体的なコードはどうなるんでしょうか?ヒントや流れだけでも
phpでバイナリって単語自体初めてなんで
0673nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
バイナリ文字列 = PHPで扱える文字列。特に日本語やアルファベットに限らない物。
バイナリ文字列と整数の変換はpack unpackなど。
0674nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
しかしハッシュの方が計算も検索はやいだろう。同じハッシュになって衝突する可能性はあるが。
文字列全体を、複数個の整数に変換したら、検索複数回と整数変換のコストがかかる。まだ文字列そのまま検索したほうがマシ。
0675nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
62進数とみなして計算する方法もあるけど、
文字数が長いとき計算があふれたりするので1文字づつ10進数2桁に置き換えてしまえ。

DB早くならんけどな。 index張れば済むんじゃねーの?
0676nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
Googleだったか?がこの世のすべての情報を数値化して記録するって話でindexは数値ッショとか言ってたな
メリットはよくわかんね
■ このスレッドは過去ログ倉庫に格納されています