自己解決しました。自己解決方法を投稿したのですが、404NOT FOUNDになってしまい、投稿できていなかったようです。解決方法としましては、$dbhのデータベースオブジェクトの変数名まで連番を振ってしまっていたことが原因でした。$_POSTの判定方法としては、最初にisset関数を使い変数の定義をチェックした後に、空文字かどうかを判定するだけでいけるようです。
大変おさわがせしまして申し訳ございません。修正済みコードを掲載しておきます。sanitizeが何をやっているかというと、htmlspecialcharsを実行して返しているだけです。
array(3) { ["pref"]=> string(9) "千葉県" ["main_pic"]=> string(54) "62cu6sfozmznp0u6vs5kbaaefjbvid5s6bwk6cnh9bbczeehdy.JPG" ["pic1"]=> string(54) "g5a55yhh8uglma6io4x7zymaoetbl3y6ip2kt3jno8mtf48cfd.JPG" }
<<<画面遷移前のフォーム画面>>>
<?php session_cache_limiter('private_no_expire'); require_once('login_tmp.php'); require_once('../common/common.php'); ?> <!DOCTYPE html> <html> <head><meta charset=UTF-8> <title>プロフィール確認</title> </head> <body> <?php print '<h3>プロフィール確認</h3><br />'; print '<form name="regist_profile" method="post" action="regist_profile_done.php" enctype="multipart/form-data"><br />'; print 'お住いの都道府県<br />'; $pref_arr=["0"=>"内緒","1"=>"北海道","2"=>"青森県","3"=>"岩手県","4"=>"宮城県","5"=>"秋田県", "6"=>"山形県","7"=>"福島県","8"=>"茨城県","9"=>"栃木県","10"=>"群馬県", ~中略~ "40"=>"福岡県","41"=>"佐賀県","42"=>"長崎県","43"=>"熊本県","44"=>"大分県","45"=>"宮崎県","46"=>"鹿児島県","47"=>"沖縄県"]; $post=sanitize($_POST); $pref_id=$post['pref_id']; $pref=$pref_arr[$pref_id]; print $pref.'<br />'; print '<input type="hidden" name="pref" value="'.$pref.'">'; $appeal=$post['appeal']; //main画像の処理 $main_pic=$_FILES['main_pic']; if($_FILES['main_pic']['error'] == UPLOAD_ERR_OK) { $main_pic_ex=strrchr($main_pic['name'],'.'); $main_pic_name=random_string(50); ~省略(画像生成処理)~ else { print '[メイン画像]ファイルが選択されていません。<br />'; } //画像1の処理 $pic1=$_FILES['pic1']; if($_FILES['pic1']['error'] == UPLOAD_ERR_OK) { $pic1_ex=strrchr($pic1['name'],'.'); $pic1_name=random_string(50); if($pic1) { $err=''; switch ($pic1_ex) { case '.jpg': break; print '[画像1]有効なファイル形式ではありません。<br />'; $err='1'; } } ~省略(画像生成処理)~ else { print '[画像1]ファイルが選択されていません。<br />'; } //画像2の処理 $pic2=$_FILES['pic2']; if($_FILES['pic2']['error'] == UPLOAD_ERR_OK) { $pic2_ex=strrchr($pic2['name'],'.'); $pic2_name=random_string(50); if($pic2) { $err=''; switch ($pic2_ex) { case '.jpg': break; default: print '[画像2]有効なファイル形式ではありません。<br />'; $err='1'; } } ~省略(画像生成処理)~ if($appeal){ print '<textarea name="appeal" rows="8" cols="20">'.$appeal.'</textarea><br />'; }else { print 'アピール文が入力されていません。800字以内で入力してください。'; } } print '<br />'; print '<input type="submit" value="登録">'; print '<br /><br />'; print '<input type="button" onclick=history.back() value="修正する">'; print '</form>'; ?> </body> </html>
<<<画面遷移後のコード>>>
<?php require_once('login_tmp.php'); require_once('../common/common.php'); ?> <!DOCTYPE html> <html> <head><meta charset=UTF-8> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>プロフィール登録完了</title> </head> <body> <h3>プロフィール登録完了</h3><br /> <?php //$post=sanitize($_POST); var_dump($_POST); $id=$_SESSION['id']; if($id=='') { print '無効なパラメータです。'; exit(); } //データベース接続 $dsn='mysql:host=localhost;dbname=idol;charset=utf8'; $user='root'; $password=''; $dbh= new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); if (isset($_POST['pref'])) { if ($_POST['pref'] != "") { $sql1='INSERT INTO mst_pref (mem_id,pref) VALUES (?,?)'; $stmh1=$dbh->prepare($sql1); $stmh1 -> bindValue(1, $id, PDO::PARAM_INT); $stmh1 -> bindValue(2, $_POST['pref'], PDO::PARAM_STR); $stmh1->execute(); $dbh1=null; } } if (isset($_POST['appeal'])) { if ($_POST['appeal'] != "") { $sql2='INSERT INTO mst_appeal (mem_id,appeal) VALUES (?,?)'; $stmh2=$dbh->prepare($sql2); $stmh2 -> bindValue(1, $id, PDO::PARAM_INT); $stmh2 -> bindValue(2, $_POST['appeal'], PDO::PARAM_STR); $stmh2->execute(); } } if (isset($_POST['main_pic'])) { if ($_POST['main_pic'] != "") { $sql3='INSERT INTO mst_img (mem_id,image,img_flg) VALUES (?,?,?)'; $stmh3=$dbh->prepare($sql3); $stmh3 -> bindValue(1, $id, PDO::PARAM_INT); $stmh3 -> bindValue(2, $_POST['main_pic'], PDO::PARAM_STR); $stmh3 -> bindValue(3, '1', PDO::PARAM_INT); $stmh3->execute(); } } if (isset($_POST['pic1'])) { if ($_POST['pic1'] != "") { $sql4='INSERT INTO mst_img (mem_id,image) VALUES (?,?)'; $stmh4=$dbh->prepare($sql4); $stmh4 -> bindValue(1, $id, PDO::PARAM_INT); $stmh4 -> bindValue(2, $_POST['pic1'], PDO::PARAM_STR); $stmh4->execute(); } } if (isset($_POST['pic2'])) { if ($_POST['pic2'] != "") { $sql5='INSERT INTO mst_img (mem_id,image) VALUES (?,?)'; $stmh5=$dbh->prepare($sql5); $stmh5 -> bindValue(1, $id, PDO::PARAM_INT); $stmh5 -> bindValue(2, $_POST['pic2'], PDO::PARAM_STR); $stmh5->execute(); } } if (isset($_POST['pic3'])) { if ($_POST['pic3'] != "") { $sql6='INSERT INTO mst_img (mem_id,image) VALUES (?,?)'; $stmh6=$dbh->prepare($sql6); $stmh6 -> bindValue(1, $id, PDO::PARAM_INT); $stmh6 -> bindValue(2, $_POST['pic3'], PDO::PARAM_STR); $stmh6->execute(); $dbh=null; } } ?> </body> </html>
回答1件
あなたの回答
tips
プレビュー