別ファイルへの変数受け渡し

実現したいこと

  • confirm.phpの変数をcontact.phpでも使えるようにしたい。

前提

phpでお問い合わせフォームを作成しています。
contact.phpからconfirm.phpへpost送信をし、バリデーションチェックをしてエラー($err_msg)があればcontact.phpへ遷移します。
バリデーションチェックで引っかかり、contact.phpへ戻った際にconfirm.phpで$err_msgに格納されたデータを使いたい。

発生している問題・エラーメッセージ

contact.php

PHP

1<!DOCTYPE html>2<html>3 <head>4 <link rel="stylesheet" href="../css/style.css" type="text/css">5 <meta charset="utf-8">6 <title>お問い合わせフォーム</title>7 </head>8 <body>9 <p>お問い合わせ</p>10 11 <?php if(!empty($err_msg)): ?>12 <ul class="error_list">13 <?php foreach($error as $key => $value): ?>14 <li><?php echo $value; ?></li>15 <?php endforeach; ?>16 </ul>17 <?php endif; ?>18 19 <form class="contact_form" action="/confirm/" method="post">20 <dl>21 <dt>お名前※</dt>22 <dd class="contact_form_col2 dd_contact">23 <input type="text" name="name_sei" placeholder="" value="<?php if(!empty($name_sei)) {echo $name_sei;} ?>">24 <input type="text" name="name_mei" placeholder="" value="<?php if(!empty($name_mei)) {echo $name_mei;} ?>">25 </dd>26 </dl>27 28 <dl>29 <dt>フリガナ※</dt>30 <dd class="contact_form_col2 dd_contact">31 <input type="text" name="fname_sei" placeholder="セイ" value="<?php if(!empty($fname_sei)) {echo $fname_sei;} ?>">32 <input type="text" name="fname_mei" placeholder="メイ" value="<?php if(!empty($fname_mei)) {echo $fname_mei;} ?>">33 </dd>34 </dl>35 36 <dl>37 <dt>メールアドレス※</dt>38 <dd class="dd_contact">39 <input type="email" name="email" value="<?php if(!empty($to_email)) {echo $to_email;} ?>">40 </dd>41 </dl>42 43 <dl>44 <dt>メールアドレス(再入力)※</dt>45 <dd class="dd_contact">46 <input type="email" name="confirm_email" value="<?php if(!empty($confirm_email)) {echo $confirm_email;} ?>">47 </dd>48 </dl>49 50 <dl>51 <dt>お電話番号※</dt>52 <dd class="dd_contact">53 <input type="tel" name="tel" pattern="\d{2,4}-?\d{2,4}-?\d{3,4}" value="<?php if(!empty($tel)) {echo $tel;} ?>">54 </dd>55 </dl>56 57 <dl>58 <dt>お問い合わせ内容※</dt>59 <dd class="dd_contact">60 <textarea name="msg" value="<?php if(!empty($msg)) {echo $msg;} ?>"></textarea>61 </dd>62 </dl>63 64 <input type="submit" name="btn_confirm" value="入力内容を確認する">65 </form>66 </body>67</html>

confirm.php

PHP

1$err_msg = array();2define('MSG01','入力必須です');3define('MSG02', 'Emailの形式で入力してください');4 5//post送信されていた場合以下の処理を実行6if ($_SERVER["REQUEST_METHOD"] == "POST") {7 $name_sei = $_POST['name_sei'];8 $name_mei = $_POST['name_mei'];9 $fname_sei = $_POST['fname_sei'];10 $fname_mei = $_POST['fname_mei'];11 $tel = $_POST['tel'];12 $to_email = $_POST['email'];13 $confirm_email = $_POST['confirm_email'];14 $msg = $_POST['msg'];15 16 //未入力チェック17 function validRequired($str, $key) {18 if($str === '') {19 global $err_msg;20 $err_msg[$key] = MSG01;21 }22 }23 24 //email形式チェック25 function validEmail($str, $key) {26 if(!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $str)) {27 global $err_msg;28 $err_msg[$key] = MSG02;29 }30 }31 32 //未入力チェック33 validRequired($name_sei, 'name_sei');34 validRequired($name_mei, 'name_mei');35 validRequired($fname_sei, 'fname_sei');36 validRequired($fname_mei, 'fname_mei');37 validRequired($to_email, 'to_email');38 validRequired($confirm_email, 'confirm_email');39 validRequired($tel, 'tel');40 validRequired($msg, 'msg');41 42 //email形式チェック43 validEmail($to_email, 'to_email');44 var_dump($err_msg);45 46 if (!empty($err_msg)) {47 header("Location:/contact/");48 }49 50 51} else {52 //フォームボタン以外からこのページにアクセスした場合(URL直接入力など)、警告画面へ53 header(("location:/alert/"));54 exit;55}56?>

試したこと

sessionやrequire()などを使ってやってみましたが上手くいきませんでした。

補足情報(FW/ツールのバージョンなど)

PHP 8.2.1を使っています。

コメントを投稿

0 コメント