お世話になります。
フォームでポストされたデータをデータベース(MySQL)に格納したいのですが、
下記のコードでは格納が出来ません。
修正方法をご教示お願い致します。
エラーメッセージは出ておりません。確認方法がいたらないだけかもしれませんが。
var_dump($stmt);では下記値になります。
object(PDOStatement)#2 (1) { ["queryString"]=> string(93) "INSERT INTO entries (name,email,memo,created,modified)VALUES(:name,:email,:memo,now(),now());" }
■index.php
<?php session_start(); require_once('config.php'); require_once('functions.php'); if($_SERVER['REQUEST_METHOD'] != "POST"){ //CSRF対策 setToken(); }else{ checkToken(); $name = (string)filter_input(INPUT_POST, 'name'); $email = (string)filter_input(INPUT_POST, 'email'); $memo = (string)filter_input(INPUT_POST, 'memo'); /*$name= $_POST['name']; $email= $_POST['email']; $memo= $_POST['memo'];*/ $error = array(); //エラー処理 if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ $error['email'] = '※メールアドレスの形式が正しくありません'; } if($email==''){ $error['email'] = '※メールアドレスを入力して下さい。'; } if($memo==''){ $error['memo'] = '※内容を入力して下さい。'; } if(empty($error)){ //DBに格納 $dbh= connectDb(); $sql= "INSERT INTO entries (name,email,memo,created,modified)VALUES(:name,:email,:memo,now(),now());"; $stmt = $dbh->prepare($sql); $params= array(":name" => $name,":email" => $email, ":memo" => $memo); $stmt->execute($params); if (!$stmt) { echo "\nPDO::errorInfo():\n"; print_r($dbh->errorInfo()); } /* var_dump($stmt); */ //ありがとうページへ header('Location:'.SITE_URL.'thanks.html'); exit; } } ?> <!DOCTYPE html> <!--[if lt IE 7]> <html class="ie6 oldie" lang="ja"> <![endif]--> <!--[if IE 7]> <html class="ie7 oldie" lang="ja"> <![endif]--> <!--[if IE 8]> <html class="ie8 oldie" lang="ja"> <![endif]--> <!--[if gt IE 8]><!--> <html class="" lang="ja"> <!--<![endif]--> <!--[if lt IE 9]> <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> <![endif]--> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="keywords" content=""> <meta name="description" content=""> <meta name="viewport" content="width=device-width; initial-scale=1.0"> <title>フォーム</title> </head> <body> <div class="warpper"> <div class="container"> <h1>お問い合わせフォーム</h1> <form method="post" action=""><p>会員様氏名:<input type="text" name="name" value="<?php echo h($name);?>" class="text"></p> <p>メール※:<input type="text" name="email" value="<?php echo h($email);?>" class="text"></p>
<font class="fcr" style="margin-bottom: 20px;"><?php if($error['email']){echo h($error['email']); }?></font>
<p>ご要望・ご質問等※:</p> <p><textarea name="memo" cols="40" rows="5"><?php echo h($memo);?></textarea></p>
<font class="fcr" style="margin-bottom: 20px;"><?php if($error['memo']){echo h($error['memo']); }?></font>
<p><a href="<?php echo ADMIN_URL; ?>">管理者メニューへ</a></p> </div><!-- /container --> </div><!-- /warpper --> </body> </html><p><input type="submit" value="送信" class="btnA"></p> <input type="hidden" name="token" value="<?php echo h($_SESSION['token']); ?>"> </form>
■config.php
<?php //定数の設定 define('DSN','mysql:host=localhost;dbname=contacts_php;charset=utf8'); define('DB_USER','dbuser'); define('DB_PASSWORD','※※※※'); define('SITE_URL','http://localhost/php/contacts_php/'); define('ADMIN_URL',SITE_URL.'admin/'); // 文字化け対策 $options=array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET CHARACTER SET'utf8'"); //エラー出力の設定「NOTICE」以外のエラー全て出力しなさい error_reporting(E_ALL & ~E_NOTICE); //セッションの有効範囲設定(contacts_phpフォルダのみに) session_set_cookie_params(0,'/contacts_php/'); ?>■functions.php
<?php function connectDb(){ try{ return new PDO(DSN, DB_USER, DB_PASSWORD); }catch(PDOException $e){ echo $e->getMessage(); exit; } } function h($s){ return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); } function setToken(){ if(!isset($_SESSION['token'])){ $_SESSION['token'] = sha1(uniqid(mt_rand(), true)); } } function checkToken(){ if(empty($_POST['token']) || $_POST['token'] != $_SESSION['token']){ echo "不正な投稿です!"; exit; } } ?>回答1件
あなたの回答
tips
プレビュー