PHPで$_POSTされない
PHPでフォームを作成しているのですが、1項目だけポストされません。
該当項目は
<input type="hidden" name="token" class="token" id="token" val="<?=$_POST['token'];?>">
で、CSRF対策のためのトークンです。
入力→確認→確定という流れですが、確認画面までは正しくポストされていることをvar_dumpで確認しました。
確定画面では空文字になっていることもvar_dumpで確認しました。
確定の段階でポストされないため、セッションとポストが一致せず、
「不正なリクエストです。処理を中断します。」
と出てしまい、処理が先に進みません。
原因究明にご協力いただければ幸いです。
送信元(確認画面)、送信先(確定画面)のソースを添付します。
送信元
<?php
session_start();
var_dump($_SESSION['token']);
var_dump($_POST['token']);
if(!isset($_SESSION['token']) || !isset($_POST['token']) || $_SESSION['token'] !== $_POST['token']){
die('不正なリクエストです。処理を中断します。');
}
function escape($val)
{
return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
?>
<!doctype html>
<html lang=ja>
<head>
<meta charset="utf-8">
<title>会員情報変更画面(確認)</title>
<meta name="description" content="ヘッドセラピーを中心としたセラピーのサービスを提供しております。">
<!--リセットcss-->
<link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
<!--css-->
<link href="css/customer_cre_style.css" rel="stylesheet">
<!--レスポンシブ対応-->
<meta name="viwport" content="width=device-width, initial-scale=1">
<!--Googleフォント-->
<link href="https://fonts.googleapis.com/css2?family=Sawarabi+Gothic&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500&display=swap" rel="stylesheet">
</head>
<body>
<?php require_once('header.php')?>
<h1>会員情報変更画面(確認)</h1>
<h2>下記でよろしいですか?</h2>
<form method="post" class="members_conf" id="confirm" action="mypage_personal_change_commit.php">
<input type="hidden" name="token" class="token" id="token" val="<?=$_POST['token'];?>">
<input type="hidden" name="customer_id" class="customer_id" id="customer_id" value="<?=escape($_POST['customer_id']);?>">
<div class="last_name" id="last_name">
<label for="sei">姓</label>
<input type="text" name="sei" class="sei" id="sei" value="<?=escape($_POST['sei']);?>" readonly="readonly">
</div>
<div class="first_name" id="first_name">
<label for="mei">名</label>
<input type="text" name="mei" class="mei" id="mei" value="<?=escape($_POST['mei']);?>" readonly="readonly">
</div>
<div class="last_name_kana" id="last_name_kana">
<label for="sei_kana">姓(カナ)</label>
<input type="text" name="sei_kana" class="sei_kana" id="sei_kana" value="<?=escape($_POST['sei_kana']);?>" readonly="readonly">
</div>
<div class="first_name_kana" id="first_name_kana">
<label for="mei_kana">名(カナ)</label>
<input type="text" name="mei_kana" class="mei_kana" id="mei_kana" value="<?=escape($_POST['mei_kana']);?>" readonly="readonly">
</div>
<div class="posts" id="posts">
<label for="post">郵便番号</label>
<input type="text" name="post" class="post" id="post" value="<?=escape($_POST['post']);?>" readonly="readonly">
</div>
<div class="address_1" id="address_1">
<label for="adress1">住所1</label>
<input type="text" name="address1" class="address1" id="address1" value="<?=escape($_POST['address1']);?>" readonly="readonly">
</div>
<div class="address_2" id="address_2">
<label for="adress2">住所2(番地・マンション名・号室)</label>
<input type="text" name="address2" class="address2" value="<?=escape($_POST['address2']);?>" id="address2" readonly="readonly">
</div>
<div class="telephone" id="telephone">
<label for="telno">電話番号</label>
<input type="text" name="telno" class="telno" id="telno" value="<?=escape($_POST['telno']);?>">
</div>
<div class="mail" id="mail">
<label for="telno">メールアドレス</label>
<input type="text" name="mail_address" class="mail_address" id="mail_address" value="<?=escape($_POST['mail_address']);?>">
</div>
<div class="buttons" id="buttons">
<button type="button" class="button_b" name="button_con" id="button_con" onclick="history.back()">戻る</button>
<button type="submit" class="button_b" name="button_con" id="button_commit">確定</button>
</div>
</form>
<?php var_dump($_POST['token']);?>
<?php require_once('footer.php')?>
<?php require_once('js/wpushchk_js.php');?>
</body>
</body>
</html>
送信先
<?php
session_start();
var_dump($_POST);
var_dump($_POST['token']);
var_dump($_SESSION['token']);
if(!isset($_SESSION['token']) || !isset($_POST['token']) || $_SESSION['token'] !== $_POST['token']){
die('不正なリクエストです。処理を中断します。');
}
unset($_SESSION['token']);
function escape($val)
{
return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
require_once('db_connect.php');
require_once('password_db.php')
?>
<!doctype html>
<html lang=ja>
<head>
<meta charset="utf-8">
<title>会員情報変更</title>
<meta name="description" content="ヘッドセラピーを中心としたセラピーのサービスを提供しております。">
<!--リセットcss-->
<link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
<!--css-->
<link href="css/contact_style.css" rel="stylesheet">
<!--レスポンシブ対応-->
<meta name="viwport" content="width=device-width, initial-scale=1">
<!--Googleフォント-->
<link href="https://fonts.googleapis.com/css2?family=Sawarabi+Gothic&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500&display=swap" rel="stylesheet">
</head>
<body>
<?php require_once('header.php');?>
<main>
<h1>
会員情報変更
</h1>
<?php
$sql = ("update customer set
last_name = HEX(AES_ENCRYPT(?,'" . $password . "')),
first_name = HEX(AES_ENCRYPT(?,'" . $password . "')),
last_name_kana = HEX(AES_ENCRYPT(?,'" . $password . "')),
first_name_kana = HEX(AES_ENCRYPT(?,'" . $password . "')),
post = HEX(AES_ENCRYPT(?,'" . $password . "')),
address1 = HEX(AES_ENCRYPT(?,'" . $password . "')),
address2 = HEX(AES_ENCRYPT(?,'" . $password . "')),
tel_no = HEX(AES_ENCRYPT(?,'" . $password . "')),
mail_address = HEX(AES_ENCRYPT(?,'" . $password . "'))
where customer_id = ?");
$stmt = $pdo->prepare($sql);
if($_SERVER['REQUEST_METHOD'] === 'POST'){
if(empty(escape($_POST['sei'])) || empty(escape($_POST['mei'])) || empty(escape($_POST['sei_kana'])) || empty(escape($_POST['mei_kana'])) ||empty(escape($_POST['post'])) || empty(escape($_POST['address1'])) || empty(escape($_POST['address2'])) || empty(escape($_POST['telno']))|| empty(escape($_POST['mail_address']))) {
echo '未入力の項目があります。';
}
else if(!preg_match('/^[0-9]{7}$/', $_POST['post'])) {
echo '郵便番号は半角数字7桁で入力します。';
}
else if(!preg_match('/^[0-9]{10,11}$/',$_POST['telno'])) {
echo '電話番号は半角数字11文字以内で入力します。';
}
else if(!preg_match('/^[a-zA-Z0-9_.+-]+(\.[a-zA-Z0-9_+-]+)*@([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$/',$_POST['mail_address'])) {
echo 'メールアドレスの形式で入力します。';
}
else if($stmt -> execute([
escape($_POST['sei']),
escape($_POST['mei']),
escape($_POST['sei_kana']),
escape($_POST['mei_kana']),
escape($_POST['post']),
escape($_POST['address1']),
escape($_POST['address2']),
escape($_POST['telno']),
escape($_POST['mail_address']),
escape($_POST['customer_id']),
]))
{
header('Location: mypage_personal_change_end.php', true, 303);
exit();
}
else {
echo '登録に失敗しました。';
}
}?>
<?php require_once('footer.php');?>
</body>
</html>
0