ThinkPHP之用户注册登录留言完整实例
这篇文章主要介绍了ThinkPHP之用户注册登录留言完整实例,有助于详细了解ThinkPHP的运作流程,需要的朋友可以参考下
本文以实例形式讲述ThinkPHP实现的包括用户的注册、登录以及留言等功能,这里需要大家注意的是,在存在用户模型的情况下实例化一个用户类的时候使用D方法来实现。
UserActiion.class.php页面:
<?php class UserAction extends Action{ public function add(){ $user = D("user"); $user->create(); $result = $user->add(); if($result){ $this->assign("jumpUrl","__APP__/index/index"); $this->success('注册成功!'); }else{ //echo $user->getError(); $this->assign("jumpUrl","__APP__/user/register"); $this->error($user->getError()); } } public function register(){ $this->display(); } public function login(){ $this->display(); } public function checklogin(){ $username = $_POST['username']; $passwd = $_POST['passwd']; $user = D("user"); //$User->where('id=8')->find();这里的where 语句要注意一下,如果是其他字段的话后面一定要有单引号 $userinfo = $user->where("username ='$username'")->find(); if(!empty($userinfo)){ if($userinfo['passwd'] == $passwd){ Cookie::set('userid',$userinfo['id'],time()+3600*24); Cookie::set('username',$username,time()+3600*24); Cookie::set('lastlogintime',time(),time()+3600*24); $this->assign("jumpUrl","__APP__/index/index"); $this->success('登陆成功!'); }else{ $this->assign("jumpUrl","__APP__/user/login"); $this->error('密码出错,请重新输入!'); } }else{ $this->assign("jumpUrl","__APP__/user/login"); $this->error('用户名不存在!'); } } public function loginout(){ Cookie::delete('username'); Cookie::delete('lastlogintime'); $this->assign("jumpUrl","__APP__/index/index"); $this->success('您已经成功退出,欢迎您的下次登录!'); } }
IndexAction.class.php页面:
<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action{ public function insert() { $content = new ContentModel(); $result = $content->create(); if(!$result){ $this->assign("jumpUrl","__URL__/index"); $this->error($content->getError());//如果创建失败,表示验证没有通过,输出错误信息 }else{//验证通过,进行其他操作 $content->userid=Cookie::get('userid'); $content->add(); $this->assign("jumpUrl","__URL__/index"); $this->success('添加成功!'); } } // 数据查询操作 public function index() { $content = new ContentModel(); $list = $content->findAll(); //用户的cookie $username = Cookie::get('username'); $lastlogintime = Cookie::get('lastlogintime'); $this->assign('list',$list); $this->assign('title','我的首页'); $this->assign('username',$username); $this->assign('lastlogintime',$lastlogintime); $this->display(); } // 删除操作 public function delete(){ $content = new ContentModel(); $id = $_GET['id']; if($content->where("id=$id")->delete()){ $this->assign("jumpUrl","__URL__/index"); $this->success('删除成功!'); }else{ $this->assign("jumpUrl","__URL__/index"); $this->error('删除失败!'); } } // 编辑操作 public function edit(){ $content = new ContentModel(); $id = $_GET['id']; if($id != '') { //$data = $content->select($id); $data = $content->where("id=$id")->select(); if(!empty($data)){ $this->assign('data',$data); }else{ echo "数据为空!"; } } $this->assign('title','编辑页面'); $this->display(); } // 更新操作 public function update(){ $content = new ContentModel(); //直接使用create(),自动会帮你进行数据的传值 /*$content->create(); $content->save(); // 根据条件保存修改的数据 echo "更新数据成功!";*/ // 使用post 传值过来,进行更新 $id = $_POST['id']; if($id != '') { $data['id'] = $id; $data['title'] = $_POST['title']; $data['content'] = $_POST['content']; if($content->save($data))// 根据条件保存修改的数据 { $this->assign("jumpUrl","__URL__/index"); $this->success('更新数据成功!'); } else{ $this->assign("jumpUrl","__URL__/index"); $this->success('更新数据失败!'); } }else { echo "保存数据失败!"; } } } ?>
ContentModel.class.php页面:
<?php class ContentModel extends Model{ /* * 自动验证 * array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间) */ protected $_validate = array( array('title','require','标题必须填写!'), array('content','require','内容必须填写!'), ); /* * 自动填充 * array(填充字段,填充内容,填充条件,附加规则) */ protected $_auto = array( array('addtime','time',1,'function'), ); } ?>
UserModel.class.php页面:
<?php class UserModel extends Model{ protected $_validate = array( array('username','','帐号名称已经存在!',0,'unique',1), ); } ?>
这里需要注意的是,使用自动验证的时候 实例化时要用 $user = D("user") 而不能用 $user = M("user"),用M这种方法会报错,D函数用于实例化Model,M函数用户实例化一个没有模型的文件。
success.html页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="refresh" content="20; url='{$jumpUrl}'" /> <title>信息提示</title> </head> <body> <p id="man_zone"> <table width="40%" border="1" align="center" cellpadding="3" cellspacing="0" class="table" style="margin-top:100px;"> <tr> <th align="center" style="background:#cef">信息提示</th> </tr> <tr> <td><p>{$message}<br /> 2秒后返回指定页面!<br /> 如果浏览器无法跳转,<a href="{$jumpUrl}" rel="external nofollow" >请点击此处</a>。</p></td> </tr> </table> </p> </body> </html>
相关推荐:
thinkphp实现163、QQ邮箱收发邮件的方法_php技巧
Atas ialah kandungan terperinci ThinkPHP之用户注册登录留言完整实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Terdapat pelbagai sebab untuk tidak dapat mendaftar untuk pertukaran BitgetWallet, termasuk sekatan akaun, wilayah tidak disokong, isu rangkaian, penyelenggaraan sistem dan kegagalan teknikal. Untuk mendaftar untuk pertukaran BitgetWallet, sila lawati laman web rasmi, isi maklumat, bersetuju dengan syarat, lengkapkan pendaftaran dan sahkan identiti anda.

Dalam era digital, media sosial telah menjadi sebahagian daripada kehidupan orang ramai. Douyin, sebagai salah satu platform video pendek paling popular di China, telah menarik sejumlah besar pengguna. Sesetengah pengguna telah mendaftarkan dua akaun Jadi, mengapa Douyin mempunyai dua akaun? Artikel ini akan menjawab soalan ini untuk anda dan menerangkan cara memasang dua akaun Douyin pada telefon anda. 1. Mengapakah Douyin mempunyai dua akaun? Pembezaan fungsi: Sesetengah pengguna akan membezakan akaun berdasarkan jenis kandungan atau fungsi Contohnya, satu akaun digunakan untuk berkongsi kehidupan harian, dan akaun lain digunakan untuk menunjukkan kemahiran profesional. 2. Perlindungan privasi: Sesetengah pengguna berharap dapat melindungi privasi mereka melalui dua akaun, kehidupan dan kerja yang berasingan, dan mengelakkan kebocoran maklumat. 3. Keperluan interaksi: Sesetengah pengguna mungkin mendaftar dua kerana keperluan interaksi

Untuk meningkatkan interaksi pengguna dan meningkatkan pengalaman pengguna, platform Douyin telah melancarkan Sparks, mekanisme interaktif yang menarik. Pengguna boleh mengaktifkan dan meningkatkan percikan api mereka melalui satu siri tindakan pada Douyin Warna yang berbeza mewakili pencapaian dan penghormatan yang berbeza. Memahami peraturan perubahan warna Douyin Spark boleh membantu pengguna mengambil bahagian dan berinteraksi dengan lebih baik, serta menikmati keseronokan sosial yang dibawa oleh Douyin. 1. Apakah penjelasan terperinci tentang peraturan perubahan warna percikan Douyin? 1. Gelagat mengaktifkan gelagat interaktif pengguna, seperti suka, komen, perkongsian, dll., yang boleh mengaktifkan percikan api. 2. Peningkatan tahap Apabila interaksi pengguna meningkat, percikan api akan meningkat secara beransur-ansur dan warna akan berubah dengan sewajarnya. 3. Perubahan warna Perubahan warna percikan api biasanya berkaitan dengan kekerapan interaksi pengguna, kualiti interaksi, dan semangat untuk menyertai aktiviti. 4. Tugasan selesai

Laman web rasmi DeepSeek kini melancarkan pelbagai aktiviti diskaun untuk menyediakan pengguna dengan pengalaman membeli -belah. Pengguna baru mendaftar untuk mendapatkan kupon $ 10, dan nikmati diskaun masa terhad 15% untuk keseluruhan penonton. Mengesyorkan rakan juga boleh mendapat ganjaran, dan anda boleh mengumpul mata untuk penebusan hadiah semasa membeli -belah. Tarikh akhir acara berbeza.

Anda boleh memperoleh syiling dan mata dengan menyelesaikan tugasan pada Kaedah Tomato Novel termasuk: menyelesaikan tugas pendaftaran pengguna baharu. Daftar masuk setiap hari. Baca bab novel yang diberikan. Tinggalkan komen pada bab novel yang dinyatakan. Ajak kawan-kawan daftar. Kongsi novel di platform sosial.

Parameter routing ThinkPhp6 diproses dalam pengambilalihan Cina dan lengkap. Dalam rangka kerja ThinkPhp6, parameter URL yang mengandungi watak khas (seperti tanda Cina dan tanda baca) sering diproses ...

Menggunakan rangka kerja ThinkPhp6 yang digabungkan dengan klien Elasticsearch-PhP untuk mengendalikan Elasticsearch ...

Gate.io Sesame Open adalah platform perdagangan aset digital yang terkemuka di dunia, termasuk perdagangan mata wang fiat, perdagangan mata wang, perdagangan leveraged, kontrak kekal, token ETF yang memanfaatkan, pengurusan kekayaan, penawaran awam permulaan permulaan dan bahagian lain, yang menyediakan pengguna dengan keselamatan, kestabilan, keterbukaan dan ketelusan.
