PHP質問・雑談スレ5【初心者お断り(ROM歓迎)】
■ このスレッドは過去ログ倉庫に格納されています
PHPに関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。
PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
https://mevius.5ch.net/tech/ (【PHP】で板内を検索)
前スレ
https://medaka.5ch.net/test/read.cgi/php/1498653249/
その他リンク
・PHPマニュアル
https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
https://ideone.com/
・プログラミングのお題スレ (求PHPer参戦)
https://mevius.5ch.net/test/read.cgi/tech/1538096947/
このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
(FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼
このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
(HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造 質問したいことがあるのですが
って書こうとしたけどその前にphp.netを探したら問題解決しました php.netの内容は本当にすごいから一回読破して欲しい
phpで何が出来るかよく分かる php内で出力をgzencodeして吐き出すのと
Apacheのmod_deflate.cにお任せするのとどちらが負荷が少ないですか? >>26
現実的に差がセロなので、わざわざ試す暇人がいない
自分で試した方が早い
その書き込みする労力でできるんじゃないか? 試したアホがここにいる…phpでやったほうが30%ほど早くなった… phpでidentityで書き出してアパッチが回収して圧縮とか二度手間 filter_input関数の 「 FILTER_FLAG_STRIP_LOW 」 を使うと0〜31までの制御文字が除去?されますが、
nl2br関数で改行を反映させたい場合、preg_replace関数の正規表現で対応するしかないですか !?
良い方法を教えてください(´・ω・`) 最近のChromeやFirefoxって、完全にアプリを落とすまでCookie削除が効かないですよね?
自分がヘボいのかもですが、
ちゃんとCookieを削除してログオフされる方法はありますか?
PHPとJavaScriptで二重に削除してるけど管理ツールで見ると残っています。
ログアウト後に、そのままサイト内URLを叩くとアクサスできるのがカッコ悪いです。 きちんと削除できてないか、pluginとかが悪さしてるのではなく? いえ、アドオンとかは特に入れてなくてすっぴんです。
削除はPHPではdestroyや過去のCookie食わせて削除、
JavaScriptはjQueryでremoveしてます。
サブドメインまできっちり指定しろということなのでしょうか?
アホなのでわかりません。
http://yukihane.hatenablog.com/entry/201511/chrome-cookie-bug ちなみに、つい最近までFirefoxはちゃんと消えるブラウザでした。
アップデートしたらChromeと同じ挙動に変わっていました。 $_SESSION = array();
setcookie(session_name(), '', time() - 42000);
session_destroy();
この3行を順番に書けば消えるということで良いでしょうか?
session_unset() ;
も書いてあったと思います。
常駐するブラウザを落とさないと消えないですよw へ?
とりあえず極力シンプルな10行ぐらいのコードで試してみます。
ありがとうございました。 ここのスレの猛者に説明などは不要かと思うので割愛します。
リファクタリング時の凡ミスでした。
CookieもHTTPのやりとりをキャプチャして解決しました。
アホなのにブラウザのせいにして本当に申し訳ございませんでした。 CSRFがわからない(´・ω・`)
type="hidden"でトークンを隠してもウェブマスターツールで見られそうだし、さっぱり爽やかだ。 対策系なんていたちごっこなんだからCSRFの手法自体を勉強してきなさい
じゃないと確実な対策を書くことはできない セキュリティはほんと地獄
そうそうにあきらめてフレームワークに丸投げしてるわ >ウェブマスターツールで見られそうだし
理解できてない証拠 ある適度の規模になったらフレーワークだよね。
ネイティブな実装レベルを知らない人でも、
爺さんよりいいサイト作れる。 無知が使うなら規模関係ない
小規模だろうと大規模だろうと
必要なセキュリティ対策が何かすらわからないのだから ちょっとおかしいな
何らかのフレームワークを使っているからといって
CSRFを含めてセキュリティ対策が万全と保証されるわけではない
あくまでフレームワークを使って作った人の責任
フレームワークを使って作ったものにセキュリティホールがないかどうか確認できるスキルが必要になる
そんなスキルがあるなら自前でセキュリティ対策を書ける
するとフレームワークを使う理由は特化による労力削減しかなくなる そういう事をしなくて済むのが最近のフレームワークじゃん。
もちろん知識は必要だけど下のレイヤーは知らなくていい感じ。 どんな無知カスが使ってもセキュリティリスクゼロなんてフレームワークあるのですか グーグルやフェイスブックでさえお漏らしするからムリ オレオレ実フレームワークこそ正義と思ってたけどあっというまにセキュリティホールだらけになって辛かった 無知じゃ無理ってことだ
機能面もセキュリティ面も同じだが問題が出ないことはツールは保証してくれない
結局自分で仕組み上問題がないことを確認して
結局自分で実際上問題が出ないことをテストしなきゃいけない フレームワークでも何でもいいがツールが責任を持ってくれないのだから
自分(というか自社)が有事の責任を回避したいなら
最大限自衛できるスキルを持たないといけない
知らなくても済む、とはならない
高セキュリティを謳うフレームワーク使ってました、だけで裁判で過失ゼロ認定される自信があるなら良いけど 俺実装のまずさはPHPの関数が非推奨になったりするせいもある 逃げられないってやつだなあ
どうあっても回避できないもんは回避できない でもPHPもかなり良くなってきたし、NodeとかのJavaScriptよりはマシだよなあ。
あっちもPromiseとかで美しくなってきてはいるが… CSRFのワンタイムトークンって本当に有用なの?
今は同一生成元ポリシーがあるから余計なことしてなければ問題はないが
サーバでOriginの設定に問題があったりブラウザで余計なことしてる状態として
JavaScriptでGETで1回トークン含んだソースとってきて
2回めで実際のPOST先にトークン含めて送ると受理してしまわない? >>63
CSRF対策にワンタイム性は必要無いだろ >>70
ワンタイム性は必要ないというと
固定トークンとか有効とか言っちゃうのか? トークンなんてフレームワーク丸投げで何も意識せずに勝手に裏でやってくれりゃいいよ。 セキュリティのこと勉強しないやつは会話に入ってこなくていいのよ 質問
アンチウィルスソフトが重いからって止めてしまっている人のこと考えたら
ウィルス対策が100%万全でないメールクライアントなんてゴミクズだよね?
回答
止めんなよバカ 以下のページにアクセスした時、
バックグラウンドで処理を走らせようと思います
http://example.com/foo.php
foo.phpに通常のユーザーもアクセスできてしまうのですが、
404などを返したほうが良いのでしょうか?
また、その際はhtaccessを使用すれば良いでしょうか
それともphpのheaderから404を返すのでしょうか?
以下は実際の流れになります
小売業のHPで、wordpressを使っています
ルーチンとしてチラシが発生したときにページを作成し、pdfファイルと画像ファイルを添付して投稿
定期的に、一年以上前に投稿された記事とファイルを削除する必要があるので、その部分を自動化したいと思っているのです cron使え
どうしてもcron使えない状況でwp使ってるならwpに載せて管理者ログイン時以外利用不能にしろ
最悪でも単独の認証でもつけとけ 自分で管理しきれるならサードパーティのpluginを利用する手もあるが自分で管理しきれる場合だけ >>80
cronも併用していますが、シェルスクリプトを書ききれませんでした
(現在はshの中身はfoo.phpにアクセスするという物になっています)
>wpに載せて管理者ログイン時以外利用不能
>単独の認証
どちらかで実装します
ありがとうございました >>81
サードパーティーのプラグインはいつの間にかエラーだらけになりそうなので、出来る限り回避しています いやcron使えるなら使えよ
perl-cgiなんかと同様に*.phpの頭に
#!/path/to/php
って書いてchown/chmodしとくだけで済むから
sh書く必要ないし公開ディレクトリに置かずに済むだろう >>84
そんな方法があったんですか、ありがとうございます
なんとか頑張ってみます どこに書いたら良いのかわからずでここに。。。場違いだったらゴメンなさい。
Aサーバ = php.ini編集NG .htaccess内にphp_value記述OK
Bサーバ = php.ini編集OK .htaccess内にphp_value記述NG
の場合、A、Bサーバで共用できる.htaccessの書き方ってありますか?
要は、%{HTTP_HOST}などでサーバを判定して、Aサーバの場合のみ、php_valueの記述行がイキになるような書き方が出来ないものかと。 >>86
そういうことはできないと思う。
CGI(FastCGI)として動作している時の問題だと思うが、
そういうサーバではphp.iniか.htaccessに書かなくては意味のない設定を書く環境があるのでは?
それがないチープなサーバなら諦めるしかないかと。 ってか、どんなサーバーなんだよw
統一するかVPSにしとけ。 >>79
通常のユーザがアクセスできないように
ログイン認証設ければいいだけの話では レンタルなのはわかってるだろw
無駄に苦労するより統一しろよーって話だよ。 Basic認証レベルならwgetでいいし、
フォーム認証でもライブラリ使ってセッション食わればいいんじゃない? cronというかいわゆるwebcronをやろうとしてるんだろう?
>>94のとおりだよ >>97
>(現在はshの中身はfoo.phpにアクセスするという物になっています) >cronも併用していますが、シェルスクリプトを書ききれませんでした
書けないっていってんじゃん
curlかwgetいれてるだけだろうが
そんなのシェルスクリプトでもなんでもない >>97「(技術的には)sh書けないって言ってるじゃん」
>>98「(サーバーの仕様では)sh書けてるだろボケ」 みんな年末のカンファレンスに参加するの?
Web業界独特の気持ち悪いイベントに トークンで思い出した
bin2hex(random_bytes(32));ってのを見かけたんだけど これが今の主流なんかね >>101
しない
>Web業界独特の気持ち悪いイベント
これは同意だけど、まぁ最先端の金持ちオタクの集まりだから仕方ない webcronって
定期バッチ動かしたいけどサーバ仕様上cronが使えないから外部からHTTPで叩きましょう
ってなもんでしょ
他になんか意義あんの 0円 = \0 === null (ASCIIのnull 文字列)
思いついただけ WordPressのサイトで、
function.phpの中で複数のphpファイルをインクルードするのと、
---------
include_once 'file1.php' ;
include_once 'file2.php' ;
include_once 'file3.php' ;
function.phpの中に全部のコードをベタで書くのとでは、WEBサイトの表示速度に差が出ますか? C言語の
#if 条件
#else
#endif
みたいなのはPHPにはありませんか? >>113
無い
そういうのはプリプロセッサと言ってコンパイル前の処理なんだけど、
phpはコンパイル自体が無いので存在しない 自分で対象の*.phpを前処理するプログラムをphpでもcでもなんでもいいから書いて
前処理した後にphpに引数とともに引き渡せば、あるいは いや、あれ?>>116取り消し
解決とか考えなくて良いんだからcのプリプロセッサとか考えるまでもなく
普通にifで条件括って、分岐でincludeすればいいんでないかな
到達し得ないincludeは、たとえパースエラーになる代物が指定されてても無視されるわけで >>117
それで同じ事を実現できるけど、
それじゃめんどくさい事をしたいんだと思う
実は#difineもしたいとかそういうことじゃないかな。知らんけど >>115
例えばf()の改良版を作りたいので取り敢えず
古い方のf()は無効化しておきたい場合です。
#if(0)
function f(){ ・・・ }
#endif
function f(){ ・・・ } //改良版
f(); //実行 >>119
普通のifでいいじゃん
えっ と思うかもしれないが、できてしまう
if( ENABLE_EVOLVE ){
function f(){ echo 1; }
}else{
function f(){ echo 2; }
}
f(); ■ このスレッドは過去ログ倉庫に格納されています