PHP:注冊信息存儲/登錄信息驗證基本原理

??在網(wǎng)站用戶經(jīng)常需要注冊新的賬號以及對已經(jīng)注冊過的賬號進(jìn)行登錄。
??本文使用 php 實現(xiàn)基本功能并對基本原理進(jìn)行講解适掰。

一. 注冊(非 JSON)

1. HTML部分(register.html)

??首先完成 HTML 頁面的基本布局

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8" />
 <title>Register_Page</title>
</head>
<body>
 <form action="registerHandler.php" method="post">
  Name:<input type="text" name="user" id="user" />
  Code:<input type="text" name="pass" id="pass" />
  <input type="submit" value="register"/>
 </form>
</body>
</html>
  • 這里采用 post 方式
  • action 的對象為將要創(chuàng)建的 registerHandler.php 文件

2. php 部分(registerHandler.php)

??我們在 HTML 文件里得到了 user 和 pass 的兩個值,并將他們傳遞給了.php 文件猪杭。
php 文件內(nèi)利用字符串的拼接特性將這兩個值拼接為一個字符串。
??再將這個字符串寫入指定的 txt 文件吉嚣,注意 file 函數(shù)如果在沒有找到指定 txt 文件的時候观话,會重新創(chuàng)建一個 txt 文件胃夏。這樣信息就被保存在了指定的空間內(nèi)轴或。

代碼如下:

<?php
 // 獲取 post 請求中包含的注冊數(shù)據(jù)
 $user = $_POST["user"];
 $pass = $_POST["pass"];
 // 組成一個有規(guī)則的字符串,等待寫入文件
 $str = "user = {$user};pass = {$pass}\n";
 $f = fopen("file/user.txt", "a");
 // 把本次獲得的字符串寫入到文檔中
 fwrite($f, $str);
 // 關(guān)閉文件
 fclose($f);
?>

二. 將用戶信息以 Table 格式顯示(非必須仰禀,只為看效果)

原理:
??1. 將 php 文件嵌入到 HTML 文件內(nèi)照雁。
??2. 使用 explode 函數(shù),將$str = "user = {$user};pass = {$pass}\n";按照;拆分為user = {$user}pass = {$pass}答恶。再分別通過=拆分饺蚊,分別獲取$user$pass。通過循環(huán)分別獲取亥宿,并創(chuàng)建 table 標(biāo)簽卸勺,然后依次 echo 寫入,達(dá)到目標(biāo)烫扼。

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8" />
  <title>
  </title>
 </head>
 <body>
  <table border="1">
   <tr><th>用戶名</th><th>密碼</th></tr>
   <?php
   // 1. 讀取文件,獲取信息數(shù)組
   $arr = file("file/user.txt");
   // print_r($arr);
   echo "<hr>"."下面是把 user.txt 的用戶名和密碼輸出為表格";
   foreach ($arr as $value) {
   $userinfo = explode(";", $value);
   ?>
   <tr>
    <td>
     <?php
     $username = explode("=", $userinfo[0])[1];
     echo $username;
     ?>
    </td>
    <td>
     <?php
     $userpass = explode("=", $userinfo[1])[1];
     echo $userpass;
     ?>
     <?php } ?>
    </td>
   </tr>
  </table>
 </body>
</html>
生成包含用戶名及密碼的 Table 表格

三. 登錄驗證

原理:
??1. 布局與注冊相似碍庵,但是 action 指向另一個創(chuàng)建的 login.php 文件映企。
??2. 在 login.php 文件中,獲取到此次輸入的 user 和 pass 值静浴,以注冊相同的格式拼接為字符串 $str堰氓。
??3. 通過 file_get_contents() 函數(shù)將user.txt 文件以整個字符串的形式導(dǎo)出,定義為$f 苹享。
??4. 判斷:若 $f 中包含 $str双絮,那么代表我輸入的這一段用戶名和密碼在數(shù)據(jù)庫中是能找到的,即登陸成功得问。
??5. 判斷方法:explode 方法囤攀,若$f可以被$str拆分為含有兩個或兩個以上元素的數(shù)組,那么代表$f中包含 $str(在這里也可以使用 strpos 函數(shù)進(jìn)行判斷)宫纬。

代碼如下:

<?php
header("Content-type:text/html;charset=utf-8");
$user = $_POST["user"];
$pass = $_POST["pass"];
$str = "user = {$user};pass = {$pass}\n";
$f = file_get_contents("file/user.txt");
$tmpArr = explode($str, $f);
if (count($tmpArr) > 1) echo "登陸成功焚挠!數(shù)據(jù)庫有你的信息!";
else echo "登錄失斃焐А蝌衔!數(shù)據(jù)庫里找不到你榛泛!";
?>

