【问题标题】:PHP Contact Form Script - File AttachmentsPHP 联系表单脚本 - 文件附件
【发布时间】:2021-07-30 08:28:25
【问题描述】:

提前感谢您的回答。我希望在我的 PHP 联系表单脚本中添加文件上传功能。例如,用户可以上传简历。

下面的 PHP 脚本运行良好,有助于减少垃圾邮件,并且非常易于理解。所以我们希望保持这种格式,不要让它变得更复杂。

我将如何编辑现有脚本以包含此功能?

任何帮助表示赞赏。


/**
*
* Function to validate an email address
*
**/

function validate_email($email)
{
    //Perform a basic syntax-Check
    //If this check fails, there's no need to continue
    $email = filter_var($email, FILTER_SANITIZE_STRING);
    if (!filter_var($email, FILTER_VALIDATE_EMAIL))
        return false;

    //extract host
    list($user, $host) = explode("@", $email);
    //check, if host is accessible
    if (!checkdnsrr($host, "MX") && !checkdnsrr($host, "A"))
        return false;
        
    return true;
}

/**
*
* Get/set variables
*
**/

$name       = isset($_POST['name'])     ? htmlspecialchars(stripslashes($_POST['name']), ENT_QUOTES, "UTF-8")       : '';
$email      = isset($_POST['email'])    ? htmlspecialchars(stripslashes($_POST['email']), ENT_QUOTES, "UTF-8")      : '';
$confirm    = isset($_POST['confirm'])  ? htmlspecialchars(stripslashes($_POST['confirm']), ENT_QUOTES, "UTF-8")    : '';
$message    = isset($_POST['message'])  ? htmlspecialchars(stripslashes($_POST['message']), ENT_QUOTES, "UTF-8")    : '';
$SPAM       = $_POST["spam-check"];

/**
*
* Check no empty values
*
**/

if (empty($name) OR empty($email) OR empty($confirm) OR empty($message) OR !empty($SPAM) OR !validate_email($email) OR ($email !== $confirm))
{
    exit("There was an error whilst processing your request, please call us or try again later – Thank You");
}
else
{   
    $subject = "Website Contact Form Submit";
    $to      = "email@myemail.co.uk";

    $body = "Name: " . $name . "\n";
    $body .= "Email: " . $email . "\n\n";
    $body .= "Message:\n" . $message;

    $header = "From: " . $name . " <" . $email . ">\n";
    $header .= "Reply-To: " . $name . " <" . $email . ">\n";

    if ( @mail($to, $subject, $body, $header) )
    {
        echo json_encode( array("sent"=>"success", "feedback"=>"Your query has been sent successfully") );
        exit;
    }
}```

【问题讨论】:

  • 您要上传文件还是通过邮件发送?
  • @Smurker 我希望用户可以选择在联系表单上上传文件。然后像联系表格的其余部分一样通过电子邮件发送。我希望这很清楚。
  • 你的问题然后分成两部分。 Upload a file to a remote server 然后send it via email。看看我链接到你的答案并尝试一下!

标签: php file-upload contact-form


【解决方案1】:

例如,您有这样的文件/cv 上传输入:

<input name="userfile" type="file" />
  1. 在脚本中创建新函数
function upload_file($file_input, $upload_dir = 'uploads/')
  {
  // return false if error occurred
 $error = $_FILES[$file_input]['error'];
   
        if ($error !== UPLOAD_ERR_OK) {
            return false;
        }
    
        // move the uploaded file to the upload_dir
        $new_file = $upload_dir . $_FILES[$file_input]['name'];
    
        move_uploaded_file($_FILES[$file_input]['tmp_name'], $new_file);
    }}

只需像这样在 validate_email() 函数中传递文件:

/**
*
* Get/set variables
*
**/

$name       = isset($_POST['name'])     ? htmlspecialchars(stripslashes($_POST['name']), ENT_QUOTES, "UTF-8")       : '';
$email      = isset($_POST['email'])    ? htmlspecialchars(stripslashes($_POST['email']), ENT_QUOTES, "UTF-8")      : '';
$confirm    = isset($_POST['confirm'])  ? htmlspecialchars(stripslashes($_POST['confirm']), ENT_QUOTES, "UTF-8")    : '';
$message    = isset($_POST['message'])  ? htmlspecialchars(stripslashes($_POST['message']), ENT_QUOTES, "UTF-8")    : '';
$SPAM       = $_POST["spam-check"];
// Our file from request
$file_input = $_FILES["userfile"];

// upload if exists
if(isset($file_input)
{
    upload_file($file_input);
}

【讨论】:

  • 您好,联系表格提交,它允许我上传文件,但文件没有通过电子邮件到达?顺便感谢您的帮助!
  • 这是您问题的第二部分。 send file via email
猜你喜欢
  • 2017-11-12
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 2011-08-27
  • 2010-12-23
  • 1970-01-01
相关资源
最近更新 更多