微信掃碼登陸綁定賬號(hào)功能

1震肮、前臺(tái)鏈接進(jìn)入微信官方的授權(quán)接口而账,當(dāng)點(diǎn)擊鏈接時(shí)胰坟,則根據(jù)url中的appid自動(dòng)生成公司微信二維碼

<a ><span class="fgt pull-right"><img src="__PUBLIC__/web/images/wx.png">微信登錄</span></a>

2、先定義好微信授權(quán)接口類泞辐,以便下面授權(quán)時(shí)調(diào)用

class WeAuth
{
    protected $appId = "公司微信的appid";
    protected $appSecret = "企業(yè)微信號(hào)的密鑰";

    function __construct()
    {
       // parent::__construct(false);

        if(config('weixin.openAppId'))
        {
            $this->appId = config('weixin.openAppId');
        }

        if(config('weixin.openAppSecret'))
        {
            $this->appSecret = config('weixin.openAppSecret');
        }
    }

    /**
     * 開(kāi)始授權(quán)
     * @return mixed
     */
    public function doAuth()
    {
        //如果掃碼頁(yè)面的url路徑中有code碼,則授權(quán)完成進(jìn)入回調(diào)函數(shù)
        if (isset($_REQUEST['code'])) {
            return $this->getUserInfo();
        }
        else {
        //獲取請(qǐng)求頁(yè)面時(shí)通信協(xié)議的名稱和版本笔横。例如,“HTTP/1.0”咐吼。
        $protocal = $_SERVER['SERVER_PROTOCOL'];
        //當(dāng)前請(qǐng)求頭中 Host: 項(xiàng)的內(nèi)容吹缔,如果存在的話。
        $http_host = $_SERVER['HTTP_HOST'];
        //判斷是http請(qǐng)求還是https請(qǐng)求
        if ($protocal['5'] == 's') {
            $protocal = 'https://';
        }
        else {
            $protocal = 'http://';
        }
        $origin_url = $protocal . $http_host;
        // $origin_url = str_replace("www.", "", $origin_url);
        //進(jìn)入獲取用戶信息授權(quán)路徑
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appId . "&redirect_uri=" . urlencode($origin_url) . $_SERVER['REQUEST_URI'] . "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        header("Location:" . $url);
        exit();
        }
    }

    /**
     * 授權(quán)完成之后的回調(diào),獲取微信信息
     * @return mixed
     */
    public function getUserInfo()
    {
        $code = $_REQUEST['code'];
        $state = $_REQUEST['state'];
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $this->appId . "&secret=" . $this->appSecret . "&code=" . $code . "&grant_type=authorization_code";
        $json = file_get_contents($url);
        $base_info = json_decode($json);
        $access_token = $base_info->access_token;
        $openid = $base_info->openid;
        $url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid . "&lang=zh_CN";
        $json = file_get_contents($url);
        $wechat_user_info = json_decode($json,true);
        header('Content-type: text/html;charset=utf-8');
        return $wechat_user_info;
    }

}

3锯茄、當(dāng)掃描二維碼后厢塘,進(jìn)入指定的頁(yè)面和函數(shù)中,判斷如果是登陸狀態(tài)則跳轉(zhuǎn)首頁(yè)如果不是則進(jìn)入微信授權(quán)去登陸。如果授權(quán)成功俗冻,則進(jìn)入登陸判斷。如果有該微信的信息則登陸牍颈,沒(méi)有則進(jìn)入綁定微信頁(yè)面

