PHP邮件发送代码点击提交后下载文件问题求助
问题描述
点击提交按钮后iletişim.php文件被下载,无法执行邮件发送逻辑,目前没有域名和主机,想问是不是这个原因导致的?
PHP代码(iletişim.php)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" type="text/css" href="iletişim.css"> </head> <body> <?php if(!empty ($_POST["submit"])){ $Username = $_POST["Username"]; $Useremail = $_POST["Useremail"]; $userMessage = $_POST["userMessage"]; $toEmail = $_POST["efealiazad@gmail.com"]; $mailHeaders = "Name:" . $Username . "\n Email:" . $Useremail . "\n Message:" . $userMessage . "\n"; } if(mail($toEmail, $Username, $mailHeaders)){ $message = "Bilgileriniz Başarıyla Alındı"; } ?> <form> <div class="araka slide-left"> <div class="DS"><h3>Destek Sistemi</h3></div> <input type="text" id="name" name="Username" class="contact-form-text" placeholder="Adınız/soyadınız" required> <input type="email" id="email" name="Useremail" class="contact-form-text" placeholder="E-Posta Adresiniz" required> <textarea name="userMessage" id="" cols="30" rows="10" class="contact-form-text" placeholder="Sorununuz nedir kısaca özetleyin" required></textarea> <input type="submit" value="submit" name="Gönder" class="contact-form-text-btn submit"> </form> </body> </html>
HTML代码(iletişim.html)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="iletişim.css"> <title>İletişim Bilgileri|Ad</title> <script src="https://code.jquery.com/jquery-3.4.1.js"></script> </head> <body> <div class="header"> <nav> <div class="logo"> <img src="images/logo.png"> </div> <ul> <li><a href="index.html">ANA SAYFA</a></li> <li><a href="#">HESAP SATIN AL</a> <ul class="submenu"> <li><a href="hesapsatınal.html#valorant" class="valorant">Valorant</a></li> <li><a href="hesapsatınal.html#steam">Steam</a></li> </ul> </li> <li><a href="iletişim.html">BİZE ULAŞIN</a></li> <li><a href="sözleşme.html">KULLANICI SÖZLEŞMESİ</a></li> <li><a href="FAQ.html">FAQ</a></li> </ul> </nav> <div class="sözls"> <div class="skosul slide-left"> <form class="contact-form" action="iletişim.php"> <div class="araka slide-left"> <div class="DS"><h3>Destek Sistemi</h3></div> <input type="text" id="name" name="name" class="contact-form-text" placeholder="Adınız/soyadınız" required> <input type="email" id="email" name="email" class="contact-form-text" placeholder="E-Posta Adresiniz" required> <textarea name="" id="" cols="30" rows="10" class="contact-form-text" placeholder="Sorununuz nedir kısaca özetleyin" required></textarea> <input type="submit" id="" name="submit" class="contact-form-text-btn submit"> </form> </div> </body> </html>
解决方案
1. PHP文件被下载的核心原因
是的,没有域名和支持PHP的主机(或本地PHP运行环境)是直接原因。PHP是服务器端脚本语言,必须在安装了PHP解析器的Web服务器(如Apache、Nginx)环境下才能执行,直接用浏览器打开本地PHP文件时,浏览器会把它当作普通文本文件下载,不会解析执行其中的PHP代码。
解决方式二选一:
- 本地搭建PHP运行环境(如XAMPP、WAMP),将文件放到服务器根目录(比如XAMPP的htdocs文件夹),通过
localhost/你的文件名.php访问; - 购买支持PHP的虚拟主机,上传文件后通过域名访问。
2. 代码需修复的其他问题
即使解决了环境问题,现有代码还有多处错误会导致功能失效:
(1) 表单提交方式不匹配
HTML表单默认用GET方法,但PHP代码判断的是$_POST["submit"],需给表单添加method="POST":
<form class="contact-form" action="iletişim.php" method="POST">
(2) 表单字段名不匹配
HTML表单字段名是name、email,但PHP里取的是$_POST["Username"]、$_POST["Useremail"],需统一字段名,比如修改HTML:
<input type="text" id="name" name="Username" class="contact-form-text" placeholder="Adınız/soyadınız" required> <input type="email" id="email" name="Useremail" class="contact-form-text" placeholder="E-Posta Adresiniz" required> <textarea name="userMessage" id="" cols="30" rows="10" class="contact-form-text" placeholder="Sorununuz nedir kısaca özetleyin" required></textarea>
(3) 收件邮箱取值错误
当前$toEmail = $_POST["efealiazad@gmail.com"]是从POST数据里取不存在的字段,需直接写死收件邮箱:
$toEmail = "efealiazad@gmail.com";
(4) 语法错误
代码多处缺失分号,需补充:
$toEmail = "efealiazad@gmail.com";$message = "Bilgileriniz Başarıyla Alındı";
(5) 邮件函数参数错误
mail函数第二个参数是邮件主题,当前传的是用户名,需改成合理主题:
$subject = "网站联系表单消息 - " . $Username; if(mail($toEmail, $subject, $mailHeaders)){ $message = "Bilgileriniz Başarıyla Alındı"; }
(6) 提交按钮name不匹配
PHP判断的是$_POST["submit"],但PHP文件里的按钮name是Gönder,需统一:
<input type="submit" value="Gönder" name="submit" class="contact-form-text-btn submit">
内容的提问来源于stack exchange,提问作者Unsullied
相关产品推荐
相关产品推荐

