Rumah pembangunan bahagian belakang tutorial php ThinkPHP之用户注册登录留言完整实例

ThinkPHP之用户注册登录留言完整实例

Jun 06, 2018 pm 02:15 PM
thinkphp Contoh Pendaftaran pengguna mesej Log masuk

这篇文章主要介绍了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(&#39;注册成功!&#39;);
}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[&#39;username&#39;];
$passwd = $_POST[&#39;passwd&#39;];
$user = D("user");
//$User->where(&#39;id=8&#39;)->find();这里的where 语句要注意一下,如果是其他字段的话后面一定要有单引号
$userinfo = $user->where("username =&#39;$username&#39;")->find();
if(!empty($userinfo)){
if($userinfo[&#39;passwd&#39;] == $passwd){
Cookie::set(&#39;userid&#39;,$userinfo[&#39;id&#39;],time()+3600*24);
Cookie::set(&#39;username&#39;,$username,time()+3600*24);
Cookie::set(&#39;lastlogintime&#39;,time(),time()+3600*24);
$this->assign("jumpUrl","__APP__/index/index");
$this->success(&#39;登陆成功!&#39;);
}else{
$this->assign("jumpUrl","__APP__/user/login");
$this->error(&#39;密码出错,请重新输入!&#39;);
}
}else{
$this->assign("jumpUrl","__APP__/user/login");
$this->error(&#39;用户名不存在!&#39;);
}
}
public function loginout(){
Cookie::delete(&#39;username&#39;);
Cookie::delete(&#39;lastlogintime&#39;);
$this->assign("jumpUrl","__APP__/index/index");
$this->success(&#39;您已经成功退出,欢迎您的下次登录!&#39;);
}
}
Salin selepas log masuk

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(&#39;userid&#39;);
$content->add();
$this->assign("jumpUrl","__URL__/index");
$this->success(&#39;添加成功!&#39;);
}
} 
// 数据查询操作  
public function index() {
$content = new ContentModel();
$list = $content->findAll();  
//用户的cookie
$username = Cookie::get(&#39;username&#39;);
$lastlogintime = Cookie::get(&#39;lastlogintime&#39;);
$this->assign(&#39;list&#39;,$list);    
$this->assign(&#39;title&#39;,&#39;我的首页&#39;);
$this->assign(&#39;username&#39;,$username);
$this->assign(&#39;lastlogintime&#39;,$lastlogintime);
$this->display();  
} 
// 删除操作
public function delete(){
$content = new ContentModel();
$id = $_GET[&#39;id&#39;];
if($content->where("id=$id")->delete()){
$this->assign("jumpUrl","__URL__/index");
$this->success(&#39;删除成功!&#39;);
}else{
$this->assign("jumpUrl","__URL__/index");
$this->error(&#39;删除失败!&#39;);
}
} 
// 编辑操作
public function edit(){
$content = new ContentModel();
$id = $_GET[&#39;id&#39;];
if($id != &#39;&#39;)
{
//$data = $content->select($id);
$data = $content->where("id=$id")->select();
if(!empty($data)){
$this->assign(&#39;data&#39;,$data);
}else{
echo "数据为空!";
}
}
$this->assign(&#39;title&#39;,&#39;编辑页面&#39;);
$this->display();
}
// 更新操作
public function update(){
$content = new ContentModel();
//直接使用create(),自动会帮你进行数据的传值
/*$content->create();
$content->save(); // 根据条件保存修改的数据
echo "更新数据成功!";*/
// 使用post 传值过来,进行更新
$id = $_POST[&#39;id&#39;];
if($id != &#39;&#39;)
{
$data[&#39;id&#39;] = $id;
$data[&#39;title&#39;] = $_POST[&#39;title&#39;];
$data[&#39;content&#39;] = $_POST[&#39;content&#39;];
if($content->save($data))// 根据条件保存修改的数据
{
$this->assign("jumpUrl","__URL__/index");
$this->success(&#39;更新数据成功!&#39;);
}
else{
$this->assign("jumpUrl","__URL__/index");
$this->success(&#39;更新数据失败!&#39;);
}
}else
{
echo "保存数据失败!";
}
}
}
?>
Salin selepas log masuk

ContentModel.class.php页面:

<?php
class ContentModel extends Model{
/*
* 自动验证
* array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
*/ 
protected $_validate = array(
array(&#39;title&#39;,&#39;require&#39;,&#39;标题必须填写!&#39;),
array(&#39;content&#39;,&#39;require&#39;,&#39;内容必须填写!&#39;), 
);
/* 
* 自动填充
* array(填充字段,填充内容,填充条件,附加规则)
*/
protected $_auto = array(
array(&#39;addtime&#39;,&#39;time&#39;,1,&#39;function&#39;),
);
}
?>
Salin selepas log masuk

UserModel.class.php页面:

<?php
class UserModel extends Model{
protected $_validate = array(
array(&#39;username&#39;,&#39;&#39;,&#39;帐号名称已经存在!&#39;,0,&#39;unique&#39;,1), 
);  
}
?>
Salin selepas log masuk


这里需要注意的是,使用自动验证的时候 实例化时要用 $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=&#39;{$jumpUrl}&#39;" />
<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>
Salin selepas log masuk

相关推荐:

ThinkPHP实现简单登陆功能

thinkphp实现163、QQ邮箱收发邮件的方法_php技巧

Atas ialah kandungan terperinci ThinkPHP之用户注册登录留言完整实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mengapa saya tidak boleh mendaftar di bursa Bitget Wallet? Mengapa saya tidak boleh mendaftar di bursa Bitget Wallet? Sep 06, 2024 pm 03:34 PM

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.

Mengapa Douyin mempunyai dua akaun? Bagaimana untuk memasang dua TikToks pada telefon bimbit? Mengapa Douyin mempunyai dua akaun? Bagaimana untuk memasang dua TikToks pada telefon bimbit? May 06, 2024 pm 09:28 PM

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

Apakah penjelasan terperinci tentang peraturan perubahan warna percikan Douyin? Pelbagai warna percikan memenuhi syarat Apakah penjelasan terperinci tentang peraturan perubahan warna percikan Douyin? Pelbagai warna percikan memenuhi syarat May 04, 2024 am 09:31 AM

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

Pintu masuk laman web rasmi DeepSeek dan aktiviti promosi terkini Pintu masuk laman web rasmi DeepSeek dan aktiviti promosi terkini Feb 19, 2025 pm 05:15 PM

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.

Bagaimana untuk menyelesaikan tugasan dalam novel Tomato Bagaimana untuk menyelesaikan tugasan dalam novel Tomato May 03, 2024 am 02:27 AM

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.

ThinkPhp6 Routing: Bagaimana untuk mendapatkan sepenuhnya parameter URL yang mengandungi watak -watak khas seperti Cina? ThinkPhp6 Routing: Bagaimana untuk mendapatkan sepenuhnya parameter URL yang mengandungi watak -watak khas seperti Cina? Apr 01, 2025 pm 02:51 PM

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 ...

Bagaimana untuk menyelesaikan masalah ralat curl 77 ketika menyambung ke elasticsearch 8 menggunakan klien ThinkPhp6 dan Elasticsearch-PHP? Bagaimana untuk menyelesaikan masalah ralat curl 77 ketika menyambung ke elasticsearch 8 menggunakan klien ThinkPhp6 dan Elasticsearch-PHP? Mar 31, 2025 pm 11:36 PM

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

Platform Perdagangan Laman Web Open Open Door WETER Pintu Pintu Terbuka Pintu Pertukaran Laman Web Platform Perdagangan Laman Web Open Open Door WETER Pintu Pintu Terbuka Pintu Pertukaran Laman Web Feb 28, 2025 am 10:57 AM

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.

See all articles