整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          利用PHP連接數據庫操作用戶注冊、審核與登錄頁面

          利用PHP連接數據庫操作用戶注冊、審核與登錄頁面

          用PHP連接數據庫操作用戶注冊、審核與登錄頁面

          注冊頁面

          <body >

          <h1>注冊頁面</h1>

          <form action="zhucechuli.php" method="post">

          <div>用戶名:<input type="text" name="uid"/> </div>

          <div>密碼:<input type="text" name="pwd"/> </div>

          <div>姓名:<input type="text" name="name"/> </div>

          <div>性別:<input type="text" name="sex"> </div>

          <div>生日:<input type="text" name="birthday"> </div>

          <input type="submit" value="注冊"/>

          </form>

          </body>


          注冊處理頁面

          <?php

          $uid=$_POST["uid"];

          $pwd=$_POST["pwd"];

          $name=$_POST["name"];

          $sex=$_POST["sex"];

          $birthday=$_POST["birthday"];

          include ("LZY.class.php");

          $db=new LZY();

          $sql="insert into zhuce VALUES ('{$uid}','{$pwd}','{$name}','{$sex}','{$birthday}',0)";

          if($db->query($sql,0))

          {

          header("location:zhuceyemiandenglu.php");

          }

          喜歡用JavaScript編寫代碼嗎,但是對于某些項目必須使用PHP嗎?請繼續(xù)閱讀以了解如何使用有趣的圖書館將兩者結合起來。

          自2000年以來我一直在使用PHP,并且使用JavaScript的時間更長。在過去的十年里,JavaScript已經發(fā)生了巨大的變化。它從一開始就有一個很有前途的設計,并且隨著轉向ES2015(Harmony)而獲得了目前令人難以置信的形狀。PHP雖然沒有改變那么多。顯然,它注定會永遠遭受自己的遺產。它到達90年代中期,作為一個簡單的CGI應用程序來維護Rasmus Lerdorf的主頁,并且更像是自發(fā)地發(fā)展起來的。這導致語法不一致,功能和基于OOP的資產混合在一起,缺乏體面的語言規(guī)范。所以每次我切換到PHP時,我都會錯過JavaScript的合理性,可預測性和靈活性。這讓我想到了一個可以為PHP帶來類似JavaScript的開發(fā)體驗的庫。最終,使用JavaScript(Underscore除外)方法擴展PHP類型的Extras,解鎖鏈接,并引入PlainObject代表對象文字的 類型。

          JavaScript會見PHP

          該庫使用JavaScript和Underscore.js方法豐富了以下PHP類型:數組(包括順序和關聯(lián)),字符串,數字(整數,浮點數,NaN),函數(可調用),集合(Iterable,ArrayObject,Iterator)和布爾值。每個添加的方法都是表示類型的類的靜態(tài)方法。因此,我們可以直接訪問任何內容,而不需要創(chuàng)建鏈 Arrays::map。

          這有什么好處?我們來看看下面的代碼片段:

          <?php

          use \Dsheiko\Extras\Arrays;

          function numToArray(int $value, int $index, array $array): array

          {

          return [$value];

          }

          $res=Arrays::map(range(1,3), "numToArray"); // [[1],[2],[3]]

          不同的是\array_map, 庫方法的接口與任何其他數組extras一致。第一個參數始終是源數組,接下來會迭代/預測回調,如果需要則返回其他任何內容。更?使用PHP數組函數,我們需要記住哪一個只接受源或引用的引用。 Arrays::*方法總是接受獨立的值和引用。

          你有沒有注意到回調參數列表?是的,它根據ECMAScript規(guī)范進行了擴展。除了值之外,它總是接收元素索引(關聯(lián)數組中的鍵)和初始數組。

          另外,所有添加的方法都可以連接在一起:

          <?php

          use \Dsheiko\Extras\Arrays;

          $res=Arrays::chain([1, 2, 3])

          ->map(function($num){ return $num + 1; })

          ->filter(function($num){ return $num > 1; })

          ->reduce(function($carry, $num){ return $carry + $num; }, 0)

          ->value();

          對我來說,它看起來比以下更干凈:

          $array=[1, 2, 3];

          $array=\array_map(function($num){ return $num + 1; }, $array);

          $array=\array_filter($array, function($num){ return $num > 1; });

          $array=\array_reduce($array, function($carry, $num){ return $carry + $num; }, 0);

          什么其他類型呢?如果我們接受一個字符串,它的工作原理是一樣的:

          <?php

          use \Dsheiko\Extras\Strings;

          function sanitizeSearchTerm(string $value, int $maxLength): string

          {

          return Strings::chain($value)

          ->trim()

          ->replace('`[^0-9\-_ \p{L}]`u', ' ')

          ->replace('` +`', ' ')

          ->substr(0, $maxLength)

          ->value();

          }

          此外,我們還可以在同一鏈中操作多種類型:

          <?php

          use \Dsheiko\Extras\Arrays;

          $res=Arrays::chain(["foo"=> "FOO", "bar"=> "BAR"])

          // input: array, output: string

          ->reduce(function($carry, $val, $key){ return $carry . " {$key}:{$val} "; }, "")

          // input: string, output: integer

          ->indexOf("bar:")

          // input: integer, output: double

          ->toFixed(2)

          ->value();

          實際上,你甚至不需要猜測入口點的類型。相反,你可以使用類型:

          <?php

          use \Dsheiko\Extras\Any;

          $res=Any::chain(new \ArrayObject([1,2,3]))

          ->toArray() // value is [1,2,3]

          ->map(function($num){ return [ "num"=> $num ]; })

          // value is [[ "num"=> 1, ..]]

          ->reduce(function($carry, $arr){

          $carry .=$arr["num"];

          return $carry;

          }, "") // value is "123"

          ->replace("/2/", "") // value is "13"

          ->then(function($value){

          if (empty($value)) {

          throw new \Exception("Empty value");

          }

          return $value;

          })

          ->value();

          正如你在這個例子中看到的,我也使用then類似于Promise API 的鏈式方法 。它接受鏈條的實際價值,并根據鏈條是否被修改進一步傳遞。

          Underscore.js符合PHP

          沒有說服?那么,我們對類型做了很多操作,尤其是對于數組。數組函數有助于隔離迭代范圍并提高性能,但在展示開發(fā)人員意圖時,它們并不那么方便。實際上,我們經常解決類似的邏輯任務,我們可以簡單地重用現(xiàn)有的模式。Extras庫包含一組Underscore.js方法。它有所作為。試想一下,您有一系列鍵值對象(實際上是關聯(lián)數組),其中攜帶有關劇院中所有劇本的數據。根據用戶應用的過濾器,您需要搜索匹配的播放。每次使用回調時\array_filter, 您都可以使用 Arrays:where:

          $listOfPlays=[

          ["title"=> "Cymbeline", "author"=> "Shakespeare", "year"=> 1611],

          ["title"=> "The Tempest", "author"=> "Shakespeare", "year"=> 1611],

          ["title"=> "Hamlet", "author"=> "Shakespeare", "year"=> 1603]

          ];

          $res=Arrays::where($listOfPlays, ["author"=> "Shakespeare", "year"=> 1611]);

          // [

          // ["title"=> "Cymbeline", "author"=> "Shakespeare", "year"=> 1611],

          // ["title"=> "The Tempest", "author"=> "Shakespeare", "year"=> 1611],

          // ]

          或者,假設您有一個描述產品的鍵值數據結構。您需要提取包含您選擇的唯一對的較小對象(此處為關聯(lián)數組):

          $res=Arrays::pick([

          'name'=> 'moe',

          'age'=> 50,

          'userid'=> 'moe1',

          //… 100 more lines

          ], 'name', 'age');

          // ['name'=> 'moe', 'age'=> 50, ]

          正如您可能注意到的,Extras可以反映PHP數組中的JavaScript類型數組和對象(分別為順序和關聯(lián))。此外,可以從中獲得類似于JavaScript普通對象的類型:

          use \Dsheiko\Extras\Arrays;

          $po=Arrays::object(["foo"=> "FOO", "bar"=> ["baz"=> "BAZ"]]);

          echo $po->foo; // FOO

          echo $po->bar->baz; // BAZ

          該類型繼承了Underscore Object方法:

          use \Dsheiko\Extras\Arrays;

          $po=Arrays::object([

          "start"=> 5,

          "end"=> 12,

          ]);

          $res=$po->mapObject(function($val){

          return $val + 5;

          }) // PlainObject{ "start": 10, "end": 17 }

          ->invert(); // PlainObject{ 10: "start", 17: "end" }

          概括

          Extras是一個可通過作曲者使用的PHP包:

          composer require "dsheiko/extras"

          它旨在改進PHP的開發(fā)體驗。也就是說,它提供了一種具有一致的命名約定和一致的參數順序的類型操縱工具帶。任何交付的方法都是可鏈接的。除了PHP泛型類型之外,該軟件包還帶有PlainObject,它類似于JavaScript普通對象。包方法遵循相應的JavaScript和Underscore.js / Lodash方法的語法和邏輯。

          app/admin/controller創(chuàng)建Login.php文件(注意首字母需要大寫):

          把login_index.html模板文件放在view/admin模板目錄里(模板文件下載地址我會放在后面):

          打開127.0.0.1/admin.php/login/index.html后臺登錄頁面,輸入正確的賬號和密碼提示登錄成功并跳轉到127.0.0.1/admin.php/index/index.html

          打開app/middleware.php文件,開啟Session初始化:

          在app創(chuàng)建AdminController.php文件:

          接著打開app/admin/controller/Index.php,

          use app\BaseController;

          改成

          use app\AdminController;

          class Index extends BaseController;

          改成

          class Index extends AdminController;

          接著在第55行添加:

          session('user', null);

          最后本篇教程所有代碼都放在我的Gitee,歡迎查閱學習


          主站蜘蛛池模板: 一区二区三区在线观看免费| 色婷婷综合久久久久中文一区二区 | 亚洲av成人一区二区三区在线播放| 亚洲中文字幕一区精品自拍| 国产日韩一区二区三免费高清| 国产精品夜色一区二区三区 | 久久亚洲色一区二区三区| 精品人妻一区二区三区毛片| 日韩精品无码一区二区视频| 精品亚洲av无码一区二区柚蜜| 国产福利一区二区三区视频在线| 农村乱人伦一区二区| 久久亚洲中文字幕精品一区四 | 国产成人av一区二区三区在线| 日韩免费一区二区三区在线播放| 中文字幕一区日韩精品| 一本大道在线无码一区| 亚洲AV无码片一区二区三区| 国产成人免费一区二区三区| 亚洲高清偷拍一区二区三区| 国产激情精品一区二区三区| 三上悠亚精品一区二区久久| 人妻无码久久一区二区三区免费| 精品爆乳一区二区三区无码av| 欧亚精品一区三区免费| 视频一区二区三区人妻系列| 国产免费伦精品一区二区三区| 91在线一区二区三区| 中文字幕AV一区二区三区人妻少妇| 精品无码成人片一区二区| 丝袜无码一区二区三区| 亚洲一区二区三区影院| 伦理一区二区三区| 国产在线精品一区二区不卡| 亚洲国产一区二区a毛片| 国产成人综合亚洲一区| 久草新视频一区二区三区| 国产一区二区三区播放心情潘金莲 | 国产精品毛片a∨一区二区三区| 国产精品夜色一区二区三区 | 一区二区国产精品|