Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
第一个OOP脚本(PHP电子邮件脚本)_Php_Email - Fatal编程技术网

第一个OOP脚本(PHP电子邮件脚本)

第一个OOP脚本(PHP电子邮件脚本),php,email,Php,Email,这是我的第一个OOP脚本,一个为我正在工作的站点设计的PHP电子邮件脚本:ndkutz(.)net。我希望一个用户能够从网站发送电子邮件给理发店老板。我自学成才,尽管我知道我走的是正确的道路,但它不起作用,我感到完全迷失了方向。我的代码好吗?另外,我在代码评审中发布了这篇文章,但没有效果 <?php $error = ''; $errormsg = ''; $finalMessage = ''; $finalName = ''; $finalSubject = ''; $fi

这是我的第一个OOP脚本,一个为我正在工作的站点设计的PHP电子邮件脚本:ndkutz(.)net。我希望一个用户能够从网站发送电子邮件给理发店老板。我自学成才,尽管我知道我走的是正确的道路,但它不起作用,我感到完全迷失了方向。我的代码好吗?另外,我在代码评审中发布了这篇文章,但没有效果

<?php

 $error = '';
 $errormsg = '';
 $finalMessage = '';
 $finalName = '';
 $finalSubject = '';
 $finalTo = '';
 $finalHeader = '';
 $sendingEmail = '';
 $emailMessageS = '';
 $emailMessageF = '';

class emailConstruction 
{
    private $from = "";
    private $name = "";
    private $message = "";

    public function scrubAll($data) {
        $data = htmlspecialchars($data);
        $data = trim($data);
        $data = strip_tags($data);
        return $data;
    }

    public function setfrom($from){
        $this->from = stripslashes($from);
        $this->from = $from;
    }

    public function getFrom(){
        return $this->from;
    }

    public function setName($name){
        $this->name = scrubAll($name);
        $this->name = $name;
    }

    public function getName(){
        return $this->name;
    }


    public function setMessage($message){
        $this->message = scrubAll($data);
        $this->message = wordwrap($data,70,"<br />");
        $this->message = $message;
    }

    public function getMessage(){
        return $this->message;
    }
}

if(isset($_POST['submit']))
    {
        if(empty($_POST['uname']))
        {
            $error = 1;
            $errormsg = "Your name is required.";
            return false;
        }else{
            $error = 0;
            $createEmail = new emailConstruction;
            $createEmail->setName($_POST['uname']);
        }
        if(empty($_POST['umail']))
        {
            $error = 1;
            $errormsg = "Email address required.";
            return false;
        }else {
            $error = 0;
            $createEmail =  new emailConstruction;
            $createEmail->setTo($_POST['umail']);
        }
        if(empty($_POST['umsg']))
        {
            $error = 1;
            $errormsg = "Message is required";
            return false;
        }else{
            $error = 0;
            $createEmail = new emailConstruction;
            $createEmail->setMessage($_POST['umsg']);
        }
        if($error = 0)
        {   $finalHeader = 'from:' . $finalFrom;
            $finalHeader .='MIME-Version: 1.0\r\n';
            $finalHeader .='Content-type: text/html\r\n';
            $finalMessage = $createEmail->getMessage();
            $finalName = $createEmail->getName();
            $finalSubject = 'New potiential client by the name of ' . $finalName;
            $finalTo = 'madebyknight@icloud.com';

            $sendingEmail = mail($finalTo,$finalSubject,$finalMessage,$finalHeader);
            if($sendingEmail == true)
            {
                $emailMessageS = 'Email sent successfully!';
            }else{
                $emailMessageF = 'Error. Please try again!';
            }
        }
    }
?>

首先,当您执行
setXXX
时,您的类当前正在重写某些值。应该是这样的:

类结构
{
私人$from=“”;
私人$name=“”;
私人$message=“”;
公共功能(数据){
$data=htmlspecialchars($data);
$data=修剪($data);
$data=带标签($data);
返回$data;
}
公共函数setfrom($from){
$this->from=stripslashes($from);
}
公共函数getFrom(){
返回$this->from;
}
公共函数setName($name){
$this->name=scrubAll($name);
}
公共函数getName(){
返回$this->name;
}
公共函数setMessage($message){
$this->message=wordwrap(scrubAll($data),70,“
”; } 公共函数getMessage(){ 返回$this->message; } }
注意,我删除了一些代码行。还要注意我们是如何将
scrubAll($data)
的返回值分配给
wordwrap
函数中的
setMessage()

好了,现在修好了,让我们继续吧

您试图在
if
语句的末尾执行一些输入验证。但每次检查时,您都在创建一个新的
emailConstruction
对象

我已经把它清理了一点:

if(isset($\u POST['submit'])){
$error=0;
如果(空($_POST['uname'])){
$error=1;
$errormsg=“需要您的姓名。”;
}
如果(空($_POST['umail'])){
$error=1;
$errormsg=“需要电子邮件地址。”;
}
if(空($_POST['umsg'])){
$error=1;
$errormsg=“消息是必需的”;
}
如果($error==0){
$createEmail=新建emailConstruction();
$createEmail->setName($_POST['uname']);
$createEmail->setTo($_POST['umail']);
$createEmail->setMessage($_POST['umsg']);
$finalHeader='from:'。$finalFrom;
$finalHeader.='MIME-Version:1.0\r\n';
$finalHeader.='Content-type:text/html\r\n';
$finalMessage=$createEmail->getMessage();
$finalName=$createEmail->getName();
$finalSubject='New potiential client,名称为'.$finalName;
$finalTo=madebyknight@icloud.com';
$sendingEmail=mail($finalTo,$finalSubject,$finalMessage,$finalHeader);
如果($sendingEmail==true){
$emailMessageS='Email已成功发送!';
}否则{
$emailMessageF='错误。请重试!';
}
}否则{
//有些字段没有填满。
//做点什么。
}
}
虽然它不会影响代码的功能,但也有一些约定是可以采用的

  • 类名通常以大写字母开头。因此,不要将类命名为
    emailConstruction
    ,而是将其命名为
    emailConstruction
  • 在可能的情况下,尝试使用名词而不是动词来命名类也是一种很好的做法。因为我们不给类命名为
    EmailConstruction
    ,而是称它为
    EmailMessage
    ,或者类似的东西

人们使用的基本惯例还有很多,但当你做到这一点时,你就会跨越这座桥

scrubAll($var)
必须是
$this->scrubAll($var)
-除非在类之外有一个同名的现有函数。在类之外,
$error=0将导致发送电子邮件失败。删除包含它的所有行。
如果($error=0)
是,就这样。。非常感谢!非常感谢,谢谢!我只是觉得自己很愚蠢,不是绝对愚蠢。英雄联盟