php学習――ログイン検証(第一級)


最近しばらくphpを学んで、昨日と今日またW 3 Cの上で急速にHTMLを过ぎて、CSS、いくつかのものはいつも覚えられないで、それから前にまた急速に一方のphpを过ぎて、1つの登录の検证の小さいコードの练习手を书くつもりで、同じく过程の中で新しく学んだいくつかの知识の点を记录して、1级は上升します.
あまり話さないで、コードをつけてから~~~
コードディレクトリの構造を説明します.同じディレクトリの下にある3つのファイルを説明します.
index.html//ログインページ
login_auth.php//検証ページ
index.php//ログイン成功ページ
データベースの構造は次のとおりです.
user:データベース
=』usernameテーブル
=>usernameフィールド名
=>passwordフィールド名
indexでhtmlページでは、コードは以下のように簡単ですが、あまり言いません.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <style>
        body {text-align: center;position: relative;}
    </style>
</head>
<body>
    <form name="login" action="login_auth.php" method="post">
        username:
        <input type="text" name="user"/></br>
        password:
        <input type="password" name="pwd"/></br>
        <input class="submit" type="submit" value="  "/>
    </form>
</body>
</html>

ログインをクリックすると、フォームアクションがトリガーされ、login_にジャンプします.auth.phpページ認証
login_auth.php:
<?php
	header("Content-Type: text/html;charset=utf-8");
	$username=$_POST['user']; //$_POST        ,     HTTPPOST           
	$password=$_POST['pwd'];
	if($username==""){
		echo "      ";
		echo "<a href='index.html'>  </a>";
	}elseif($password==""){
		echo  "     ";
		echo "<a href='index.html'>  </a>";
	}else{
		$link=mysql_connect("localhost","root","")or die("       ");
		mysql_select_db("user",$link)or die("    ");
		$sql="select * from username where username='$username' AND password='$password'";
		$result=mysql_query($sql,$link);
		$news=mysql_fetch_assoc($result);
		mysql_free_result($result);
	if($news){
	echo "    ";
	echo "<a href='index.php'>  </a>";
	}else{
	echo "           ";
	echo "<a href='index.html'>  </a>";
	}
	}
?>

ページに中国語があるため、文字化けしを防ぐために、頭に一言追加する必要があります.
header("Content-Type: text/html;charset=utf-8");
以上mysqlデータベースの関数をいくつか使用しました
mysql_接続:データベースに接続する
構文:
mysql_connect(servername,username,password);
servername	  。         。    "localhost:3306"。
username	  。           。                 。
password	  。         。    ""。

mysql_select_db:データベースの選択
mysql_select_db(database,connection)
database	  。         。
connection	  。   MySQL   。     ,        。
    ,       true。    ,    false。

mysql_Query:MySQLクエリーを実行します.
mysql_query(query,connection)
query   。       SQL   。  :            。 
connection   。   SQL      。     ,           。

mysql_fetch_assoc:結果セットから関連配列として1行を取得します.結果セットから取得したローに基づいて生成された関連配列を返し、より多くのローがない場合falseを返します.のように
Array
(
[userame] => admin
[password] => 123456
)
mysql_fetch_assoc(data)

mysql_free_result:mysql_free_result()関数は結果メモリを解放します.成功した場合はtrueを返し、失敗した場合はfalseを返します.
だから以上のコードがありました~~~
はdie()関数がメッセージを出力し、現在のスクリプトを終了します.この関数はexit()関数の別名です.
ここでわざわざorという文法を言います:orを使って達成することができるのは、関数が間違っている後、orの後ろの関数を実行するのは:
    1.論理演算の演算順序は左から右へ
    2.or演算子の左結合性
    3.or演算では、演算時に値が真であれば、式全体が真であり、その後は演算を必要としない
最後に上の3つの要素を合わせて、or左側の関数が正常に動作する(偽値ではない)場合、後の関数は実行されません.
ここではorのこの特性を利用してdie(関数を終了して出力する)をここに用い,関数異常を報告する機能を巧みに実現した.
上の分析によると、左側の関数が偽の関数を返すか、戻り値のない関数であれば、後の関数mysql_を実行するはずだと考えられています.connect()実行エラーは、この関数自体の実行エラーではありません.それ自体の実行エラーがPHPのシステムエラーであれば
偽の値を返しただけです
それは非常に粗末なコードで、時間が遅くなりました.今日はここに書いておきます.次に、その中に存在する隠れた危険性と改善点を紹介します.