ThinkPHP开发博客系统笔记之二
1. 登陆验证码
当用户登陆的时候我们希望也弹出验证码,有两种方法可以实现:一是再增加一个弹出验证码的dialog,二是和注册共用一个验证码dialog。第一种方法有大量重复代码,所以我们使用第二种方法。首先,为了让javascript区分是登陆还是注册,我们给验证码表单增加一个自定义属性:form-click。
login.js <form id="verify_register" form-click="">
<ol class="ver_error"></ol>
<p>
<label for="verify">验证码:</label>
<input type="text" name="verify" class="text" id="verify">
<span class="star">*</span>
<a href="javascript:void(0)" class="changeimg">换一换</a>
</p>
<p>
<img src='{:U("Login/verify",'','')}' class="changeimg verifyimg">
</p>
</form>
现在login表单和register表单的验证中submitHandler只做两件事情:给verify_register的form-click属性赋值,打开verify_register窗口:
login.js $('#login').validate({
submitHandler: function(form){
$("#verify_register").attr('form-click', 'login');
$("#verify_register").dialog('open');
},
login.js $("#register").dialog({
width: 430,
height: 370,
modal: true,
resizable: false,
autoOpen: false,
title: "注册新用户",
closeText: "关闭",
buttons: [{
text: "提交",
click: function(e) {
$(this).submit();
},
}], }).validate({
submitHandler: function() {
$("#verify_register").attr('form-click', 'register');
$("#verify_register").dialog('open');
},
验证码的检测以及注册或登陆成功后的跳转都放到verify_register的submitHandler中进行处理:
login.js submitHandler: function(form) {
if ($("#verify_register").attr('form-click') == 'register') {
$('#register').ajaxSubmit({
url: ThinkPHP["MODULE"] + "/User/register",
type: "POST",
data: {
verify: $('#verify').val(),
},
beforeSubmit: function() {
$('#loading').dialog('open');
},
success: function(responseText) {
if (responseText) {
$('#loading').css('background', 'url(' + ThinkPHP['IMG'] + '/reg_success.png) no-repeat 20px center').html('数据新增成功...');
setTimeout(function() {
$('#register').dialog('close');
$('#verify_register').dialog('close'); //关闭注册界面
$('#loading').dialog('close'); //关闭提示界面
$('#verify_register').resetForm(); //还原注册表单
$('#span.star').html('*').removeClass('succ'); //恢复*去掉对号
}, 1000);
}
},
});
} else if ($("#verify_register").attr('form-click') == 'login') {
$(form).ajaxSubmit({
url: ThinkPHP['MODULE'] + '/User/login',
type: 'POST',
beforeSubmit: function() {
$('#loading').dialog('open');
},
success: function(responseText) {
if (responseText == -9) {
$('#loading').dialog('option', 'width', 200).css('background', 'url(' + ThinkPHP['IMG'] + '/warning.png) no-repeat 20px center').html('账号或密码不正确...');
setTimeout(function(){
$('#loading').dialog('close');
$('#loading').dialog('option', 'width', 180).css('background', 'url(' + ThinkPHP['IMG'] + '/loading.gif) no-repeat 20px center').html('数据交互中...');
}, 2000);
} else {
$('#loading').dialog('option', 'width', 220).css('background', 'url(' + ThinkPHP['IMG'] + '/reg_success.png) no-repeat 20px center').html('登录成功,跳转中...');
setTimeout(function(){
location.href = 'http://www.baidu.com';
}, 1000);
}
},
});
}
},
2. 自动登录
如要要实现自动登录,那么必须保存用户的登陆信息,这有两种方式:cookie和session。前者保存在客户端,安全性较低;后者存储在服务器端,安全性高,但是会占用服务器资源。这里我们先采用session的方式。
保存方式已经决定了,接下来就要考虑保存哪些内容。我们保存用户的id,最后登录的IP和登录时间。为了存储这些信息,我们需要对原来的用户表进行调整,添加两个字段:last_login和last_ip。
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlMAAADQCAIAAACsmHPgAAAa2klEQVR4nO2d3aGkIAxGrcuCqMdqbMYmtgP3wauGPwcUEOScl73rOBAC8gmjyfBvZwUAAOiAAeUDAICuQPkAAKAvXlC+ZRqHYRiGYZyWREXOahiGcUpUWhZmpbX3z+JUDgAAgGBeW/Mt06hP/LN6JAWzqlv5bEwHAABAEXTl25Zj46iGYRjUPKth++P4aNem439bKfsqbhjGcRQKdBz/K0t8ZCnfcX6wHixntWoWyieOGwtBn51/DR2GYZyuBemvBDVrX9yK8tTrW+NO4zjNx1e0D0VBe02XPthO2oyRBbnb67Hz6ODFaKS7bACAVrHWfMs0bnPerLZ/l2n8mwJnpc+qf4elhm0Lt/2EY6Z07EY6le8wIGDrUm4fauXLgpdpPI777NwbelR+Ob+f7jjs+DvfV6+vvZrML9O4GyH89tfKSz/oFok+8veL385d4La/RUNRPgD4Di7l2ye+Y7F3zIDnn5oKnksmTUOMKTVQ+fZPf0y0ugyf1ckFjblsctkZv026OWGTyPPrV/W623tq3X6CfqPhbqiNT/m8/XJh58/KAADaJ075jpnRnJ7X84Rz608qivHfS+WzF0zOitzKF6hkpxJHK9+sxmmZ1TjNapxmbUV88S2X8pktSK18WilB7UX5AKADIpVv0zxz21NfZuxny+Nyt03UY02yoVudek3W7qVz+vbZqZ8v9z69NSulxmlZZzWOo1xRXq9iHbud2m9vx26n/hBowG6n/PX1+HJYe82meYUztF8AAGrH9YTLtgG2P3cvn6FYV4c06Ntn4iO5saaUOtYc7t22+F+StM08pf/U5zDJa6f+0Q/ZW/c16bLaIuKqwt3ezbtKnY+gnOXoG5Jh9uyFTOfbEoHt9dlpPd/y2xAAgCaIf6vh5oZYe28dwM71ahYAoDEilM/5fEgI8p2B+5YCAACkgOhlAADQFyhfCzheRbix9gYAgHVF+QAAoDdQPgAA6AuUDwAA+gLlAwCAvkD5AACgL/zKRwjHe+C3b9BKP9ZmZ2325Ka39rbCr35B+VKD375BK/1Ym5212ZOb3trbCihfafDbN2ilH2uzszZ7ctNbe1shWvlcL02ref0Vabr74/jtG8db6cfa7KzNHtrb53Fvv5iw5ksNfvsGrfRjbXbWZk9uemtvK7DbWRr89g1a6cfa7KzNntz01t5WQPlKg9++QSv9WJudtdmTm97a2wr3lQ8AAOCLoHwAANAXKB8AAPQFygcAAH2B8gEAQF+gfAAA0BcoHwAA9AXKBwAAfeFVvmUaA9/QvA6UNqshsJwj4pr//FkNwzBOIaW9RaDfXOHleCO2IgL7cYseuJ159unlEPWN84Dxf99OzTZRU3hFae2xLgBnbEUHMlxj6Hc8NSe53u5f73XPY63zs18SKN+6rtMoBuGi/S+WX/XOqu4RE34lbKfN6u8CjvE3ZCd8/M9qHI8Rv0xj2Pj0lR913UWdL6/LWd3VjXT2nEM/3KBg94aVZNp5Y+aK8v95ZlhDHs2kfVNU+YyveO+t5P2P1f2OesX5av6I8h3Iy//v+8Jnx/+mcftHnY5bjK9wI5mSKOWbpr0X9xlt6xMZVd5e4b2lfNOoq4xz/HjGYUJ7jKF/ftEzns3g/MdH4oOj6mj/W4uyQM2JVz59BtvrVfPRkHFaruw5OkZ+1eeHbimmfF6P2+UYtz7G5WSdL7dLv7PbeWAq32pGnDvu+8S1vDnuOH7lT7hHnPIte6eJe3lt78OKIviS8s3Kuki948czDlPZYw79/b9X49m5VJrno5Tzqrjl/9xrPvft6dbIXe2kBV57djHf/v47yeOHPnlzzecux7Hhba55tPONIZtuuyMTCZRPjnjRfGM0L4fTL/0J94hVvr+RWbfybYNjn2jFUc/4cY7DVPa4le96PDsvf/0rNSufY82nNcEs6UL5HJV6/NAnb/zO96OcH9uVKN92dCtEOta+hfjLhFm3QxolWvm2HpmqVj6xYyZ+YbsYP65xmMoez27npT2Oy197hE62sVblc7FvVBrVxyif1w99UqHy/Xja07XbKQdwB7ud67puLjW3m7S2Hz4Pf3oWwrmhfMZuvPHDVVXKJ4fd9fixx2Eqe6wrO2A828onj+i7hTf8fx4LfgTotvIdvSGsNveivfbYPeL3Q5+UUD7t9+jzG74s8sZXhh/Z5Y1PlKr8p747+/7OzQnr2pvGUSm3r13+hEcE9uMxNv9OnpX1kMhwPJr0t6Zxj/Or6+W5ndaPTJpIX42fyMdAQ8f/5RMlTnt8XxAl/V0gUlKC/X96Jeoiiva/Xu9xXDzhIi5thz2m/VLp3X7okkJrPjhI5jfrto4OKUkr4z+7nZGZV1vxWyp6a28roHylee4357u64n6u3vXul2hl/Oez89474634LRW9tbcV7isfAADAJ0H5AACgL1A+AADoC5QPAAD6AuUDAIC+QPkAAKAvUD4AAOgLv/JFvsEKf+C3b9BKP9ZmZ2325Ka39rbCr35B+VKD375BK/1Ym5212ZOb3trbCihfafDbN2ilH2uzszZ7ctNbe1shWvl8oVWjI+12dhy/feN4K/1Ym5212UN7+zzu7RcT1nypwW/foJV+rM3O2uzJTW/tbQV2O0uD375BK/1Ym5212ZOb3trbCihfafDbN2ilH2uzszZ7ctNbe1vhvvIBAAB8EZQPAAD6AuUDAIC+QPkAAKAvUD4AAOgLlA8AAPoC5QMAgL5A+QAAoC+8yrdMY9QbmrMa/OfPahiGcbprZEsk9Vs0RuVbbDu7/DO4nQxpt0zje32U1g/+SkLHYWA/Sg+fXt2rOGMLZnNs+HgzAhr+fcsIfyjsNAMjOqMf3rXH57ej0nFaNH9q1ghTfMdLEXu9v0WR66sifvZLMuX7xaxQvsdM4+W1PSt57S/TOKjZEctgVnJqliUa//0ioeMwvB9nNY5Hv4i7h1mdU/EyjZnEL2a8ad17fE+WYM+PseM5hd9kAVp/+eJyvBhH5c3rvRtu+KGE8h23Zub5Imy2mlE+x5m237aDSinzNtaKQW6PhU3pTKxZQTuw6IMqeNn3Z6eImi7v3x327xbud/HjUZF3/KxiATApuQ5wly9dJFtxaxxGzeDTtGvK4UDLk5nuKm4r39HzWgmLOclkVT6H3z6sfGJ5enzFdx1dX+/is99jKm6eMSwdp6N9WzFiLe6amo7BPwzDOKr9mvtx/rN5z9fqQms+63x5+8huZ8T5yzQe/Wt8ennv45lafyqf1i8RmyLaJCkK9dlvrC2M8WD74RTyZRrNycJRvjGB7+XfHIdxM/iyO2D3p+PreabntGs+++Ypr/JZflu/rHyzcP7pZ991tHqu92kUl6jYv4m103cdmXsVckLYxXn7ezvLfd0dpe/FHc30XKe3573Q9hpkUz5jML76G1JJkihf1JVwfi2B8nkWjp4KfcrnsV/+JmNWYvpBN8xQUEf5jrxcf+nS7o3D2Bn8r+Tale/EWHbYy4L48uPOd/pt/bDy6UP0pvJZi/LAtgfPM5ebInZlvuvu6ND9duuvOt/5t+e94PYaoHyJaUH5XHteZxX5lE834nrNZwyY3+V7rthiyrcZNjWz2+koQd7t3yk/7ny33y7vzORHchj4jhcguL3aboo0sm3l853vUz5/+V9RPv0ys3e3vkpm5TvHpzVJhe52rsukxM6GeR3F7HbK9dZP5dMaalXs2u08D8gdHl/5HtNvjsMbM7ixm1r5Ey7OEuzbpwLKZ/hN2mDY07DySQmX+3r+62j1XO96hfd/tw67jvSJxiWz7uvOq3zeKebuvOemgPL5ssUbm1uqk5/6Hvrt2AzYt8j1PajZ/Yv0hjFrmRUI58tHPmzrI5p6FK0/geK0X9/mELOWb/yIjZFx/PPqtX/cVdwah4H9KJ/C//u/88WAut5qcO1A7xZus+9qd0yYnuTymz1M9DEQb2kawv0vh7NS54Mtzuvo7zvO692za+rhzjwjK3BdRWa95nUnS5/1Z9Nm1/nP5j2ftwut+WDjTb893lCr9q2G8l5tZfzXZmdt9uSmt/a2AspXmnf99qjy+n6LFXfJpQ1rZfzXZmdt9uSmt/a2wn3lAwAA+CQoHwBAyzheFYj7VaxDUD4AAOgLlA8AAPoC5QMAgL5A+QAAoC94qyExlfhNvjeaEKNx4hVcMzyE4yf2+t6auCDqjWzjLfsK8/P58t5d2E9+vhAqud7BgPf5SlOP39KHcdJfdBdRiMwQRx/I/xcVhauJ/Hy+SNA++2PLv2EP+fkgE9mVT64t7Azgznxs2jO4VkitUc//tFzkkbLzXS3ReaGScyd6kxFBypXHa73Ij6WvLWQUQDW5Fl/x5R8n+HTLF0TRlN92ln1xitJCfr4L5XPmyYst/449XeXng4KUWPP5Io3KEmSkYFmweS/syv8k47tqVjnzXR1nB+eFSkuU37TAdKd0uPN4/Z1m+ceXT8v4+4ff/OWLz3xTt396MmfSiIjY7xKrKPXn57tSPleevNjy79nTUX4+KMibymeECnYsvFzLEbtSb/nOyK2+GOHX9aYj5ko4tUT70kVE2vAsIbF+85YvrXJ5TN6Y2GVYM2l4FqR3iVaUraXNKp9h/43yb9pj1YvywXPeVT7B+dtPbP4nX/mefFc+5buuNx1RV8KfbWYiHVe79g8fK19s+aI4V/I2O5tpqvx/73JDUZa68/P57kh8efJiy79tj1HvR/PzQVEKKZ9jf82fj+1qwytc+eQlYe2HyhqXX3mh0hJ5JcxK/DJ3fP/8O2BN5sunFec3f/miZGtn1JOUMkn+v3e5pShV5+eTty7yb5/9seXHnt9Xfj4oSwnlE7tnWn4pTz621fOR+yHqo2w7b5PYtNvzXU3i7LC8UMm5MVPYuUDNdm1rVv9erZ1PK85vv8o/atEWcyH2GKVYK6FqCezHhvLzOe25sJ/8fCGgfHVSRPlA8GW/fTf/n00r/VibnbXZk5ve2tsKKF9pvu23j+X/u6CVfqzNztrsyU1v7W2F+8oHAADwSVA+AADoC5QPAAD6AuUDAIC+QPkAAKAvUD4AAOiLPt9qcMSqSMVDv8n37hPiMmpWVk3n6+ltJlhISNQb2WaIgPry8xXjod/IzwdJ4H0+H7nCeD73W/rwS64XyKdxUJNe0yfy6qUiKgpXE/n5ypDCb0SshqdkV74tId4WtExGI1pX7XbMKMqdt8913EgV91fkmfDIcbvnzTO3yKBaVSjfW3n1/qJn6hr7jbx6qYiLP9lCfr4yPPUbygcpKLHm0/bntFC47jxwsmQZ9dh93FoBHaN8GoUA6HH/js2U7e89LuVVZN5UxFz57+TVO7voWvnazKuXitjIy/Xn5yvDQ7+tKB+koJDyGcsDmST21968sanmXMOpedPXcTqvBL8iWv9xHcm2iAn222t59YwYv+J24EL5mskulIronANL7fn5yvDQbyvKBykoo3ymplhrLP9vV8ZazXV8VuO0zGqcZjVO815Qd8qXMq+es5Rv5NVLRfQMfmxTs9v5xG+Xd2BkKYJASu12ar/V7WnxPHngfHn7fMfXWSm174ycv4kbiqsLiTODq57+tYbdTuNH0TJ59TRb9dX6B/LqpeLGDG7sovOEyzXk54N8FFrzbWnejN0zsTkn88B5k+R5k+ctxy96+vzr3v3zpxXTNlNVpp/6oq6EF/Lq7ZgJ0gx7ms2rl4qop/NPN9adn68AufxGfj6I4YXdzs6p8UroKa9eKmrsRxe12VmbPbnprb2tUOathrx3tW1R55XQT169VNTZjza12VmbPbnprb2tcF/5AAAAPgnKBwAAfYHyAQBAX6B8AADQFygfAAD0BcoHAAB9UV2WIjtYyPEGdxNPD1fylPNSIM/fYr+Ib33SbMKHqDeyzVAD9eXn8+W9u7D/d4iEx/bY9ZKfD5JQ4k32MtRmj4967Ewfxsl4od1XwSfy/EVF4WoiP58vErTP/tjyb9hDfj7IRBHlk/f+R7jeYRjGUW03Yn/3ZY74YrKK67VdKyPsTvQm8R/ts+A8fO/k+fMo3zfy/MUpSgv5+S6Uz5knL7b8O/aQnw/yUDp62Xlve0RV3m99zznwIs+cv95WRli4ndqZWoTuuDx8b+X58+12fiPPX6yi1J+f70r5XHnyYsu/Zw/5+SAH+ZVPDxt9ToLHUN4nzOV33r6relsZYTF2nlri//3sZ06G1/L8eZpyrXzNZDuKVpSl9vx818pn2H+j/Jv2WPWifPCcAms+z8zrVb4feft6Ur69+WYCJb9/Eihfhjx/uhnfyPN3Q1GWuvPz+e5IfHnyYsu/bc9Cfj5ITYndTvcGlk/55FA+dkQD6m1lhEXaOSvxy9zx/fPvgDXZW3n+jtxRqyGLn8jzd0tRqs7PJ/tI/u2zP7b82PPJzwf5KPKEi51a79hPU/M+qv+em1Cz3Gy7yjO3Txu+45VyY6bw/3wWmofvrTx/vkwdH8jzF9iPbeXns+25sL/AWw0RfiM/H8RQSPng4Mt+6ynPXyv9WJudtdmTm97a2wooX2m+7bdHjWtnwbe204+12VmbPbnprb2tcF/5AAAAPgnKBwAAfYHyAQBAX6B8AADQFygfAAD0BcoHAAB9wVsNiYn1W9qgJkblMgua5HyZvc1ECgWIeiPbDBFQX36+Yjz0G/n5IAkfeZ+vbECiR2T12w8/6C+K/0WHsQOSfSJ/Xm6ionA1kZ+vDCn8RsRqeEoh5XPmh/Pme5O5AuR04MwbpycW0O7rfOW8SlwcRaOx+0GllNncCz/suINBW7PCN/Ln5SYu/mQL+fnK8NRvKB+koFDEamd+uP0zM9+bO5/fepU3zrnW8ZbzKs8j/Mo40sanl2s+z9T6U/nazJ+Xm9jIy/Xn5yvDQ7+tKB+koIDyebPk7B/qhVhrF9+y5ofyXZTzKkmUz5Pm9VL57NDXrhLMA9bSpJUsQrmJzjmw1J6frwwP/baifJCC+pTPe/5V3jjXjH9Z73u0oHxfyJ+XmxvZdpa68/OV4anfyM8HKSi022nsb/ombtf5Wn3n3+aab/+GKL7OjbnMyufww3lqmPKtn8ifl5sbM3jl+fnK8Nxv8hbOuJ1D+SCQQk+42PnhwvPJyd+0judVRN44ozAzOWqzu53uvIOHE+y8evqXnD98mg9qaoiZ9wP583IT9XT+0Eh+vgLk8hv5+SCGj7zV0BBv+q2n/Hm5aWX812Znbfbkprf2tgLKV5p3/dZP/rzctDL+a7OzNnty01t7W+G+8gEAAHwSlA8AAPoC5QMAgL5A+QAAoC9QPgAA6AuUDwAA+iLBWw3OnAMFSFtvquAlsU85k5+vTqLeyN7OPL1Kfr5fkJ8PslLufb4kI+BG4KHaRl5We8jPV4yoKFzk5ztI4TciVsNTXlU+Z769dV1l9KxxPCP83gpB5LRTlOWM5zVOk7JvOWU5iy9P3i17fGdG1BvgH/LzJSQu/iT5+Xae+g3lgxS8q3zufHvyzFkZ8SQTrPmmUQ90uZd/2rAYWQTd5ci42VF69jxiNfn5Xic28jL5+TYe+m1F+SAFryqfvkzx7M0bEagfK58Vqt2+tJzWRuVMiLAn/vzLXA3k5ytEdM6Bhfx86/rYbyvKByl4Ufmu8u0ZZx3/K6Z89rXSk/KRn+830TP45kvy85GfDyrgPeWTQ1bu3xnPH+rzwWX+ubB6zecbz3tGeVzbEfWUU6XyXfiH/HwpuTGDk59vTeE3eQtn3M6hfBBIAeVz55lbtc1OLd/eVVK9y/xzgfV6d1kX48Ga5aKc41x3njw/D/32o17y85UisB/Jz2eQy2/k54MYyq352iJf6970G/n50tHK+K/NztrsyU1v7W0FlE9DLPq+eQ9Ofr5UtDL+a7OzNnty01t7W+G+8gEAAHySupVvMV/ffmMnHwAAPkXdygcAAJAalA8AAPoC5QMAgL5A+QAAoC8azs+3UVvQkdinnMnPVydRb2RvZ55eJT/fL8jPB1l5NWJ1PGUDD2Uh65VAfr5iREXhIj/fQQq/EbEanvKq8mXOz+dca07jcKTfe2Uh+nCtvJCfrw7i4k+Sn2/nqd9QPkjBu8r3Wn4+XTCKLmOSRKwmP9/rxEZeJj/fxkO/rSgfpOBV5fNFjs6an89a+lQeuz0yVwP5+QoRnXNgIT/fuj7224ryQQpeVL6X8vNZT3mgfJbykZ/vNzey7Szk53vuN/LzQQreUz45ZOX+XYn8fE93UJ+QWfku/EN+vpTcmMHJz7em8Ju8hTNu51A+CKSA8lWXn28a/6p75RGXh347nEZ+vneJejp/ID/fTi6/kZ8PYii35quHdw1/02/k50tHK+O/Njtrsyc3vbW3FbpTvgIZ+K5512/k50tFK+O/Njtrsyc3vbW3Fe4rHwAAwCepW/ms17ff2MkHAIBPUbfyAQAApAblAwCAvkD5AACgL1A+AADoC5QPAAD6wq98L0aBbRr89g1a6cfa7KzNntz01t5W+NUvKF9q8Ns3aKUfa7OzNnty01t7WwHlKw1++wat9GNtdtZmT256a28rRCuf6+VxNa/+CNEcVzN++8zxVvqxNjtrs4f29nnc2y8mrPlSg9++QSv9WJudtdmTm97a2wrsdpYGv32DVvqxNjtrsyc3vbW3FVC+0uC3b9BKP9ZmZ2325Ka39rbCfeUDAAD4IigfAAD0BcoHAAB9gfIBAEBfoHwAANAXKB8AAPQFygcAAH2B8gEAQF84lM8IfFb5e5qzqt1CAACoCqfynRE+l2lEV2ykiwAAoC1+7HaGTPHbGnGclj1M9vkVsXz8O2ic8hdwe5zM88dx3A/6OKJyS23eDiqljHpDmmDWK8N+Ow+GVwAAANVwqXxL8NpmU7BNHma1fWkahSbN6u9Tq8wjvppcX85KiM0l9qp0mcZDj0LWrL565VeXaZT2sOYDAGiXK+ULFz5HeFC/wm0fTOOmMbM6FUWmXAqt2al855eD4sm66nXkeZJrWZQPAKBVrpQvYn6PUb5ZjdMyq3Ga1TjNnkqONeIvUiifs14pySYoHwBAu/iVL2LF5xYYXZKEkMxKKTVOyzqrcTwr0c6fVeCq77ny+eq9eGr0/Mqs+KUPAKAtvMoXLHxmVnjtwVDv8U05NHHRtxd/Vu7ORn/UqebzlGvxu6jX+9Ec9wQNAADUA2+yAwBAX6B8AADQFygfAAD0BcoHAAB9gfIBAEBf/AeUM/DXKWmvOgAAAABJRU5ErkJggg==" alt="" />
login.js中的一个小错误导致在这里浪费了半个小时,特意做个记录,以免以后又犯同样的错误。
login.js } else if ($("#verify_register").attr('form-click') == 'login') {
$(form).ajaxSubmit({ //此处应该是$('#login')
url: ThinkPHP['MODULE'] + '/User/login',
type: 'POST',
beforeSubmit: function() {
$('#loading').dialog('open');
},
success: function(responseText) {
if (responseText == -9) {
继续上面的话题,更新用户信息和写入session的动作都是在UserModel的login方法中完成的:
UserModel.class.php $user = $this->field('id, password, last_login, last_ip')->where($map)->find();
if ($user['password'] == $password) { //更新登陆信息
$update = array(
'id' => $user['id'],
'last_login' => NOW_TIME,
'last_ip' => get_client_ip(1), //参数1表示返回long型数字
);
$this->save($update); //登陆信息写入SESSION
$auth = array(
'id' => $user['id'],
'last_login' => $user['last_login'],
'last_ip' => $user['last_ip'],
); session('user_auth', $auth); return $user['id'];
} else {
return -9; //用户密码错误
}
在一个需要登录的系统中,很多操作是只有登录用户才可以做的,所以在许多地方我们都需要验证用户是否已经登录,这是通过检测session是否存在实现的。我们这一部分提取出来建立一个新的HomeController,IndexController、UserController和LoginController都继承HomeController。
HomeController.class.php <?php
namespace Home\Controller;
use Think\Controller; class HomeController extends Controller {
protected function login() {
if (session('?user_auth')) {
return 1;
} else {
$this->redirect('Login/index'); //redirect方法自带U方法
}
}
}
IndexController.class.php <?php
namespace Home\Controller; class IndexController extends HomeController {
public function index() {
if ($this->login()) {
echo "Login successfully";
}
}
}
接下来我们要把用户信息写入COOKIE,因为COOKIE是保存在客户端的,为了增强安全性,我们需要对其进行加密存储。流程如下:
1. 在配置文件里设置一个密钥COOKIE_KEY
2. 在加密函数中,首先对密钥值执行sha1,将结果与用户名进行异或,再将结果用base64加密
config.php <?php
return array(
'TMPL_PARSE_STRING' => array(
'__CSS__' => __ROOT__.'/Public/'.MODULE_NAME.'/css',
'__JS__' => __ROOT__.'/Public/'.MODULE_NAME.'/js',
'__IMG__' => __ROOT__.'/Public/'.MODULE_NAME.'/img',
), //cookie秘钥
'COOKIE_KEY' => 'www.juedi.com',
);
function.php //COOKIE加解密,0加密,1解密
function encrypttion($username, $type = 0) {
$key = sha1(C('COOKIE_KEY')); if (!$type) {
$username = base64_encode($username ^ $key);
} else {
$username = base64_decode($username) ^ $key;
} return $username;
}
现在来添加自动登录功能。
首先需要在模板上添加一个checkbox:
index.tpl <span class="username">
<input type="text" name="username" placeholder="用户名/邮箱">
<label class="auto" for="auto"><input type="checkbox" id="auto" name="auto">自动登录</label>
</span>
UserController和UserModel中的login方法也需要做相应的改动:
UserModel.class.php //用户名加密写入COOKIE
if ($auto == 'on') {
cookie('auto', encryption($user['username']), 3600 * 24 * 30);
}
在HomeController的login方法中首先就需要判断是否自动登录:
HomeController.class.php class HomeController extends Controller {
protected function login() {
//处理自动登录,当cookie存在且session不存在的情况下,生成session
if (!is_null(cookie('auto')) && !session('?user_auth')) { $username = encryption(cookie('auto'), 1);
$map['username'] = $username; $db = D('user');
$user = $db->field('id, username, last_login, last_ip')->where($map)->find(); //登陆信息写入SESSION
$auth = array(
'id' => $user['id'],
'username' => $user['username'],
'last_login' => $user['last_login'],
'last_ip' => $user['last_ip'],
); session('user_auth', $auth);
} //判断session是否存在
if (session('?user_auth')) {
return 1;
} else {
$this->redirect('Login/index'); //redirect方法自带U方法
}
}
LoginController的login方法也要做相应的改动:
LoginController.class.php public function index() {
if (!session('?user_auth')) { //只有当session不存在时才可以看到登录界面
$this->display();
} else {
$this->redirect('Index/index');
} }
3. 绑定IP验证登录
如果有人恶意地将cookie复制到另外一台电脑上,那么他就可以实现自动登录。为了防止cookie被盗用,我们把IP地址也加密写入cookie,在自动登录的时候验证是不是用户登录时的IP地址。
UserModel.class.php //用户名和IP加密写入COOKIE
if ($auto == 'on') {
cookie('auto', encryption($user['username']. '|' .get_client_ip()), 3600 * 24 * 30);
}
HomeController.class.php if (!is_null(cookie('auto')) && !session('?user_auth')) { $value = explode('|', encryption(cookie('auto'), 1));
list($username, $ip) = $value;
if ($ip == get_client_ip())
{
$map['username'] = $username; $db = D('user');
$user = $db->field('id, username, last_ip')->where($map)->find(); //自动登录更新登陆信息
$update = array(
'id' => $user['id'],
'last_login' => NOW_TIME,
);
$db->save($update); //登陆信息写入SESSION
$auth = array(
'id' => $user['id'],
'username' => $user['username'],
'last_login' => NOW_TIME,
'last_ip' => $user['last_ip'],
); session('user_auth', $auth);
}
}
4. 微博主页设计
我们把微博主页也分成header、main和footer三个部分。
在这里我们先复习一下CSS的定位position。position主要有四个属性:static(默认属性)、absolute、relative、fixed,区别如下:
- static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
- absolute:脱离了文档流,生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
- relative:不脱离文档流,生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
- fixed:脱离了文档流,生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
对于脱离了文档流的元素(即使用了absolute或fixed定位的元素),它相邻元素的margin不再相对于此元素。还需注意left、top、right、bottom属性和margin的区别。根据position属性的不同,left等值相对的对象也不同,而margin一直是相对于相邻元素的。
此外这一部分我们还用到了CSS3的box-shadow属性,关于该属性的使用可以参考 http://www.w3cplus.com/content/css3-box-shadow。
在做导航的时候遇到了一个问题今天没能解决:
可以在上图看到每个导航项目都太靠下了。
接着昨天的问题往下说。
进过今天下午半个多小时的仔细研究,终于解决了昨天出现的问题,特意将解决过程记录在此,以备参考。
首先,从图中可以很明显地看出li元素超出了header的下边界,其实这里还有一个很容易被忽视的问题,那就是header_main有点儿靠右。
我给ul加上一个float:left:
#header ul {
float: left;
}
然后通过firebug选取ul元素如下图:
我突然发现ul居然有16px的上下margin,在index.css开头我明明已经把ul的margin都设为0了呀?!
//起始CSS body, h1, h2, h3, h4, h5, h6, ol, ul, p, form {
margin:;
padding:;
}
再仔细一看,终于发现了问题所在:注释!
对,就是开头的”//起始CSS“使上面的CSS设置没有生效,因为在CSS中注释只能用/* */。改成如下样式就好了:
/*起始CSS*/ body, h1, h2, h3, h4, h5, h6, ol, ul, p, form {
margin:;
padding:;
}
现在又出现了一个新问题:文字太靠上了。我们想让链接垂直居中,这就需要用到line-height属性了。line-height有一个特性,叫做垂直居中性,把line-height值设置为height一样大小的值可以实现单行文字的垂直居中。
又有一个问题:当鼠标放到导航链接上时,我们想让它的背景颜色有42px的高度。这就需要将a元素设置为display:block:
最终的CSS代码如下:
index.css #header .nav {
float: left;
height: 42px;
margin: 0 0 0 30px;
} #header ul li {
float: left;
margin-left: 5px;
height: 42px;
line-height: 42px; } #header ul li a {
display: block;
padding: 0 10px;
font-size: 16px;
color: #fff;
text-decoration: none;
} #header ul li a:hover {
background: #333;
} #header ul li a.selected {
background: #333;
}
现在我们来实现“消息”和“账号”的弹出菜单功能:
index.tpl <li class="app">消息
<dl class="list">
<dd><a href="#">@到我的</a></dd>
<dd><a href="#">收到的评论</a></dd>
<dd><a href="#">发出的评论</a></dd>
<dd><a href="#">我的私信</a></dd>
<dd><a href="#">系统消息</a></dd>
<dd><a href="#" class="line">发私信>></a></dd>
</dl>
</li>
index.css #header .app {
padding: 0 10px;
position: relative;
cursor: pointer;
} #header dl.list {
width: 100px;
background: #fff;
border: 1px solid #666;
position: absolute;
top: 42px;
left: -50px;
display: none;
} #header dl.list a {
color: #444;
height: 30px; /*覆盖掉继承的height和line-height*/
line-height: 30px;
} #header dl.list a.line {
border-top: 1px solid #eee;
}
index.js $(function() {
$('.app').hover(function(){
$(this).css({
background: '#444', //注意,千万不要用分号,属性值一定加引号!!!
color: '#666',
}).find('.list').show();
}, function(){
$(this).css({
background: '#666', //注意,千万不要用分号,属性值一定加引号!!!
color: '#fff',
}).find('.list').hide();
});
});
现在主页的框架基本已经搭好了,我们现在把里面经常需要用到的东西分离出来,做成模板使用。
首先我们建立两个文件夹:Public和Base。Public里存放各个模板文件,Base中存放引用模板文件的文件,index.tpl文件只需要继承common.tpl即可。
5. 退出及跳转页
当用户退出登录的时候,我们应该删除用户的session,如果用户选择了自动登录,那么还应该删除用户的cookie,然后跳转到登录页面。
UserController.class.php //退出登录
public function logout() {
//清除session
session(null); //清理自动登录生成的cookie
cookie('auto', null); $this->success('退出成功', U('Login/index'));
}
现在只要把链接加到微博首页就可以了。
index.tpl <li class="app">账号
<dl class="list">
<dd><a href="#">个人设置</a></dd>
<dd><a href="#">排行榜</a></dd>
<dd><a href="#">申请认证</a></dd>
<dd><a href="{:U('User/logout')}" class="line">退出</a></dd>
</dl>
</li>
下面来设计错误和成功后的跳转页,首先在配置文件里定义两个变量:
config.php //错误跳转模板
'TMPL_ACTION_ERROR' => 'Public/jump', //成功跳转模板
'TMPL_ACTION_SUCCESS' => 'Public/jump',
在设计跳转页的过程中有几个问题需要解决:1. 文字居中显示;2. 文字前加图标,文字与图标在同一水平位置;
第一个问题的解决方法是给父元素增加padding,让文字到垂直居中,然后用text-align:center使文字水平居中:
jump.tpl .info {
margin: 100px auto;
padding: 200px 0 0 0;
height: 300px;
width: 1200px;
background: #fafafa;
text-align: center;
}
第二个问题是通过设置背景图片的位置解决的:
jump.tpl .error {
background: url(__PUBLIC__/{:MODULE_NAME}/img/jump_error.png) no-repeat left bottom;
} .success {
background: url(__PUBLIC__/{:MODULE_NAME}/img/jump_success.png) no-repeat left bottom;
}
6. 微博发布区设计
现在可是设计微博的发布区。
这一部分主要是在main区域,我们把它分成main_left和main_right两个部分。其中main_right的css代码如下:
index.css #main .main_right {
float: right;
width: 300px;
background: #d0d0d0;
}
我们可以看到背景颜色只应用到了文字所在的一行,如果我们想让背景颜色充满整个区域,那就需要给区域加个height:
index.css #main .main_right {
float: right;
width: 300px;
min-height: 800px;
background: #d0d0d0;
}
因为左侧区域是微博的发布区,所以会有很多内容,当内容超过了该区域的高度时就会出问题:
可以看到,超出的内容到了main区域的下方,致使footer的内容挤到了右边。
这个问题可以通过javascript解决,代码如下:
index.js //高度保持一致
if ($('.main_left').height() > 800) {
$('.main_right').height($('.main_left').height());
$('#main').height($('.main_left').height());
}
这里还有一个问题,当我们向下拉滚动条时,提交按钮会到导航栏的上方,如下图所示:
这个可以通过z-index解决:
index.js #header {
position: fixed;
width: 100%;
height: 42px;
top: 0px; /*top定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移*/
background: #666;
z-index: 9999;
}
界面设置基本做好了,接着要实现一些小功能。
第一个功能就是限制用户的输入在140个字以内,并且数字随着用户的输入变化,如下图:
这个是通过javascript实现的:
index.js //微博输入内容计算字个数
$('.weibo_text').on('keyup', weibo_num); function weibo_num() {
var total = 280;
var len = $(this).val().length;
var temp = 0;
if (len > 0) {
for (var i = 0; i < len; i++) {
if ($(this).val().charCodeAt(i) > 255) {
temp += 2;
} else {
temp ++;
}
} var result = parseInt((total - temp) / 2);
$('.weibo_num').html('您还可以输入<strong>' + result + '</strong>个字');
}
}
7. 引入表情插件
这一节我们在微博发布区引入一款jquery表情插件,过程比较简单,就是把css、js文件放到相应目录,从原来的index.html文件里复制一些内容到我们的index.tpl就可以了。
不过,在这里还是出现了一个小问题。
当我们添加表情的时候,字数显示并没有减少,我们需要修改js文件:
index.js //微博输入内容得到光标计算字个数
$('.weibo_text').on('focus', weibo_num);
这里又出现了一个新问题,第一次添加表情的时候字数不会减少,直到再次添加字数才开始变化:
8. 微博发布及表分析
首先我们需要新建一个表用来存储用户发布的微博及其它一些信息
这里需要注意的是上面的content_over字段。由于varchar查询起来速度比较慢,所以这里我们用char类型存储微博内容。因为char最多只能存储255个字符,所以我们把280-255=25个字符存到content_over中。
今天终于解决了一个困扰我多日的问题。虽然最后发现是我的粗心造成的,但是还得记录一下。
错误还是firebug发现的:
aaarticlea/png;base64,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" alt="" />
点击上图中的绿色部分可以进入jquery.js查看:
aaarticlea/png;base64,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" alt="" />
从这儿可以开出问题出在val()方法上,elem没有nodeName。nodeName是HTML元素的一个属性,elem没有这个属性就说明它不是HTML元素,或者它是undefined或null。我们可以看一下:
index.js function weibo_num() {
alert(this[0]); //查看this[0],也就是elem
var total = 280;
var len = $(this).val().length;
var temp = 0;
if (len > 0) {
for (var i = 0; i < len; i++) {
if ($(this).val().charCodeAt(i) > 255) {
temp += 2;
} else {
temp ++;
}
}
结果如下图所示:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcgAAAC2CAIAAADSnIq4AAAcCElEQVR4nO2d3XMT193H9V90KMEG/wcwU4fYeu1MSdLg4E7nARIwEGJvIhwgYFsvu3u0u9IeSat9O5L2injo9K5Mr7hhWkrTztNeJaRNniYphcntM5Mmmafpy0XaizwXK61lLL9IlvDq8P2Mp7MV+/FZHev8cnT25Rthjabj1htNz/M8Vm+4rNFsek3Pc1mD1Rue5zWanuPWWaPpeV694dmu/7IHESJEiBC7ihFWb9qO22x6nue5rOG4zPM8z/Mcl7ms4Xles+nZjsvqLdO0nVaTECFChAixmxhpF+Om49YDv+V4nuPWfafR9GyH1VuFuWk7DCJEiBAhdhXXF1avq9nYvkmIECFChBgU1l7nula/k2SIECFCfErESJfVWa/fZV2IECFChBissbqsYTuu53me5zlu3XHr/rbtuEFhNq3WzJg1mqblQIQIESLErmIkmPG6rNFoes2mx+pNVm80m16j6RfmVjF2Wd3fuXMbIkSIECE+JkZYvWlajl+AHbceFGbbcYPCbFqOP8GtNzzDtILGIEKECBHiRjFSbzRZvVFveM2mxxpNVm82ml7DL8yNZrPp1Rseqzfq7W2XtXaGCBEiRIhdxUizvYgQFGbbYbbDgmLssrrnec2mZ5hWsIhgmBZEiBAhQuwqRuoNz/9hjWZ7u1lvb3e82NpuNLu/DhEiRIgQ/e2IW28YptUqxi4z7VZhtmzHbl+0ZZiWf/Kr0fSqRq3e8DzPgwgRIkSIXcWeZ6xbbkOECJFzUVu8Mh4XxuIL4/HM2zsQ357zdxbG48JMrluLucx4fGG8vc/YnL7n73H3Yr9rrLV+Vx8gQoQ4eiI9kRC+8+y5sfjCRFIYiy98Z/LcoURmaVuxUpjuEI/nHmuxfHFWmEgK+6cu7p+6OJEUJpLCvqMXDkSXlkapc7qI/lUBzXrDa3Q77dVaMqg310571TvPl0GECPFpEPWZ+MKhhDAeFw7E5sfjwqGEMB5fubqNaJ2bWRjvEGdy61q8dk4Yiy+MxRYOJoSDCWEstjAWXziYEMbjwtgM0Uamc7qIuI4VIkSI24rK8dj8RFIYjwvfefbceFyYSApjsZVLW4r65Sv7jl4Ym3kr2hZnch0tVgrRpPDM9Ov7p16bOE998fKrrwfz1uPZUemc7textvz1txY0m11uLWj4O3duQ4QI8SkQ6UxceDZdqzc8T8yMx4UD0fnxeGZpK7F0PLYwkRRmcvSl6Lxfi2dyay2qly4fiM4fTAiHEpmrayJ9KTo/FluYSArjc3REOqeLuPasAKvfu2ghQoT4FIliZiy+sO/ohYPtNdau4luvvHYgOj9xnjab9PmjF4I11naL1tzx+e9OvTaRFCbO0y5iUjh0oiCNXOe0xW5Ptwpr2gFEiLyIrKKSbE7MSzIhRJRIJpcXJUIIyUtyNidKMiGE5Is1lzlVVasyz2UNq6xoButo0SpKlK61aCq5Ym1di5ZOSE6rdTlUxxBzmtHfe1y53loKiK9c3kzMLk8khYOJzGW3zhr6bFIYjwv7py+2lgIaTcc1Lpzw1xPmn03XOlvUL185mBCemX59LL6ytH2vbv4eO8WanlWNzd6jRYmkW+s7h5SdXX0AEM0CEWLIxLKqVllbtAxNM5gvOoamVd1AtIoSLQWiXRWVylqLJtWIZjCvrOZl6nRpkSqiYrA+DnXp7WCN9a3uovZSdH4iKUy/ZdmOy+qtwrrvuQvBGqvtqCcSwkRSOBCdn3yz2tmifvnKoYSwf+q1sVirsG7eq5ahEUKpksur1a171S1KuY5e7XiP1RIhRJZJJpvLizLRjHKJLGeyrf/OiXJG0t3e/46IZoEIMWSiRUnZbYtMJ4putcVKMV8022K1KOmW59UbblHKtya5opyVy2ZVI0TTLb9FSyckqxobW7Qrqliyej5UMTMeX9g/ddFfCtgo6pevHEoKz7wkqS2Rvjh1cTzur7cGnUOPxxaemX79UEKYFde1WHhz0V9jPZjIvLVVrzJDIzmt5rKGxwyVaCWz41DLmtj6NiBnsh2dkxNlmRBCcnlJrfqdo5XMulVW/W8DdlkTlSrzWFlRi7X+/46IZoEIcY9Ei0oyyWTz7RLQHslBYfW8xwura9OCYrB2YVWqrN1iTdcM5rF6s6yKMjUMjeTyUi4vEUJkapRkMV+osA2FNZPVar2+x66FNRBLcjQpHEoKP1wJxC0La7JrYZ3frrAaOiGEWmsiM6RcgdrtQy1rYsnc4s9R0SS12rCoVmWt92hRreKyoqQZrRbNgkSdfj8AiGaBCHGPxLLqTz/rDc+ya2WlVRk3XwpY3yIzCopRbbVoaYUqLcm6ufNDrZUVomkaKbu9vcetlgKsi7PCM9MXD5wpdYitpYDv9roUMEP0br3qVjVCiFrdeKiWLpOMUgkOtVqU1r7RZ3PtuapSMjeKlD72d3QMTTMsPqJZ3lldFUUxDcCII0nSjRvvbDM6KsV8a1bl2a7VKqyNplPxZ6K+6FS11smrx4eVRcWS5Q8rZmik4tb0Qsn0PGYQUcrlJZkQ3fJFx9C0irt+PJq0IFHLszRJL/c0kLc4eSVmDiWFA9H59pTTPwe1MNE+eeWLx3PrTl4dOFPqbHHpfFuc0zeWjrIqSrrVcaiWTjTdWjvUml7It1ZINtYci7ZOCa57jxYlSpU9Xqz8wspHNEsul/vLX/7yLQAjzoMHD0RR3GZ0WFTWrfboYFRR1arjLwXI1GmLrCQXSmaXYVXRJFJx/WFVIlmpvXQoKqqmGczzanpBqdQtSqjFipLcWk9oj0eLElJxTctxqppmsB4G8obLrQKx8ObiM9OtK/z3T7WvmkoI+9qXW/niy3nP87wrZ+b3+5dbJTOX11qkL7bF6besHZQOQ8kVDLaDmsMMOS/56wPr3qNFM1lZt2qUEFkmyyutFdm8JC+vZCWZEM0wRz2aJZ1O7/WIAGAwpNPpbUaHRUWJ5PKi/3VVlDTdqtcbrTXWtshoQaX2xmFlqfmCf0lQMKyYoWlG07UqikxkmeRFWTMapk5KJtOJQu2O8egYGqFGS7QoodWdD+TWDQKvb7xBQL10eSw2fyghHEz489bWXPVA9HV/rupvtxYEsivtGwSEsbO63+K1c4F45TzdSekwNVGpuo8dKtNJ0KtrPZwX5Vxektqdky9UXJNKMsnl13eO36JjyKRs91vlwnVLKwor4IZ0Or3N6NCVfLHWZXToimawtmj6a6y245ZVkWgG8zzTcqpFiRAilqxOsaJJhBCiaZJcNhyXGRq1PKrklIrt/5L2eGRlhYil9SK1thzI5XMzG29pXdh39II/P51809i8ApRmu97S2lqQfb09bxX2T70WTHj3nVJ2VjosSrRibdua46p5yZ/Ydr5HqsglM+icmr840hLba6x939IaorQDFFbADel0us/RYZQKFdYW3YpKJH+GpVTdZvucjFJ1m55RIjJ16g3P1IkoyXlRKta8pmsQSc6LsiSTkulVi7JWc6uqVnZaLZo6EUvW+vHolBWiVtnmh1o7/3L7WSrR4CEsC2PtB7IcXTQ3f4/6ibbY8RCWRr3hNcuFoxsewnIoIYy/XFB3WjqskqxRe9tedWlBKTtd/xydndPadlmj7hiqath8RLOgsAJuSKfT/Y0OZmgydVoiM8RsvlBui9WSnBcJtdqiSQnRamuiWm2Y1ZK/xmqUSFtkal7SrbrnsapKruc0q8t4rMkrWX+m3O1QrddOrH9s4LPnDrVP6+87eiF62dr8PdIfdD42cEMFWDq/7rGBz1/vqXRUC1niT0W37FVmaJpudf1zBJ2zXnSqmZzm9lvlwhXNgsIKuMGfsfYwOmo0L8miRERJKztdRLui5SW17KwXXaOgGFZ7h2LNY061oBjlEhEluVhrGiUiSiQv6UbDM0pELFmbj0e3rJBChe1hBehdNIvtPtmmVxXD7t4io0pnr7plhUgyESVCKm7fhxquaBYUVsANwRrrng8riE97NAsKK+CGnmasQx1WEJ+8GK5oFhRWwA39rLGOVPoIxC3EcEWzoLACbvBnrGEYVhCfvIjrWAEYCttfxxqOEBGIwxDDFc2Cwgq4odudV2EMEYE4DDFS0imlVNVKRFEppZRSRS0qatHfLiiqqpUopbpOZaJoJZ1SqpV0mSjDEFFYATek0+mQDCuIuxTdUY9mQWEF3JBOp0MyrCDuRlTUYh9iuKJZUFgBN6TT6ZAMK4i7EQuK2ocYrmgWFFbADf4aaxiGFcTdiJTSPsRwRbOgsAJuWCusez2sIO5GXCusvYjhimZBYQXc0NNSQNhTZJ5isaelgJBGs6CwAm54/OTV3g0riLsRHz95NYrRLCisgBv8W1rDMKwg7kb0L7dCNAsAoWD7aJYnNawg7kb011h7FXFLKwBDAbe08iHKROlDRDQLAEOh/2iW0IxHiPVGUyuW+hARzQLAUOg7miU84xFis73GimgWAEJBz9EsIco7gbi2XSzRPkREswAwFBDNwocoyqQPEdEsAAwFRLPwIfY0Yw22Ec0CwFBANAsfYj9rrIhmAWBIIJqFD1Er6n2IuI4VgKGA61j5EPu+jrXluyFIO0BhBdyAaBY+xG53Xu0gmqXRXn3oNXtgGCIKK+AGf401DMMK4m5ERLMAECIQzcKHiGgWAEIEoln4EBHNAkCIQDQLHyKiWQAIEYhm4UNENAtY486dO1NTU1vvMzU1FYlEGo1GJBJ59OjRUNt6CkE0Cx8iolnAGtsWO8aYIAjffvvto0ePUFiHAaJZ+BARzQLW2LbYCYLAGHsybT2dIJqFDxHRLGANFNY9B9EsfIiIZuEQ/3v6xu1IJMIYi0Qi/kawf6SDzmIXvOjvLAhC8EpPv3YnbQEf3NLKh4hoFg7ZorBuXCGNRCJ37tzxdxAEISh2nUuoU1NT/j7BjHUnv3ajvllbIADRLHyIiGbhkC0Ka2exe/To0WPfx4P/e+fOnch6gklr18K68ddu1DdrC3SCaBY+RESzcMhACmvXqrfzwrpRR2HdCYhm4UNENAuHdH4l91c//dc3VsBv1389n5qa6lwK6PzaHmzspLBupm/WFghANAsfIqJZ+CQ4m+SfcfJf7FoBO7+2M8aCYueXTp/OErnDwtpV36wtEIBoFj5ERLMAECIQzcKHiGgWAEIEoln4EBHNAkCIwHWsfIiIZgEgRCCahQ8R0SwAhAhEs/AhIpoFgBCBaBY+RESzABAiEM3Ch4hoFgBCBKJZ+BARzQJAiEA0Cx8iolkACBGIZuFDRDQLACEC0Sx8iIhmASBEIJqFDxHRLACECESz8CEimgWAEIFbWvkQEc0CQIhANAsfIqJZAAgRiGbhQ0Q0CwAhAtEsfIiIZgEgRCCahQ8R0SwAhAhEs/AhIpoFgBCBaBY+RESzABAiEM3Ch4hoFgBCBK5j5UNENAsAIQLRLHyIiGYBIEQgmoUPEdEsAIQIRLPwISKaBYAQgWgWPkREswAQIhDNwoeIaBYAQgSiWfgQEc0CQIhANAsfIqJZAAgRiGbhQ0Q0CwAhAtEsfIiIZgEgRCCahQ8R0SwAhAjc0sqHiGgWAEIEoln4EBHNAkCIQDQLHyKiWQAIEYhm4UNENAsAIQLRLHyInESz/C8AXIBoFj5ETqJZ/g4AFyCahQ+Rk2iWvR4OAAwGRLPwIXISzbLXwwGAwYDrWPkQOYlm2evhAMBgQDQLHyIn0Sx7PRwAGAyIZuFD5CSaZa+HAwCDAdEsfIicRLPs9XAAYDAgmoUPkZNolr0eDgAMBkSz8CFyEs2y18MBgMGAaBY+RE6iWfZ6OAAwGBDNwofISTTLXg8HAAYDoln4EDmJZtnr4QDAYEA0Cx8iJ9EsezsYABgUiGbhQ+QkmuWJf/4BGAq4pZUPkZNolr0eDmAbfvqbT066d6PKbW5+Trp3f/qbTwbeUYhm4UPkJJpl4J9vMEB+8uuPE95/H3v/6xce/Iebn2Pvf53w/vsnv/54sH2FaBY+RE6iWQb74QaD5cfOL4/d//rSZ9/s9YEMkkuffXPs/tc/dn452F+LaBY+RE6iWQb74QaDJarcfuHP/9nroxg8L/z5P1Hl9mB/J6JZ+BA5iWYZ7IcbDBa/sH7NHUMqrCEZVhB3IyKaBQwdv7D+jTuGVFhDMqwg7kZENAsYOiisOwfRLHyIiGYBQyeq3H7+03//33C4cOHCz3/+8y12mJyc3HqHvnn+038Pb411z4cVxD25jrXluyGISUBhDTl+Yf1qEJTL5UibW7du3bp1K9LBrVu3vvrqq/v370e25P79+wM5mCEV1pAMK4i7ERHNAobOAAurz+Tk5FdffXX//v3z58/7r9y6dSvYvn//vr9DV86fPx/ywhqSYQVxNyKiWcDQiSq3j336zZcD4v3336eUfvnll5OTk5OTk4/NRv1/ejIc+/SbYRTWkAwriLsREc0Chk5UuX3sk2++GBDnzp3za+jPfvaz733ve++9995777137ty5L774grbZeimAUjqQIzn2yVAKa0iGFcTdiIhmAUMnqtz+/kf/+mwQ3Lx5MxKJ3Lx58/Tp0zdv3jxy5MhjRZMQ8pjy7rvvnj59eiCtP8b3P/rXkNZYwzCsIO5G7DOapaRTSqlW1BW1qFNKKVW1kqqVKKU6pYpa1IolSmlJpwVFK5Z0SmmxpBcUbRgiCmvIGWBhPXLkiF9Sg8L67rvvBqWTEBIUVkLIzZs3PxvBwhqSYQVxlyJDNAsYKlHldurDfz4aEKdPn15dXfX/d+OMVZZlf7cjR47cu3fv0aNH9+7d69zhyJEjgzqS1If/3NulgBGNLYG4mYhoFtADfmF9OCBOnTq1urp66tQpSZKOHDny8OHDX/3qV6dOnXr48KEkSZIkPXz4cHV1NRKJrK6udv7rwBlSYQ3JsIL45EVEs4AeiCq3kx/+48GAOHnypD/3PHz4sCiKDx48uHv37smTJx88eCCKov9KJBK5e/duJBIRRTH414GT/PAfQ7rcKgzDCuKTFxHNAnpg4IX1xo0bDx48OHz4sP+KXzoPHz4ciURu3LgR7PCgowp3Mqg6O6TCGpJhBfHJi7ilFfRAVLmd/OM/PuWO5B+HUlhDMqwgPnkR0SygB6LK7cQf/v4xdyT+8PchPYQlDMMK4pMXEc0CegCFdeeMejQLpZQQcu368komK4piPi9evXY9k8uLopjJ5a9eu57Pi6IormRy164v+2viS8uZpeWMv82BeH15Rddpf72KaBbQA35h/R/uGN6MNQzDqg+xWNJJQa2ZtuW4fimxHeZvO+7adufrtsNsx7Xb2xyIhmmRglrSy330KqJZQA9EldvxD77+iDviH3yNaJZOUZZlWq4YpsUYY4zRStW0HMaY4zKdlm2HMcZM26GVqr+DYVoVo+ZvV40aN2K1Zl5bWu6jVxHNAnrgx84v47/7/MwHf/0jR5z54K/x332+t2GCQx1WfYjZXH6z2dyW21tNA0dUzObEPnoV0SygB37y64+j9d/Gfv957IO/8fPz+8+j9d+GIv46NLElS8sZfx5XqdZMy2aMuS6jlarluIwxy3Fpueq6jDFmWk6l2poAGjXLqFmciaIo9tGriGYBvbF6708/sn4RVW5z8/Mj6xer9/408I4a6WiWXF60bNdy3NYype3ajuu6zHaYaTu2w1yX2Y5r2a0VSctxLdt1XOa4jDMxk8330au4jhWAoTDS17GKomjUzJppB3M6y3YYY7bDaKXqrz9athtMAGumbdTM9mSQK/Ha9eU+ehXRLAAMhZGOZslk867LHJeZlmPZrl9uTMvxy03ntmW7puU4LnP9CaDtciaKothHryKaBYChMNLRLMsr2WBO558rd11WqdaC9cdKtea0Fy6r7QlgzbSDCSA3or/GimgWAELBSEez5EXRtBz/q7HjMv+CVn8eZ5hWawLouDXT9muWZTum5bgucxnjTFxeyfbRq4hmAWAojHQ0iyiKNdMK5nFGzQy+LFeMWvDN2qiZwQn3WvuCUM7EpeWVPnoV0SwADIWRjmZZyeQYYy5jNdP2y43jMqNm2a05nWu0vjEzy3Zrph3UrFad4kj011h7jmZZ161eV7Ox/d9jQCIKK+CGtcK618OqD3F9YXW2r1asa7XaQsy+Ej97zRezc9FYIhpLpFKpZCo1HY3H4onZRb2bmJ1LpV5Z7q/FPg91rbD20quIZgFgKIx0NMsWSwHVfr9frxevn03OZX3x+iupuWynWLo0++KC0l28djoZiL212Oeh9rQUgGgWAIbLSEez9Hnyiu3ojNDSmeR0NJ5IplKpVGwmrSydSaZSyVQqGkvE4olUKpVIpn4oaJbj6ouz8URqKuq/nIolOsR4IhpL+OJLbxSHdKhdTl4hmgWAPWSko1l6utzK6Ofip+zp2Jm3fTE7N316uVNU3nh5dlFfL5YuvnBqJWixIMzOLuq9X27Vx6H6l1v12quIZgFgKIx0NEsmm+t28bzdcfG8vclV987OxOwr8bPCGy8nzmbdzFwsnozFE8lkKpH0563J2UW9c+dXE6mX3ljWimstFi/NJpNzSz202OehdrtBANEsAOwRuKV1C/HKf02nUqnZRX17sbj4g6PPvZpenJ1dVNdazJ6KzswvnE6lZhf1kN7SGqK0AxRWwA0jHc0SPITFbT2gxFl7QInV+WST1vbGJ5tsIS6fSR5/M/1qYi7jMjV9IhZPJpKpRDIViydjiWQymYonUrF4In4m45YWZxKzgurYDsucTc2kS36LpUuzsTMZy3adzFzixKI6tEO1HTeTzfXRq4hmAWAojHQ0y/aPDaz0+yy+lpg9HTtz5TExO5eay24uXj2bnF3Umammn3/uh4t6ry32eaj9PDYQ0SwADImRjmbZ4kHXzmCCUrKvJuaWHNd2mJaenUmXbMe1V+biiVQskYwnUvHE7JvFDWJxcSaRiidSr6w8uUyXnh50HfQqolkAGAojHc0iiuKQg1KuzqXmsowZpnrxxWn/Otbq26emTi9tLurCTGLy6HP+4uwTy3S5eu16H72KaBYAhgKiWbbcuTVj1dKz8ZcXl9Mn4omzyytz8TPZLjsXF2cSqVgiOZPW/dfV9Il4IhU/k+2lxT4PlYdollwu99FHH+31iABgt3z44Ye5XC4kw6oPcajRLJmzqVQqFT2elq6eSvnz1pplFN6YTaVSqdTR56ajsXgqlUqezeYvvhBLJFOzi2rXFrNzU9OxqenY7KI+pEPlJJrlndXVbDabBmDEyWazN95ZDcmw6kNENIvNUzQLRIgQwyAimsXe9XWsrc51RzNDAiJEiAMXEc1i8xTNAhEixDCIiGaxeIpmgQgRYhhERLMEIg/RLBAhQgyDiGiWQOQhmgUiRIhhELM50XGcEAalPGHRtGxZlvvo1XBFs0CECDEMoqqVVFW1HWdo0SwjIFaqtYKilsvlPno1XNEsECFCDImoqFo2J4qimM+LS8srmWxeFMVsTry+tOy/nsnml5ZX8nlRFMWVTG55JSOKoiiKyyuZlUyOA1GWZa2o99er4YpmgQgRIkQOxHBFs0CECBEiB2K4olkgQoQIkQMRt7RChAgR4oDFcEWzQIQIESIHYriiWSBChAiRA/H/AdsFChYsFr4DAAAAAElFTkSuQmCC" alt="" />
果然是undefined。为什么会是这个值呢?
仔细检查weibo_num函数,我发现了问题所在:$(this)!!!
这里应该用$('.weibo_text')!改过来之后一切恢复正常。
ThinkPHP开发博客系统笔记之二的更多相关文章
- ThinkPHP开发博客系统笔记之一
1.前后台搭建 开发的第一步是搭建前后台系统.搭建前台系统的时候新建了LoginController控制器和登录界面View/Login/index.tpl.模板文件中需要引入js和css文件,这里想 ...
- 纯django开发博客系统
企业级教程:纯django开发博客系统 1.视频教程 https://www.duanshuilu.com/ 2.教程文档 https://www.duanshuilu.com/ 0.课程简介1.简价 ...
- 利用Sails.js+MongoDB开发博客系统
http://yoyoyohamapi.me/categories/利用Sails-js-MongoDB开发博客系统/ 利用Sails.js+MongoDB开发博客系统 Apr 14, 2016 利用 ...
- nodejs--express开发博客系统(三)
上一节已经实现了登录.注册.发表文章和文章读取的功能,今天咱加上评论.文章页面和作者页面. 评论只能在进入文章页面后才能进行,所以咱们先写文章页面. 在上一节的代码中,我已经给文章标题添加了超链接了, ...
- 全栈开发博客系统(nodejs+vuejs+mongodb)
本篇文章将会介绍如何使用nodejs+vuejs构建个人博客. 主要分三部分内容: 环境准备 博客后端管理系统(admin) 后端服务(主要提供admin及web端接口) 博客前端展示(web) 环境 ...
- Node.js开发博客系统
数据库设计 用户表: id phone password nickname head_img personal_sign level_id create_time update_time is_del ...
- node.js开发博客系统---前端项目搭建(一)
Express: https://github.com/petecoop/generator-express 安装node.js和npm 执行: npm install -g yo npm insta ...
- React开发博客系统的总结
React 进入文件APP.js,首先添加react-redux插件,使用react-redux的Provider模块提供管道的储存功能,传入管道的属性必须是store. 然而store参数是一个模块 ...
- node.js 开发博客系统
1. 安装yoman :npm install -g yo 2. 安装 generator-express :npm install -g generator-express 3. 安装 bower ...
随机推荐
- 面试之Java持久层(十)
91,什么是ORM? 对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术: 简单的说,O ...
- IOS 预览pdf,word文档的集中方式
在iPhone中可以很方便的预览文档文件,如:pdf.word等等,这篇文章将以PDF为例.介绍三种预览PDF的方式,又分别从本地pdf文档和网络上的pdf文档进行对比. 预览本地PDF文档: 1.使 ...
- 微软MVP Round Table
2017年7月7日,微软VS圈子的老大兼女神Julia(潘正磊)以及Peter Hu等人,和若干MVP一起在进行了一次Round Table讨论. 讨论过程中主要针对VS和TFS/VSTS相关的功能. ...
- HDU 1232 畅通工程(Kruskal)
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Create a Group Policy Central Store
一.How to create a Group Policy Central Store You have downloaded or created your own Group Policy Ad ...
- 自动适应label
CGFloat btnH = 300; NSString *text=@"你在这是NSString的对象方法,一个字符串实例调用该方法时,方法会通过传入的参数返回一个CGRect型数据,这个 ...
- IO流入门-第五章-FileWriter
FileWriter基本用法和方法示例 /* java.io.Writer java.io.OutputStreamWriter 转换流(字节输出流--->字符输出流) java.io.File ...
- PHP 神奇的sprintf函数
sprintf 1.定义 sprintf() 函数将字符串进行各种类型的格式化. 2.语法 sprintf(format,arg1,arg2,arg++) format:格式类型. arg1,arg2 ...
- 【转】清空mysql一个库中的所有表的数据
方法1:重建库和表 用mysqldump --no-data把建表SQL导出来,然后drop database再create database,执行一下导出的SQL文件: 方法2:生成清空所有表的SQ ...
- 转!!Java虚拟机堆的内存分配和回收
Java内存分配和回收,主要就是指java堆的内存分配和回收.java堆一般分为2个大的区域,一块是新生代,一块是老年代.在新生代中又划分了3块区域,一块eden区域,两块surviver区域.一般称 ...