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
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 538a-od5V)
2017/12/20(水) 18:00:20.28ID:1xaO/YRR0985デフォルトの名無しさん (ワッチョイ cf81-zhOP)
2018/11/26(月) 18:34:58.26ID:9UWiUoMZ0 一つ目:イイエ
二つ目:一つ目の?
二つ目:一つ目の?
986デフォルトの名無しさん (ワッチョイ e3ab-zhOP)
2018/11/27(火) 09:20:32.54ID:bFvRPa1H0 返答ありがとうございます。
id=? っていうのは、どういう働きをするコードなのでしょう
一つ目とか、bindValue(1,$_GET['id']);の、'1'です
id=? っていうのは、どういう働きをするコードなのでしょう
一つ目とか、bindValue(1,$_GET['id']);の、'1'です
987デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 14:57:55.52ID:aBLKPQ100 >>984
>>986
SELECT * FROM sample WHERE id=?
というSQLの中で使われている「?」はプリペアドステートメントというもの
http://php.net/manual/ja/pdo.prepared-statements.php
?だと理解し難いなら名前付き(例えば今回なら :id とか)にした方が理解しやすいと思う
$hoge = $_GET['id'] ?: 1;
はエルビス演算子という三項演算子を省略した書き方
可読性が悪いのであんまり使わない方が良いと思う
・同じ事を三項演算子で書くなら
$hoge = ($_GET['id']) ? $_GET['id'] : 1;
・同じ事をif文で書くなら
if ($_GET['id']) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
だが、このケースでは、こんな書き方をしてはいけない。
(続く)
>>986
SELECT * FROM sample WHERE id=?
というSQLの中で使われている「?」はプリペアドステートメントというもの
http://php.net/manual/ja/pdo.prepared-statements.php
?だと理解し難いなら名前付き(例えば今回なら :id とか)にした方が理解しやすいと思う
$hoge = $_GET['id'] ?: 1;
はエルビス演算子という三項演算子を省略した書き方
可読性が悪いのであんまり使わない方が良いと思う
・同じ事を三項演算子で書くなら
$hoge = ($_GET['id']) ? $_GET['id'] : 1;
・同じ事をif文で書くなら
if ($_GET['id']) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
だが、このケースでは、こんな書き方をしてはいけない。
(続く)
988デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 14:59:13.82ID:aBLKPQ100 (続き)
$_GET['id']が定義されていない事を考慮した正しい書き方は
・PHP7以降ならNULL合体演算子を使って
$hoge = $_GET['id'] ?? 1;
・↑が分かり難いなら
$hoge = (isset($_GET['id'])) ? $_GET['id'] : 1;
・↑でも分かり難いなら
if (isset($_GET['id'])) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
このケースでエルビス演算子をこんな使い方するような糞コードは、あんまり参考にしない方がいい
$_GET['id']が定義されていない事を考慮した正しい書き方は
・PHP7以降ならNULL合体演算子を使って
$hoge = $_GET['id'] ?? 1;
・↑が分かり難いなら
$hoge = (isset($_GET['id'])) ? $_GET['id'] : 1;
・↑でも分かり難いなら
if (isset($_GET['id'])) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
このケースでエルビス演算子をこんな使い方するような糞コードは、あんまり参考にしない方がいい
989デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 15:06:26.62ID:aBLKPQ100 >>977も読んだが、エルビス演算子の使い方といい
いったい何を参考にしてこんなコードを書いてるんだろうか
もし本を参考にしてるなら焼き捨てた方がいいレベルで酷い
クイズ的に質問してるなら面白いけどw
いったい何を参考にしてこんなコードを書いてるんだろうか
もし本を参考にしてるなら焼き捨てた方がいいレベルで酷い
クイズ的に質問してるなら面白いけどw
990デフォルトの名無しさん (ワッチョイ c39e-qSu8)
2018/11/27(火) 16:49:32.78ID:BR30Kh7X0 演算子の説明だけだとシンプルで理解しやすいけど実用性ではクソ
実用性重視の説明だと本来説明したいもの以外の説明で蛇足だらけで
紙面使いすぎでクソ
というジレンマなんやろ
実用性重視の説明だと本来説明したいもの以外の説明で蛇足だらけで
紙面使いすぎでクソ
というジレンマなんやろ
991デフォルトの名無しさん (ワッチョイ 6fe7-sCK9)
2018/11/27(火) 18:08:09.22ID:MA03kwvb0 $input = trim(fgets(STDIN));
while($input)
{
echo $input;
}
これってwhileの式のところでは$inputの中が空かって判断してるの?そういう機能がついてるのか?
while($input)
{
echo $input;
}
これってwhileの式のところでは$inputの中が空かって判断してるの?そういう機能がついてるのか?
992デフォルトの名無しさん (ワッチョイ cf80-fhi1)
2018/11/27(火) 18:52:40.99ID:DSo9/Qg/0 >>984
SELECT * FROM sample WHERE id=?
id=? は、placement。
? の所に、値が入る
SQL injection 対策
例えば、単純な文字列をつなげて、問い合わせると、
? が「1; DROP TABLE 何々」とか、クラッカーに入力されると、
「SELECT * FROM sample WHERE id=1; DROP TABLE 何々」のように、
; で、危険なSQL文をつなげてくる
placement で、SQL文をつなげられないようにしている
SELECT * FROM sample WHERE id=?
id=? は、placement。
? の所に、値が入る
SQL injection 対策
例えば、単純な文字列をつなげて、問い合わせると、
? が「1; DROP TABLE 何々」とか、クラッカーに入力されると、
「SELECT * FROM sample WHERE id=1; DROP TABLE 何々」のように、
; で、危険なSQL文をつなげてくる
placement で、SQL文をつなげられないようにしている
993デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 19:01:55.97ID:aBLKPQ100 >>991
そのコードだと、trim(fgets(STDIN))の値が (bool) true であった場合に永久ループになるw
実際は
while ($input = trim(fgets(STDIN))) {
echo $input;
}
こう書くべき処理なのでは?
そのコードだと、trim(fgets(STDIN))の値が (bool) true であった場合に永久ループになるw
実際は
while ($input = trim(fgets(STDIN))) {
echo $input;
}
こう書くべき処理なのでは?
994デフォルトの名無しさん (ワッチョイ 6fe7-sCK9)
2018/11/27(火) 19:53:06.64ID:MA03kwvb0 while分の中では$inputをbool型にして判定してるわけか?
995デフォルトの名無しさん (ワッチョイ ffd2-f63u)
2018/11/27(火) 22:02:27.91ID:7ygBETe/0 空文字がFalse判定されることを利用して
空行入力で終わるようにしてるんだろうけど
ゼロとかもFalse判定されて終わっちゃうんじゃないか
試してないけど
空行入力で終わるようにしてるんだろうけど
ゼロとかもFalse判定されて終わっちゃうんじゃないか
試してないけど
996デフォルトの名無しさん (ワッチョイ cf80-fhi1)
2018/11/28(水) 12:01:30.07ID:eIHsuPDh0 Ruby では、nil, false の偽が2つだけ。
一方、JavaScript, Python, PHP などは、偽が10個ぐらいあるから、超危険!
基本的に、Ruby 以外は、バグってどうしようもない
一方、JavaScript, Python, PHP などは、偽が10個ぐらいあるから、超危険!
基本的に、Ruby 以外は、バグってどうしようもない
997デフォルトの名無しさん (ワッチョイ e3ab-zhOP)
2018/11/28(水) 12:52:07.66ID:yr9LfNgh0 >>987
ありがとうございました。プレイスホルダなのですね。
prepareでSQLを用いて、プレイスホルダを使うとき、
SQL文の中で、左から数えたプレイスホルダの順番を、
bindValueのカッコ内の数値で指定してバインドする、ということもわかりました。
?:や??:の解説もありがとうございました。
>>989
独習phpというテキストを使っています。
>>992
ありがとうございます。
prepareステートメントが悪意ある入力に対策しているとテキストにも書いてありました。
皆様、ありがとうとざいました。
今のテキストを読み終えたら、もう少しテキストを吟味して、違うテキストを探してみようと思います。
ありがとうございました。プレイスホルダなのですね。
prepareでSQLを用いて、プレイスホルダを使うとき、
SQL文の中で、左から数えたプレイスホルダの順番を、
bindValueのカッコ内の数値で指定してバインドする、ということもわかりました。
?:や??:の解説もありがとうございました。
>>989
独習phpというテキストを使っています。
>>992
ありがとうございます。
prepareステートメントが悪意ある入力に対策しているとテキストにも書いてありました。
皆様、ありがとうとざいました。
今のテキストを読み終えたら、もう少しテキストを吟味して、違うテキストを探してみようと思います。
998デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/28(水) 15:13:42.98ID:zpzfEtE+0999デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/28(水) 15:17:38.93ID:zpzfEtE+0 すまんw 大嘘書いたww
>>998のコードだと trim() によって string型にキャストされるから永久ループするわwww
while (($input = fgets(STDIN)) !== false) {
echo $input;
}
が正しいが場合によっては
while (($input = trim(fgets(STDIN))) !== '') {
echo $input;
}
が期待した動作なのかもしれない
>>998のコードだと trim() によって string型にキャストされるから永久ループするわwww
while (($input = fgets(STDIN)) !== false) {
echo $input;
}
が正しいが場合によっては
while (($input = trim(fgets(STDIN))) !== '') {
echo $input;
}
が期待した動作なのかもしれない
1000デフォルトの名無しさん (ワッチョイ cfe8-+65u)
2018/11/28(水) 17:09:43.57ID:Nb5yTkdM010011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 342日 23時間 9分 23秒
新しいスレッドを立ててください。
life time: 342日 23時間 9分 23秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【サッカー】Jリーグ観客動員が歴代最多を更新 初の「1300万人超え」達成…平均入場者数も史上最高に [尺アジ★]
- 女性天皇「賛成」69%、将来の皇位継承「不安」68%…読売世論調査 ★3 [蚤の市★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★3 [少考さん★]
- 日本の英語力96位から動かず AI評価で可視化された「読めるが話せない」の正体 (EF EPI 2025) ★2 [少考さん★]
- 日中対立「着地点」見えず 中国、他国にも圧力の過去―関係悪化から1カ月 [蚤の市★]
- このお🏡は好都合に未完成🦖
- ネトウヨの真似して高市を萌えキャラ化してみた [663382246]
- 【朗報】イーロン・マスク「AIとロボットで誰も働かなくて良くなる。全員ニートで金銭も税金もないパラダイスみてぇな国を作りてえ」 [347751896]
- 00:00:00.000
- 地震 [794961135]
- 年を取ってから美味いって気づいたもの
