短信宝对接PHP页面测试(快递取件码,可二改,已测试)

短信宝对接PHP页面测试(快递取件码,可二改,已测试)

说明

本系统已完成对接测试,仅用于学习用途(当然当前只有企业才能正常使用短信系统),欢迎使用

源码说明

第一次有两个文件

login.php

是登录页面,我把密码隐藏在css里面了,更简便

send.php

提交页面,有接口所有api等信息

第三个文件 code.txt

你访问后自动生成,是用于控制额度的,直接改这个文件即可

代码

Login.php

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>系统登录</title>
    <style>
        *{margin:0;padding:0;box-sizing:border-box;}
        body{background:#f5f5f5;padding:20px;font-family:Arial;}
        .login-box{max-width:400px;margin:50px auto;background:#fff;padding:30px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,0.1);}
        h2{text-align:center;margin-bottom:30px;color:#333;}
        .form-group{margin-bottom:20px;}
        input{width:100%;padding:12px;border:1px solid #ddd;border-radius:4px;font-size:16px;}
        button{width:100%;padding:12px;background:#28a745;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer;}
        button:hover{background:#218838;}
        .error{margin-top:15px;text-align:center;color:#dc3545;font-size:14px;}
        /* 登录密码(修改这里改密码,保留引号) */
        .pwd-container{--sys-pwd: "123456";}
    </style>
</head>
<body>
    <div class="login-box">
        <h2>短信发送系统登录</h2>
        <form id="loginForm" method="post" action="send.php">
            <div class="form-group">
                <input type="password" id="pwd" name="pwd" placeholder="请输入登录密码" required>
            </div>
            <button type="submit">登录</button>
            <div class="error" id="errorMsg"></div>
        </form>
    </div>

    <script>
        // 读取CSS密码验证
        const pwdContainer = document.createElement('div');
        pwdContainer.className = 'pwd-container';
        document.body.appendChild(pwdContainer);
        const sysPwd = getComputedStyle(pwdContainer).getPropertyValue('--sys-pwd').trim().replace(/"/g, '');
        document.body.removeChild(pwdContainer);

        document.getElementById('loginForm').addEventListener('submit', function(e){
            const inputPwd = document.getElementById('pwd').value;
            if(inputPwd !== sysPwd){
                e.preventDefault();
                document.getElementById('errorMsg').textContent = '密码错误,请重试';
            }
        });
    </script>
</body>
</html>

里面的这条代码设置密码

/* 登录密码(修改这里改密码,保留引号) */
        .pwd-container{--sys-pwd: "123456";}

Send.php

<?php
// 初始化会话,校验登录
session_start();
// 未登录/密码错误,跳回登录页
if(empty($_POST['pwd']) && empty($_SESSION['is_login'])){
    header('Location: login.php');
    exit;
}
// 登录成功,存入会话
if(!empty($_POST['pwd'])){
    $_SESSION['is_login'] = 1;
}

// 余额处理
$balance = 0;
$balanceFile = 'code.txt';
// 首次创建余额文件(默认100条,可修改)
if(!file_exists($balanceFile)){
    file_put_contents($balanceFile, '100');
    $balance = 100;
}else{
    $balance = intval(file_get_contents($balanceFile));
}

// 退出登录
if(isset($_GET['act']) && $_GET['act'] == 'logout'){
    session_destroy();
    header('Location: login.php');
    exit;
}

// AJAX提交接口(单独处理短信发送,不渲染页面)
if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['type']) && $_POST['type'] == 'sendSms'){
    $phone = trim($_POST['phone']);
    $address = trim($_POST['address']);
    $code = trim($_POST['code']);
    $res = ['code' => 0, 'msg' => '', 'balance' => $balance];

    // 输入校验
    if(empty($phone) || empty($address) || empty($code)){
        $res['code'] = 1;
        $res['msg'] = '手机号、地址、取件码不能为空';
    }elseif(!preg_match('/^1[3-9]\d{9}$/', $phone)){
        $res['code'] = 1;
        $res['msg'] = '手机号格式错误';
    }elseif($balance <= 0){
        $res['code'] = 1;
        $res['msg'] = '余额不足,无法发送';
    }else{
        // 替换短信变量
        $smsContent = "【顺德区古孜巴信息】您的快递已到达,请前往{$address},取件码为{$code},菜鸟驿站,请及时收货。";
        
        // 短信API配置
        $statusStr = array(
            "0" => "短信发送成功",
            "-1" => "参数不全",
            "-2" => "服务器不支持curl/fsocket,请联系空间商",
            "30" => "密码错误",
            "40" => "账号不存在",
            "41" => "平台余额不足",
            "42" => "帐户已过期",
            "43" => "IP地址限制",
            "50" => "内容含有敏感词"
        );	
        $smsapi = "http://www.smsbao.com/";
        $user = "账户";
        $pass = md5("秘钥");
        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($smsContent);
        
        // 发送并获取结果
        $result = file_get_contents($sendurl);
        $res['msg'] = $statusStr[$result];
        
        // 发送成功扣余额
        if($result == 0){
            $newBalance = $balance - 1;
            file_put_contents($balanceFile, $newBalance);
            $res['balance'] = $newBalance;
        }else{
            $res['code'] = 1;
        }
    }
    echo json_encode($res);
    exit;
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>快递取件短信发送</title>
    <style>
        *{margin:0;padding:0;box-sizing:border-box;}
        body{padding:20px;background:#f5f5f5;font-family:Arial;}
        .container{max-width:500px;margin:0 auto;background:#fff;padding:30px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,0.1);}
        h2{text-align:center;margin-bottom:30px;color:#333;}
        .logout{text-align:right;margin-bottom:20px;}
        .logout a{color:#dc3545;text-decoration:none;font-size:14px;}
        .form-group{margin-bottom:20px;}
        label{display:block;margin-bottom:8px;color:#666;font-size:14px;}
        input{width:100%;padding:12px;border:1px solid #ddd;border-radius:4px;font-size:16px;}
        button{width:100%;padding:12px;background:#007bff;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer;}
        button:disabled{background:#ccc;cursor:not-allowed;}
        .msg{margin:20px 0;padding:12px;border-radius:4px;text-align:center;font-size:14px;display:none;}
        .success{background:#d4edda;color:#155724;display:block;}
        .error{background:#f8d7da;color:#721c24;display:block;}
        .balance{text-align:center;margin-top:20px;color:#666;font-size:15px;}
    </style>
</head>
<body>
    <div class="container">
        <div class="logout"><a href="send.php?act=logout">退出登录</a></div>
        <h2>快递取件短信发送</h2>
        <div class="msg" id="msgBox"></div>
        <div class="balance">剩余额度:<span id="balanceNum"><?php echo $balance; ?></span>条</div>
        <form id="smsForm">
            <div class="form-group">
                <label for="phone">手机号</label>
                <input type="text" id="phone" name="phone" placeholder="收件人手机号" required>
            </div>
            <div class="form-group">
                <label for="address">取件地址</label>
                <input type="text" id="address" name="address" placeholder="驿站地址" required>
            </div>
            <div class="form-group">
                <label for="code">取件码</label>
                <input type="text" id="code" name="code" placeholder="取件码" required>
            </div>
            <button type="submit" id="sendBtn">发送短信</button>
        </form>
    </div>

    <script>
        // AJAX提交表单,无刷新
        const form = document.getElementById('smsForm');
        const msgBox = document.getElementById('msgBox');
        const sendBtn = document.getElementById('sendBtn');
        const balanceNum = document.getElementById('balanceNum');

        form.addEventListener('submit', function(e){
            e.preventDefault(); // 阻止默认提交(不刷新页面)
            sendBtn.disabled = true; // 防止重复点击
            sendBtn.textContent = '发送中...';
            msgBox.className = 'msg'; // 清空之前的提示

            // 获取表单数据
            const phone = document.getElementById('phone').value.trim();
            const address = document.getElementById('address').value.trim();
            const code = document.getElementById('code').value.trim();

            // 发送AJAX请求
            fetch('send.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                body: `type=sendSms&phone=${encodeURIComponent(phone)}&address=${encodeURIComponent(address)}&code=${encodeURIComponent(code)}`
            })
            .then(res => res.json())
            .then(data => {
                // 显示结果
                if(data.code === 0){
                    msgBox.className = 'msg success';
                    balanceNum.textContent = data.balance; // 更新余额
                }else{
                    msgBox.className = 'msg error';
                }
                msgBox.textContent = data.msg;
                // 恢复按钮
                sendBtn.disabled = false;
                sendBtn.textContent = '发送短信';
            })
            .catch(err => {
                msgBox.className = 'msg error';
                msgBox.textContent = '发送失败,请重试';
                sendBtn.disabled = false;
                sendBtn.textContent = '发送短信';
            });
        });
    </script>
</body>
</html>

1000010718

这里是秘钥信息

$smsapi = "http://www.smsbao.com/";
        $user = "账户";
        $pass = md5("秘钥");
        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($smsContent);

这里是短信模板,本模板是快递取件码系统

// 替换短信变量
        $smsContent = "【顺德区古孜巴信息】您的快递已到达,请前往{$address},取件码为{$code},菜鸟驿站,请及时收货。";

二版本

只改send.php

<?php
// 初始化会话,校验登录
session_start();
// 未登录/密码错误,跳回登录页
if(empty($_POST['pwd']) && empty($_SESSION['is_login'])){
    header('Location: login.php');
    exit;
}
// 登录成功,存入会话
if(!empty($_POST['pwd'])){
    $_SESSION['is_login'] = 1;
}

// 余额处理
$balance = 0;
$balanceFile = 'code.txt';
// 首次创建余额文件(默认100条,可修改)
if(!file_exists($balanceFile)){
    file_put_contents($balanceFile, '100');
    $balance = 100;
}else{
    $balance = intval(file_get_contents($balanceFile));
}

// 退出登录
if(isset($_GET['act']) && $_GET['act'] == 'logout'){
    session_destroy();
    header('Location: login.php');
    exit;
}

// AJAX提交接口(单独处理短信发送,不渲染页面)
if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['type']) && $_POST['type'] == 'sendSms'){
    $phone = trim($_POST['phone']);
    $address = trim($_POST['address']); // 店铺名(对应模板address)
    $Secondaryaddress = trim($_POST['Secondaryaddress']); // 店铺地址(对应模板Secondaryaddress)
    $code = trim($_POST['code']); // 取件码(对应模板code)
    $res = ['code' => 0, 'msg' => '', 'balance' => $balance];

    // 输入校验(新增店铺名、店铺地址校验)
    if(empty($phone) || empty($address) || empty($Secondaryaddress) || empty($code)){
        $res['code'] = 1;
        $res['msg'] = '手机号、店铺名、店铺地址、取件码不能为空';
    }elseif(!preg_match('/^1[3-9]\d{9}$/', $phone)){
        $res['code'] = 1;
        $res['msg'] = '手机号格式错误';
    }elseif($balance <= 0){
        $res['code'] = 1;
        $res['msg'] = '余额不足,无法发送';
    }else{
        // 新短信模板:替换店铺名、店铺地址、取件码变量
        $smsContent = "【顺德区古孜巴信息】您的快递已到达,请前往{$address}|{$Secondaryaddress},取件码为{$code},请及时收货。";
        
        // 短信API配置(保持原配置不变)
        $statusStr = array(
            "0" => "短信发送成功",
            "-1" => "参数不全",
            "-2" => "服务器不支持curl/fsocket,请联系空间商",
            "30" => "密码错误",
            "40" => "账号不存在",
            "41" => "平台余额不足",
            "42" => "帐户已过期",
            "43" => "IP地址限制",
            "50" => "内容含有敏感词"
        );	
        $smsapi = "http://www.smsbao.com/";
        $user = "账户";
        $pass = md5("秘钥");
        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($smsContent);
        
        // 发送并获取结果
        $result = file_get_contents($sendurl);
        $res['msg'] = $statusStr[$result];
        
        // 发送成功扣余额
        if($result == 0){
            $newBalance = $balance - 1;
            file_put_contents($balanceFile, $newBalance);
            $res['balance'] = $newBalance;
        }else{
            $res['code'] = 1;
        }
    }
    echo json_encode($res);
    exit;
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>快递取件短信发送</title>
    <style>
        *{margin:0;padding:0;box-sizing:border-box;}
        body{padding:20px;background:#f5f5f5;font-family:Arial;}
        .container{max-width:500px;margin:0 auto;background:#fff;padding:30px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,0.1);}
        h2{text-align:center;margin-bottom:30px;color:#333;}
        .logout{text-align:right;margin-bottom:20px;}
        .logout a{color:#dc3545;text-decoration:none;font-size:14px;}
        .form-group{margin-bottom:20px;}
        label{display:block;margin-bottom:8px;color:#666;font-size:14px;}
        input{width:100%;padding:12px;border:1px solid #ddd;border-radius:4px;font-size:16px;}
        button{width:100%;padding:12px;background:#007bff;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer;}
        button:disabled{background:#ccc;cursor:not-allowed;}
        .msg{margin:20px 0;padding:12px;border-radius:4px;text-align:center;font-size:14px;display:none;}
        .success{background:#d4edda;color:#155724;display:block;}
        .error{background:#f8d7da;color:#721c24;display:block;}
        .balance{text-align:center;margin-top:20px;color:#666;font-size:15px;}
        /* 新增地址框样式:并排布局 */
        .address-group{display:flex;gap:12px;margin-bottom:20px;}
        .address-group .form-group{flex:1;margin-bottom:0;}
    </style>
</head>
<body>
    <div class="container">
        <div class="logout"><a href="send.php?act=logout">退出登录</a></div>
        <h2>快递取件短信发送</h2>
        <div class="msg" id="msgBox"></div>
        <div class="balance">剩余额度:<span id="balanceNum"><?php echo $balance; ?></span>条</div>
        <form id="smsForm">
            <div class="form-group">
                <label for="phone">手机号</label>
                <input type="text" id="phone" name="phone" placeholder="收件人手机号" required>
            </div>
            <!-- 新增地址拆分输入框:店铺名+店铺地址(并排布局) -->
            <label>取件地址</label>
            <div class="address-group">
                <div class="form-group">
                    <input type="text" id="address" name="address" placeholder="店铺名" required>
                </div>
                <div class="form-group">
                    <input type="text" id="Secondaryaddress" name="Secondaryaddress" placeholder="店铺详细地址" required>
                </div>
            </div>
            <div class="form-group">
                <label for="code">取件码</label>
                <input type="text" id="code" name="code" placeholder="取件码" required>
            </div>
            <button type="submit" id="sendBtn">发送短信</button>
        </form>
    </div>

    <script>
        // AJAX提交表单,无刷新
        const form = document.getElementById('smsForm');
        const msgBox = document.getElementById('msgBox');
        const sendBtn = document.getElementById('sendBtn');
        const balanceNum = document.getElementById('balanceNum');

        form.addEventListener('submit', function(e){
            e.preventDefault(); // 阻止默认提交(不刷新页面)
            sendBtn.disabled = true; // 防止重复点击
            sendBtn.textContent = '发送中...';
            msgBox.className = 'msg'; // 清空之前的提示

            // 获取表单数据(新增店铺名、店铺地址)
            const phone = document.getElementById('phone').value.trim();
            const address = document.getElementById('address').value.trim();
            const Secondaryaddress = document.getElementById('Secondaryaddress').value.trim();
            const code = document.getElementById('code').value.trim();

            // 发送AJAX请求(携带新增参数)
            fetch('send.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                body: `type=sendSms&phone=${encodeURIComponent(phone)}&address=${encodeURIComponent(address)}&Secondaryaddress=${encodeURIComponent(Secondaryaddress)}&code=${encodeURIComponent(code)}`
            })
            .then(res => res.json())
            .then(data => {
                // 显示结果
                if(data.code === 0){
                    msgBox.className = 'msg success';
                    balanceNum.textContent = data.balance; // 更新余额
                }else{
                    msgBox.className = 'msg error';
                }
                msgBox.textContent = data.msg;
                // 恢复按钮
                sendBtn.disabled = false;
                sendBtn.textContent = '发送短信';
            })
            .catch(err => {
                msgBox.className = 'msg error';
                msgBox.textContent = '发送失败,请重试';
                sendBtn.disabled = false;
                sendBtn.textContent = '发送短信';
            });
        });
    </script>
</body>
</html>

1000010833

到这里就完了,直接创建两个文件,把秘钥等数据配置好就行

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容