【PHP】下らねぇ質問はID出して書き込みやがれ 128
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/05/26(日) 23:01:58.78ID:???過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0579nobodyさん
2013/07/09(火) NY:AN:NY.ANID:k7B6tgkb0580nobodyさん
2013/07/09(火) NY:AN:NY.ANID:???0582nobodyさん
2013/07/09(火) NY:AN:NY.ANID:eZcG40Bcはい。
でももっかい彼が書かないことにはどうにもならんなこれ
0583nobodyさん
2013/07/09(火) NY:AN:NY.ANID:IrNQ7IWSはい。
でももっかい彼が書かないことにはどうにもならんなこれ
0584nobodyさん
2013/07/09(火) NY:AN:NY.ANID:eZcG40Bc0585nobodyさん
2013/07/09(火) NY:AN:NY.ANID:7W64c/4qはい。
でももっかい彼が書かないことにはどうにもならんなこれ
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:BysYyNl30590nobodyさん
2013/07/10(水) NY:AN:NY.ANID:hhzOdqYqコロンの後に、exit()を用いても大丈夫ですか?
以下の文は、期待通りに動くのですが、後々、問題になるのを避けたいです。
$val = !empty($arg) ? $arg : exit('error');
0592590
2013/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:???http://codepad.org/iVif3kSL
0594590
2013/07/10(水) NY:AN:NY.ANID:E8EpK5eU<?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:85QoHIBq1じゃなく、何になって欲しいの?
不具合というなら、期待していた結果もお願いします
0596590
2013/07/10(水) NY:AN:NY.ANID:E8EpK5eU$arg = 5;
$val = !empty($arg) ? $arg : exit('error');
結果 5
これと同じ結果になるように or die を使う例を教えてください。
というか最初の質問とずれてきていますが。。
0597nobodyさん
2013/07/10(水) NY:AN:NY.ANID:???そもそも三項演算子があまりお勧めではないし、
> $val = !empty($arg) ? $arg : exit('error');
のような書き方もまあ普通はしないから、そういう書き方はあまりしない方が良いとしか言えない。
0598nobodyさん
2013/07/10(水) NY:AN:NY.ANID:???if ($val === null) exit('error');
0600nobodyさん
2013/07/10(水) NY:AN:NY.ANID:???$val = $arg;
でいいじゃん。
emptyが値を受ける5.5以降なら empty($val=$arg) or die('error'); って書けるけどさ、
素直に書くのがいいよ。
0601nobodyさん
2013/07/10(水) NY:AN:NY.ANID:85QoHIBqいろいろ見間違えてた。ごめん。
or dieを使って、同等の結果を生むコード
http://codepad.org/MExebqFq
ただ、個人的には条件演算子も、or dieも使わない書き方をすると思う。
0602nobodyさん
2013/07/10(水) NY:AN:NY.ANID:85QoHIBqunset($arg) 状態で動かすとnotice出るんじゃないの。
empty使うメリットが失われてるかと。たぶん。
0603nobodyさん
2013/07/10(水) NY:AN:NY.ANID:???0604590
2013/07/10(水) NY:AN:NY.ANID:65tBLdRF: exit() は、確かに、行儀の悪いコードですよね。
>>601
or die の使うやり方、理解できました。
コードを載せて頂き、有難うございます。
やはり、: exit()は、推奨される書き方ではないようですね。
if(){} else{} を使うと4行ほどになったり、インデントでコード量が
多く感じるので、1行にまとめたいと思った次第です。
有難うございました。
0605nobodyさん
2013/07/10(水) NY:AN:NY.ANID:???0606590
2013/07/10(水) NY:AN:NY.ANID:65tBLdRFコードが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:???どんなコード書いてるのか見てみたい
0610nobodyさん
2013/07/11(木) NY:AN:NY.ANID:9TxHvupTもし読んでいないならマーチンファウラーのリファクタリングを読んでみて。
>>607
> そうなったらコードを生成するコードのほうを管理する
大抵の場合、それは悪。
そうする場合は最大限の注意を払わなければ代償は信じられないほど大きい。
0612nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???$arg1、$arg2、$arg3、でも
$arg[1]、$arg[2]、$arg[3]、でも同じ用途に使えるだろ。
0613nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???0615nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???0616nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???0618nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???自分の手法を突っ込まれて悔しかったのか?
0619nobodyさん
2013/07/11(木) NY:AN:NY.ANID:rFR/PQIZphpのファイル名が同じだと、別のディレクトリにあっても、同じキャッシュが適用されて同じコードが実行されてしまうことを確認
これ大変困ってるんですけど解決策ないでしょうか?
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:???0623nobodyさん
2013/07/11(木) NY:AN:NY.ANID:rFR/PQIZ他にそれっぽい設定項目が見つからない…キャッシュエントリ見てみます
0624nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???ローカルで試してみたけど、ちゃんと別ものとして認識してくれたよ。
$ 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更新していないはずのbが、新しくなったaの動きをするって話じゃ
0627nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???0628nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???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どうも全てのファイルがそうなるわけではなく、何か発生する条件があるようです
厄介な問題ですねこれ…更に調べてみます
0632nobodyさん
2013/07/11(木) NY:AN:NY.ANID:u2co9nyd0633nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???0634nobodyさん
2013/07/11(木) NY:AN:NY.ANID:9TxHvupTわからないなら口出すなという定番のレスをもらうかもしれないけど、それが適切な場面とは思えないんだよなぁ
0635nobodyさん
2013/07/12(金) NY:AN:NY.ANID:iv8k8+L5適切なことを適切なことだと判断できるのなら
その時点でこの馬鹿板の住民より上だからな
0636nobodyさん
2013/07/12(金) NY:AN:NY.ANID:jzIu4enxabc.phpがclass.phpみたいな他ファイル内の親クラスを継承していて
ユーザーAがclass.phpを書き換えてUPし、apc.phpを実行したら
ユーザーBのabc.phpがユーザーAのものと同じ挙動になってしまう
ということが起きているようです
が、これが必要十分条件かわからないので、更に調べてみます
0637nobodyさん
2013/07/12(金) NY:AN:NY.ANID:GnfS9HXKいうのは、どうやっているんですか?
0638nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???0640nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???にアクセスすると、
/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:???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:???PHP=脆弱性の塊。
安全なウェブサイトを作る方法の一番最初に「PHPは使わない」
と書いてあった時代に流行った、
apacheの設定を変更して、拡張子を偽装するという手口の名残りだろう。
0646nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???PHPが使われてるかどうかも不明だし
静的に生成しているんだったらHTMLだけで実現できる。
0647nobodyさん
2013/07/12(金) NY:AN:NY.ANID:jzIu4enx0648nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???初心者が騙されて産廃を使って人生の何時間かを無駄にしないようにしてやるのも
ITに関わる者の務めの一つだと心得ている
自分さえよければそれでいい、信者増えて楽しければそれでいい、
そういった公共の福利を無視したPHP偸とは違うんたよ
0649nobodyさん
2013/07/12(金) NY:AN:NY.ANID:sxqmWfDIユーザA、Bは同一のclass.phpを参照しているの?
それとも、ユーザごとに分かれている?
>>637
みんなが書いてるように、mod_rewriteとかで実現してる。
ただ、HTMLの問題だとか、HTMLで実現してるという言葉はうそなので信用しないように。
0650nobodyさん
2013/07/12(金) NY:AN:NY.ANID:iv8k8+L50651きら 忍法帖【Lv=40,xxxPT】(1+0:8) ◆Kira.u9zNc
2013/07/13(土) NY:AN:NY.ANID:9o8w/PODCGIのhttp://hoge.com/fuga.cgi/foo/のように、
PHPでもbar.php?foobar=testではなく、
bar.php/foobar/test/というように
パラメータを渡す方法を教えてください
0653nobodyさん
2013/07/13(土) NY:AN:NY.ANID:I87hYon8それもapacheならmod_rewriteでできる。
自分でやるのが面倒なら、フレームワーク使うなど。
0654nobodyさん
2013/07/13(土) NY:AN:NY.ANID:???それはサーバーソフト依存。
0655nobodyさん
2013/07/13(土) NY:AN:NY.ANID:MyVXWbK4$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:???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:???広告代はどっちが得なんだろう
0658nobodyさん
2013/07/13(土) NY:AN:NY.ANID:MyVXWbK4ありがとうございます。
送り手も受けても間違いなくUTF-8に設定されています。
JSONを使うのは仕様なので、変更できないんです…。
0660nobodyさん
2013/07/13(土) NY:AN:NY.ANID:???PHPの設定と、扱える文字コードは同じではない。
0661nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???本当にお前らって時間をドブに捨てるのが好きだよなw
0663nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???0664nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???0665nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???0667nobodyさん
2013/07/14(日) NY:AN:NY.ANID:XtTloFXyハッシュ→10進数って変換する以外にいい方法無いでしょうか?
0668nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???0669nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???0671nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???0672nobodyさん
2013/07/14(日) NY:AN:NY.ANID:XtTloFXyphpでバイナリって単語自体初めてなんで
0673nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???バイナリ文字列と整数の変換はpack unpackなど。
0674nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???文字列全体を、複数個の整数に変換したら、検索複数回と整数変換のコストがかかる。まだ文字列そのまま検索したほうがマシ。
0675nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???文字数が長いとき計算があふれたりするので1文字づつ10進数2桁に置き換えてしまえ。
DB早くならんけどな。 index張れば済むんじゃねーの?
0676nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???メリットはよくわかんね
■ このスレッドは過去ログ倉庫に格納されています