Vérifiez le formulaire inscrit à la table de test
Vérifiez le formulaire avant l'inscription :
Vérifiez que le nom d'utilisateur n'est pas vide, deux fois Le saisi le mot de passe doit être cohérent (vérification d'égalité), l'âge doit être compris entre 18 et 50 ans (vérification de plage) et le format de l'e-mail doit être une vérification régulière.
La vérification automatique est une méthode de vérification des données fournie par la couche de modèle ThinkPHP, qui peut effectuer automatiquement la vérification des données lors de l'utilisation de create pour créer un objet de données.
La vérification des données peut effectuer des opérations de vérification sur les types de données, les règles métier, les jugements de sécurité, etc.
Il existe deux méthodes de vérification des données :
Méthode statique : définissez des règles de validation via l'attribut $_validate dans la classe modèle.
Méthode dynamique : utilisez la méthode validate de la classe model pour créer dynamiquement des règles de validation automatique.
Quelle que soit la méthode utilisée, la définition des règles de validation est une règle unifiée, et le format de définition est :
array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]), ...... );
Champ de validation (obligatoire)
Le nom du champ du formulaire qui doit être vérifié. Ce champ n'est pas nécessairement un champ de base de données, mais peut également être certains champs auxiliaires du formulaire, tels que la confirmation des mots de passe et des codes de vérification, etc. . Lorsqu'il existe des règles de validation individuelles qui n'ont rien à voir avec les champs, les champs de validation peuvent être définis à volonté. Par exemple, les règles de validité d'expiration n'ont rien à voir avec les champs de formulaire. Si le mappage de champs est défini, le nom du champ de validation doit ici être le champ réel de la table de données plutôt que le champ du formulaire.
Règles de validation (obligatoires)
Les règles de vérification doivent être combinées avec des règles supplémentaires. Si des règles supplémentaires pour une vérification régulière sont utilisées, le système comporte également des règles intégrées. dans les règles. Les règles de vérification régulières couramment utilisées peuvent être utilisées directement comme règles de vérification, notamment : champ requis, adresse e-mail, adresse URL, devise et numéro.
Informations d'invite (obligatoires)
Définition des informations d'invite utilisées après l'échec de la vérification
Conditions de vérification (facultatif)
inclut les situations suivantes :
self::EXISTS_VALIDATE ou 0, vérifiez si le champ existe (par défaut)
self : :MUST_VALIDATE ou 1 Doit vérifier
self::VALUE_VALIDATE ou 2 Vérifier lorsque la valeur n'est pas vide
Règles supplémentaires (Facultatif )
À utiliser avec des règles de vérification, notamment les règles suivantes :
Durée de vérification (facultatif)
self::MODEL_INSERT ou 1 Vérifiez lors de l'ajout de données
self::MODEL_UPDATE ou 2 Vérifiez lors de la modification des données
self::MODEL_BOTH ou 3 vérifications dans tous les cas (par défaut)
Vous devez faire attention au temps de vérification ici Ce n'est pas les trois seuls cas. besoins de l'entreprise Ajoutez un délai de vérification supplémentaire.
Il existe deux méthodes de vérification : la vérification statique et la vérification dynamique.
1. Vérification statique
Prédéfinissez les règles de vérification automatique du modèle dans la classe de modèle, que nous appelons définition statique.
Lors de la validation, ajoutez des conditions de validation dans le Model de la table de test : créez un nouveau testModel.class.php, et définissez l'attribut $_validate dans la classe model comme suit :
<?php namespace Home\Model; use Think\Model; class testModel extends Model { //静态验证 protected $_validate = array( array('uid','require','用户名不能为空'), array('pwd','require','密码不能为空'), array('repwd','pwd','确认密码不正确',1,'confirm'), array('age','18,50','年龄必须在18-50岁之间',1,'between'), array('email','email','邮箱格式不正确'), ); }
Après définissant les règles de validation, Il peut être appelé automatiquement lors de l'utilisation de la méthode create pour créer un objet de données :
<?php namespace Home\Controller; use Home\Controller\CheckController; class ZhuCeController extends CheckController { function ZhuCe() { //静态验证,不能在后面直接显示,必须全部通过验证才能注册 $cw = ""; if(!empty($_GET)) { $cw = $_GET["cw"]; } if(empty($_POST)) { $this->assign("error",$cw); $this->display(); } else { $model = new \Home\Model\testModel(); //$model = D("test"); //动态验证可以用D方法 if(!$model->create()) { $e = $model->getError(); $url = "ZhuCe/cw/{$e}"; $this->error("注册失败!",$url,1); } else { $model->add(); }
Template ZhuCe.html :
<body> <form action="__ACTION__" method="post"> <div>用户名:<input type="text" name="uid" id="uid" /> </div><br /> <div>密码:<input type="text" name="pwd" id="pwd" /></div><br /> <div>确认密码:<input type="text" name="repwd" id="repwd" /> </div><br /> <div>年龄:<input type="text" name="age" id="age" /> </div><br /> <div>邮箱:<input type="text" name="email" id="email" /> </div><br /> <div>姓名:<input type="text" name="name" /></div><br /> <div><{$error}></div> <!--显示错误信息--> <input type="submit" value="注册" /> </form>
Demander la méthode ZhuCe :
2. Vérification dynamique
Si vous adoptez la vérification dynamique, elle est plus flexible. Vous pouvez utiliser différentes règles de vérification lorsque vous utilisez le même modèle selon. différents besoins, comme ci-dessus La méthode de vérification statique peut être modifiée en :
<?php namespace Home\Controller; use Home\Controller\CheckController; class ZhuCeController extends CheckController { function ZhuCe() { if(empty($_POST)) { $this->display(); } else { //$model = new \Home\Model\testModel(); $model = D("test"); //动态验证可以用D方法 //动态验证 $rules = array( array('uid','require','用户名不能为空') ); //调用validate()加入验证规则 $r = $model->validate($rules)->create();//若验证失败返回false,成功返回注册的test表数组信息 //var_dump($r); if(!$r) { echo $model->getError(); //若验证失败则输出错误信息 } else { $model->add(); } } }
Nous pouvons également afficher le message d'erreur directement derrière le formulaire, ce qui nécessite l'utilisation d'ajax. Prenons comme exemple la vérification que le nom d'utilisateur n'est pas vide :
Dans le modèle ZhuCe.html :
<script src="../../../../../jquery-1.11.2.min.js"></script> </head> <body> <form action="__ACTION__" method="post"> <div>用户名: <input type="text" name="uid" id="uid" /> <span id="ts"></span></div><br /> <div>密码: <input type="text" name="pwd" id="pwd" /> <span id="pts"></span></div><br /> <div>确认密码:<input type="text" name="repwd" id="repwd" /> <span id="rpts"></span></div><br /> <div>年龄: <input type="text" name="age" id="age" /> <span id="nts"></span></div><br /> <div>邮箱: <input type="text" name="email" id="email" /> <span id="ets"></span></div><br /> <div>姓名: <input type="text" name="name" /></div><br /> <!--<div><{$error}></div> --> <!--显示错误信息--> <input type="submit" value="注册" /> </form> </body> </html> <script type="text/javascript"> $(document).ready(function(e) { $("#uid").blur(function(){ var uid = $(this).val(); $.ajax({ url:"__CONTROLLER__/Yhm", <!--提交到方法,而不是页面--> data:{uid:uid}, <!--因为做的是表单验证,所以提交时要与表单name值一致,相当于提交表单 --> type:"POST", dataType:"TEXT", <!--返回数据类型要与ajaxReturn中的参数对应,TEXT对应eval--> success: function(data){ //alert(data); var str = ""; if(data.trim()=="OK") { str = "<span style='color:green'>"+data+"</span>"; } else { str = "<span style='color:red'>"+data+"</span>"; } $("#ts").html(str); } }); })
Créez une autre méthode Yhm dans le contrôleur ZhuCe :
//验证用户名非空 function Yhm() { $model = D("test"); $rules = array( array('uid','require','用户名不能为空') ); if(!$model->validate($rules)->create()) { $fh = $model->getError(); $this->ajaxReturn($fh,'eval'); //ajax返回数据,默认返回json格式,eval返回字符串,因为dataType是TEXT,所以用eval格式 } else { $fh = "OK"; $this->ajaxReturn($fh,'eval'); } }
Requête la méthode ZhuCe :
D'autres méthodes de vérification sont similaires. Soumettez les données correspondantes à la méthode correspondante et utilisez les règles de vérification correspondantes.
Tutoriel recommandé : "TP5"
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!