我已经在PHP中完成了很多联系表单没有问题,但是我对oop非常陌生,并且我无法完全理解这应该如何工作。我正在和一个正在帮助我自学的导师一起工作,基本上给了我资源来学习oop,但是我一直在坚持这一点。我将制作一个简单的联系表单,将用户信息发送到同一表单上指定的电子邮件。这些是我的要求:面向对象的PHP电子邮件联系表格不发送
用户类应:
包含相关提交的数据作为类
有一个构造方法的特性,可以让你声明类并设置在一个声明中的数据
的电子邮件类应该:
是静态
有可以让你在一个声明中发送电子邮件的方法
有一个方法,它将取代格式化标签([B]/[I]/[名称]])用适当的相当于
不得不方法适当的访问(私人/公共)
我不W¯¯因为我只是想解释为什么电子邮件没有发送,所以现在就关于验证或语法转换。
runner.php:
<?php
class User {
public $firstName;
public $lastName;
public $toEmail;
public $fromName;
public $fromEmail;
public $subject;
public $message;
public function post() {
if (isset($_POST['Submit'])) {
$mail = new email($_POST['firstName'], $_POST['lastName'], $_POST['toEmail'], $_POST['fromName'], $_POST['fromEmail'], $_POST['subject'], $_POST['message']);
$mail->toEmail = $POST['$toEmail'];
$mail->sendMail();
}
}
}
class email {
private $fristName;
private $lastName;
private $toEmail;
private $fromName;
private $fromEmail;
private $subject;
private $message;
public static function __construct($firstName, $lastName, $toEmail, $fromName, $fromEmail, $subject, $message) {
$this->firstName = $firstName;
$this->lastName = $lastName;
$this->toEmail = $toEmail;
$this->fromName = $fromName;
$this->fromEmail = $fromEmail;
$this->subject = $subject;
$this->firstName = $message;
}
function sendMail($mail) {
$contents = "To: $firstName $lastName<br />From: $fromName<br />Subject: $subject<br />Message: $message";
$headers = "From:" . $fromEmail;
$sendmail = mail($this->toEmail, $this->subject, $this->message, $this->contents, $headers);
}
}
?>
form.html:
<html>
<head>
</head>
<body>
<form action="runner.php" method="POST">
<b>To</b></br>
<label>First Name</label>
<input type="text" name="firstName" id="firstName"></br>
<label>Last Name</label>
<input type="text" name="lastName" id="lastName"></br>
<label>Email</label>
<input type="text" name="toEmail" id="toEmail"></br></br>
<b>From</b></br>
<label>Name</label>
<input type="text" name="fromName" id="fromName"></br>
<label>Email</label>
<input type="text" name="fromEmail" id="fromEmail"></br></br>
<b>Compose Email</b></br>
[b]<b>bold</b>[\b] and [i]<i>italic</i>[\i] tags permitted in email body</br>
<label>Subject</label>
<input type="text" name="subject" id="subject"></br>
<label>Body</label>
<textarea name="message" id="message"></textarea></br></br></br>
<input type="submit" value="Submit"></form>
</body>
</html>
我甚至不知道我是不是在正确的轨道与此有关。任何帮助/资源将不胜感激。
您是否收到任何错误? – j08691
你有'$ fristName'拼错了。 – romo
好吧,你永远不会调用'post()'或'sendMail()'...另外,你定义了2个类,但是从来没有实例化它们中的任何一个。所以没有事情发生。如果你想使用你定义的类,你需要先创建它们的实例,然后调用你创建的实例的方法。然后你会看到一些非常明显的自我解释错误,它们应该表明代码有什么问题。 – rid