protected $userId;
public function index()
{
    $userId = session("userId");
    if (!$userId) {
        //實(shí)例化授權(quán)接口類
        $auth = new WeAuth();
        //調(diào)用微信授權(quán)函數(shù)
        $wechatInfo = $auth->doAuth();
        // print_r($wechatInfo);exit();
        //判斷授權(quán)是否成功
        if($wechatInfo && isset($wechatInfo['unionid']) && !empty($wechatInfo['unionid']))
        {
            //獲取到用戶的微信id,查找數(shù)據(jù)庫(kù)內(nèi)是否有該微信id
            //如果沒(méi)有,則跳轉(zhuǎn)微信賬號(hào)綁定項(xiàng)目賬號(hào)功能,如果已經(jīng)存在,則直接登錄
            $unionId = $wechatInfo['unionid'];
            $msg = findById("user",array('a.unionId'=>$unionId),"a.*");
            if(empty($msg["data"])||$msg['code']==0){
                //未綁定賬號(hào)迄薄,跳轉(zhuǎn)到綁定賬號(hào)頁(yè)面,并將查到的微信用戶信息發(fā)送到wxbind方法體內(nèi)
                return view('web@/index/wxbind',array('data'=>$wechatInfo));
                //$this->redirect(url('/web/Index/wxbind',array('data'=>$wechatInfo)));
            }else {
                //限制異常狀態(tài)的賬號(hào)登錄
                $user = $msg["data"];
                $userState = $user["status"];
                if ($userState == '1012002'){
                    echo '<script language="javascript">alert("微信登錄失敗:用戶狀態(tài)異常煮岁。");</script>';
                    $this->redirect(url('/web/Index/index'));
                }
                if ($userState == '1012005') {
                    echo '<script language="javascript">alert("微信登錄失敿ケ巍:當(dāng)前賬戶已被凍結(jié),請(qǐng)聯(lián)系管理員画机。");</script>';
                    $this->redirect(url('/web/Index/index'));
                }
                //將數(shù)據(jù)寫入session
                session('user', $user);
                session('userId', $user["id"]);
                //登錄成功跳轉(zhuǎn)到首頁(yè)
                $this->redirect(url('/web/Index/index'));
            }
        }else{
            echo '<script language="javascript">alert("微信登錄失斠鄙 :獲取微信信息失敗。");</script>';
            $this->redirect(url('/web/Index/index'));
        }
    } else {
        $this->redirect(url('/web/Index/index'));
    }

}

4步氏、綁定微信功能的頁(yè)面响禽,并展示微信用戶信息

//微信登錄, 已有平臺(tái)賬號(hào)頁(yè)面
function wxbind(){
    //將授權(quán)獲得的微信用戶信息賦值$data荚醒,并發(fā)送給前臺(tái)
   $data = input('request.');
    if(empty($data)){
        $data = array();
    }
    return view("",array('data'=>$data));
}

5芋类、wxbind的前臺(tái)頁(yè)面

<div class="col-lg-12 col-md-12 col-sm-12">
    <div class="col-md-12 col-sm-12">
        <div class="col-md-12 col-sm-12">
            <h3 class="welcome">
                <img src="{$data.headimgurl|default='__PUBLIC__/web/images/tx.jpg'}">Hi,{$data.nickname|default=''}界阁,歡迎登錄平臺(tái)
            </h3>
        </div>
        <div class="col-md-3 col-sm-12"></div>
        <div class="col-md-6 col-sm-12 choosewxbt">
            <div class="col-md-6 col-sm-12 wxbtnow" style="padding:0;" ><p>已有平臺(tái)賬號(hào)</p></div>
            <div class="col-md-6 col-sm-12" style="padding:0;" id="notyet"><p>沒(méi)有平臺(tái)賬號(hào)</p></div>
        </div>
        <div class="col-md-3 col-sm-12"></div>
        <div class="col-md-12 col-sm-12"><p class="sm">綁定賬號(hào)后侯繁,可實(shí)現(xiàn)一鍵登錄哦</p></div>
    </div>
    <div class="col-lg-4 col-md-4 col-sm-12"></div>
    <div class="col-md-4 col-sm-12 biaodan wxlogin">
        <div class="col-md-12 col-sm-12">
            <div class="form-group">
                <form action="" method="post" id="wxform">
                <input type="text" name="phone" id="phone" class="form-control" placeholder="登錄用戶名">
                <input type="password" name="password" id="password" style="margin-bottom: 14px;;"  class="form-control" placeholder="密碼">

                <input type="hidden" name="unionid" id="unionid" value="{$data.unionid|default=''}">  <!--微信返回的unionid-->
                <input type="hidden" name="headimgurl" id="headimgurl" value="{$data.headimgurl|default=''}"> <!---微信返回的用戶頭像地址-->
                <input type="hidden" name="nickname" id="nickname" value="{$data.nickname|default=''}">   <!--微信返回的用戶昵稱-->
                <button type="button" class="btn btn-block btn-outline btn-warning" id="submit">立即綁定</button>

                </form>

            </div>
            <div class="hr-line-dashed"></div>
        </div>
    </div>
    <div class="col-lg-4 col-md-4 col-sm-12"></div>
