PHPでmariadbの更新ができない
PHPのエラーは出ずに最後まで処理されるのですが、phpadminでテーブルを確認したところ、テーブルのupdateができてませんでした。
ログを確認したところ、下記のsqlが実行されていました。
update customer set
post=HEX(AES_ENCRYPT(?,'password')),
address1=HEX(AES_ENCRYPT(?,'password')),
address2=HEX(AES_ENCRYPT(?,'password')),
tel_no=HEX(AES_ENCRYPT(?,'password'))
where customer_id=?
PHPでexecuteに宣言した値が取得されずに、「?」のままSQLが実行されてしまったようです。
暗号化したいための記述を考えたのですが、記述の間違いでしょうか?
PHPのソースを添付しましので、原因調査に協力いただければ幸いです。
よろしくお願いいたします。
<?php
session_start();
if (isset($_POST['token']) && isset($_SESSION['token'])) {
$token = $_POST['token'];
}
else if ($token != $_SESSION['token']) {
header("Location: contact.php");
echo ('アクセスが中断されました。');
exit();
}
else {
header("Location: contact.php");
echo ('不正なアクセスです');
exit();
}
session_destroy();
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=$pdo->prepare("update customer set
post = HEX(AES_ENCRYPT(?,'" . $password . "')),
address1 = HEX(AES_ENCRYPT(?,'" . $password . "')),
address2 = HEX(AES_ENCRYPT(?,'" . $password . "')),
tel_no = HEX(AES_ENCRYPT(?,'" . $password . "'))
where customer_id = ?");
if($_SERVER['REQUEST_METHOD'] === 'POST'){
if(empty(escape($_POST['post'])) || empty(escape($_POST['address1'])) || empty(escape($_POST['address2'])) || empty(escape($_POST['telno']))) {
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($sql -> execute([
escape($_POST['post']),
escape($_POST['address1']),
escape($_POST['address2']),
escape($_POST['telno']),
escape($_POST['customer_id']),
]))
{
require_once('customer_create_mail.php');
header('Location: customer_create_end.php', true, 303);
exit();
}
else {
echo '登録に失敗しました。';
}
}?>
<?php require_once('footer.php');?>
</body>
</html>
0