■やりたいこと
いつもお世話になっております。
今回は表題の通りに、あるページに制限をかけたいのです。
よくある飲料のキャンペーンのように、シリアルコードを発行してサイトで入力してもらい初めて見られるページが現れるように。
シリアルナンバー発行の条件は2通りです。
1:サイト上で特定の人物だけが操作し、ナンバー発行ボタンなどを押すと発行。
2:不特定多数からpaypalで入金後、支払い報告をもらったらメールでナンバー発行。
■試したこと
参考サイト「(http://saitetutan.hatenablog.jp/entry/2016/10/20/193225)」
シリアル発行のスクリプト
<?php $salt = "##################"; session_start(); $mysqli = new mysqli('############', '###########', '###################', '##########'); $status = "none"; if(!empty($_POST["serial"])){ $password = md5($_POST["serial"] . $salt); $use = false; $stmt = $mysqli->prepare("SELECT * FROM serial WHERE serial = ? AND used = ?"); $stmt->bind_param('si', $password, $use); $stmt->execute(); $stmt->store_result(); //結果の行数が1だったら成功 if($stmt->num_rows == 1){ $status = "ok"; $use = true; $stmt = $mysqli->prepare("UPDATE serial SET used = ? WHERE serial = ?"); $stmt->bind_param('is', $use, $password); $stmt->execute(); }else $status = "failed"; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Serial</title> </head> <body> <h1>Serial</h1> <?php if($status == "ok"): ?> <p><a href="##################3">ダウンロード</a></p> <?php elseif($status == "failed"): ?> <p>シリアルが間違っています。</p> <?php else: ?> <form method="POST" action="ninshyou.php"> シリアルコード:<input type="text" name="serial" /> <input type="submit" value="認証" /> </form> <?php endif; ?> </body> </html>
シリアル認証用のスクリプト
<?php $salt = "##################"; session_start(); $mysqli = new mysqli('############', '###########', '###################', '##########'); $status = "none"; if(!empty($_POST["serial"])){ $password = md5($_POST["serial"] . $salt); $use = false; $stmt = $mysqli->prepare("SELECT * FROM serial WHERE serial = ? AND used = ?"); $stmt->bind_param('si', $password, $use); $stmt->execute(); $stmt->store_result(); //結果の行数が1だったら成功 if($stmt->num_rows == 1){ $status = "ok"; $use = true; $stmt = $mysqli->prepare("UPDATE serial SET used = ? WHERE serial = ?"); $stmt->bind_param('is', $use, $password); $stmt->execute(); }else $status = "failed"; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Serial</title> </head> <body> <h1>Serial</h1> <?php if($status == "ok"): ?> <p><a href="##################3">ダウンロード</a></p> <?php elseif($status == "failed"): ?> <p>シリアルが間違っています。</p> <?php else: ?> <form method="POST" action="ninshyou.php"> シリアルコード:<input type="text" name="serial" /> <input type="submit" value="認証" /> </form> <?php endif; ?> </body> </html>
やりたいこととして理想的だったので、参考にさせていただいていたのですが
session_start(); $mysqli = new mysqli('############', '###########', '###################', '##########'); $status = "none";
この部分の意味や、発行と認証コードの違いなどがよく理解できませんでした。
もう一つのやり方として
1:あらかじめExcelでシリアルナンバーを作っておき、データベースに入れておく。
2:データベースから引っ張ってくる処理と、入力されたシリアルナンバーの照らし合わせをする。
以上を考えたのですが、データベースのこともよく理解できておらず、どう取り掛かっていいのかもわかりません。
また、会員サイトプラグイン「Simple Membership」を導入してみましたが
パスワードを自由に設定・変更できてしまう仕様だったので向きませんでした。
■環境
データベースはMySQLを使っています。
お分かりになる方がいらっしゃいましたら、なにとどよろしくお願いいたします!
■追記
目指すゴールは、「シリアルナンバー発行と認証後、ログインする一番簡単なプログラムを作りたい」ことです。
①上記参考サイトのコードで可能なのか、どれがどのような動きなのか、変更するとしたらどこを変えたらいいのかが知りたいです。
②①よりも簡単な作り方があるようでしたらご教授いただきたいです。
③paypalの入金が確認できたらメールでシリアルを送る際、①や②でメールを送る機能を加えることはできるのでしょうか?もしくは手動で発行することになるのでしょうか?なるべく自動で送れる機能を作りたいです。
ご教授のほどよろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー