PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 8
http://mevius.5ch.net/test/read.cgi/tech/1489506082/
次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
【PHP】下らねぇ質問はここに 9
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 538a-od5V)
2017/12/20(水) 18:00:20.28ID:1xaO/YRR0625デフォルトの名無しさん (ワッチョイ ae81-7GfT)
2018/09/06(木) 21:39:08.51ID:xdo6cDUj0626デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/06(木) 22:24:24.23ID:bmlthp5L0627デフォルトの名無しさん (ワッチョイ 8b80-f65Y)
2018/09/06(木) 22:27:25.22ID:64ZwjQvb0 はい低学歴知恵遅れ図星
ごまかそうとしても
もうバレてるからな
分かりやすいわ。。。
ごまかそうとしても
もうバレてるからな
分かりやすいわ。。。
628デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/06(木) 22:52:05.75ID:bmlthp5L0 正解です。でも知恵遅れはないよ。
629デフォルトの名無しさん (ワッチョイ ae81-7GfT)
2018/09/06(木) 22:55:48.48ID:xdo6cDUj0 冗談は冗談が通じる相手にしないと
この質問者はPOSTとGETについて理解できていないんだから
冗談だとは受けとってないと思うぞ
この質問者はPOSTとGETについて理解できていないんだから
冗談だとは受けとってないと思うぞ
630デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/06(木) 22:59:57.65ID:bmlthp5L0 冗談とは言え、とりあえずパケットキャプチャしてみたら?に行き着いて欲しかったんだけどな。
その後、フレームワークなりの変数の検査するとか。
やり方を切り分けて絞り込んでいかないといけない。
その後、フレームワークなりの変数の検査するとか。
やり方を切り分けて絞り込んでいかないといけない。
631デフォルトの名無しさん (ワッチョイ 7ad0-O+me)
2018/09/07(金) 09:44:56.47ID:9ghtkfrV0 PHPを始めたのですが分からないことがあるので教えてください。
https://qiita.com/mpyw/items/2f9955db1c02eeef43ea
上記ウェブサイトに次のコードがあるのですが、配列?を使用する理由を教えてください。
if (!isset($_POST['email'])) {
$errors[] = 'Eメールアドレスが送信されていません';
} elseif ($_POST['email'] === '') {
$errors[] = 'Eメールアドレスが入力されていません';
}
よろしくお願いします。
https://qiita.com/mpyw/items/2f9955db1c02eeef43ea
上記ウェブサイトに次のコードがあるのですが、配列?を使用する理由を教えてください。
if (!isset($_POST['email'])) {
$errors[] = 'Eメールアドレスが送信されていません';
} elseif ($_POST['email'] === '') {
$errors[] = 'Eメールアドレスが入力されていません';
}
よろしくお願いします。
632デフォルトの名無しさん (ワッチョイ bbb3-fTNn)
2018/09/07(金) 10:03:27.93ID:0+aYiLfb0 >>631
この例文の中では特に意味はない。post したページに戻る際、エラーをまとめて送る時に使う。
この例文の中では特に意味はない。post したページに戻る際、エラーをまとめて送る時に使う。
633631 (ワッチョイ 7ad0-O+me)
2018/09/07(金) 10:16:38.86ID:9ghtkfrV0634デフォルトの名無しさん (ワッチョイ 7ad0-O+me)
2018/09/09(日) 16:54:11.51ID:kcIkPUJb0 HTMLとPHPを使ってメールを送信するため、次のように書いたのですが、良いか悪いか判断ができません。
右も左も分からないため、どのようなことでも構いませんのでアドバイスをください。
メールは【入力】→【確認】→【送信】の流れで送信されます。
どうか、よろしくお願いします。
【input.php】
https://ideone.com/cEGHAA
↓
【check.php】
https://ideone.com/R9GueN
↓
【thanks.php】
https://ideone.com/R2mR1b
右も左も分からないため、どのようなことでも構いませんのでアドバイスをください。
メールは【入力】→【確認】→【送信】の流れで送信されます。
どうか、よろしくお願いします。
【input.php】
https://ideone.com/cEGHAA
↓
【check.php】
https://ideone.com/R9GueN
↓
【thanks.php】
https://ideone.com/R2mR1b
635デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/10(月) 09:10:57.34ID:LEZi3nV80 form.php
confirm.php
send.php
こうすると良いと思う
confirm.php
send.php
こうすると良いと思う
636634 (ワッチョイ 7ad0-O+me)
2018/09/10(月) 14:59:46.15ID:Jh3v7l2E0637デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/10(月) 20:03:31.22ID:LEZi3nV80 ネタにマジレスしてるんで、仕方ないからチラ見してみた。
このスレのダメな例の集大成みたいだな。
受け取った値の長さに制限を掛けて、巨大データを受け入れないようにする。
HTML側でもmaxlengthやtype="email"やrequiredを使うと気休めになるかも。
PHP側でも長さをチェックする。
filter_inputの使い方が違う。
受け取った価をあえて$_SESSIONに入れてどうする?
それは使わずに$subjectとかに代入する。
mail関数に入れるデータはエンコードするか、mb_send_mailを使う。
あとは動いてるならいいんじゃない?
このスレのダメな例の集大成みたいだな。
受け取った値の長さに制限を掛けて、巨大データを受け入れないようにする。
HTML側でもmaxlengthやtype="email"やrequiredを使うと気休めになるかも。
PHP側でも長さをチェックする。
filter_inputの使い方が違う。
受け取った価をあえて$_SESSIONに入れてどうする?
それは使わずに$subjectとかに代入する。
mail関数に入れるデータはエンコードするか、mb_send_mailを使う。
あとは動いてるならいいんじゃない?
638デフォルトの名無しさん (オイコラミネオ MM53-eFvF)
2018/09/10(月) 21:25:32.24ID:AQjUY5xrM 勉強のためならいいけどガチでサービスに導入とかはしない方がいいと思うよ
既存のサービス使った方が絶対に安全
既存のサービス使った方が絶対に安全
639デフォルトの名無しさん (ワッチョイ 532a-5rD0)
2018/09/11(火) 12:49:51.36ID:swAVBRLl0 class内のプロパティに関数って指定できないでしょうか?
class Test {
public $date = date("Y-m-d");
}
というイメージです。これを記述しても
Parse error: syntax error, unexpected '(', expecting ',' or ';'
というエラーが出るので無理だと思っているのですが、
できる方法があれば教えてください。
class Test {
public $date = date("Y-m-d");
}
というイメージです。これを記述しても
Parse error: syntax error, unexpected '(', expecting ',' or ';'
というエラーが出るので無理だと思っているのですが、
できる方法があれば教えてください。
640デフォルトの名無しさん (ワッチョイ 8723-eFvF)
2018/09/11(火) 13:07:18.10ID:B2tEflKb0 やり方はいろいろあるが、一般的にはコンストラクタの中で代入するんじゃないかな
641デフォルトの名無しさん (オイコラミネオ MM53-eFvF)
2018/09/11(火) 13:07:35.88ID:7DNsPvsqM やり方はいろいろあるが、一般的にはコンストラクタの中で代入するんじゃないかな
642634 (ワッチョイ 7ad0-O+me)
2018/09/11(火) 17:53:48.50ID:sA/7deNB0 >>637
アドバイスありがとうございます。
次を課題に学習を進めたいと思います。
・HTMLとPHPで値の長さに制限を掛ける
・filter_inputの使い方を理解する
mail関数に関してもmb_send_mail関数と合わせて考え直します。
セッション変数については入力されたデータを持ちまわる体で使用しようと考えているのですが、type="hidden"の方が良いのでしょうか。
今は自身の理解が不足しているので、もう一度最初から取り組みます。
アドバイスありがとうございました。
>>638
アドバイスありがとうございます。
やはり既存のサービスの方が安全ですか。
今は自身のために勉強したいと思います。
アドバイスありがとうございました。
アドバイスありがとうございます。
次を課題に学習を進めたいと思います。
・HTMLとPHPで値の長さに制限を掛ける
・filter_inputの使い方を理解する
mail関数に関してもmb_send_mail関数と合わせて考え直します。
セッション変数については入力されたデータを持ちまわる体で使用しようと考えているのですが、type="hidden"の方が良いのでしょうか。
今は自身の理解が不足しているので、もう一度最初から取り組みます。
アドバイスありがとうございました。
>>638
アドバイスありがとうございます。
やはり既存のサービスの方が安全ですか。
今は自身のために勉強したいと思います。
アドバイスありがとうございました。
643デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/11(火) 19:04:42.02ID:Of5zYKw20644デフォルトの名無しさん (ワッチョイ 96d5-tygy)
2018/09/11(火) 20:24:28.80ID:NY6FXi0j0 このくらいのフォームなら hidden の方がいいんじゃね。
セッションでなんかメリットある?
セッションでなんかメリットある?
645デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/11(火) 21:33:19.08ID:Of5zYKw20 使い方を間違えてるから正した方が良いと思っただけ
646634 (ワッチョイ 7ad0-O+me)
2018/09/12(水) 08:16:38.34ID:uWMSldyR0647デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/12(水) 08:31:17.86ID:t1WfAWi+0 >>646
う、うん。
でも一番はそこじゃないんだな。
スーパーグローバル変数を書き換えるべきではないのに、
そらをしてしまっているところね。
そもそもスーパーグローバルを使わないためのfilter_inputだから。
最初は誰でもそんなもんだから頑張ってね。
う、うん。
でも一番はそこじゃないんだな。
スーパーグローバル変数を書き換えるべきではないのに、
そらをしてしまっているところね。
そもそもスーパーグローバルを使わないためのfilter_inputだから。
最初は誰でもそんなもんだから頑張ってね。
648634 (ワッチョイ 7ad0-O+me)
2018/09/12(水) 08:36:21.52ID:uWMSldyR0649デフォルトの名無しさん (ワッチョイ 5e92-fTNn)
2018/09/12(水) 11:26:01.33ID:/jhmkHwQ0 どうしてもわからないので質問お願いします。
私はWindows7でxamppを使いPHPを動かしています。
類似画像の比較のため「libpuzzle」というライブラリを使いたいのですが、インストールのやり方がわかりません。
インストールが簡単とのことで下記のページを参考にしようと思っているのですが、何をやっているのかわかりません。
https://fei-yen.jp/maya/wordpress/blog/2011/05/05/php%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E9%A1%9E%E4%BC%BC%E5%BA%A6%E5%88%A4%E5%AE%9A%E3%81%AE%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/
ひとまず「libpuzzle-0.11.tar.bz2」はダウンロードしました。
私はWindows7でxamppを使いPHPを動かしています。
類似画像の比較のため「libpuzzle」というライブラリを使いたいのですが、インストールのやり方がわかりません。
インストールが簡単とのことで下記のページを参考にしようと思っているのですが、何をやっているのかわかりません。
https://fei-yen.jp/maya/wordpress/blog/2011/05/05/php%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E9%A1%9E%E4%BC%BC%E5%BA%A6%E5%88%A4%E5%AE%9A%E3%81%AE%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/
ひとまず「libpuzzle-0.11.tar.bz2」はダウンロードしました。
650デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/12(水) 12:09:08.51ID:t1WfAWi+0 そのURLを見たけど、tarファイルを展開してLinuxでコンパイルしてるよね。
この時点でWindowsはまったく該当しないので見てもわかるわけない。
Windows用のコンパイル済みバイナリをインストールするのが正解かと。
それか、そのファイルをWindowsで自前コンパイルするか。
この時点でWindowsはまったく該当しないので見てもわかるわけない。
Windows用のコンパイル済みバイナリをインストールするのが正解かと。
それか、そのファイルをWindowsで自前コンパイルするか。
651デフォルトの名無しさん (ワッチョイ 5e92-fTNn)
2018/09/12(水) 12:24:56.89ID:/jhmkHwQ0 ありがとうございます。
いくつか調べてlibpuzzleがC言語で作られているはわかりました。
Windowsだとsoファイルではなくdllファイルで動かすみたいだから
libpuzzle.cをコンパイルしてdllにする、という感じなのでしょうか?
いくつか調べてlibpuzzleがC言語で作られているはわかりました。
Windowsだとsoファイルではなくdllファイルで動かすみたいだから
libpuzzle.cをコンパイルしてdllにする、という感じなのでしょうか?
652デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/12(水) 12:36:07.34ID:t1WfAWi+0 はい。恐らく…
653デフォルトの名無しさん (ワッチョイ 5e92-fTNn)
2018/09/12(水) 14:11:08.65ID:/jhmkHwQ0 C言語は…、ちょっというかさっぱりわからないですね…。
GitHubでlibpuzzleの解凍されたフォルダが有りました。
https://github.com/jedisct1/libpuzzle
もし参考になれば
GitHubでlibpuzzleの解凍されたフォルダが有りました。
https://github.com/jedisct1/libpuzzle
もし参考になれば
654デフォルトの名無しさん (ワッチョイ 96d5-tygy)
2018/09/12(水) 16:38:39.22ID:bjh9HqnE0 >>647
そこで言ってるスーパーグローバルの書き換えって $_SESSION のこと?
そこで言ってるスーパーグローバルの書き換えって $_SESSION のこと?
655デフォルトの名無しさん (ワッチョイ 569f-vdZN)
2018/09/12(水) 19:23:24.37ID:t1WfAWi+0 >>654
そう。
言われてハッとしたんだが、もしかして俺すげー嘘ついてる?
フレームワーク無しなら$_SESSIONに代入せざるを得ないか?
何かもう忘れたわ。
適当な記憶でたまに嘘ぶっこくから少し自重する。
そう。
言われてハッとしたんだが、もしかして俺すげー嘘ついてる?
フレームワーク無しなら$_SESSIONに代入せざるを得ないか?
何かもう忘れたわ。
適当な記憶でたまに嘘ぶっこくから少し自重する。
656デフォルトの名無しさん (ワッチョイ ae81-7GfT)
2018/09/12(水) 19:28:11.72ID:WDc70fCa0 面白い議論だと思ってたんだけど
できれば続けてくださいな
セッションは使用禁止にすべきかどうかまで
できれば続けてくださいな
セッションは使用禁止にすべきかどうかまで
657デフォルトの名無しさん (ワッチョイ 96d5-tygy)
2018/09/12(水) 21:31:55.13ID:bjh9HqnE0658デフォルトの名無しさん (ワッチョイ 5e92-fTNn)
2018/09/12(水) 23:14:04.91ID:/jhmkHwQ0 libpuzzleはインストールが困難と判断したので、
他のものを調べたところ、Perceptual Hashが良さそうだったので変更しました。
コンポーザーをダンロードして、インストールはできました。
ですが、実行すると「Uncaught Error: Class 'Jenssegers\ImageHash\ImageHash' not found」といったように認識されません。
Windows7のXAMPPだとuseの書き方が違うのでしょうか?
ソースは以下の通りです。
use Jenssegers\ImageHash\ImageHash;
use Jenssegers\ImageHash\Implementations\DifferenceHash;
$hasher = new ImageHash(new DifferenceHash());
$hash = $hasher->hash('path/to/image.jpg');
echo $hash;
// or
echo $hash->toHex();
他のものを調べたところ、Perceptual Hashが良さそうだったので変更しました。
コンポーザーをダンロードして、インストールはできました。
ですが、実行すると「Uncaught Error: Class 'Jenssegers\ImageHash\ImageHash' not found」といったように認識されません。
Windows7のXAMPPだとuseの書き方が違うのでしょうか?
ソースは以下の通りです。
use Jenssegers\ImageHash\ImageHash;
use Jenssegers\ImageHash\Implementations\DifferenceHash;
$hasher = new ImageHash(new DifferenceHash());
$hash = $hasher->hash('path/to/image.jpg');
echo $hash;
// or
echo $hash->toHex();
659デフォルトの名無しさん (ワッチョイ 5e92-fTNn)
2018/09/12(水) 23:14:32.81ID:/jhmkHwQ0660デフォルトの名無しさん (ワッチョイ 9776-ebpV)
2018/09/13(木) 00:39:50.34ID:Mmakf2Wk0 ちゃんとautoload.phpをrequireしてるか?
661デフォルトの名無しさん (ワッチョイ bf9f-ID1G)
2018/09/13(木) 07:41:47.23ID:WElsz8IU0662デフォルトの名無しさん (ワッチョイ 17b3-+ow7)
2018/09/13(木) 08:13:46.95ID:1dHQYyj40 投稿フォームは、確認画面なくすと session 使う必要がなくて、スマートな実装になるよ。
そもそも確認が必要な内容かどうか検討してみると良いです。
確認が必須なら、モーダルで一旦表示させて投稿させると UX も向上して happy。
ただ、画面はちょっとややこしくなるけどねぇ。。。
そもそも確認が必要な内容かどうか検討してみると良いです。
確認が必須なら、モーダルで一旦表示させて投稿させると UX も向上して happy。
ただ、画面はちょっとややこしくなるけどねぇ。。。
663デフォルトの名無しさん (ワッチョイ 7f92-+ow7)
2018/09/13(木) 09:25:37.97ID:Rrxby3/D0664デフォルトの名無しさん (ワッチョイ 9fd0-cC+K)
2018/09/13(木) 17:07:19.50ID:yxnhKk7t0 >>634のfilter_inputって使い方間違ってるん?(´・ω・`)
665デフォルトの名無しさん (ワッチョイ bf9f-ID1G)
2018/09/13(木) 18:13:28.78ID:WElsz8IU0 美しさはともかく、間違ってはいない。
勘違いしていたのは俺…
申し訳ないです。
勘違いしていたのは俺…
申し訳ないです。
666デフォルトの名無しさん (スッップ Sdbf-t6RF)
2018/09/14(金) 11:13:27.37ID:LYVyvVvXd 提唱者が逃げ出したから、
こういう時にどう使ったら良いか
教えてくれない
こういう時にどう使ったら良いか
教えてくれない
667デフォルトの名無しさん (ワッチョイ 9fd0-cC+K)
2018/09/15(土) 11:16:20.77ID:h4tGgfju0 ユーザー入力を画面上に表示する場合、どんな時でもhtmlspecialchars関数を使った方がいいんですか !?
668デフォルトの名無しさん (ワッチョイ 17b3-+ow7)
2018/09/15(土) 11:29:57.48ID:4K9/kzuG0 >>667
個人的にはここの説明が納得しやすかった
https://qiita.com/mpyw/items/19e6fed835ccdbcb0d6d
画面表示で Content-Type: text/plain の時は、当然だけど必要無い。
text/html な中で、text/plain はちょっと思いつかなかった。
だれかフォローよろしくw
個人的にはここの説明が納得しやすかった
https://qiita.com/mpyw/items/19e6fed835ccdbcb0d6d
画面表示で Content-Type: text/plain の時は、当然だけど必要無い。
text/html な中で、text/plain はちょっと思いつかなかった。
だれかフォローよろしくw
669デフォルトの名無しさん (ワッチョイ 97b8-Moip)
2018/09/16(日) 09:00:18.99ID:yeSA5Nar0 考えられるパターンとしては
1.入力値の検証はせずそのまま出力する
2.入力値の検証はせずhtmlspecialcharsを使う
3.入力値の検証→問題はないのでそのまま出力
4.入力値の検証→問題なのでhtmlspecialcharsを使う
5.入力値の検証→問題はないがhtmlspecialcharsを使う
6.入力値を出力前に無害化してそのまま出力
1は当然やっちゃだめ
6は元の入力値と異なる可能性が生まれるので使うなら重要でない箇所限定(非推奨)
5は冗長だが5が一番おすすめ
1.入力値の検証はせずそのまま出力する
2.入力値の検証はせずhtmlspecialcharsを使う
3.入力値の検証→問題はないのでそのまま出力
4.入力値の検証→問題なのでhtmlspecialcharsを使う
5.入力値の検証→問題はないがhtmlspecialcharsを使う
6.入力値を出力前に無害化してそのまま出力
1は当然やっちゃだめ
6は元の入力値と異なる可能性が生まれるので使うなら重要でない箇所限定(非推奨)
5は冗長だが5が一番おすすめ
670デフォルトの名無しさん (ワッチョイ 9f80-bWaM)
2018/09/16(日) 19:43:02.43ID:Fs79WbqO0 phpの質問じゃないかもしれないんだけど
URLから指定のディレクトリにアクセスした時に
ファイル名が何だろうと指定のファイルを参照させることって出来ますか?
hoge.com/rand/test.txt
hoge.com/rand/aaa.jpg
randディレクトリにアクセスしたら
ファイルの有無に関わらず
hoge.com/rand/index.phpを参照させて
test.txtやaaa.jpgのURL文字列に応じて
phpが振る舞いを変えてコンテンツを表示させたいです
そんなこと可能でしょうか?
URLから指定のディレクトリにアクセスした時に
ファイル名が何だろうと指定のファイルを参照させることって出来ますか?
hoge.com/rand/test.txt
hoge.com/rand/aaa.jpg
randディレクトリにアクセスしたら
ファイルの有無に関わらず
hoge.com/rand/index.phpを参照させて
test.txtやaaa.jpgのURL文字列に応じて
phpが振る舞いを変えてコンテンツを表示させたいです
そんなこと可能でしょうか?
671デフォルトの名無しさん (ワッチョイ 9f80-bWaM)
2018/09/16(日) 19:57:17.91ID:Fs79WbqO0 要するに
hoge.com/rand/aaa.jpg
を見てるつもりで
hoge.com/rand/index.php?q=aaa.jpg
で内部的に処理して返したいってことです
hoge.com/rand/aaa.jpg
を見てるつもりで
hoge.com/rand/index.php?q=aaa.jpg
で内部的に処理して返したいってことです
672デフォルトの名無しさん (ワッチョイ 9776-ebpV)
2018/09/16(日) 20:17:40.26ID:xrMzIoGe0 mod_rewrite使うとか
673デフォルトの名無しさん (ワッチョイ 7f9f-AvBu)
2018/09/16(日) 20:28:28.45ID:Lgam3puB0 file(”aaa.jpg”)
で表示できたような
で表示できたような
674デフォルトの名無しさん (ワッチョイ 7f9f-AvBu)
2018/09/16(日) 20:31:03.90ID:Lgam3puB0 print file($_GET[q])
だったかな
忘れた
だったかな
忘れた
675デフォルトの名無しさん (ワッチョイ ff81-okpm)
2018/09/17(月) 01:27:02.97ID:aY8QKU/10 >>671
mod_rewriteを使って、
RewriteCond %{REQUEST_FILENAME} hoge.com/rand/(.*)$
RewriteRule ^hoge.com/rand/(.*)$ %1/%2/index.php?q=$1
こんな感じでリクエストを書き直す?
うまく行くかちょっと自信ない
mod_rewriteを使って、
RewriteCond %{REQUEST_FILENAME} hoge.com/rand/(.*)$
RewriteRule ^hoge.com/rand/(.*)$ %1/%2/index.php?q=$1
こんな感じでリクエストを書き直す?
うまく行くかちょっと自信ない
676デフォルトの名無しさん (ワッチョイ 9fd0-cC+K)
2018/09/17(月) 11:11:17.62ID:B1zUo4Ps0 PHPの処理はHTMLの外で行い、結果だけをHTMLの中に表示する方法が良いんですか?(´・ω・`)
677デフォルトの名無しさん (ワッチョイ bfd5-Un1/)
2018/09/17(月) 12:21:19.45ID:hbuTlOjm0 >>676
その方がいいと思うよ。
HTMLを修正する理由と処理を修正する理由は大抵違うから、それぞれ分けておくと都合がいいと思う。
分業の面でもいいし、処理の見通しも良くなる。
ただそう作るなら、表示(見た目)のためのコードは処理側から排除するのがいいと思う。
エスケープはもちろん、例えばマイナスの数値を表示するのに▲を付ける仕様だったとして、それを行うコードはHTML側に実装する感じ。
処理側で▲付きの文字列を作るようなことするとカオスになっていく。
その方がいいと思うよ。
HTMLを修正する理由と処理を修正する理由は大抵違うから、それぞれ分けておくと都合がいいと思う。
分業の面でもいいし、処理の見通しも良くなる。
ただそう作るなら、表示(見た目)のためのコードは処理側から排除するのがいいと思う。
エスケープはもちろん、例えばマイナスの数値を表示するのに▲を付ける仕様だったとして、それを行うコードはHTML側に実装する感じ。
処理側で▲付きの文字列を作るようなことするとカオスになっていく。
678デフォルトの名無しさん (ワッチョイ bfd5-Un1/)
2018/09/17(月) 12:29:30.95ID:hbuTlOjm0 >>676
そしてPHPはHTMLを分けるというのが非常に簡単にできるから、やらなくちゃ損くらいに思った方がいい。
<?php
:
いろいろ処理;
:
include 'gamen.html';
?>
みたいに include するだけで表示されるんだから。
実際には gamen.html にはわずかなPHPコードも入る純粋な HTML ではないから拡張子を .html とするよりは、.php なり .tpl(テンプレート)なりそれっぽいのにしておくといいと思う。
案外 .php にしておくと、ブラウザからそれを直接見てもPHPのコードは直接見えないから手軽な安全策かも。
そしてPHPはHTMLを分けるというのが非常に簡単にできるから、やらなくちゃ損くらいに思った方がいい。
<?php
:
いろいろ処理;
:
include 'gamen.html';
?>
みたいに include するだけで表示されるんだから。
実際には gamen.html にはわずかなPHPコードも入る純粋な HTML ではないから拡張子を .html とするよりは、.php なり .tpl(テンプレート)なりそれっぽいのにしておくといいと思う。
案外 .php にしておくと、ブラウザからそれを直接見てもPHPのコードは直接見えないから手軽な安全策かも。
679デフォルトの名無しさん (ワッチョイ 9fd0-cC+K)
2018/09/17(月) 15:38:02.41ID:B1zUo4Ps0680デフォルトの名無しさん (アウアウカー Saeb-Gwc+)
2018/09/18(火) 18:36:46.23ID:LS9+DTCza 今回乗っ取りが可能な脆弱性が発見されましたが、その脆弱性を試したいです。
どうすればいいのでしょうか?
どうすればいいのでしょうか?
681デフォルトの名無しさん (ワッチョイ 97b8-Moip)
2018/09/19(水) 12:22:09.46ID:hsm6EpoV0 Bug #76582が原因らしいからバグレポート読んでみたら?
再現コードも書いてるよ
まぁ単にXSSが可能だったってだけでそれ以上でもそれ以下でもないが
再現コードも書いてるよ
まぁ単にXSSが可能だったってだけでそれ以上でもそれ以下でもないが
682デフォルトの名無しさん (ワッチョイ bf4b-72gh)
2018/09/19(水) 20:12:04.29ID:2g+A18ll0 laravelを始めようと思うのですがrailsと比べて何が良くて何が悪いのか聞きたいです
僕自身railsはチュートリアルやったくらいしか知りません
僕自身railsはチュートリアルやったくらいしか知りません
683デフォルトの名無しさん (ワッチョイ 2d8a-Lcjh)
2018/09/20(木) 08:52:56.46ID:2cUVSblD0 set_file_buffer (stream_set_write_buffer)が動作しないということが2003年ごろから言われているみたいですが
今さっき検証してみたところやはり-1が返ってきて動作していないようです
何故こんな関数が未だに存在しているのか、わかる方よろしくお願いします
http://jp2.php.net/stream_set_write_buffer
今さっき検証してみたところやはり-1が返ってきて動作していないようです
何故こんな関数が未だに存在しているのか、わかる方よろしくお願いします
http://jp2.php.net/stream_set_write_buffer
684デフォルトの名無しさん (ワッチョイ 82d0-Y82R)
2018/09/21(金) 10:36:19.22ID:0nwAv71v0 POSTされた値を最初に変数に代入してから検証するのと、
検証してから変数に代入するのとでは安全性に違いはありますか?
変な質問で申し訳ない(´・ω・`)
検証してから変数に代入するのとでは安全性に違いはありますか?
変な質問で申し訳ない(´・ω・`)
685デフォルトの名無しさん (ワッチョイ 6d23-v8+k)
2018/09/21(金) 12:16:47.46ID:CXW/z+bx0 一概には言えないが、値の検証はその値を使う直前にやるのが一番良い
検証の後に不用意に値が書き換わってたら検証の意味がない
検証の後に不用意に値が書き換わってたら検証の意味がない
686デフォルトの名無しさん (ワッチョイ 82d0-Y82R)
2018/09/21(金) 16:41:58.26ID:0nwAv71v0687デフォルトの名無しさん (ワッチョイ fe92-tHrl)
2018/09/21(金) 18:17:31.43ID:2dxDcAKa0688デフォルトの名無しさん (ワッチョイ 82d0-Y82R)
2018/09/25(火) 17:01:58.96ID:CUEvMMrT0 if($A === $B){
$A;
}else{
$B;
}
と
if($A !== $B){
$B;
}else{
$A;
}
って どっちが良いですか !?
って聞かれても俺にはわかんねーよ(´・ω・`)
というグチ
$A;
}else{
$B;
}
と
if($A !== $B){
$B;
}else{
$A;
}
って どっちが良いですか !?
って聞かれても俺にはわかんねーよ(´・ω・`)
というグチ
689デフォルトの名無しさん (ワッチョイ be9f-gsXS)
2018/09/25(火) 17:46:06.44ID:NyMQ4nya0 名前がつかない例外を受け取ることは難しいね
690デフォルトの名無しさん (オイコラミネオ MMf5-KkRk)
2018/09/25(火) 20:15:13.42ID:yenf1piQM >>688
!== より === の方がタイプする労力が小さいから前者
!== より === の方がタイプする労力が小さいから前者
691デフォルトの名無しさん (ワッチョイ c9b8-gcds)
2018/09/25(火) 20:25:06.12ID:YkAMOZHs0 結果は同じでもどちらに主軸をおくかによってニュアンスが変わる
例えばコンサート会場でチケットを持っている人は通し持ってない人は通さない場合
チケットを持っている人を通したいに主軸を置くと普通のスタッフを連想するが
チケットを持ってない人を通さないに主軸を置くと警備員のようなもっとお硬い物を連想する
$A===$Bを比較したいのか$A!==$Bを比較したいのか
自分が何をやりたいのかどこに主軸をおきたいのか考えれば自ずと答えは出るでしょう
例えばコンサート会場でチケットを持っている人は通し持ってない人は通さない場合
チケットを持っている人を通したいに主軸を置くと普通のスタッフを連想するが
チケットを持ってない人を通さないに主軸を置くと警備員のようなもっとお硬い物を連想する
$A===$Bを比較したいのか$A!==$Bを比較したいのか
自分が何をやりたいのかどこに主軸をおきたいのか考えれば自ずと答えは出るでしょう
692デフォルトの名無しさん (ワッチョイ c99e-IBuP)
2018/09/26(水) 01:33:34.79ID:QPkmxTlR0 thenが通常処理、elseが異常(エラー)処理ってイメージ
通常処理がn種類(複数)あるって感じな場合は、二択だったとしてもswitchにしてる
通常処理がn種類(複数)あるって感じな場合は、二択だったとしてもswitchにしてる
693デフォルトの名無しさん (ワッチョイ c198-DHaP)
2018/09/26(水) 14:54:46.71ID:eJD5a6UK0 $var = getA();
if (!$var) {
$var = getB();
}
if (!$var) {
$var = getC();
}
if (!$var) {
$var = getD();
}
if (!$var) {
return false;
}
return $var;
こういうコードをもっとスッキリさせる書き方ってないですか?
if (!$var) {
$var = getB();
}
if (!$var) {
$var = getC();
}
if (!$var) {
$var = getD();
}
if (!$var) {
return false;
}
return $var;
こういうコードをもっとスッキリさせる書き方ってないですか?
694デフォルトの名無しさん (ワッチョイ be9f-gsXS)
2018/09/26(水) 15:24:24.44ID:aA/f+lgF0 orを使うといいかも
695デフォルトの名無しさん (ワッチョイ c9b8-gcds)
2018/09/26(水) 18:40:59.41ID:we9WvBjb0 get($ident)的な関数作って
$var=false;で初期化して
["A", "B", "C", "D"]をぶん回して見つかれば$var上書きしてbreak
$var=false;で初期化して
["A", "B", "C", "D"]をぶん回して見つかれば$var上書きしてbreak
696デフォルトの名無しさん (ワッチョイ b165-coYL)
2018/09/26(水) 19:38:26.60ID:Rr41G2Hg0 短絡評価でbooleanが返ってくる言語だからなぁ
return getA() ?? getB() ?? getC() ?? getD() ?? false;
でnullが返ってくると順次後ろに落ちていくようには出来る
falseが返ってくると打ち切られて結果もfalseになる
return getA() ?? getB() ?? getC() ?? getD() ?? false;
でnullが返ってくると順次後ろに落ちていくようには出来る
falseが返ってくると打ち切られて結果もfalseになる
697デフォルトの名無しさん (ワッチョイ c198-DHaP)
2018/09/26(水) 23:01:39.30ID:eJD5a6UK0 みなさんレスありがとうございます
実際はもっとメソッド名が長く、引数が複数あり、一つ一つが若干重い処理なので
現状が一番スマートのような気がしてきました
実際はもっとメソッド名が長く、引数が複数あり、一つ一つが若干重い処理なので
現状が一番スマートのような気がしてきました
698デフォルトの名無しさん (ワッチョイ 579e-/YFy)
2018/09/27(木) 00:21:34.56ID:PI1koV5V0 Cなら関数ポインタを配列にツッコんでぶん回す
危険かどうかは触れない
危険かどうかは触れない
699デフォルトの名無しさん (ワッチョイ f7e9-S4i9)
2018/09/27(木) 10:36:27.42ID:kbPnGc7o0 メソッドに応じて引数も可変ならcall_user_func_array()使えばいいだけじゃない?
そんな大層な話しか?30秒で書けるがw
function hoge()
{
$methodArr = [
'A' => ['a', 'b'],
'B' => [],
'C' => ['c', 'd'],
];
foreach ($methodArr as $method => $params) {
if ($result = call_user_func_array($method, $params)) {
return $result;
}
}
return false;
}
そんな大層な話しか?30秒で書けるがw
function hoge()
{
$methodArr = [
'A' => ['a', 'b'],
'B' => [],
'C' => ['c', 'd'],
];
foreach ($methodArr as $method => $params) {
if ($result = call_user_func_array($method, $params)) {
return $result;
}
}
return false;
}
700デフォルトの名無しさん (ワッチョイ f7e9-S4i9)
2018/09/27(木) 10:42:54.79ID:kbPnGc7o0701デフォルトの名無しさん (ワッチョイ f7e9-S4i9)
2018/09/27(木) 10:50:13.05ID:kbPnGc7o0702デフォルトの名無しさん (ワッチョイ bfd5-E/Y9)
2018/09/27(木) 12:20:21.79ID:mllxUQ0M0703デフォルトの名無しさん (スププ Sdbf-4Fgi)
2018/09/27(木) 13:37:29.99ID:7B8reSZgd メソッドや引数が減ったり増えたり順序が変わったりした時に
699なら”コード”を触らず”定義”の修正だけで済むが
693だと”コード自体”を修正する必要があるな
699なら”コード”を触らず”定義”の修正だけで済むが
693だと”コード自体”を修正する必要があるな
704デフォルトの名無しさん (ワッチョイ 579e-/YFy)
2018/09/27(木) 13:54:32.47ID:PI1koV5V0 call_user_func_arrayなんてあったんだね。
じゃあこれ一択だわ。
理由は>703
じゃあこれ一択だわ。
理由は>703
705デフォルトの名無しさん (ワッチョイ bfd5-E/Y9)
2018/09/27(木) 13:55:31.21ID:mllxUQ0M0706デフォルトの名無しさん (ワッチョイ f7e9-S4i9)
2018/09/27(木) 14:00:23.22ID:kbPnGc7o0707デフォルトの名無しさん (ワッチョイ bfd5-E/Y9)
2018/09/27(木) 14:04:14.99ID:mllxUQ0M0708デフォルトの名無しさん (ワッチョイ 579e-/YFy)
2018/09/27(木) 14:06:18.58ID:PI1koV5V0 これは絶対にこうだって話でも何でもなく、おおよそこれまでの経験に基づく好みの方がデカいと思うけど。
>>693の実際のコードや運用保守まで知り得ないから、絶対こうだと第三者が結論づけるのはナンセンスだと思う。
自分は実際にこのようなケース(Cで)楽にメンテできた実績があるからこっちを選ぶけど、
こういう方法もあるよってディスカッションならどんどんやればいい。
>>693の実際のコードや運用保守まで知り得ないから、絶対こうだと第三者が結論づけるのはナンセンスだと思う。
自分は実際にこのようなケース(Cで)楽にメンテできた実績があるからこっちを選ぶけど、
こういう方法もあるよってディスカッションならどんどんやればいい。
709デフォルトの名無しさん (スププ Sdbf-4Fgi)
2018/09/27(木) 14:09:57.57ID:7B8reSZgd 今更include_onceなんかを使ってるしむしろ693より悪化してるという
699みたいに動作定義を配列変数にしておけばその中に更に変数やメソッドの返り値を持たせることだってできるだろうに
699みたいに動作定義を配列変数にしておけばその中に更に変数やメソッドの返り値を持たせることだってできるだろうに
710デフォルトの名無しさん (ワッチョイ bfd5-E/Y9)
2018/09/27(木) 14:10:07.99ID:mllxUQ0M0711デフォルトの名無しさん (ワッチョイ bfd5-E/Y9)
2018/09/27(木) 14:12:14.74ID:mllxUQ0M0 >>709
その変数やメソッドの返り値を定義した具体例を挙げてみてよ。
その変数やメソッドの返り値を定義した具体例を挙げてみてよ。
712デフォルトの名無しさん (ワッチョイ 175b-45+G)
2018/09/27(木) 14:15:44.50ID:dO3eQ5uW0 >>710
はたから見たらお前さんも同じようなもんだし喧嘩腰なのはむしろお前さんの方に見えるが
はたから見たらお前さんも同じようなもんだし喧嘩腰なのはむしろお前さんの方に見えるが
713デフォルトの名無しさん (ワッチョイ bfd5-E/Y9)
2018/09/27(木) 14:28:22.94ID:mllxUQ0M0714デフォルトの名無しさん (ワッチョイ 9fd0-ZVm4)
2018/09/28(金) 10:46:28.24ID:Lkb4ZCCn0 if ( ( string ) filter_input ( INPUT_POST , 'hoge' ) === '' ) { ・・・ }
↑だと入力欄が空の時に〜となりますが、
半角・全角のスペースが1つだけ入力されたの時も含めたい場合は どのように書くのが良いですか?
どなたか ご教授ください(´・ω・`)
↑だと入力欄が空の時に〜となりますが、
半角・全角のスペースが1つだけ入力されたの時も含めたい場合は どのように書くのが良いですか?
どなたか ご教授ください(´・ω・`)
715デフォルトの名無しさん (ワッチョイ 17b3-S4i9)
2018/09/28(金) 10:48:54.31ID:h3Rmmj6P0 >>714
filter_input のマニュアル見てみ。
filter_input のマニュアル見てみ。
716デフォルトの名無しさん (ワッチョイ f7e9-S4i9)
2018/09/28(金) 14:07:08.20ID:c+sKNdIa0 >>714
本当に半角スペースと全角スペースだけでいいの?
タブ"\t"とか改行コード"\rや\n"とかはOKなの?(たぶん駄目だよね)
本当に1つだけでいいの?
半角スペースが100個連続しているのはOKなの?(たぶん駄目だよね)
ってことで
UTF-8ならpreg_match()にuのパターン修飾子付けるのが楽
$hoge = (string) filter_input(INPUT_POST, 'hoge');
if ($hoge === '' || preg_match('/\A\s++\z/u', $hoge)) { }
もっと厳密にやりたいなら、弾きたい文字を文字プロパティで表現すればいい
例えば [\p{Z}\p{Cc}]++ みたいに
本当に半角スペースと全角スペースだけでいいの?
タブ"\t"とか改行コード"\rや\n"とかはOKなの?(たぶん駄目だよね)
本当に1つだけでいいの?
半角スペースが100個連続しているのはOKなの?(たぶん駄目だよね)
ってことで
UTF-8ならpreg_match()にuのパターン修飾子付けるのが楽
$hoge = (string) filter_input(INPUT_POST, 'hoge');
if ($hoge === '' || preg_match('/\A\s++\z/u', $hoge)) { }
もっと厳密にやりたいなら、弾きたい文字を文字プロパティで表現すればいい
例えば [\p{Z}\p{Cc}]++ みたいに
717デフォルトの名無しさん (ワッチョイ f7e9-S4i9)
2018/09/28(金) 14:08:24.39ID:c+sKNdIa0 で、更に言えばさw
'あいうえお'の前後に空白文字が1000個あるのはOKなの?って話にもなってくるんで
ちょいと考え方と変えて
$hoge = preg_replace('/\A\s++|\s++\z/u', '', $hoge);
こんな感じで先に文字列の前後の空白文字を取り除いてから
if ($hoge === '') { }
とするやり方なんかもあるな
'あいうえお'の前後に空白文字が1000個あるのはOKなの?って話にもなってくるんで
ちょいと考え方と変えて
$hoge = preg_replace('/\A\s++|\s++\z/u', '', $hoge);
こんな感じで先に文字列の前後の空白文字を取り除いてから
if ($hoge === '') { }
とするやり方なんかもあるな
718デフォルトの名無しさん (ワッチョイ 9765-aemA)
2018/09/28(金) 14:17:49.83ID:KTNzW9VA0 preg_match('/\A\s*+\z/u', $hoge) じゃない理由は何かあるのん
719デフォルトの名無しさん (ワッチョイ f7e9-S4i9)
2018/09/28(金) 14:29:52.16ID:c+sKNdIa0 >>718
空の時点で評価して正規表現に通さない方がいいから
だから本当に質問の通りでいいなら
if ($hoge === '' || $hoge === ' ' || $hoge === ' ')
で別にいいw
あと+じゃなく++と書いてる理由はReDoSでググればいいんじゃない?
Stack Exchange(違ったかもw)が
++じゃなく+使ってたせいでサービスダウンしたのはわりと有名
空の時点で評価して正規表現に通さない方がいいから
だから本当に質問の通りでいいなら
if ($hoge === '' || $hoge === ' ' || $hoge === ' ')
で別にいいw
あと+じゃなく++と書いてる理由はReDoSでググればいいんじゃない?
Stack Exchange(違ったかもw)が
++じゃなく+使ってたせいでサービスダウンしたのはわりと有名
720デフォルトの名無しさん (ワッチョイ 9fd0-ZVm4)
2018/09/28(金) 15:56:20.55ID:Lkb4ZCCn0721デフォルトの名無しさん (ワッチョイ 17b3-S4i9)
2018/09/28(金) 16:31:29.64ID:h3Rmmj6P0 >>720
filter として FILTER_VALIDATE_REGEXP つまり正規表現が使える。
FILTER_CALLBACK つまり、ユーザー定義の関数をコールしてデータをフィルタリングしても良い。
filter として FILTER_VALIDATE_REGEXP つまり正規表現が使える。
FILTER_CALLBACK つまり、ユーザー定義の関数をコールしてデータをフィルタリングしても良い。
722デフォルトの名無しさん (ワッチョイ 378a-tkB1)
2018/09/29(土) 10:56:37.08ID:6BMpRid40 if('aaa'==' aaa')//true
となることを発見したんですが、前方の空白は無視されるんですか?
これは正しい使い方でいいのですか?
よろしくお願いします
となることを発見したんですが、前方の空白は無視されるんですか?
これは正しい使い方でいいのですか?
よろしくお願いします
723720 (ワッチョイ 9fd0-ZVm4)
2018/09/29(土) 17:12:36.46ID:rR859Rl80724デフォルトの名無しさん (ワッチョイ 57b8-UjLZ)
2018/09/29(土) 18:16:41.98ID:DN2c19jF0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★7
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【朗報】維新「高市さんは約束を守ってくれている」連立継続へ [519511584]
- ハロワって客層悪すぎるだろwwwwwwwwwwwww
- オナニーするか😔
- VIPスクリプトだらけでワロタwwwwwwwww
