前提・実現したいこと
PHPで入力したメールアドレス、ニックネーム、パスワードを保存したいのですが何度やっても保存されていません
MACを使用しており、開発環境はMAMPです。
phpadminを使っていてデータベース名はstudyです。
発生している問題・エラーメッセージ
エラーメッセージは出てこないが、データベースには保存されてい無い
該当のソースコード
<?php try { $db = new PDO('mysql:dbname=study;host=localhost;charset=utf8','root','root'); }catch(PDOException $e) { print('DB接続エラー:' . $e->getMessage()); } ?> <?php session_start(); require('../dbconnect.php'); 上のソースコードは違うフォルダに書いています。 ?> ←のソースコードはフォーマットがあるフォルダです
試したこと
ネットで調べ出てきたことはほとんどやりました
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。。
DB接続の記述しかないようですが、ソースコードは、これだけでしょうか?
<?php
session_start();
require('../dbconnect.php');
if(!empty($_POST)){
if($_POST['name'] === ''){
$error['name'] = 'blank';
}
if($_POST['email'] === ''){
$error['email'] = 'blank';
}
if(strlen($_POST['password']) < 4){
$error['password'] = 'length';
}
if($_POST['password'] === ''){
$error['password'] = 'blank';
}
if(empty($error)){
$members = $db->prepare('SELECT COUNT(*) AS cnt FROM members WHERE email=?');
$members->execute(array($_POST['email']));
if($record['cnt'] > 0){
$error['email'] = 'duplicate';
}
}
if(empty($error)){
$_SESSION['join'] = $_POST;
header('Location: check.php');
exit();
}
}
if($_REQUEST['action'] == 'rewrite' && isset($_SESSION['join'])){
$_POST = $_SESSION['join'];
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>会員登録</title>
<link rel="stylesheet" href="../style.css" />
</head>
<body>
<div id="wrap">
<div id="head">
<h1>会員登録</h1>
</div>
<div id="content">
<p>次のフォームに必要事項をご記入ください。</p>
<form action="" method="post" enctype="multipart/form-data">
<dl>
<dt>ニックネーム<span class="required">必須</span></dt>
<dd>
<input type="text" name="name" size="35" maxlength="255" value="<?php print(htmlspecialchars
($_POST['name'],ENT_QUOTES));?>" />
<?php if($error['name']=== 'blank'):?>
<p class="error">*ニックネームを入力してください</p>
<?php endif;?>
</dd>
<dt>メールアドレス<span class="required">必須</span></dt>
<dd>
<input type="text" name="email" size="35" maxlength="255" value="<?php print(htmlspecialchars
($_POST['email'],ENT_QUOTES));?>" />
<?php if($error['email']=== 'blank'):?>
<p class="error">*メールアドレスを入力してください</p>
<?php endif;?>
<?php if($error['email'] === 'duplicate'):?>
<p class="error">*指定されたメールアドレスはすでに使われています</p>
<?php endif;?>
<dt>パスワード<span class="required">必須</span></dt>
<dd>
<input type="password" name="password" size="10" maxlength="20" value="<?php print(htmlspecialchars
($_POST['password'],ENT_QUOTES));?>" />
<?php if($error['password'] === 'length'):?>
<p class="error">*パスワードは4文字以上で入力してください</p>
<?php endif;?>
<?php if($error['password'] === 'blank'):?>
<p class="error">*パスワードを入力してください</p>
<?php endif;?>
</dd>
</dl>
<div><input type="submit" value="入力内容を確認する" /></div>
</form>
</div>
</body>
</html>
<?php
require('dbconnect.php');
if(!empty($_POST)){
if($_POST['email'] !== '' && $_POST['password'] !== ''){
$login = $db->prepare('SELECT * FROM members WHERE email=? AND password=?');
$login->execute(array(
$_POST['email'],
sha1($_POST['password'])
));
$member = $login->fetch();
if($member){
$_SESSION['id'] = $member['id'];
$_SESSION['time'] = time();
header('Location:index.php');
exit();
}else{
$error['login'] = 'failed';
}
}else{
$error['login'] = 'blank';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>ログインする</title>
</head>
<body>
<div id="wrap">
<div id="head">
<h1>ログインする</h1>
</div>
<div id="content">
<div id="lead">
<p>メールアドレスとパスワードを記入してログインしてください。</p>
<p>入会手続きがまだの方はこちらからどうぞ。</p>
<p>»<a href="join/">入会手続きをする</a></p>
</div>
<form action="" method="post">
<dl>
<dt>メールアドレス</dt>
<dd>
<input type="text" name="email" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['email'],
ENT_QUOTES)); ?>" />
<?php if($error['login'] === 'blank'):?>
<p class="error">*メールアドレスとパスワードを入力してください</p>
<?php endif;?>
<?php if($error['login'] === 'failed'):?>
<p class="error">*ログインに失敗しました。正しくご記入ください</p>
<?php endif;?>
</dd>
<dt>パスワード</dt>
<dd>
<input type="password" name="password" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['password'],
ENT_QUOTES)); ?>" />
</dd>
<dt>ログイン情報の記録</dt>
<dd>
<input id="save" type="checkbox" name="save" value="on">
<label for="save">次回からは自動的にログインする</label>
</dd>
</dl>
<div>
<input type="submit" value="ログインする" />
</div>
</form>
</div>
<div id="foot">
<p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p>
</div>
</div>
</body>
</html>
<?php
require('dbconnect.php');
if(!empty($_POST)){
if($_POST['email'] !== '' && $_POST['password'] !== ''){
$login = $db->prepare('SELECT * FROM members WHERE email=? AND password=?');
$login->execute(array(
$_POST['email'],
sha1($_POST['password'])
));
$member = $login->fetch();
if($member){
$_SESSION['id'] = $member['id'];
$_SESSION['time'] = time();
header('Location:index.php');
exit();
}else{
$error['login'] = 'failed';
}
}else{
$error['login'] = 'blank';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>ログインする</title>
</head>
<body>
<div id="wrap">
<div id="head">
<h1>ログインする</h1>
</div>
<div id="content">
<div id="lead">
<p>メールアドレスとパスワードを記入してログインしてください。</p>
<p>入会手続きがまだの方はこちらからどうぞ。</p>
<p>»<a href="join/">入会手続きをする</a></p>
</div>
<form action="" method="post">
<dl>
<dt>メールアドレス</dt>
<dd>
<input type="text" name="email" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['email'],
ENT_QUOTES)); ?>" />
<?php if($error['login'] === 'blank'):?>
<p class="error">*メールアドレスとパスワードを入力してください</p>
<?php endif;?>
<?php if($error['login'] === 'failed'):?>
<p class="error">*ログインに失敗しました。正しくご記入ください</p>
<?php endif;?>
</dd>
<dt>パスワード</dt>
<dd>
<input type="password" name="password" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['password'],
ENT_QUOTES)); ?>" />
</dd>
<dt>ログイン情報の記録</dt>
<dd>
<input id="save" type="checkbox" name="save" value="on">
<label for="save">次回からは自動的にログインする</label>
</dd>
</dl>
<div>
<input type="submit" value="ログインする" />
</div>
</form>
</div>
<div id="foot">
<p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p>
</div>
</div>
</body>
</html>