</div>

6、前臺(tái)發(fā)送數(shù)據(jù)的Js

$("#submit").click(function () {

   // var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
  //  var isMob=/^((\+?86)|(\(\+86\)))?(13[012356789][0-9]{8}|15[012356789][0-9]{8}|18[012356789][0-9]{8}|147[0-9]{8}|1349[0-9]{7})$/;
    var phone_str=$("#phone").val();
    phone_str = $.trim(phone_str);
    if(phone_str==""){
        toastr.error('登錄用戶名必填');
        return;
    }
    /*else if(!(isPhone.test(phone_str)||isMob.test(phone_str))){
        alert('手機(jī)號(hào)碼格式錯(cuò)誤');
        return;
    }*/
    var password = $('#password').val();
    password = $.trim(password);
    if(password ==''){
        toastr.error('密碼必填');
        return ;
    }
    var unionid = $("#unionid").val();//微信的id
    var nickname = $("#nickname").val();//微信名
    var url = "{:url('/web/Index/dobind')}";
    $.post(url, {'mobile':phone_str,'password':password,'unionid':unionid,'nickname':nickname}, function (data) {
        if(data.code ==1){
            toastr.success('綁定成功');
            setTimeout('go()',1000);

        }else {
            toastr.error(data.msg);
        }
    });
});

7泡躯、綁定微信的方法體

//已有賬號(hào)贮竟,綁定操作
function dobind(){
    $postData = input('request.',null,'trim');
    try{
        if(empty($postData['mobile'])){
            return array('code'=>'0','msg'=>'登錄用戶名不能為空','data'=>'');
        }
        if(empty($postData['password'])){
            return array('code'=>'0','msg'=>'密碼不能為空','data'=>'');
        }
        $map = array(
            'name'=>$postData['mobile'],
        );
        $msg = findById("user", $map, "a.*");
        //如果沒(méi)有查詢到數(shù)據(jù),或返回值為0,則返回錯(cuò)誤
        if (empty($msg["data"]) || $msg['code'] == 0) {
            return array('code'=>'0','msg'=>'該用戶不存在,無(wú)法綁定。','data'=>'');
        }else{
            $user = $msg["data"];
            //判斷查出的用戶密碼與綁定賬號(hào)頁(yè)面輸入的密碼是否一致,密碼一致則允許綁定
            if ($user["password"] !== md5($postData['password'])){
                return array('code' => '0', 'msg' => '密碼錯(cuò)誤较剃,請(qǐng)重新輸入咕别。', 'data' => '');
            }
            //限制賬號(hào)異常的用戶進(jìn)行登錄
            $userState = $user["status"];
            if ($userState == '1012002') {
                return array('code' => '0', 'msg' => '用戶狀態(tài)異常,不能綁定', 'data' => '');
            }
            if ($userState == '1012005') {
                return array('code' => '0', 'msg' => '當(dāng)前賬戶已被凍結(jié)写穴,無(wú)法綁定', 'data' => '');
            }
            //傳入的微信id
            $data = array(
                'unionId'=>$postData['unionid'],
            );
            //傳入的微信名
            $data['wx_name'] = $postData['nickname'];
            if(empty($user['realname'])){
                $data['realname'] = $postData['nickname'];
            }
            #todo 微信頭像暫時(shí)還沒(méi)處理
            //根據(jù)傳入的手機(jī)號(hào)將該用戶的id和掃碼的微信綁定
            $res = saveDataByCon('user',$data,array('name'=>$postData['mobile']));
            //如果保存成功則進(jìn)行登錄
            if($res['code']==1){
                //保存成功后顷级,緩存數(shù)據(jù),相當(dāng)于直接登錄了
                //獲取logo并緩存
                $logo = '/img/111.jpg';
                //獲取孵化器的名字 并緩存
                if(strpos(','.$user["roleIds"].',',',1,')!==false && !empty($user["etprsIqbtId"])){
                    //孵化器企業(yè)管理員确垫,應(yīng)該讀取孵化器企業(yè)的名字
                    $name = getField('etprsIqbt',array('id'=>$user['etprsIqbtId']),'name');

                }elseif(!empty($user['iqbtId'])){
                    $name = getField('incubator',array('id'=>$user['iqbtId']),'name');
                    if(!empty($user['logo'])){
                        $logo = getField('sysFile',array('id'=>$user['logo']),'savePath');
                    }
                }else{
                    $name = "海創(chuàng)匯云平臺(tái)";
                }
                session('sysName',$name);
                session('logo',$logo);
                session('user', $user);
                session('userId', $user["id"]);
                if($user["userCate"]=="1011002"){
                    session('etprsId', $user["etprsId"]);
                }
                session('iqbtId', $user["iqbtId"]);
                session("etprsIqbtId",$user["etprsIqbtId"]);
                return $res;
            }
        }

    }catch (\Exception $e) {
        //綁定失敗則記錄事務(wù)
        c_Log($e);
        return array("code" => 0, "msg" =>'綁定失敗','data'=>'');
    }
}

