• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPの構文)

PHPの構文について

このQ&Aのポイント
  • PHPの構文についての質問です。
  • 名前と年齢をフォームページから入力し、名前と年齢、成人か未成年かを表示するPHPのサンプルがありますが、よりシンプルで分かりやすい構文にする方法はありますか?
  • 初学者がPHPの構文を理解するために質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

>> ここにPHPプログラムを専用に入れることができるのでしょうか? とはどういう意味でしょうか…? 質問の要点が掴めませんが↓が参考になるでしょうか。 PHP Manual - HTMLからの脱出 http://www.php.net/manual/ja/language.basic-syntax.phpmode.php

okdayook
質問者

お礼

色々調べてみたのですが inputのtextタイプのvalueの値はjavascripとか何かで 設定できるような説明のあるサイトがありました。 To_aru_User様はプログラムを熟練度が高いので 無意識に使っているのかもしれません。 教えていただいたコードはまだ理解ができるレベルではないので とりあえずできるところから勉強を続けて生きたいと思います。 ありがとうございました。

その他の回答 (1)

noname#244856
noname#244856
回答No.1

この手の質問は(私自身を含み)回答者が自分の書き方を押しつけてきやすいので、どの回答に対しても「こういう書き方もあるんだなー」ぐらいで見たほうがいいと思いますww それを踏まえて、私なりの書き方を提示させていただきます。「△」「○」の項目に関してはかなり強めの拘りで、一般的にはそれほど気にされずにスルーされることも多いので、参考程度で構いません。私はどんな場合においても絶対にエラーを発生させない書き方を好みますので。 【サンプル】 (コード) http://pastebin.com/rJMVhhnA (動作確認) http://codepad.viper-7.com/iq2NLk/55dev 【あなたのコードの問題点】 × HTMLにDOCTYPE宣言が無い。 × 文字コードの指定を行っていないので文字化けが起こる可能性がある。 × out.phpに直接アクセスされた場合に変数未定義のNoticeレベルのエラーが発生する。 △ 配列でパラメータが送信されてきたきた場合にhtmlspecialchars関数などでWarningレベルのエラーが発生する。 × HTML特殊文字のエスケープをロジック部分の前に行ってしまっている。 × if文の分岐に無駄が多い。 × 年齢が正しく数字で入力されているかどうかのチェックを行っていない。 × PHPの変数を使わない文字列に対しても無駄にecho経由で出力を行っている。 △ HTMLタグの属性をくくるクオートを2種類使ってしまっている。 【私のコードの長所】 ○ コード全体がそれほど長くないので、エラー処理もしやすいように1ファイルにまとめている。 ○ 1つのPHPファイル内でも、「ロジック」と「デザイン」を前後にハッキリと分割している。 ◎ htmlspecialchars関数は何回もコールするので書きやすいようにラップしたh関数を作成している。 ◎ パラメータに対してisset命令でのチェックを行い、変数未定義で発生してしまうエラーを防いでいる。 ○ 配列で不正送信されたパラメータによるエラーをis_string関数によるチェックで防いでいる。 ◎ ctype_digit関数によるチェックで半角数字以外の全ての文字列をシャットアウトしている。 ◎ エラーメッセージを配列に格納することにより、if文の分岐を簡略化させている。 ○ 「==」よりも厳格な「===」演算子を用いている。 ○ 曖昧な表現が多いHTML5ではなく厳格なXHTML5として書いている。 ○ metaタグで曖昧な文字コード指定を行わず、PHPのheader関数による厳格な方法で行っている。 ○ 制御構造の別構文やecho短縮構文を利用し、デザイン部分への変数埋め込みを見やすくしている。 【参考リンク】 メタタグによる文字コード指定の有効性 http://www.shtml.jp/mojibake/meta.html isset http://php.net/manual/ja/function.isset.php empty http://php.net/manual/ja/function.empty.php $_GET, $_POSTなどを受け取る際の処理 http://qiita.com/mpyw/items/2f9955db1c02eeef43ea 比較演算子 http://php.net/manual/ja/language.operators.comparison.php 制御構造に関する別の構文 http://php.net/manual/ja/control-structures.alternative-syntax.php echo http://php.net/manual/ja/function.echo.php ctype_digit http://www.php.net/manual/ja/function.ctype-digit.php 「!== false」 V.S. 「false !==」 http://qiita.com/mpyw/items/b097da196baf47e58ed9

okdayook
質問者

お礼

早速のご返答本当にありがとうございます! フォームファイルのほうにも 「<?php if (!empty($msgs)): ?>や<?php foreach ($msgs as $msg): ?>」などが入っていて全く何がなんだかわからない 部分が多いのが正直なところです。 「htmlspecialchars」をユーザー定義関数にしてフォーム側に入れるというのはとても勉強になりました。 分かるところから少しずつ分析してみたいと思います。

okdayook
質問者

補足

「input type="text"」のところに「value="<?=h($name)?>"」とユーザー定義関数が入れてありますが htmlのinput/textタグのvalueを設定すると 初期値の入力文字になると思っていたのですが ここにPHPプログラムを専用に入れることができるのでしょうか?

関連するQ&A