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

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

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

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

Q&A

解決済

3回答

899閲覧

POSTで受け取った変数の中身が違う

mmm022

総合スコア5

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

0グッド

0クリップ

投稿2021/07/28 00:49

編集2021/07/28 00:52

Aページで$company_IDをBページにPOSTして受け取りをした際に、変数の内容が想定しているものと異なるものが届きます。

POSTをする前に$company_ID変数の中身を**<?php echo $company_ID; ?>**で表示して中身の確認をした際には正しい値なのですが、何度試行してもやはりPOST先で変数の中身が異なってしまいます。初歩的な記述ミスかもしれないのですが、行き詰まってしまっているためお力添えいただきたいです。

現在の動き

Aページ $company_ID == 1003
↓POST
Bページ $company_ID == 1

目標の動き

Aページ $company_ID == 1003
↓POST
Bページ $company_ID == 1003

問題のソースコード

A

1<?php 2 // 値の受け取り 3 $record_ID = isset($_POST['record_ID'])? htmlspecialchars($_POST['record_ID'],ENT_QUOTES,'utf-8'):''; 4 $user_class = isset($_POST['user_class'])? htmlspecialchars($_POST['user_class'],ENT_QUOTES,'utf-8'):''; 5 6 $company_ID = $user_class.str_pad($record_ID, 3, 0, STR_PAD_LEFT); 7?> 8 9<!DOCTYPE html> 10<html> 11<head> 12 <!-- Global site tag (gtag.js) - Google Analytics --> 13 <script async src="https://www.googletagmanager.com/gtag/js?id=UA-13xxxxxxxxx"></script> 14 <script> 15 window.dataLayer = window.dataLayer || []; 16 function gtag() { dataLayer.push(arguments); } 17 gtag('js', new Date()); 18 19 gtag('config', 'UA-13xxxxxxxxx'); 20 </script> 21 <title>登録内容確認|SQUARE, inc.</title> 22</head> 23 24<body> 25 <div class="hed"> 26 </div> 27 <main> 28 <div class="container"> 29 <!-- contact conf --> 30 <h3 class= "list_title "><i class="fas fa-info-circle"></i> 登録内容確認</h3> 31 <form method="POST" action="regi_end.php" class="conf-form"> 32 <p class="company_ID">企業ID:<?php echo $company_ID; ?></p> 33 <input type="hidden" name="company_ID" value="<?php echo $company_ID; ?>"> 34

B

1 2<?php 3 // 値の受け取り 4 $company_ID = isset($_POST['company_ID']); 5 6 echo $company_ID; 7 exit(); 8?> 9

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

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

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

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

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

m.ts10806

2021/07/28 00:58

Aのコードが半端な気がします。すべて提示してください
guest

回答3

0

PHP

1$company_ID = isset($_POST['company_ID']); 2↓↓↓ 3$company_ID = filter_input(INPUT_POST,'company_ID');

投稿2021/07/28 01:05

yambejp

総合スコア114843

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

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

0

ベストアンサー

php

1 // 値の受け取り 2 $company_ID = isset($_POST['company_ID']);

これでは、値があるかないかのtrue/falseしか取れません。

投稿2021/07/28 00:58

maisumakun

総合スコア145184

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

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

mmm022

2021/07/28 01:05

ご指摘いただきやっと気付きました。 以下のように正しく記述しなおしたところ、目的の値を取得することができました! ありがとうございました。 $company_ID = isset($_POST['company_ID'])? htmlspecialchars($_POST['company_ID'],ENT_QUOTES,'utf-8'):'';
yambejp

2021/07/28 05:17

ポストで値を受け取れなかったときに「''」とみなすのは、 値が受け取れなかったのか値が''だったのか判断がつかないので やめたほうがいいでしょう。せめてnullとかが妥当です。 また$company_IDを無條件にhtmlspecialchars()かますのも その後の利用方法によっては不適格です
guest

0

hidenを使った受け渡しの書き方はお薦めできません。
CSRFに繋がる可能性があります。
値はセッションを使って渡すといいですね

投稿2021/07/28 01:10

YA-METAL

総合スコア42

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問