8弓颈、如果平臺(tái)賬號(hào)也沒(méi)有,則注冊(cè)賬號(hào)并綁定微信號(hào)删掀,注冊(cè)成功后寫入session登陸翔冀,并跳轉(zhuǎn)到首頁(yè)

//微信登錄  沒(méi)有平臺(tái)賬號(hào)情況的頁(yè)面
    function wxempty($unionid='',$nickname='',$headimgurl=''){
        $data = array(
            'unionid'=>$unionid,
            'nickname'=>$nickname,
            'headimgurl'=>$headimgurl,
        );
        return view('',array('data'=>$data));
    }

9、前臺(tái)發(fā)送注冊(cè)信息的html

//展示信息
<h3 class="welcome">
    <img src="{$data.headimgurl|default='__PUBLIC__/web/images/tx.jpg'}">Hi披泪,{$data.nickname|default=''}纤子,歡迎登錄海創(chuàng)匯云平臺(tái)
</h3>
//表單
<form action="" method="post" id="rgst">
<input type="text" class="form-control" name="mobile" id="mobile" placeholder="聯(lián)系電話(登錄名必填)" onfocus="this.placeholder=''" onblur="this.placeholder='聯(lián)系電話(登錄名必填)'">
<input type="text" class="form-control" name="realname" id="realname" placeholder="姓名" onfocus="this.placeholder=''" onblur="this.placeholder='姓名'">
<p class="col-lg-12 col-md-12 col-sm-12 find find1">
    <input type="text" class="form-control pull-left" id="verify"  name="verify" placeholder="短信驗(yàn)證碼" onfocus="this.placeholder=''" onblur="this.placeholder='短信驗(yàn)證碼'">
    <button type="button" class="btn btn-block btn-outline btn-default pull-right a" id="sms">點(diǎn)擊獲取</button>
</p>
<input style="margin-bottom:14px;" type="password" name="password" id="password" class="form-control" placeholder="密碼(6-20位字母、數(shù)字、符號(hào)組合)" onfocus="this.placeholder=''" onblur="this.placeholder='密碼(6-20位字母控硼、數(shù)字泽论、符號(hào)組合)'">
<input style="margin-bottom:14px;" type="password"  name="cfmpassword" id="cfmpassword" class="form-control" placeholder="確認(rèn)密碼" onfocus="this.placeholder=''" onblur="this.placeholder='確認(rèn)密碼'">
<input type="hidden" name="unionid" id="unionid" value="{$data.unionid|default=''}">  <!--微信返回的unionid-->
<input type="hidden" name="headimgurl" id="headimgurl" value="{$data.headimgurl|default=''}"> <!---微信返回的用戶頭像地址-->
<input type="hidden" name="nickname" id="nickname" value="{$data.nickname|default=''}">   <!--微信返回的用戶昵稱-->

</form>
<button type="button" id="btnrgst" class="btn btn-block btn-outline btn-warning">完成</button>

10、沒(méi)有賬號(hào)需要注冊(cè)時(shí)發(fā)送的ajax

