我想要创建自动电子证书.使用fpdf PHP类创建自定义证书非常容易.我设置它的方式是给定一个URL
http://www.example.com/makepdf.php?name=myname&class=classname
您将获得一个PDF证书,其中包含学生姓名以及他们从$ _GET变量中获取的课程.当然,这意味着任何人都可以操纵URL来轻松创建自定义证书.(他们无论如何都可以在Photoshop中执行此操作,但想法是操纵证书并非完全无关紧要.)一旦课程结束,我想向每个人发送邮件合并,并为其证书提供唯一的URL.
你会如何解决这个问题?我应该创建一组随机数并将它们与数据库中的学生/研讨会对相关联吗?有没有标准的方法来解决这个问题?
情侣解决方案脱颖而出
哈希机制将是这样的:
生成证书的链接时,您有$name和$class.您将创建第三个GET变量是一个哈希$name,$class和只有你的程序知道一个秘密的字符串.像这样的东西:
$salt = "this is my secret";
$hash = md5($name . $class . $salt);
$url = "http://www.mysite.com/certificate.php?name=" . urlencode($name) . "&class=" . urlencode($class) . "&hash=" . $hash;
Run Code Online (Sandbox Code Playgroud)
现在,当用户访问您的证书生成页面时,您必须验证哈希:
$salt = "this is my secret";
$expected = md5($_GET['name'] . $_GET['class'] . $salt);
if ($expected != $_GET['hash']) {
die("You are not authorized");
} else {
// User is OK; generate the certificate
}
Run Code Online (Sandbox Code Playgroud)