??至此,我們完成了登錄的判斷噩斟,當(dāng)然曹锨,方法不唯一。

四. 注冊(JSON)

??在這段代碼里注冊信息剃允,我們使用了json_encodejson_decode方法將信息轉(zhuǎn)化為 JSON 格式寫入文檔中沛简,方便了操作和以后的使用。登錄方法同以上硅急。
??JSON 的操作方式與非 JSON 類似覆享,并沒有本質(zhì)的區(qū)別,不做贅述营袜。

代碼如下:

1. HTML部分(json_register.html)
<!doctype html>
<html>
<head>
 <meta charset="UTF-8" />
 <title>Document</title>
</head>
<body>
 <form action="json_registerHandler.php" method="post">
  用戶名:<input type="text" name="user"/><br>
  密__碼:<input type="text" name="pass"/><br>
  <input type="submit" value="注冊"/>
 </form>
</body>
</html>
2. php 寫入注冊信息部分
<?php
if (count($_POST) != 0) {
 $str = json_encode($_POST) . "\n";
 $f = fopen("file/jason_user.txt", "a");
 fwrite($f, $str);
 fclose($f);
}
?>
3. Table 打印注冊信息部分
<!doctype html>
<html>
 <head>
  <meta charset="UTF-8" />
  <title>Document</title>
 </head>
 <body>
  <table border="1">
   <tr><th>用戶名</th><th>密碼</th></tr>
   <?php
    $arr = file("file/jason_user.txt");
    foreach ($arr as  $value) {
    $userL = json_decode($value);
   ?>
   <tr>
    <td>
     <?php 
      $userName = $userL -> user;
      echo $userName;
     ?>
    </td>
    <td>
     <?php 
      $passName = $userL -> pass;
      echo $passName;
     ?>
    </td>
   </tr>
   <?php } ?>
   <!--把 json_user.txt 打一下看看樣子而已-->
   <?php
    echo file_get_contents("file/jason_user.txt");
   ?>
  </table>
 </body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撒顿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荚板,更是在濱河造成了極大的恐慌凤壁,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跪另,死亡現(xiàn)場離奇詭異拧抖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)免绿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門唧席,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘲驾,你說我怎么就攤上這事淌哟。” “怎么了辽故?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵徒仓,是天一觀的道長。 經(jīng)常有香客問我誊垢,道長掉弛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任喂走,我火速辦了婚禮殃饿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缴啡。我一直安慰自己壁晒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著秒咐,像睡著了一般谬晕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上携取,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天攒钳,我揣著相機(jī)與錄音,去河邊找鬼雷滋。 笑死不撑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晤斩。 我是一名探鬼主播焕檬,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼澳泵!你這毒婦竟也來了实愚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤兔辅,失蹤者是張志新(化名)和其女友劉穎腊敲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體维苔,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碰辅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了介时。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没宾。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沸柔,靈堂內(nèi)的尸體忽然破棺而出榕吼,到底是詐尸還是另有隱情,我是刑警寧澤勉失,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站原探,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咽弦。R本人自食惡果不足惜徒蟆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望型型。 院中可真熱鬧段审,春花似錦、人聲如沸闹蒜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至姥闪,卻和暖如春始苇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背筐喳。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工催式, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人避归。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓荣月,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梳毙。 傳聞我的和親對象是個殘疾皇子哺窄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)顿天,斷路器堂氯,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • (源自摘抄整理)https://www.91ri.org/11494.html Webshell實現(xiàn)與隱藏探究 一...
    JackyTsuuuy閱讀 20,781評論 2 13
  • 一、php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語言牌废,可以運(yùn)行在Web服務(wù)器端咽白。 php是一門后臺編程語...
    空谷悠閱讀 3,096評論 4 97
  • 1 她雖疲累但已習(xí)慣在高樓林立間的水泥路面上為了掙食奔走。高價租來的公寓其實只有那張松軟的床屬于她鸟缕,其他的東西整齊...
    vitors閱讀 260評論 2 1
  • 四天三夜的復(fù)訓(xùn)結(jié)束了晶框!不舍同修們在一起的敞開、看見懂从、陪伴授段!感恩爸爸(陳浪老師),感恩修文老師番甩,感恩同修們侵贵! ...
    陳玫瑰7W6閱讀 612評論 2 3