$("#btnrgst").click(function () {

    var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
    var isMob=/^((\+?86)|(\(\+86\)))?(13[012356789][0-9]{8}|17[012356789][0-9]{8}|15[012356789][0-9]{8}|18[012356789][0-9]{8}|147[0-9]{8}|1349[0-9]{7})$/;
    var phone_str=$("#mobile").val();
    phone_str = $.trim(phone_str);
    var realname = $.trim($("#realname").val());
    var password = $.trim($("#password").val());
    var cfmpassword = $.trim($("#cfmpassword").val());
    if(phone_str==""){
        toastr.error('電話號(hào)碼不能為空');
        return false;
    }else if(!(isPhone.test(phone_str)||isMob.test(phone_str))){
        toastr.error('電話號(hào)碼格式不正確');
        return false;
    }
    if(realname==""){
        toastr.error('姓名不能為空');
        return ;
    }
    var verify = $.trim($("#verify").val());
    if(verify==''){
        toastr('短信驗(yàn)證碼不能為空');
        return false;
    }

    if(password==""){
        toastr.error('密碼不能為空');
        return;
    }
    if(password!=cfmpassword){
        toastr.error('兩次密碼不一致,請(qǐng)重新輸入');
        return;
    }
    var regExp=/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,20}$/;
    if(!regExp.test(password)){
        toastr.error('密碼必須為6-20位字母卡乾、數(shù)字或符號(hào)組合');
        return;
    }
    var form = $("#rgst");
    var url = "{:url('/web/Index/dobindempty')}";
    var data=form.serialize();
    $.post(url, data, function (data) {
        if (data.code == 1) {
            toastr.success('注冊(cè)成功,請(qǐng)登錄');
            setTimeout('go()',1000);
        } else {
            toastr.error(data.msg);
        }
    });

});

11翼悴、沒(méi)有注冊(cè)過(guò)時(shí),掃碼后進(jìn)入注冊(cè)的函數(shù)幔妨,并將微信號(hào)的信息一同保存在數(shù)據(jù)中

//微信登錄鹦赎,沒(méi)有注冊(cè)的,綁定首次注冊(cè)的用戶
function dobindempty(){
    $postData = input('request.',null,'trim');
    //加校驗(yàn)
    $role = [
        'mobile|聯(lián)系電話'=>'require',
        'realname|姓名'=>'require',
        'verify|短信驗(yàn)證碼'=>'require',
        'password|密碼'=>'require',
        'cfmpassword|確認(rèn)密碼'=>'require|confirm:password',
    ];
    $err = [
        'mobile'=>'聯(lián)系電話不能為空',
        'realname'=>'姓名不能為空',
        'verify'=>'短信驗(yàn)證碼必填',
        'password'=>'密碼必填',
        'cfmpassword'=>'確認(rèn)密碼必填且必須和密碼一致',
    ];
    $validate = new Validate($role,$err);
    if(! $validate->check($postData)){
        return array('code'=>'0','msg'=>$validate->getError(),'data'=>'');
    }

    try {
        $username = $postData['mobile'];
        $umsg = findById("user", array("name" => $username), "id");
        if (!empty($umsg["data"])) {
            return array("code" => 0, "msg" => "綁定失敗误堡,該手機(jī)號(hào)已注冊(cè)");
        }
        //驗(yàn)證手機(jī)短信驗(yàn)證碼
        $verify =$postData['verify'];
        $res = verifySmsCode($username, $verify, 600);
        //驗(yàn)證失敗
        if ($res['code'] == '0') {
            return array('code' => '0', 'msg' => $res['msg'], 'data' => '');
        }

        $etprs["addtime"] = time();
        //開(kāi)啟事物
        Db::startTrans();
        $msg = saveData("enterprise", $etprs, "企業(yè)注冊(cè)");
        if ($msg["code"] === '1') {
            $etprsId = $msg["data"];
            $user["name"] = $username;
            $user["realname"] = $postData['realname'];
            $user["registerTime"] = date("Y-m-d H:i", time());
            $user["addtime"] = time();
            $user["mobile"] = $username;
            $user["password"] = md5($postData['password']);
            $user["userCate"] = "1011002";
            $user["status"] = "1012003";      //這個(gè)狀態(tài)有待進(jìn)一步討論
            $user["etprsId"] = $etprsId;
            $user["etprsIqbtId"] = 1;
            $user["roleIds"] = "2";//角色:企業(yè)
            $user['realname'] = $postData['nickname'];
            $user['unionId'] = $postData['unionid'];
            $user['wx_name'] = $postData['nickname'];
            #todo  企業(yè)還有一些狀態(tài)為加上  比如古话,沒(méi)有對(duì)應(yīng)的孵化器
            $vld = $this->validate($user, 'User.register');
            if ($vld === true) {
                $msg2 = saveData("user", $user, "企業(yè)用戶注冊(cè)");
                if ($msg2["code"] =='0') {
                    throw new \think\Exception("綁定失敗,用戶信息保存失敗 " . $msg2["msg"]);
                }else{
                    //保存成功后,緩存數(shù)據(jù)锁施,相當(dāng)于直接登錄了
                    //獲取logo并緩存
                    session('user', $user);
                    session('userId', $msg2['data']);
                    session('etprsId', $etprsId);
                    session('iqbtId', '0');
                    session("etprsIqbtId",'1');
                }
            } else {
                throw new \think\Exception("用戶信息校驗(yàn)失敗" . $vld);
            }
        } else {
            throw new \think\Exception("綁定失敗陪踩,企業(yè)信息保存失敗" . $msg["msg"]);
        }

        Db::commit();
        return array("code" => 1, "msg" => "注冊(cè)成功",'data'=>'');
    } catch (\Exception $e) {
        //記錄事務(wù)
        c_Log($e);
        // 回滾事務(wù)
        Db::rollback();
        return array("code" => 0, "msg" =>'注冊(cè)失敗','data'=>'');
    }
}

