Maison développement back-end tutoriel php Exemple complet de message de connexion d'enregistrement d'utilisateur ThinkPHP

Exemple complet de message de connexion d'enregistrement d'utilisateur ThinkPHP

Jun 06, 2018 pm 02:15 PM
thinkphp 实例 用户注册 message 登录

Cet article présente principalement un exemple complet d'enregistrement d'utilisateur, de connexion et de message dans ThinkPHP, qui aidera à comprendre le processus de fonctionnement de ThinkPHP en détail. Les amis dans le besoin peuvent s'y référer

Cet article utilise des exemples. pour décrire l'implémentation de ThinkPHP, y compris l'enregistrement des utilisateurs, la connexion, le message et d'autres fonctions, ce à quoi tout le monde doit prêter attention ici est que est implémenté à l'aide de la méthode D lors de l'instanciation d'une classe d'utilisateurs lorsqu'il existe un modèle d'utilisateur .

Page UserActivion.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;);
}
}
Copier après la connexion

Page 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 "保存数据失败!";
}
}
}
?>
Copier après la connexion

Page 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;),
);
}
?>
Copier après la connexion

Page UserModel.class.php :

<?php
class UserModel extends Model{
protected $_validate = array(
array(&#39;username&#39;,&#39;&#39;,&#39;帐号名称已经存在!&#39;,0,&#39;unique&#39;,1), 
);  
}
?>
Copier après la connexion

Ce qui doit être noté voici, lorsque vous utilisez la vérification automatique, vous devez utiliser $user = D("user") au lieu de $user = M("user") Si vous utilisez M, une erreur sera signalée. La fonction D est utilisée pour instancier. Modèle, M L'utilisateur de la fonction instancie un fichier sans modèle.


page 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>
Copier après la connexion

Recommandations associées :

ThinkPHP implémente une fonction de connexion simple

thinkphp implémente 163, méthode de boîte aux lettres QQ pour l'envoi et la réception d'e-mails_php skills

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pourquoi ne puis-je pas m'inscrire à l'échange Bitget Wallet ? Pourquoi ne puis-je pas m'inscrire à l'échange Bitget Wallet ? Sep 06, 2024 pm 03:34 PM

Il existe diverses raisons pour lesquelles il est impossible de s'inscrire à l'échange BitgetWallet, notamment les restrictions de compte, les régions non prises en charge, les problèmes de réseau, la maintenance du système et les pannes techniques. Pour vous inscrire à l'échange BitgetWallet, veuillez visiter le site officiel, remplir les informations, accepter les conditions, terminer l'inscription et vérifier votre identité.

Pourquoi Douyin a-t-il deux comptes ? Comment installer deux TikToks sur un téléphone mobile ? Pourquoi Douyin a-t-il deux comptes ? Comment installer deux TikToks sur un téléphone mobile ? May 06, 2024 pm 09:28 PM

À l’ère du numérique, les réseaux sociaux font désormais partie intégrante de la vie des gens. Douyin, en tant que l'une des plateformes de vidéos courtes les plus populaires en Chine, a attiré un grand nombre d'utilisateurs. Certains utilisateurs ont même enregistré deux comptes. Alors, pourquoi Douyin a-t-il deux comptes ? Cet article répondra pour vous à cette question et vous expliquera comment installer deux comptes Douyin sur votre téléphone. 1. Pourquoi Douyin a-t-il deux comptes ? Différenciation fonctionnelle : certains utilisateurs différencient les comptes en fonction du type de contenu ou de la fonction. Par exemple, un compte est utilisé pour partager la vie quotidienne et un autre compte est utilisé pour démontrer des compétences professionnelles. 2. Protection de la vie privée : certains utilisateurs espèrent protéger leur vie privée via deux comptes, séparer leur vie privée de leur travail et éviter les fuites d'informations. 3. Besoins d'interaction : certains utilisateurs peuvent en enregistrer deux en raison de besoins d'interaction.

Quelle est l'explication détaillée des règles de changement de couleur des étincelles de Douyin ? Différentes couleurs d'étincelles répondent aux conditions Quelle est l'explication détaillée des règles de changement de couleur des étincelles de Douyin ? Différentes couleurs d'étincelles répondent aux conditions May 04, 2024 am 09:31 AM

Afin d'améliorer l'interaction et l'expérience utilisateur, la plateforme Douyin a lancé Spark, un mécanisme interactif intéressant. Les utilisateurs peuvent activer et améliorer leurs étincelles grâce à une série d'actions sur Douyin. Différentes couleurs représentent différentes réalisations et honneurs. Comprendre les règles de changement de couleur de Douyin Spark peut aider les utilisateurs à mieux participer et interagir, et à profiter du plaisir social apporté par Douyin. 1. Quelle est l’explication détaillée des règles de changement de couleur des étincelles de Douyin ? 1. Le comportement active les comportements interactifs des utilisateurs, tels que les likes, les commentaires, les partages, etc., qui peuvent activer des étincelles. 2. Amélioration du niveau À mesure que le comportement interactif de l'utilisateur augmente, les étincelles s'amélioreront progressivement et la couleur changera en conséquence. 3. Changement de couleur Le changement de couleur des étincelles est généralement lié à la fréquence d'interaction de l'utilisateur, à la qualité de l'interaction et à l'enthousiasme pour la participation aux activités. 4. La tâche est terminée

Entrance officielle du site officiel Deepseek et dernières activités promotionnelles Entrance officielle du site officiel Deepseek et dernières activités promotionnelles Feb 19, 2025 pm 05:15 PM

Le site officiel de Deepseek lance désormais plusieurs activités de réduction pour offrir aux utilisateurs une expérience d'achat. Les nouveaux utilisateurs s'inscrivent pour obtenir un coupon de 10 $ et profitez d'une remise à temps limitée de 15% pour l'ensemble de l'audience. Recommander des amis peut également gagner des récompenses, et vous pouvez accumuler des points pour le rachat de cadeaux lors du shopping. Les délais d'événements sont différents.

Comment accomplir des tâches dans le roman Tomato Comment accomplir des tâches dans le roman Tomato May 03, 2024 am 02:27 AM

Vous pouvez gagner des pièces et des points en accomplissant des tâches sur Tomato Novels. Les méthodes incluent : effectuer des tâches d'enregistrement de nouveaux utilisateurs. Enregistrez-vous quotidiennement. Lisez le chapitre du roman attribué. Laissez un commentaire sur le chapitre du roman spécifié. Invitez des amis à s'inscrire. Partagez des romans sur les plateformes sociales.

Routage ThinkPhp6: comment obtenir complètement des paramètres d'URL contenant des caractères spéciaux tels que le chinois? Routage ThinkPhp6: comment obtenir complètement des paramètres d'URL contenant des caractères spéciaux tels que le chinois? Apr 01, 2025 pm 02:51 PM

Les paramètres de routage ThinkPhp6 sont traités en chinois et acquisition complète. Dans le cadre ThinkPHP6, les paramètres d'URL contenant des caractères spéciaux (tels que les marques chinoises et ponctuation) sont souvent traités ...

Comment résoudre le problème de l'erreur de curl 77 lors de la connexion à Elasticsearch 8 en utilisant les clients ThinkPhp6 et Elasticsearch-PHP? Comment résoudre le problème de l'erreur de curl 77 lors de la connexion à Elasticsearch 8 en utilisant les clients ThinkPhp6 et Elasticsearch-PHP? Mar 31, 2025 pm 11:36 PM

Utilisation du framework ThinkPhp6 combiné avec le client Elasticsearch-PHP pour faire fonctionner Elasticsearch ...

Plateforme de trading de sites Web officiels de la porte ouverte Sesame Sesame Entrée d'enregistrement d'échange de site Web Open Door Plateforme de trading de sites Web officiels de la porte ouverte Sesame Sesame Entrée d'enregistrement d'échange de site Web Open Door Feb 28, 2025 am 10:57 AM

Gate.io Sesame Open est la principale plate-forme de trading d'actifs numériques au monde, y compris le trading de devises Fiat, le trading de devises, le trading à effet de levier, les contrats perpétuels, les jetons à effet de levier ETF, la gestion de la patrimoine, l'offre publique initiale de démarrage et d'autres sections, offrant aux utilisateurs la sécurité, la stabilité, l'ouverture et la transparence.

See all articles