我有一个复选框,用户可以在其中选择要下载的PDF。用户可以选择多个PDF ..提交..用户将收到一封包含下载链接的电子邮件。我设法通过电子邮件发送给用户,但无法根据他们从复选框中选择的内容提供下载链接。非常感谢
<?php
session_start();
require_once('/config/database.php') ;
error_reporting(0);
//if(isset($_POST['submit'])){
if(isset($_POST) && ($_POST['submit'] == 1)){
$error = '';
$name = $_POST['name'];
$email = $_POST['email'];
$Country = $_POST['Country'];
$checkBox = implode('<br>', $_POST['download']);
$registered_at = date('Y-m-d H:i:s');
//foreach($_POST['download'] as $value) {
//$check_msg .= "Checked: $value\n";
}
if ($_POST['secCode'] != $_SESSION['securityCode']) {
// unset($_SESSION['securityCode']);
$error .= "<script>alert('Sorry the security code is invalid. Please try it again')</script>";
}
if ($error == ''){
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }
$sql = "INSERT INTO users (name, email, country,download, registered_at)
VALUES ('$name','$email', '$Country', '" . $checkBox . "', '$registered_at' )";
if (mysql_query($sql)){
//email function start
//html checkbox
<div class="control-group">
<div class="controls">
<p><h5>Select device to download ( <input type='checkbox' name='checkall' onclick='checkedAll(subscribe);'><label>  Select all</label>) </h5></p>
<!--DIAGNOSTIC DEVICES-->
<input id="1" class="placeholder span4_1" type="checkbox" name="download[]" value="1"><label>1</label><br>
<input id="2" class="placeholder span4_1" type="checkbox" name="download[]" value="2"><label>2</label><br>
<input id="3" class="placeholder span4_1" type="checkbox" name="download[]" value="3"><label>3</label> <br>
<input id="4" class="placeholder span4_1" type="checkbox" name="download[]" value="4"><label>4</label><br>
<input id="5" class="placeholder span4_1" type="checkbox" name="download[]" value="5"><label>5</label><br>
<input id="6" class="placeholder span4_1" type="checkbox" name="download[]" value="6"><label>6</label> <br>
<!--THERAPEUTIC DEVICES-->
<input id="7" type="checkbox" name="download[]" value="7"><label>7</label><br>
<input id="8" type="checkbox" name="download[]" value="8"><label>8</label><br>
<span class="help-inline"></span>
</div>
</div>
及以下是他们将通过下载链接收到的电子邮件。从这里我能够回应他们想要下载的设备,但无法为他们提供链接。
<html>
<head></head>
<body>
<b><font size="4"> Download Link</font></b><BR><BR>
<p>Dear <?php echo $name ?>,</p>
<p>Thank you for signing up at <a href="http://localhost/test/" target="_blank"> test.com</a>.<br>
<p>Following is the link to download the device pdf that you have selected.</p><br>
<?php
echo $checkBox;
?>
答案 0 :(得分:0)
您的复选框有值(1,2,3),对吗?下一步是将这些值与您的pdf文件名相关联,以便稍后构建锚。为此,您需要为复选框值设置一个数组为pdf文件关系。例如,如果选中复选框1
,则pdf名称为one.pdf
。
// checkbox value to pdf filenames array
$pdf_filenames = array(
'1' => 'one.pdf',
'2' => 'two.pdf'
);
// $selected is the value of the selected checkbox
// fetch it from $_POST['download']
$pdf_filename = $pdf_filenames[$selected];
// build anchor template for the email
$link_template = '<a src="http://the.website/downloads/%s">Download %s</a>';
// insert the values via sprintf (maybe the second one is $selected, dunno)
$link = sprintf($link_template, $pdf_filename, $pdf_filename);
// for usage in the email template
echo $link;
// result: <a src="http://the.website/downloads/one.pdf">Download one.pdf</a>
我认为下载链接的第一部分是静态的,只有文件名更改。
评论中的问题:
我可能知道为什么得到2 $ pdf_filename?
$ link_template是一个字符串。它准备与sprintf()一起使用。
%
标记占位符,s
表示在sprintf格式化时,参数被视为字符串并显示为字符串。这就是为什么有字符串的占位符:两个%s
。
现在,当调用sprintf()时,第一个参数是模板字符串。 接下来的两个参数是包含值的变量,应该为%s占位符插入。
第一个占位符位于src标记内。这显然是文件名。
第二个占位符可能是文件名或复选框的值或修改后的文件名 - 它取决于您要显示为锚/链接内容的内容。
例如,您可以截断文件扩展名,只打印one
作为链接。