前提・実現したいこと
元々ロリポップにて運用していたHPをエックスサーバに移管したところ
お問い合わせフォームにて必須項目のテキストを入れずに確認画面ボタンを押すと下記のエラーが表示されるようになりました。
発生している問題・エラーメッセージ
Warning: Illegal string offset 'name' in /home/xs000000/~/page-form.php on line 48
該当のソースコード
if( isset($_POST['check']) ){ $items = $_POST['items']; $blank = false; if( !$items['name'] ) $blank = $error['name'] = 'お名前が入力されていません'; ... $_SESSION["items"] = $items; }
試したこと
調べたところPHPのバージョンが7だとエラーが表示されるようで、phpファイルの下記の記述を変更するのが解決策だとは思うのですが、私はプログラマーではなく申し訳ありませんがあまりよく分からず...
$text = array(); $blank = true; $items = $_SESSION["items"];
補足情報(FW/ツールのバージョンなど)
下記がだいたいのコードになります。
※今回の質問と関係ない記述(htmlタグなど)は省いています。
<?php session_start(); function h($s) { return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); } $text = array(); $blank = true; $items = $_SESSION["items"]; $client_name = '企業名'; $client_address = "企業メールアドレス"; if( isset($_POST['check']) ){ $items = $_POST['items']; $blank = false; if( !$items['name'] ) $blank = $error['name'] = 'お名前が入力されていません'; if( !$items['ruby'] ) $blank = $error['ruby'] = 'ふりがなが入力されていません'; if( !preg_match("/^[^@]+@[^@]+$/",$items['mail01']) ) $blank = $error['mail01'] = '正しい形式のメールアドレスをご入力ください'; if( !$items['mail01'] ) $blank = $error['mail01'] = 'メールアドレスが入力されていません'; if( !$items['mail02'] ) $blank = $error['mail02'] = 'メールアドレスが入力されていません'; if( $items['mail01'] !== $items['mail02'] ) $blank = $error['mail02'] = '上記メールアドレスと異なります'; if( !($items['tel01'] && $items['tel02'] && $items['tel03']) ) $blank = $error['tel'] = '電話番号が入力されていません'; $_SESSION["items"] = $items; } if( isset($_POST['send']) ){ setcookie( session_name(), '', time()-42000, '/' ); session_destroy(); $_SESSION['send_num'] = $send_num; $message = <<<EOT ■ お名前 $items[name] ■ ふりがな $items[ruby] ■ メールアドレス $items[mail01] ■ 電話番号 $items[tel01] - $items[tel02] - $items[tel03] ■ ご住所 $items[pc01] - $items[pc02] $items[address] EOT; $client_message = <<<EOT ホームページからお問い合わせがありました。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $home_url EOT; $user_message = <<<EOT $items[name] 様 このたびは、 $client_name にお申込みいただき、ありがとうございます。 近日担当者よりご連絡を差し上げますので、しばらくお待ちくださいませ。 $message EOT; mb_language("japanese"); mb_internal_encoding("UTF-8"); mb_convert_encoding($client_address,"UTF-8"); mb_convert_encoding($client_message,"UTF-8"); $user_message = mb_convert_encoding($user_message,"UTF-8"); if(!mb_send_mail($client_address,$items['name']."さんよりお問い合わせがありました",$client_message,"From: ".$client_address)){exit("e");} if(!mb_send_mail($items['mail01'],"お問い合わせありがとうございました",$user_message,"From:".mb_encode_mimeheader($client_name)."<".$client_address.">")){exit("e");} $sent = true; $blank = false; header('Location: /thanks/'); exit; } ?> <?php if( $blank ){ ?> <p>下記項目を入力の上、「確認画面へ進む」を押してください。</p> <p>お申し込み受付後、受付完了メールをお送りします。※は必須項目です。</p> <?php }elseif( !isset($sent) ){ ?> <p>以下の内容でよろしければ「送信する」ボタンを押して下さい</p> <?php } else { ?> <p>送信が完了しました。</p> <p>このたびはお申込みいただき、ありがとうございます。</p> <p>近日担当者よりご連絡を差し上げますので、しばらくお待ちくださいませ。</p> <?php } ?> <form action="#anc-contact" method="post" class="contact-form"> <?php if( $blank ){ ?> <table class="contact-form-table"> <tr> <th><label for="name">お名前(全角)</label><span>*</span></th> <td> <?php if( isset($error['name']) ) echo '<p class="error-text">' . h($error['name']) . '</p>'; ?> <input type="text" name="items[name]" value="<?php echo h($items['name']); ?>" id="name" class="input-mid" placeholder="例) 山田 太郎"> </td> </tr> <tr> <th><label for="ruby">ふりがな(全角)</label><span>*</span></th> <td> <?php if( isset($error['ruby']) ) echo '<p class="error-text">' . h($error['ruby']) . '</p>'; ?> <input type="text" name="items[ruby]" value="<?php echo h($items['ruby']); ?>" id="ruby" class="input-mid" placeholder="例) やまだ たろう"> </td> </tr> <tr> <th><label for="mail01">メールアドレス(半角)</label><span>*</span></th> <td> <?php if( isset($error['mail01']) ) echo '<p class="error-text">' . h($error['mail01']) . '</p>'; ?> <input type="email" name="items[mail01]" value="<?php echo h($items['mail01']); ?>" id="mail01" class="input-big" placeholder="例) xxxxxx@example.com"> </td> </tr> <tr> <th><label for="mail02">確認用メールアドレス(半角)</label><span>*</span></th> <td> <?php if( isset($error['mail02']) ) echo '<p class="error-text">' . h($error['mail02']) . '</p>'; ?> <input type="email" name="items[mail02]" value="<?php echo h($items['mail02']); ?>" id="mail02" class="input-big" placeholder="例) xxxxxx@example.com"> </td> </tr> <tr> <th><label for="tel">電話番号(半角)</label><span>*</span></th> <td> <?php if( isset($error['tel']) ) echo '<p class="error-text">' . h($error['tel']) . '</p>'; ?> <input type="tel" name="items[tel01]" value="<?php echo h($items['tel01']); ?>" class="input-min" id="tel"> - <input type="tel" name="items[tel02]" value="<?php echo h($items['tel02']); ?>" class="input-min"> - <input type="tel" name="items[tel03]" value="<?php echo h($items['tel03']); ?>" class="input-min"> </td> </tr> <tr> <th><label for="pc01">ご住所</label></th> <td> 〒 <input type="tel" name="items[pc01]" value="<?php echo h($items['pc01']); ?>" id="pc01" class="input-min">- <input type="tel" name="items[pc02]" value="<?php echo h($items['pc02']); ?>" class="input-min"> <input type="button" value="郵便番号から自動入力" onclick="AjaxZip3.zip2addr('items[pc01]','items[pc02]','items[address]','items[address]');"> <input type="text" name="items[address]" value="<?php echo h($items['address']); ?>" class="input-big mt5"> </td> </tr> </table> <p class="submits"><input type="submit" value="入力内容を確認する" name="check"></p> <?php }elseif( !isset($sent) ){ ?> <table class="contact-form-table"> <tr> <th>お名前</th> <td><?php echo h($items['name']); ?></td> </tr> <tr> <th>ふりがな</th> <td><?php echo h($items['ruby']); ?></td> </tr> <tr> <th>メールアドレス</th> <td><?php echo h($items['mail01']); ?></td> </tr> <tr> <th>電話番号</th> <td><?php echo h($items['tel01']); ?> - <?php echo h($items['tel02']); ?> - <?php echo h($items['tel03']); ?></td> </tr> <tr> <th>ご住所</th> <td><?php echo h($items['pc01']); ?>-<?php echo h($items['pc02']); ?><br><?php echo h($items['address']); ?></td> </tr> </table> <p class="submits"> <input type="submit" name="return" value="入力内容を変更する"> <input type="submit" name="send" value="送信する"> </p> <?php } ?>
現サーバPHPバージョン:7.4.13
旧サーバPHPバージョン:5.6
すみませんが、どなたかご教示いただけますと幸いですm(__)m
回答2件
あなたの回答
tips
プレビュー