Heim  >  Artikel  >  Backend-Entwicklung  >  Tag 5 ThinkPHP Schritt-für-Schritt-Schnell-Website-Splicing (5)

Tag 5 ThinkPHP Schritt-für-Schritt-Schnell-Website-Splicing (5)

WBOY
WBOYOriginal
2016-08-08 09:22:251037Durchsuche

11. Juni, sonniger Tag. „Pflaumen hinterlassen wunde Zähne, Bananen werden in Grün- und Fenstergitter geteilt. Nach einem langen Tag schlafe ich ohne Gedanken und beobachte, wie Kinder Weidenblüten fangen.“

10. Backend Writing-Fortsetzung-2

  1,ÄndernSchreibenAnmeldungModul-Anmeldemethode , hauptsächlich um die M-Methode in die D-Methode zu ändern

<?php
class LoginAction extends Action {
	function index() {
		// 配置页面显示内容
		$this->assign ( 'title', '后台管理系统' );
		$this->display ();
	}
	
	// 用户登录页面
	function login() {
		header ( "Content-Type:text/html; charset=utf-8" );
		
		$username=$_POST['username'];
		$password=md5($_POST['password']);
		
		$User = D ( "User" ); // 参数的User必须首字母大写,否则自动验证功能失效!
		if (! $User->create ()) {
			$this->error ( $User->getError () );
		} else {
			// 查找输入的用户名是否存在
			if ($User->where ( "username ='$username' AND password = '$password'" )->find ()) {
				session ( username, $username );
				$url = U ( '/Index/index/username/' . $username );
				redirect ( $url, 5, '跳转中...' );
			} else {
				$this->error ( '用户名或密码错误' );
			}
		}
}
                                          D(<span>$User </span><span>=</span><span> D</span><span>(</span><span>'User'</span><span>);</span>'Benutzer'<span>实例化User模型,会导入当前项目下面的Lib/Model/UserModel.class.php文件,然后实例化UserModel类,所以,实际上的代码可能和下面的等效:</span>);
bedeutet, dass <pre name="code">&lt;span style=&quot;font-family:Comic Sans MS;font-size:14px;&quot;&gt; import('@.Model.UserModel'); $User = new UserModel();&lt;/span&gt;</pre> das Benutzermodell instanziiert, das in die Datei Lib/Model/UserModel.class.php des aktuellen Projekts unten importiert wird, und dann die UserModel-Klasse instanziiert, sodass der tatsächliche Code möglicherweise gleichwertig ist zu Folgendem: <span></span><span></span><p><span> </span> Danach werden die übermittelten Formulardaten automatisch erfasst, nachdem create() das Datenobjekt erstellt hat. <br></p>Bevor das Formular in die Datentabelle geschrieben wird, erfolgt häufig eine Datenerkennung (ob der übermittelte Benutzername den Anforderungen entspricht) und eine Verarbeitung (z. B. der Vergleich des Bestätigungscodes im Beispiel). Die Methode create() unterstützt die automatische Überprüfung und automatische Vervollständigung von Daten. <p><span>                                                                                                                                                                                                                                              Modellklasse. <span><span><spanmicrosoft yahei><spanmicrosoft yahei color:> <spanmicrosoft yahei><span><span><spanmicrosoft yahei><spanmicrosoft yahei><spanmicrosoft yahei><spanmicrosoft yahei><span></span></spanmicrosoft></spanmicrosoft></spanmicrosoft></spanmicrosoft></span></span></spanmicrosoft></spanmicrosoft></spanmicrosoft></span>2. </span>Schreiben</span><span></span><span></span></p> <pre name="code">&lt;?php /* * 自定义User模型类 * 功能:1.完成自动验证功能 */ class UserModel extends Model{ //自动验证成员属性(二维数组,每个数组代表一个验证规则) //array(&amp;#39;验证字段&amp;#39;,&amp;#39;验证规则&amp;#39;,&amp;#39;错误提示&amp;#39;,&amp;#39;验证条件&amp;#39;,&amp;#39;附加规则&amp;#39;,&amp;#39;验证时间&amp;#39;), //验证字段:表单中的字段名称,也可以是表单中的一些辅助字段,例如验证码,重复密码等 //验证规则: //错误提示:出现错误,抛出一个什么样的提示告知用户 //验证条件:参考手册6.15 (共有0,1,2三种值) //附加规则:比如使用正则表达式验证,callback函数验证等,默认使用正则验证 //验证时间:1.新增时验证 2.编辑时验证 3.全部清况下验证 protected $_validate=array( array(&amp;#39;username&amp;#39;, &amp;#39;require&amp;#39;, &amp;#39;用户名必须非空&amp;#39;), array(&amp;#39;username&amp;#39;, &amp;#39;callback_checklen&amp;#39;, &amp;#39;用户名过长或过短&amp;#39;, 0, &amp;#39;callback&amp;#39;), array(&amp;#39;password&amp;#39;, &amp;#39;require&amp;#39;, &amp;#39;密码必须非空&amp;#39; ), array(&amp;#39;repassword&amp;#39;, &amp;#39;require&amp;#39;, &amp;#39;请重复输入密码&amp;#39; ), // array(&amp;#39;password&amp;#39;, &amp;#39;repassword&amp;#39;,&amp;#39;两次输入的密码不一致,请重新输入&amp;#39;, 0, &amp;#39;confirm&amp;#39;), array(&amp;#39;verify&amp;#39;,&amp;#39;require&amp;#39;,&amp;#39;验证码必须填写!&amp;#39;), array(&amp;#39;verify&amp;#39;,&amp;#39;callback_checkCode&amp;#39;,&amp;#39;验证码错误!&amp;#39;,0,&amp;#39;callback&amp;#39;), //使用回调函数checkCode ); //字段长度验证回调函数(ThinkPHP会自动帮我们传递参数) function callback_checklen($data){ if(strlen($data)&gt;15 || strlen($data)&lt;5){ return false; } return true; } //验证码回调函数(ThinkPHP会自动帮我们传递参数) function callback_checkCode($data){ if(md5($data)!=$_SESSION[&amp;#39;verify&amp;#39;]){ return false; } return true; } //自动完成,在create时自动执行 //array(&amp;#39;填充字段&amp;#39;,&amp;#39;填充内容&amp;#39;,&amp;#39;填充条件&amp;#39;,&amp;#39;附加规则&amp;#39;); //填充字段 protected $_auto=array( array(&amp;#39;password&amp;#39;,&amp;#39;md5&amp;#39;,3,&amp;#39;function&amp;#39;), array(&amp;#39;ip&amp;#39;,&amp;#39;callback_returnip&amp;#39;,1,&amp;#39;callback&amp;#39;), array(&amp;#39;createtime&amp;#39;,&amp;#39;time&amp;#39;,1,&amp;#39;function&amp;#39;), ); function callback_returnip(){ return $_SERVER[&amp;#39;REMOTE_ADDR&amp;#39;]; } } ?&gt;</pre>Benutzerdefinierte Benutzermodellklasse <span></span>admin/Lib/Model/UserModel.class.php<pre name="code">array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]), ...... );</pre> <br><span> Die Definition von Verifizierungsregeln ist eine einheitliche Regel und das Definitionsformat ist: </span><br> Beschreibung <br>Validierungsfeld: (muss) Der Name des Formularfelds, das überprüft werden muss. Dieses Feld muss kein Datenbankfeld sein, sondern kann auch einige Hilfsfelder des Formulars sein, z. B. Bestätigungskennwörter und Bestätigungscodes. usw. Wenn es einzelne Validierungsregeln gibt, die nichts mit Feldern zu tun haben, können die Validierungsfelder nach Belieben festgelegt werden. Gültigkeitsregeln zum Ablaufen haben beispielsweise nichts mit Formularfeldern zu tun. <br>Wenn eine Feldzuordnung definiert ist, sollte der Validierungsfeldname hier das tatsächliche Datentabellenfeld und nicht das Formularfeld sein. <br><br>Überprüfungsregeln: (Muss-)Regeln für die Überprüfung müssen mit zusätzlichen Regeln kombiniert werden. Wenn zusätzliche Regeln für die regelmäßige Überprüfung verwendet werden, verfügt das System auch über integrierte einige häufig verwendete reguläre Überprüfungsregeln, die verwendet werden können Direkt als Verifizierungsregeln verwenden, einschließlich: Erforderliches Feld muss sein, E-Mail-Adresse, URL-URL-Adresse, Währung, Nummer. <br>Eingabeaufforderung: (erforderlich) wird verwendet, um die Eingabeaufforderung nach einem Verifizierungsfehler zu definieren<p>Überprüfungsbedingungen: (optional) umfasst die folgenden Situationen: <span>Modell::EXISTS_VALIDATE oder 0, um zu überprüfen, ob das Feld vorhanden ist (Standard) <span>Model::MUST_VALIDATE oder 1 muss überprüft werden. <span>Model::VALUE_VALIDATE oder 2, wenn der Wert nicht leer ist. <spanmicrosoft yahei><spanmicrosoft yahei color:><spanmicrosoft yahei><span><span><spanmicrosoft yahei><spanmicrosoft yahei><spanmicrosoft yahei><spanmicrosoft yahei><spanmicrosoft yahei><spanmicrosoft yahei><spanmicrosoft yahei font-size:14px></spanmicrosoft></spanmicrosoft></spanmicrosoft></spanmicrosoft></spanmicrosoft></spanmicrosoft></spanmicrosoft></span><spanmicrosoft yahei font-size:16px></spanmicrosoft></span> 3. <span>Schreiben</span></spanmicrosoft></spanmicrosoft></spanmicrosoft></span>Datenbanktabelle</span></span>think_news</p> <pre name="code">CREATE TABLE `think_news` ( `id` int(11) NOT NULL AUTO_INCREMENT, `author` int(11) NOT NULL, `subject` varbinary(256) NOT NULL, `createtime` int(11) NOT NULL, `lastmodifytime` int(11) NOT NULL, `message` mediumtext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;</pre> <p><span></span></p> <p> <span> 5. Ändern Sie adminTplIndexindex.html<span></span><span></span></span> <br></p>Ändern Sie die Schaltfläche „Nachrichten bearbeiten“ wie folgt: <pre name="code"> &lt;li&gt;&lt;a class=&quot;shortcut-button&quot; href=&quot;__URL__/news&quot;&gt;&lt;span&gt; &lt;img src=&quot;__PUBLIC__/Images/admin/icons/pencil_48.png&quot; alt=&quot;icon&quot; /&gt;&lt;br /&gt; 编辑新闻 &lt;/span&gt;&lt;/a&gt;&lt;/li&gt;</pre> <code><span> 其中,'__PUBLIC__'表示</span><span>站点公共目录,<code>'__URL__'                                                                      Öffentliches Site-Verzeichnis, '__URL__'<br> stellt die URL-Adresse des aktuellen Moduls dar <p><span></span></p>                                                                                                                                                                     . 🎜><p><span></span></p> <pre name="code">function news(){ //跳转到News控制器的index方法 redirect(U('/News/index'),0, '编写新闻'); } </pre> <br><p> Das Obige stellt den fünften Tag des schrittweisen schnellen Zusammenfügens von ThinkPHP-Websites vor (5), einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren. </p> <p> </p>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn