QA@IT
«回答へ戻る

回答を投稿

second.php の以下のif文のelseブロックに入らないという意味でいいですか?

if(isset($_POST['ID'])){
  /* 略 */
}else{
  $ID = '';
  print "IDが入力されていません";
}

issetは値が空かどうかではなくセットされているかを判断します。
テキストボックスを空のままでも、空文字 '' が送信されますので、$_POST['ID'] はセットされています。

なので

if(isset($_POST['ID']) && $_POST['ID'] != ''){
  /* 略 */
}else{
  $ID = '';
  print "IDが入力されていません";
}

などと内容も確認しなければいけません。
※ issetも残してください。


あとこれためしてませんがこのままだとIDやPASSにHTMLタグが書けてしまう気がします。
特にscriptタグが送信されると危険です。

表示の際には htmlspecialchars (http://php.net/manual/ja/function.htmlspecialchars.php) などを利用するようにしましょう。

質問のために簡易的にそのように省略されている場合はこの部分は無視してください。
よくわからなければ、IDのテキストボックスに <script>alert('hello');</script> と入力してみてください。
(Chromeあたりだとブラウザがブロックしてしまうかもしれません。)

second.php の以下のif文のelseブロックに入らないという意味でいいですか?


```php
if(isset($_POST['ID'])){
  /* 略 */
}else{
  $ID = '';
  print "IDが入力されていません";
}
```

issetは値が空かどうかではなくセットされているかを判断します。
テキストボックスを空のままでも、空文字 `''` が送信されますので、`$_POST['ID']` はセットされています。

なので

```php
if(isset($_POST['ID']) && $_POST['ID'] != ''){
  /* 略 */
}else{
  $ID = '';
  print "IDが入力されていません";
}
```

などと内容も確認しなければいけません。
※ issetも残してください。

---

あとこれためしてませんがこのままだとIDやPASSにHTMLタグが書けてしまう気がします。
特にscriptタグが送信されると危険です。

表示の際には htmlspecialchars ([http://php.net/manual/ja/function.htmlspecialchars.php](http://php.net/manual/ja/function.htmlspecialchars.php))  などを利用するようにしましょう。

質問のために簡易的にそのように省略されている場合はこの部分は無視してください。
よくわからなければ、IDのテキストボックスに `<script>alert('hello');</script>` と入力してみてください。
(Chromeあたりだとブラウザがブロックしてしまうかもしれません。)