質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

1118閲覧

PHP ラジオボタン受け取り画面について

gakurekikonnpu

総合スコア5

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/09/29 05:56

編集2019/09/29 06:13

現在PHPでサイトを作成しており、
お問い合わせフォームにて性別を選択するのにラジオボックスを設置しています。
入力画面で選択し、投稿完了ページに移行すると、女性を選んでいても、男性、その他を選んでいても、表示が「on」になってしまいます。

イメージ説明

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>お問い合わせ</title> 6 <meta name="description" content="お問い合わせフォーム"> 7 <link rel="stylesheet" href="contact.css"> 8 </head> 9 10 <body> 11<form method="post" action="contact.php"> 12<div class="title"> 13<h1>お問い合わせ</h1> 14</div> 15<p>お名前 ※必須</p> 16<input type="text" name="name" placeholder="名前を入力"> 17<p>性別 ※必須</p> 18<label><input type="radio" name="gender" value="male" checked>男性</label> 19<label><input type="radio" name="gender" value="female" checked>女性</label> 20<label><input type="radio" name="gender" value="etc">その他</label> 21<p>メールアドレス ※任意</p> 22<input type="email" name="email" placeholder="メールアドレスを入力"> 23<p>お問い合わせ内容 ※必須</p> 24<textarea name="massage" placeholder="お問い合わせ内容を入力"></textarea> 25<p><input type="submit" value="送信"></p> 26</form> 27</body> 28</html> 29

PHP

1<?php 2 3$name=$_POST['name']; 4$gender=$_POST['gender']; 5$email=$_POST['email']; 6$massage=$_POST['massage']; 7 8$name=htmlspecialchars($name); 9$email=htmlspecialchars($email); 10$massage=htmlspecialchars($massage); 11 12if($name!=''&&$gender!=''&&$massage!=''){ 13 print "投稿が完了しました!<br />"; 14} 15 16if($name==""){ 17 print "お名前を入力してください<br />"; 18}else{ 19 print "お名前:$name<br />"; 20} 21if(isset($_POST['gender'])){ 22 $gender=$_POST['gender']; 23 print "性別:$gender<br />"; 24}else{ 25 print "性別を選択してください<br />"; 26} 27if($email!=''){ 28print "メールアドレス:$email<br />"; 29} 30if($massage==''){ 31 print "お問い合わせ内容を入力してください<br />"; 32}else{ 33 print "お問い合わせ内容:$massage<br />"; 34} 35?> 36

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/29 06:04

formタグ、閉じてない
gakurekikonnpu

2019/09/29 06:07

ご指摘ありがとうございます!
退会済みユーザー

退会済みユーザー

2019/09/29 06:08

表示が「on」になってしまいます。 って、どういう意味?
退会済みユーザー

退会済みユーザー

2019/09/29 06:37

webブラウザのキャッシュがきいて正しい結果を出せなくなっている線も考慮して、ブラウザのキャッシュをクリアすることも試してほしい。
m.ts10806

2019/09/29 06:43

>massage 定義と参照が同じなのでプログラムとしては間違ってないけど、英単語としてはスペルミスなので。
gakurekikonnpu

2019/09/29 06:44

キャッシュ消したらきちんと表示されました!!! 感謝します!
kei344

2019/09/29 09:31

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。
guest

回答1

0

掲載されたhtmlとphpをコピーして、
ファイル名のみ変更して実行しているが、
ちゃんと結果を受け取れているので、
テスト環境に適切にphpファイルをアップロードできていないのではないでしょうか。
イメージ説明


老婆心ながら気になった点。

1)冒頭でhtmlspecialchars()しちゃってる点

ファイルに書き出す、データベースに記録する、メール送信する、
なんて処理を組み合わせる前提であると予想して、
html出力用に冒頭で加工してしまうと、
ファイルに書き出すとき、データベースに記録するとき、メール送信するときに
支障が出てくるので、
html出力する直前にhtmlspecialchars()して、変数ではなるべく保持しないほうがいい。
いわゆる「h関数」ってのを定義したりすることが多い。

PHP エスケープ処理のためのhtmlspecialcharsの使い方

2)冒頭で$genderに格納したのに、判定箇所で$_POST['gender']使ってる点
そして$csに保存しつつ出力は$gender、いみがわからない。
まぁ、おおかた、maleを「男性」などと表示用に置き換える予定の途中だと察するものの。

3)フォーム未入力対策が弱い

php

1$name = ''; 2if (isset($_POST['name']) { 3 $name = $_POST['name']; 4}

っていう原始的なやり方、

php

1$name = filter_input(INPUT_POST, 'name');

っていう便利なフィルタ関数を使うやり方、好きな方を選べばいい。
特にfilter_input()を駆使すると、受け取りたくない記号類を弾いたり、
メールアドレスじゃない文字列を弾いたりとかできるからね。
PHP: filter_input - Manual

投稿2019/09/29 06:15

編集2019/09/29 06:27
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gakurekikonnpu

2019/09/29 06:25

そうなんですかねえ、、、ありがとうございます
退会済みユーザー

退会済みユーザー

2019/09/29 06:38

フォーム送信元htmlがキャッシュに乗ってて、修正したhtmlが反映されていない、なんてこともありうるかも。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問