【问题标题】:Requiring only an email or phone number to complete Ajax form仅需要电子邮件或电话号码即可完成 Ajax 表单
【发布时间】:2013-12-26 06:25:11
【问题描述】:

使用我的联系表格,我试图只需要输入电子邮件或电话号码来验证表格。 我在Php Contact Form - Optional Fields (trim) 看到了类似的帖子,但是它不适用于我正在处理的 ajax 表单。 这是我的代码

define( "RECIPIENT_NAME", "John Smith" );
define( "RECIPIENT_EMAIL", "john@example.com" );
define( "RECIPIENT_PHONE", "987-555-1234")
define( "EMAIL_SUBJECT", "Visitor Message" );

$success = false;
$senderName = isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "",          $_POST['senderName'] ) : "";
$senderEmail = isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "",     $_POST['senderEmail'] ) : "";
$senderPhone = isset( $POST['senderPhone'] ) ? preg_replace( "/[^\.\-\\0-9]/", "", $_POST[‘senderPhone’] ) : ””;
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-    Type:)/", "", $_POST['message'] ) : "";

if ( $senderName && $senderEmail && $senderPhone && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . " " . RECIPIENT_PHONE . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">" <" . $senderPhone . ">";
$success = mail( $recipient, EMAIL_SUBJECT, $message, $headers );
}

if ( isset($_GET["ajax"]) ) {
  echo $success ? "success" : "error";
} else {
the rest of the code :)
}

我认为答案在于这里的编码变化

$senderName && $senderEmail && $senderPhone && $message

对不起,我是新手,如果答案很明显,我深表歉意,并在此先感谢您。

【问题讨论】:

  • 您可以使用 OR 运算符 || 并将该部分条件分组到括号 ( ) 中。

标签: php ajax


【解决方案1】:
if ( $senderName && ($senderEmail || $senderPhone) && $message ) {
    // if no email set as sender
    if(!$senderEmail)$senderEmail = 'noreply@mydomain.com';

这条线有点奇怪

$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . " " . RECIPIENT_PHONE . ">";

到字段应该是这样的

$recipient = "My Name <example@example.com>";

但是你那里也有你的电话号码。试试这个

$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";

【讨论】:

  • 似乎不起作用(但我很欣赏快速响应,顺便说一句)// If all values exist, send the email if ( $senderName &amp;&amp; ($senderEmail || $senderPhone) &amp;&amp; $message ) { $recipient = RECIPIENT_NAME . " (&lt;" . RECIPIENT_EMAIL . "&gt; || &lt;" . RECIPIENT_PHONE . "&gt;)"; $headers = "From: " . $senderName . " (&lt;" . $senderEmail . "&gt; &lt;" . $senderPhone ."&gt;)"; $success = mail( $recipient, EMAIL_SUBJECT, $message, $headers ); } 这就是我合并它的方式;你能告诉我我错过了什么吗?
【解决方案2】:

替换

$senderPhone = isset( $POST['senderPhone'] ) ? 
    preg_replace( "/[^\.\-\\0-9]/", "", $_POST['senderPhone'] ) : "";

使用

$message .= isset( $_POST['message'] ) ? 
    preg_replace( "/[^\.\-\\0-9]/", "", $_POST['senderPhone'] ) : "";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    相关资源
    最近更新 更多