Complete!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市悉抵,隨后出現(xiàn)的幾起案子膊毁,更是在濱河造成了極大的恐慌,老刑警劉巖基跑,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚温,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡媳否,警方通過(guò)查閱死者的電腦和手機(jī)栅螟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)篱竭,“玉大人力图,你說(shuō)我怎么就攤上這事〔舯疲” “怎么了吃媒?”我有些...
    開(kāi)封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吕喘。 經(jīng)常有香客問(wèn)我赘那,道長(zhǎng),這世上最難降的妖魔是什么氯质? 我笑而不...
    開(kāi)封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任募舟,我火速辦了婚禮,結(jié)果婚禮上闻察,老公的妹妹穿的比我還像新娘拱礁。我一直安慰自己琢锋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布呢灶。 她就那樣靜靜地躺著吴超,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸯乃。 梳的紋絲不亂的頭發(fā)上鲸阻,一...
    開(kāi)封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音飒责,去河邊找鬼。 笑死仆潮,一個(gè)胖子當(dāng)著我的面吹牛宏蛉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播性置,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拾并,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鹏浅?” 一聲冷哼從身側(cè)響起嗅义,我...
    開(kāi)封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隐砸,沒(méi)想到半個(gè)月后之碗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡季希,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年褪那,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片式塌。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡博敬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出峰尝,到底是詐尸還是另有隱情偏窝,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布武学,位于F島的核電站祭往,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏火窒。R本人自食惡果不足惜链沼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沛鸵。 院中可真熱鬧括勺,春花似錦缆八、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至乱豆,卻和暖如春奖恰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宛裕。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工瑟啃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人揩尸。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓蛹屿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親岩榆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子错负,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,303評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)勇边,斷路器犹撒,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • 正在讀研的吉米申請(qǐng)了學(xué)校的一個(gè)助管崗位,主要任務(wù)是給常常到外地出差的老師報(bào)賬和打印文件粒褒。這是個(gè)不錯(cuò)的選擇——一來(lái)每...
    阿超雙螺旋閱讀 556評(píng)論 2 0
  • 跌跌撞撞的路上识颊,我們一直都在努力,愛(ài)的終點(diǎn)是婚姻奕坟,也更應(yīng)該是幸福谊囚。 每當(dāng)寶貝睡去的時(shí)候,我都習(xí)慣的等老公回家执赡,時(shí)間...
    5號(hào)陶子閱讀 980評(píng)論 2 2
  • 學(xué)生A出生在一個(gè)貧困的農(nóng)村家庭沙合,母親患有精神病奠伪,父親退殘走路不便,一家人主要靠撿破爛維持生計(jì)首懈。他常常衣衫襤褸绊率,蓬頭...
    梨蕊閱讀 802評(píng)論 0 3