用于验证/卫生的PHP编译器内部功能与外部功能
在寻找一个好答案大约一周后,我意识到我必须寻求一些帮助。一周来,我一直在争论是否应该使用PHP mailer或Swiftmailer,我决定使用PHP mailer,因为我觉得文档更全面,而且有更多的示例。查看代码后,我发现PHP mailer有许多内置的卫生/验证功能。我想知道是否有人看到了它们的缺点或漏洞?你会如何使用它们?为了让这个问题更具实质性,我想知道如何使用phpmailer验证/清理process.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
<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);