【PHP】下らねぇ質問はID出して書き込みやがれ 131
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/11/10(日) 15:46:09.34ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 130
http://kohada.2ch.net/test/read.cgi/php/1379566039/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0314nobodyさん
2013/11/19(火) 21:18:06.73ID:???0315310
2013/11/19(火) 21:37:04.47ID:XtFCM7Hlいや、エラーページは200を返す普通のページにしてたんだけど。
もちろん、存在しないページ用の404ページ(ヘッダー404)は別に用意してるんだけど。
つーか、むしろエラーページに飛ばさないで、素直に404ページに飛ばせばいいのか。
0316310
2013/11/19(火) 21:42:44.27ID:XtFCM7Hl0317nobodyさん
2013/11/19(火) 21:49:59.72ID:???厳密には200を返す必要があるときはない
0318nobodyさん
2013/11/19(火) 21:54:36.62ID:???0319310
2013/11/19(火) 22:48:57.12ID:9JiWXD43どうも頭が混乱してしまいました。
こうすれば大丈夫でしょうか?
POSTパラメーターが不正 → エラーページ
(200ステータス: echo ”リクエストが不正です”)
GETパラメーターが不正か不存在 → 404ページ
(404ステータス: echo ”ページが存在しません”)
GETパラメーターの場合に、エラーページに飛ばしていたのが、
ソフト404の原因だと思うのです。
0320nobodyさん
2013/11/19(火) 23:00:34.26ID:???RFC2616か、WikipediaのHTTPステータスコードでもいいから読んで
どういう時にどれを使えばいいか分かるから
0321nobodyさん
2013/11/19(火) 23:04:02.90ID:???hoge.phpというファイルは存在しているんだから404を返すのは不自然
0322310
2013/11/19(火) 23:29:26.30ID:9JiWXD43ご指摘に従い、HTTPステータスコード等について調べてみます。
>>321
mod_rewriteで、GETパラメーターを静的URLに書き換えてリンクとして活用しているのですが、
この場合もhoge.phpは存在するとみなされるのでしょうか?
(例)ttp:example.com/hoge/2013/11/29
9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。
わかりづらい説明ですみません。
0323nobodyさん
2013/11/19(火) 23:44:52.18ID:???実質的にはhoge.php?y=2013&m=11&d=29みたいな感じで見れると思うけど
hoge.phpが存在するというのを表向きに知られたくないのなら好きにすればいいんじゃね
目的とか実装によりけりだよそのへんは
0324nobodyさん
2013/11/19(火) 23:51:53.10ID:???ファイルがあろうがなかろうが、そのURLを存在させたくなければ404でよい
> (例)ttp:example.com/hoge/2013/11/29
> 9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。
404が適切。
0325nobodyさん
2013/11/19(火) 23:59:01.39ID:???example.com/post/ブログ記事のid
だとして、存在しないidだったときは404返してたんだけど間違ってる?
0326310
2013/11/20(水) 00:10:19.19ID:VLPy2k85(例)ttp:example.com/hoge/2013/11/29
結論として、このurlの不正な値の場合に、200のエラーページに飛ばしていたのがソフト404の原因ですよね。
ご指摘くださったことを参考に、もう一度、ページの構成と遷移、
ステータスコードの関係について検証したいと思います。
ありがとうございました。
0328nobodyさん
2013/11/20(水) 07:53:07.64ID:???自分で書いてるスクリプトなのにw
400と500のどちらかを返すだけの方が無難だよねw
0331nobodyさん
2013/11/20(水) 11:28:24.00ID:35fCUlouErrorDocument 404 /error/404.php(404ヘッダーを出力)
ここから質問です。
次のURLのid値が不正な場合、404となるよう、同様に、/error/404.php に遷移できますか?
ttp://example.com/post/id
header('Location: ttp://example.com/error/404.php');
post.phpで出すこのヘッダーは302ですが、遷移すれば、結果として404扱いになるのでしょうか?
0332nobodyさん
2013/11/20(水) 11:33:09.19ID:???0333331
2013/11/20(水) 11:36:20.51ID:35fCUlouオリジナルに作成した、いわゆる404ページです。
もしかしたら、(404ヘッダーを出力) という部分は間違いかもです。
0334nobodyさん
2013/11/20(水) 11:57:47.58ID:???そうでないなら302
不安ならPHP側で処理に合わせてheaderとresponse返すようにすればおk
0335nobodyさん
2013/11/20(水) 12:22:36.67ID:???Locationは「リソースの別の場所を案内する」ために用いられるもの
「リソースが見つからない」場合の挙動は定義されていない
各ベンダーの実装は404とLocationを一緒に出すと無視される
よって include('error/404.php'); 等とするしかない
0336331
2013/11/20(水) 12:41:10.58ID:35fCUlouありがとうございます。
header("HTTP/1.0 404 Not Found");
このヘッダー出力だけで、自動で遷移する、ErrorDocument 404 と
同様の効果があると良いのですが、どうも無理なようですね。
<?php
//idチェック処理後不正な場合
header("HTTP/1.0 404 Not Found");
include('error/404.php');
exit;
やはり、こうして読み込むしかないということですね。
ありがとうございました。
0337nobodyさん
2013/11/20(水) 12:43:47.50ID:???0340nobodyさん
2013/11/20(水) 17:32:58.48ID:???404.phpに移動していいならそれでいいね。
ただ、.htaccessにErrorDocument設定をしたのと同じ振る舞いを希望するなら、その手じゃ駄目なんじゃ。
0341nobodyさん
2013/11/20(水) 17:55:26.35ID:???最近転職してPHPを触るようになったのですが、Linux上のvimで開発しています。
開発時にインデントをある程度入れると思うのですが、普通はどのようにインデントを
入れるのが正しいソースの書き方なんでしょうか?
今触っているソースは特に改行やTABインデントがなく、そのまま1行でずっと
書かれてあり可読性としてどうなのかなと思いつつも、そういうルールかもしれないと思い
自分も特にインデント等を入れずに開発しているのですが。。
わかりにくい書き方で申し訳ありませんが、どなたか教えて頂けないでしょうか
0342nobodyさん
2013/11/20(水) 17:57:19.88ID:???整形して編集してリリース時にまた改行消す、とかでいいんじゃ?
0343nobodyさん
2013/11/20(水) 17:58:27.74ID:???後で自分が追うことになっても苦労しない程度にね
0344nobodyさん
2013/11/20(水) 18:00:00.26ID:???次の文は正しい?それとも間違い?
『転送元で302を出しても、転送先で404を出せば「ソフト404」にならない』
0345nobodyさん
2013/11/20(水) 18:00:42.18ID:???インデント、改行の入れ方はいろいろある
http://www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html
http://ja.phptherightway.com/
のコーディングスタイル
いろいろあってどれが正しいとかはないが、会社やプロダクトでどうなっているか次第
一行に書くのがルールですって言われたら会社辞めちゃいそう
0348nobodyさん
2013/11/20(水) 18:05:59.79ID:???パッと見た時に「読みにくい」と思ったのが最初です
例えば
$hoge = array('aaa' => $aaa, 'bbb' => $bbb);
のようなものがあったとして(実際はもっと多いです)
$hoge = array
(
'aaa' => $aaa,
'bbb' => $bbb
);
のように書いた方が後で見た時に読みやすいと思いまして。。
>>345
資料の方ありがとうございます。
そちらを見てみます。
0349nobodyさん
2013/11/20(水) 18:07:21.19ID:???それって最終的にそうしてるってだけで、
編集用のコメントが入ってたりインデントもちゃんと入ってるソースが別にあるでしょ?
つうか会社に人に聞きなさいよ。
0350nobodyさん
2013/11/20(水) 18:08:46.70ID:7VTPw3qr含まれる文字列に変換されることってありえませんよね?
0351nobodyさん
2013/11/20(水) 18:11:55.88ID:???0353nobodyさん
2013/11/20(水) 18:14:21.21ID:???インデントはスペース4つが普通。
いろんな文法チェッカーツールも、デフォルトではタブでインデントしてると警告を出すのが多い。
0354nobodyさん
2013/11/20(水) 18:17:04.21ID:???ないんです
聞いてみたら「昔からこうだった」らしいので。
そういうものなのかなと少し疑問に思って質問しました。すみません
>>353
TABじゃないらしいですね。
>>345さんの教えてくれたページを見て驚きました
スレ汚し申し訳なかったです
0355nobodyさん
2013/11/20(水) 18:17:34.09ID:7VTPw3qrですよね。CSVファイルに保存するとき、base64_encodeして保存してるのですが、
たまにダブルクォーテーションが余分についてファイルが壊れている事があります。
原因が全くわからないので、バグを見つけられずに困っていました。
他の原因を探ってみます。
0356nobodyさん
2013/11/20(水) 18:19:19.18ID:???PHPのインデントはスペース派が多いけど
どっちでもいいよ。会社やプロダクトで決められたほうを使うべきかな
0358nobodyさん
2013/11/20(水) 18:43:18.00ID:???vimの設定ちょこちょこしておけばインデントは勝手にやってくれるよ。
インデントを入れずに書くのはやめといたほうが。
0360nobodyさん
2013/11/20(水) 19:11:37.50ID:???PSR-2に従うならだな
従うかはMUSTではないからな
うちはPSR-1までは従ってるけど、コーディングスタイルは全然違うな
0361nobodyさん
2013/11/20(水) 19:29:19.34ID:???いい加減な事を教えないでくれ
301はリソースが一時的に別の場所に「ある」時に使う
ソフト404エラーは404を返すべきところで「404を返さない」事を指す
0362nobodyさん
2013/11/20(水) 19:45:20.59ID:???違うよ、まず301は恒久的だぞ、一時的は302
301にしろ302にしろ、リソースが新しいURIに移動したことを示す。
404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々
移動させることは勝手だし、リソースのあるなしは関係ない。
>ソフト404エラーは404を返すべきところで「404を返さない」事を指す
その通りだが、そのURIを301にしてその先で404を返すのは勝手。
その場で404を返そうがどっちでも良い
返せるならその場の方が好ましいとは言えるかもしれない
0363nobodyさん
2013/11/20(水) 19:48:23.17ID:ZNkS7nHyもし関数やライブラリがあれば教えてください。
無ければサンプルコードを教えてください。よろしくお願いします。
0364nobodyさん
2013/11/20(水) 19:52:53.93ID:ZNkS7nHy仮に、[1, 2, 3, 4, 5] の5つから3つ選び出す場合、
$result = [
[1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 1, 4], [1, 1, 5],
[1, 2, 2], [1, 2, 3], [1, 2, 4], [1, 2, 5],
...
...
[1, 5, 5],
[2, 2, 2], [2, 2, 3], [2, 2, 4], [2, 2, 5],
[2, 3, 3], [2, 3, 4], [2, 3, 5],
...
...
...
...
[5, 5, 5]
];
このように出力したいです。
0365nobodyさん
2013/11/20(水) 20:08:13.76ID:???0366nobodyさん
2013/11/20(水) 20:10:39.68ID:???0367nobodyさん
2013/11/20(水) 20:39:38.18ID:???> 違うよ、まず301は恒久的だぞ、一時的は302
ごめん、俺が取り間違えてる
> 404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々
> 移動させることは勝手だし、リソースのあるなしは関係ない。
404は適当な理由による拒否として使うコードではない (RFC 2616#10.4.5)
拒否する理由に合わせて400、401、403、406等が用意されている
> その場で404を返そうがどっちでも良い
> 返せるならその場の方が好ましいとは言えるかもしれない
Googleが決めたソフト404エラーを回避する義務がないのは同意するけど
無いものを無いと知っててクライアントに教えないのはHTTPサーバーとして行儀が悪い
今回のケースではPHPで対応できるのだから404を返すべき。この点は譲れん
0368nobodyさん
2013/11/20(水) 20:59:29.17ID:???$a = [1, 2, 3, 4, 5];
print_r (combine($a,3));
function combine($a, $n) {
if($n==1) return $a;
$result = array();
foreach ($a as $v1)
foreach (($n==2?$a:combine($a,$n-1)) as $v2)
$result[] = array_merge((array)$v1, (array)$v2);
return $result;
}
0369nobodyさん
2013/11/20(水) 21:02:06.21ID:???10.4.5
This status code is commonly used when the server does not wish to
reveal exactly why the request has been refused, or when no other
response is applicable.
書いてあるよ。
>無いものを無いと知っててクライアントに教えないのはHTTPサーバーとして行儀が悪い
301と404のセットで教えてるから良いんだよ
301を返さずに404の方が好ましいかもしれない。だがMUSTじゃないし問題なし
0370nobodyさん
2013/11/20(水) 21:25:52.44ID:???> 10.4.5
それは404の説明ではなく commonly used な
「リクエストを拒否する理由を隠したい、適当なものがない時にも使われている」という使用例だ
ソフト404エラーの話とはまた違う
> 301と404のセットで教えてるから良いんだよ
だから選択ではなくセットで使えという事が
ソフト404エラーに該当するしHTTPサーバーとしての振る舞いとしても良くないと言ってるんだ
0371nobodyさん
2013/11/20(水) 21:31:48.37ID:???0373nobodyさん
2013/11/20(水) 21:42:05.18ID:???HTTPステータスの話とソフト404の話をごっちゃにしないでくれ
ソフト404はあくまでGoogleがこれ404がいいよねってURLだ
あくまで提案であり、このままだと404と見なすよって意味だ
元の質問が、302→404としたらソフト404でなくなるかだ
答えは「なくなる」だ。これはHTTPステータスではなくGoogleの話だ
>それは404の説明ではなく commonly used な
>「リクエストを拒否する理由を隠したい、適当なものがない時にも使われている」という使用例だ
>ソフト404エラーの話とはまた違う
そのとおり、最初からソフト404エラーとしてそれを説明してないので問題ない
0375nobodyさん
2013/11/20(水) 21:48:25.66ID:???https://support.google.com/webmasters/answer/181708?hl=ja
>存在しないページに対して 404 と 410 以外のコードを返すこと(または 404 を返す代わりにホームページなど他のページにリダイレクトすること)は、問題となる可能性があります。
と書いてはあるんだ
実際は302か301で404に飛ばしても、ソフト404エラーの解決にはなる
0376nobodyさん
2013/11/20(水) 22:06:42.02ID:???そうだな対Googleの話に絞ろう
https://support.google.com/webmasters/answer/181708?hl=ja
> 存在しないページに対して 404 と 410 以外のコードを返すこと
> (または 404 を返す代わりにホームページなど他のページにリダイレクトすること)は、問題となる可能性があります。
> まず、その URL にページが存在することが検索エンジンに明示されます。
> その結果、URL がクロールされ、コンテンツがインデックスに登録される場合があります。
質問者はそのURLに対するリクエストをリダイレクトすると
ソフト404エラーにならなくなるのか?を訪ねているのだから答えはNOだ
0377nobodyさん
2013/11/20(水) 22:13:11.42ID:???どうやってコンテンツがインデックスに登録されるんだい?
404返してるページはgoogleはインデックスしないぞ
0378nobodyさん
2013/11/20(水) 22:17:24.84ID:???ごめんリロードしてなかった
俺のサーバーじゃないならリダイレクトしようが何しようが全然構わないけど、
初心者が見に来るスレだからこそ理想的な手段でやって欲しい
0379nobodyさん
2013/11/20(水) 22:23:26.54ID:???>>377
404や410を返さないURLをどう扱うかは俺ではなくGoogleが決める事
そしてソフト404エラーを回避するためには404、410を返す以外の解決手段が書かれていない
それ以上何を語ればいいんだ
0380nobodyさん
2013/11/20(水) 22:26:20.27ID:???404か410をその場で返す方が
301や302を利用して404に飛ばすより好ましい
ってレスすれば良いだけではないか
>>361の暴走が全てを狂わせた感じだな
0382nobodyさん
2013/11/20(水) 22:39:40.62ID:???これこれ。
> (または 404 を返す代わりにホームページなど他のページにリダイレクトすること)
404を返さずに404らしきページを返すことを、google用語でソフト404という。
だから、404らしきページを返すんなら、ちゃんとステータスコードも404にしろよってことだ。
0383nobodyさん
2013/11/20(水) 22:42:16.58ID:???俺の暴走だからもういいからPHPの話をしよう
/j
/__/ ‘,
// ヽ ‘, 、
// ‘ ! ヽ …わかった この話はやめよう
/イ ‘, l ’
iヘヘ, l | ’
| nヘヘ _ | | l ハイ!! やめやめ
| l_| | | ゝ ̄`ヽ | |〈 ̄ノ
ゝソノノ `ー‐’ l ! ¨/
n/7./7 ∧ j/ / iヽiヽn
|! |///7/:::ゝ r===オ | ! | |/~7
i~| | | ,’ ’/:::::::::::ゝ、 l_こ./ヾ.. nl l .||/
| | | | l {‘:j`i::::::::::::::::`ーr ‘ ||ー?{
| ‘” ̄ ̄iノ .l::::::::::::::::::::::∧ | ゝ ‘,
, 一 r‐‐l γ /、::::::::::::::::::::::::〉ー= ___ ヘ ヽ }
/ o |!:::::} / o` ー 、::::::::::::i o ,’:::::::{`ヽ ヘ ノ
/ o ノ:::::∧ /ヽ o ヽ::::::::| o i::::::::ヽ、 / /
/ ノ::::::/ /::::::::ヽ o ヽ:::| o {::::::::::::::Υ /
0385nobodyさん
2013/11/21(木) 11:52:00.88ID:???> ソフト404エラーにならなくなるのか?を訪ねているのだから答えはNOだ
ならなくなるのがNOなのか、
なるのがNOなのか。
0386nobodyさん
2013/11/21(木) 13:55:32.19ID:z+wm09wI俺は、Symfony、Zend、Cakeを利用したことがあるけど、
実際は、PurePHP派なんだ。
フレームワークは重い。
人材を探すのが難しい、学習コストがかかる(特にSymfony)
そして、案件が少ない。
と商業的にはいいとこなしなんだけど。
逆に、標準PHPは、PHPプログラマならどんなフレームワーカーでも、対応できる。
設計書とオブジェクト指向さえしっかりしていればね。
こう思うんだけど、皆はどう思ってる?まさかクールだからって理由でフレームワークを使っているわけではあるまい。
0387nobodyさん
2013/11/21(木) 13:59:57.42ID:z+wm09wI案件が多いのだろうか?
やっぱ、殆どがフレームワークでの案件?
0388nobodyさん
2013/11/21(木) 14:08:25.90ID:???フレームワークを知ってる人たちが使うと早く案件が終わるから使うってパターンが多いんじゃないの?
0389nobodyさん
2013/11/21(木) 14:33:34.62ID:???0390nobodyさん
2013/11/21(木) 14:35:35.69ID:???0391nobodyさん
2013/11/21(木) 14:37:29.80ID:???既に開発が始まってるPJにアサインされたらやるしかないけど
開発中から開発後まで使うことでメリットを感じるフレームワークならそれでいい
0392389
2013/11/21(木) 15:32:28.62ID:???> 何を使うかは受注側、それもメインプログラマが決定すべきものでしょ
リリース後、自社メンテを睨んでたんだと思うよ。
0393363-364
2013/11/21(木) 16:58:54.01ID:Bf2F+E9Zありがとうございます!!
神様と呼ばせてください!!
神様ありがとうございました!!!
0394nobodyさん
2013/11/21(木) 17:32:10.23ID:???0396nobodyさん
2013/11/23(土) 02:09:37.21ID:???0398nobodyさん
2013/11/23(土) 02:19:06.56ID:???0399nobodyさん
2013/11/23(土) 02:20:08.49ID:???次はwordperssを使いましょう
それでHPを作成販売すればお金が稼げます。実際にやってる企業も多いですよ
0401nobodyさん
2013/11/23(土) 02:23:15.44ID:???WordPressのようなものは初心者にはおすすめしません。
まずはPHPをしっかり理解して自分である程度のシステムを組めるようになること
0402nobodyさん
2013/11/23(土) 02:24:53.38ID:???使いこなすだけでプロとなんら変わらない事が出来るからやっておけw
0403nobodyさん
2013/11/23(土) 02:44:24.06ID:???0405nobodyさん
2013/11/23(土) 03:05:42.91ID:???しかも簡単。面倒臭い事は全部WordPressでやってくれる
まさに初心者向けな
必死になっちゃってる奴はライバル増えておまんま食い上げられる事でも危惧してんのか?www
0407nobodyさん
2013/11/23(土) 11:05:07.08ID:co3F0dNXローカルの開発環境だとどうやって試せばいいの?
0408nobodyさん
2013/11/23(土) 11:45:06.48ID:HUwpIheRPHPで利用できるフレームワークの選定のための準備を任せられまして
ORMでセキュリティが問題ないものを探しています
フレームワークからORMが分離できないものでも問題ないです
・クライアントの文字コードを接続時に指定できること
・クエリパラメータはプリペアードステートメントを利用していること
・識別子はクォートされること
は最低条件です
最終的には先輩エンジニアと全コードを見ることになっています
目星をつけておきたいのです
お願いしまうす
0411nobodyさん
2013/11/23(土) 12:07:02.08ID:HUwpIheRsmartyはテンプレートエンジンだと習ったのですが
ORMでsmartyがあるのでしょうか?
URLを教えていただけるとうれしいです
0412nobodyさん
2013/11/23(土) 12:12:05.98ID:???Doctrine、ZF2、PHP ActiveRecordは大丈夫
使うと怒られるだろうがPhalconPHPも大丈夫
FuelPHP、ZF1はダメ
■ このスレッドは過去ログ倉庫に格納されています