Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.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
用于验证/卫生的PHP编译器内部功能与外部功能_Php_Html_Forms_Email_Phpmailer - Fatal编程技术网

用于验证/卫生的PHP编译器内部功能与外部功能

用于验证/卫生的PHP编译器内部功能与外部功能,php,html,forms,email,phpmailer,Php,Html,Forms,Email,Phpmailer,在寻找一个好答案大约一周后,我意识到我必须寻求一些帮助。一周来,我一直在争论是否应该使用PHP mailer或Swiftmailer,我决定使用PHP mailer,因为我觉得文档更全面,而且有更多的示例。查看代码后,我发现PHP mailer有许多内置的卫生/验证功能。我想知道是否有人看到了它们的缺点或漏洞?你会如何使用它们?为了让这个问题更具实质性,我想知道如何使用phpmailer验证/清理process.php文件中的以下表单数据 <form class="form-horizon

在寻找一个好答案大约一周后,我意识到我必须寻求一些帮助。一周来,我一直在争论是否应该使用PHP mailer或Swiftmailer,我决定使用PHP mailer,因为我觉得文档更全面,而且有更多的示例。查看代码后,我发现PHP mailer有许多内置的卫生/验证功能。我想知道是否有人看到了它们的缺点或漏洞?你会如何使用它们?为了让这个问题更具实质性,我想知道如何使用phpmailer验证/清理process.php文件中的以下表单数据

<form class="form-horizontal" id="contact-form-info" action="func/mail/mail-info.php"    method="post">
<fieldset>

<div class="control-group">
    <label class="control-label" for="name">Namn</label>
    <div class="controls">  
    <input type="text" class="input-xlarge" name="name" id="name" maxlength="50" placeholder="Namn *"/>
    </div>
</div>

<div class="control-group">
  <label class="control-label" for="foretag">Företag</label>
  <div class="controls">  
    <input type="text" class="input-xlarge" name="foretag" id="foretag" maxlength="50" placeholder="Företag" />
    </div>
</div>

<div class="control-group">
    <label class="control-label" for="email">E-post</label>
    <div class="controls">
    <input type="text" class="input-xlarge" name="email" id="email" placeholder="E-post *"/>
   </div>
</div> 
<div class="control-group">
    <label class="control-label" for="subject">Ämne</label>
    <div class="controls">
    <input type="text" class="input-xlarge" name="subject" id="subject" maxlength="5000"   placeholder="Ämne *"/>
    </div>
</div>   
<div class="control-group">
<label class="control-label" for="message">Meddelande</label>
<div class="controls">
    <textarea class="input-xlarge" name="message" placeholder="Meddelande *"  id="message" rows="3"></textarea>
  </div>
  </div>

    <div class="form-actions">
  <input id="submit" name="submit" type="submit" value="Skicka" class="btn btn-custom btn-large"></input>
<input type="reset" class="btn" value="återställ"></input>
</div>    
</fieldset>                 
</form>

嗯,你不能使用你发布的代码;它是phpMailer中的一个内部函数,用于处理phpMailer对象中的内部变量

但是,您可以调用此代码使用的电子邮件地址验证例程
ValidateAddress()
,因为它是一个
public static
函数

因此,在代码中的任何地方,您都应该能够调用如下内容:

$valid = phpMailer::ValidateAddress($email_address);
…和
$valid
将设置为
true
false
,具体取决于其是否为有效地址

然而,问题中代码的要点是,这是PHPMailer在内部设置其电子邮件地址的代码,它使用的是
ValidateAddress()
本身。这意味着,只要您给phpMailer一个电子邮件地址,它就已经在进行验证了。您实际上不需要首先自己验证它,因为phpMailer无论如何都会为您进行验证

您需要做的是捕获phpMailer可能因valdation错误而向您抛出的任何错误。默认情况下,如果函数失败,它只返回
false
,因此您可以进行检查。或者,您可以打开它的异常模式,并使用
try…catch
拾取它抛出的异常

不管怎样,关键是phpMailer在默认情况下是安全的;它不会接受错误的电子邮件地址或其他无效数据。所以你的问题其实没有必要;只需将数据交给phpMailer,它就会为您进行验证


(这并不是说phpMailer是完美的代码;可能有人会在其中发现安全漏洞,就像任何其他软件一样,但只要确保更新补丁版本,这不应该成为问题)

如果它是受保护的
方法,这意味着它不能从phpMailer外部使用。ie它是供phpMailer类本身内部使用的。我敢说,反射?@Spudley,但它确实会影响phpMailer发送电子邮件所处理的信息。几天来,我一直在努力研究如何在联系人表单中安全地使用phpmailer。对于像我这样的新手来说,这似乎不是什么好的指南或指导。如果这是一个不老的指南,它们通常不是很安全。回答得很好,谢谢你抽出时间。
$valid = phpMailer::ValidateAddress($email_address);