新功能:自动短信注册/修改密码

现在注册页面已更新,加入了自动短信注册说明。
未绑定手机号的老用户会在页面底部看到绑定手机号提示,须按提示发短信方可绑定手机号。
手机号绑定后,可随时发 hu60#新密码 到 13597821005 来重置你的密码。
查看绑定记录
回复列表(16|隐藏机器人聊天)
  • @Ta / 2013-07-22 / /
    @小杨,内信我,提供证据。如果不行,发短信给我。
  • @Ta / 2013-07-22 / /
    @小杨,QQ容易被盗用。
  • @Ta / 2013-07-22 / /
    @老虎会游泳,威武
  • @Ta / 2013-07-22 / /
    咦?这个短信平台是要钱的吧?多少钱呢?@老虎会游泳  
  • @Ta / 2013-07-22 / /
    @刘付杰,应该是小文赞助
  • @Ta / 2013-07-22 / /
    @老虎会游泳,能否分享出接口呢,我想参照一下却一直没有找到 
  • @Ta / 2013-07-23 / /
    @老虎会游泳,用户中心大部分不能用
  • @Ta / 2013-07-23 / /
    @惯性聚合,sms.php
    <?php
    /**
    * 小文短信猫平台注册接口
    * 
    * 短信猫提供者网站:
    * http://sms.wap21.net/
    */
    try {
    include './config.inc.php';
    $index = 'hu60#';
    $adminPhone = '15386332951';
    $key = '保密';
    if ($_POST['smskey'] !== $key) {
        exit('2'); //通讯密令错误
    }
    $phone = $_POST['phone'];
    if (($len = strlen($phone))!=11) {
        throw new Exception("手机号码长度不正确,应为11位,实为{$len}位。", 22);
    }
    $msg = substr($_POST['message'], strlen($index));
    $pos = strpos($msg, '#');
    /*新注册或修改密码*/
    if ($pos === false) {
      $uinfo = user::getinfobyregphone($phone, 'uid,name');
      if ($uinfo === false) {
        regNew($phone, $msg, $phone);
      } else {
        changePasswd($uinfo['uid'], $msg);
      }
    } else {
      $name = substr($msg, 0, $pos);
      $pass = substr($msg, $pos+1);
      $uinfo = user::getinfobyname($name);
      $uinfo2 = user::getinfobyregphone($phone);
      if ($uinfo === false && $uinfo2 === false) {
        regNew($name, $pass, $phone);
      } else {
        bindPhone($name, $pass, $phone, $uinfo, $uinfo2);
      }
    }
    } catch(Exception $e) {
      $log = $e->getMessage();
      if ($log !== '') {
        logAdd($phone, $e->getMessage());
      }
      exit((string)$e->getCode());
    }
      
    /*注册新用户*/
    function regNew($name, $pass, $phone) {
      if (strlen($name)>25) {
        throw new Exception("注册失败,用户名过长。用户名不能超过25字节,即不能超过8个汉字或25个英文字母。", 22);
      }
      if (!preg_match('!^[\x{4e00}-\x{9fa5}a-zA-Z0-9_-]+$!us', $name)) {
        throw new Exception("注册失败,用户名包含特殊字符。用户名只允许汉字(不包括标点符号)、数字、英文大小写字母、下划线(_)和减号(-)。", 22);
      }
      $uinfo = user::getinfobyname($name, 'uid');
      if ($uinfo !== false) {
        throw new Exception("注册失败,用户“{$name}”已存在,请更换用户名。”", 22);
      }
      $sql = 'insert into user(name,pass,regphone,regtime,mtime,sid) values(?,?,?,?,?,?)';
      $sid = microtime(true);
      $rs = db::conn()->prepare($sql);
      if (!$rs || !$rs->execute(array($name, md5($pass), $phone, time(), 0, $sid))) {
        throw new Exception("用户注册失败,数据库错误。", 22);
      } else {
        throw new Exception("用户“{$name}”注册成功。", 1);
      }
    }
    
    /*修改密码*/
    function changePasswd($uid, $pass) {
      $sql = 'update user set pass=?, mtime=0 where uid=?';
      var_dump($uid);
      $rs = db::conn()->prepare($sql);
      if (!$rs || !$rs->execute(array(md5($pass), $uid))) {
        throw new Exception("密码修改失败,数据库出现错误。", 22);
      } else {
        throw new Exception("密码修改成功。", 11);
      }
    }
    
    /*绑定手机号*/
    function bindPhone($name, $pass, $phone, $uinfo, $uinfo2) {
      global $index;
      //var_dump($uinfo);die;
      if ($uinfo['regphone'] !== NULL) {
        throw new Exception("手机号绑定失败,用户“{$name}”已绑定手机,解绑请与管理员联系。要修改您的密码,请用该手机直接发送“{$index}密码”到指定号码,不需要包括用户名。", 22);
      } elseif ($uinfo2 !== false) {
        throw new Exception("手机号绑定失败,该手机已与用户“{$uinfo2['name']}”绑定,更换号码请与管理员联系。要修改密码,请用绑定的手机直接发送“{$index}密码”到指定号码,不需要包括用户名。", 22);
      } elseif ($uinfo['pass'] !== md5($pass)) {
           throw new Exception("手机号绑定失败,密码错误。", 22);
      } else {
        $sql = 'update user set regphone=? where uid=?';    $rs = user::$db->prepare($sql);
        if (!$rs || !$rs->execute(array($phone, $uinfo['uid']))) {
            throw new Exception("手机号绑定失败,数据库出现错误。", 22);
        } else {
            throw new Exception("手机号绑定成功。", 1);
        }
      }
    }
    
    /*操作日志*/
    function logAdd($phone, $msg) {
      $sql = 'insert into smslog(phone, msg, time) values(?, ?, ?)';
      $rs = db::conn()->prepare($sql);
      $rs->execute(array($phone, $msg, time()));
    }
    
  • @Ta / 2013-07-23 / /
    @老虎会游泳   看楼下
  • @Ta / 2013-07-23 / /
    @老虎会游泳,看不懂,我理解不到啊亲, 这个文件是放在hu60 还是 小文网站的呢?  
  • @Ta / 2013-07-23 / /
    @老虎会游泳
    突然想到了,不知道是不是这样的,

    这个文件放在虎绿林,
    当我向指定代码发送信息时,短信平台收到短信于是回访虎绿林的这个文件
    然后虎绿林做出回复,是吗 

  • @Ta / 2013-07-23 / /
    @老虎会游泳,短信的格式是不是自己编的呢?  
  • @Ta / 2013-07-23 / /
    @残缘,现在用了,感谢提醒。
  • @Ta / 2013-07-23 / /
    @惯性聚合,就是15楼那样。
    短信格式是指令#任意内容,所以你可以自定义后面的格式。
添加新回复
回复需要登录