データベースの作成、テーブルの作成、PHPからデータベース接続、クラスとインスタンス、SQLのINSERT文、セッションの破棄
データベースの作成
phpMyadminというデータベースサーバーをGUIで管理できるPHPで作られたツールを使用します
1.XAMPPのApache、MySQLを起動する。
2.Google Chromeでアドレス欄に「http://localhost/phpmyadmin」と入力する
3.「データベース」を押下します。データベース名に「contact_form」、「照合順序」に「utf8_unicode_cl」を選びます。
その後作成ボタンを押下
テーブルの作成
1.左側のパネルに「contact_form」が表示するのでそれをクリックする。
2.「名前」に「inquiries」、「カラム数」に6と入力して、実行ボタンを押下
3.「名前」に、上から「id」「name」「email」「subject」「body」「state」と入力する
「データ型」は上から「INT」「VARCHAR」「VARCHAR」「TEXT」「TEXT」「TINYINT」
「長さ/値」は上から2行目のnameが「30」、3行目emailが「100」
「デフォルト値」が上から6行目のstateが「ユーザー定義」「0」
「属性」は上から1行目のIDが「UNSIGNED」
「インデックス」は1行目のIDが「PRIMARY」
「A_I」は1行目だけチェックを入れる
4.以下のように表示されていることを確認
データベースに接続してみよう
1.form3.phpに以下のように編集する
```
<?php
session_start();
if(isset($_POST['token'],$_SESSION['token'])&& ($_POST['token'] === $_SESSION['token'])){
unset($_SESSION['token']);
$dsn = 'mysql:dbname=contact_form;host=localhost;charset=utf8';
$user = 'root';
$password ='';
$dbh = new PDO($dsn,$user,$password);
car_dump($dbh);
$dbh =null;
}else{
header('Location:http://localhost/php_form/form1.php');
exit();
}
?>
<!doctype html>
完了画面
お問い合わせありがとうございます。
```
Google Chromeを起動し「http://localhost/php_form/form1.php」にアクセスする
フォームに任意のデータを入力して、確認ボタンを押下する
また、確認画面が表示後、送信するボタンを押下しobject(PDO)#1(0){}と表示されていることを確認する
コード説明
mysql:dbname=contact_form;host=localhost;charset=utf8は
mysql:dbname=データベース名;host=ホスト名;charset=utf8と設定する
new PDO($dsn,$user,$password);は、PDOクラスをインスタンス化しているコード
$dbh=null;でデータベースと切断している
クラスとインスタンス
PDOクラスはPHPとデータベースサーバーを接続するクラスです。
プロパティ、メソッドを設計する。
また、クラスから生まれたモノをインスタンスという
クラスの中には、コンストラクタという特殊なメソdッドが定義されておりnewされるときに
このメソッドが呼び出される。コンストラクタは、通常インスタンスの初期設定をするコードを
書きます。
SQLのINSERT文
1.form3.phpに以下のように編集する
<?php
session_start();
if(isset($_POST['token'],$_SESSION['token'])&& ($_POST['token'] === $_SESSION['token'])){
unset($_SESSION['token']);
$name = $_SESSION['name'];
$email = $_SESSION['email'];
$subject = $_SESSION['subject'];
$body = $_SESSION['body'];
$dsn = 'mysql:dbname=contact_form;host=localhost;charset=utf8';
$user = 'root';
$password ='';
$dbh = new PDO($dsn,$user,$password);
$dbh->query('SET NAMES ut8');
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$sql = 'INSERT INTO inquiries (name,email,subject,body) VALUES (?,?,?,?)';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(1,$name,PDO::PARAM_STR);
$stmt->bindValue(2,$email,PDO::PARAM_STR);
$stmt->bindValue(3,$subject,PDO::PARAM_STR);
$stmt->bindValue(4,$body,PDO::PARAM_STR);
$stmt->execute();
var_dump($dbh);
$dbh =null;
}else{
header('Location:http://localhost/php_form/form1.php');
exit();
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>完了画面</title>
</head>
<body>
<p>お問い合わせありがとうございます。</p>
</body>
</html>
google Chromeを起動し「http://localhost/php_form/form1.php」にアクセスする
フォームに任意のデータを入力して、確認ボタンを押下する
また、確認画面が表示後、送信するボタンを押下する
その後「https://localhost/phpmyadmin」と入力後左のパネルに「contact_form」が表示されているのでクリック後テーブル「inquiries」の表示をクリックしてフォームで入力したデータが入っていることを確認する
セッションの破棄
form3.phpを以下のように編集する
<?php
session_start();
if(isset($_POST['token'],$_SESSION['token'])&& ($_POST['token'] === $_SESSION['token'])){
unset($_SESSION['token']);
$name = $_SESSION['name'];
$email = $_SESSION['email'];
$subject = $_SESSION['subject'];
$body = $_SESSION['body'];
$dsn = 'mysql:dbname=contact_form;host=localhost;charset=utf8';
$user = 'root';
$password ='';
$dbh = new PDO($dsn,$user,$password);
$dbh->query('SET NAMES ut8');
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$sql = 'INSERT INTO inquiries (name,email,subject,body) VALUES (?,?,?,?)';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(1,$name,PDO::PARAM_STR);
$stmt->bindValue(2,$email,PDO::PARAM_STR);
$stmt->bindValue(3,$subject,PDO::PARAM_STR);
$stmt->bindValue(4,$body,PDO::PARAM_STR);
$stmt->execute();
$dbh =null;
$_SESSION = array();
if(ini_get("session.use_cookies")){
$paarams = session_get_cookie_params();
setcookie(session_name(),'',time() - 42000, $params["path"],$params["domain"],$params["secure"],$params["httponly"]);
}
session_destroy();
}else{
header('Location:http://localhost/php_form/form1.php');
exit();
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>完了画面</title>
</head>
<body>
<p>お問い合わせありがとうございます。</p>
</body>
</html>
セッション破棄はセッションだけでなく、セッションに寒冷するクッキーファイルの削除も必要
HTTPのサーバ側はクライアントの状態を保持しない通信です。クッキーという仕組みを使うと
サーバー側にクッキーファイルのデータがリクエストのヘッダ情報としておくられます。
etcookie(session_name(),'',time() - 42000, のコードでセッションIDがはいったクッキーファイルを削除している。
以上
Author And Source
この問題について(データベースの作成、テーブルの作成、PHPからデータベース接続、クラスとインスタンス、SQLのINSERT文、セッションの破棄), 我々は、より多くの情報をここで見つけました https://qiita.com/jwpks313/items/4a955df83f6c8d84fc60著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .