ホームページ  >  記事  >  バックエンド開発  >  [php] システムにログインしてブラウザ情報を出力する

[php] システムにログインしてブラウザ情報を出力する

WBOY
WBOYオリジナル
2016-06-23 13:43:30656ブラウズ

ログインシステムは、データベースの操作方法を理解したら

、その後セッションの操作方法を理解するシステムです

システムの作り方を知っておく必要があります

このシステムは前のシステムと同じです「[ASP] Access データベースに接続するためのログイン システム」 (クリックするとリンクが開きます) この記事の ASP ログイン システムの考え方は全く同じです

プログラミング言語が asp から php に変わっただけです、データベースが Access から mysql に変更されました


1. 基本的な目標

まず第一に、mysql には次のユーザー情報テーブルがあります:


ページにはログインフォームがあります、ユーザーはユーザー名やパスワードなどの情報を入力する必要があります

ユーザーが入力したユーザー名がユーザー情報テーブルにまったく存在しない場合、「そのような人は見つかりませんでした」というダイアログボックスが表示されますアップしてこのページに戻ります


ユーザーが入力したパスワードが間違っている場合は、「パスワードが正しくありません」のダイアログボックスが表示され、このページに戻ります


ユーザーが間違ったパスワードを入力した場合ログイン情報が正しい場合、「ログイン成功」ページにジャンプし、ユーザーの現在の IP、使用されているシステムの言語環境、およびブラウザー情報が出力されます


「ログイン成功」ページは保護されています。ブラウザはパスワード入力ページをバイパスして、ブラウザにアドレスを入力して直接「ログイン成功」ページにアクセスすることはできません



2. 基本的な考え方


ユーザー入力ユーザー名とパスワードのページ。フォームがログイン判定ページlogin.phpを指している限り。

welcome.php はユーザーが正常にログインするページであり、

exit.php はセッションを破棄するために使用されます。

session は、ユーザー名とパスワードを保存するために使用されるブラウザーのグローバル変数です。


3. 制作プロセス

(1) login.html

何も言う必要はありません。次のコードを参照してください:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>登录页面</title></head><body><form action="login.php" method="post">用户名:<input type="text" name="username" /><br />密码:<input type="password" name="password" /><br /><input type="submit" value="登录" /></form></body></html>

(2) exit.php

Deストロイs セッション ページに移動し、セッションを破棄した後、ページを login.html に戻します

唯一注意すべき点は、PHP でセッションを使用する必要がある場合は、次の最初の行で session_start(); のシステム関数を使用する必要があるということです。すべてのコード。そうしないとエラーが発生する可能性があります

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>登出页面</title></head><body><?phpsession_start();session_destroy();?><script>window.location.href="login.html";</script></body></html>

(3) login.php


ログイン判定ページは依然として古典的なログイン三段論法です。

まず、login.html で渡されたユーザー名とパスワードを受け取り、このユーザー名がユーザー情報テーブルに存在します

存在しない場合は、ユーザーが入力した渡されたパスワードがデータベース内のユーザー名に対応する dbpassword と等しいかどうかも判断されます

そうであれば、ログインは成功し、ユーザー名はセッションに保存され、ログイン成功ページに渡されます。それ以外の場合、ログインは失敗します。

このページでは、システムの組み込み関数 is_null も使用して、クエリ結果が空かどうかを判断します

データベース クエリ結果が空の場合、新しく定義された dbusername には値が割り当てられず、dbusername はそのままになります。

同時に、ログインに成功した場合、mt_rand(0,100000); を使用して、成功したログイン ページを保護するために 0 から 100000 までの乱数コードを生成する必要もあります。

すべての判断を行ったら、最後にデータベースを閉じるステートメントを忘れずに追加してください。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>登陆中……</title></head><body><?phpsession_start();$username=$_REQUEST["username"];$password=$_REQUEST["password"];$con=mysql_connect("localhost","root","root");if(!$con){	die("数据库连接失败!");	}mysql_select_db("test",$con);$dbusername=null;$dbpassword=null;$result=mysql_query("select * from user where username='".$username."';");while($row=mysql_fetch_array($result)){	$dbusername=$row["username"];	$dbpassword=$row["password"];}if(is_null($dbusername)){?><script>alert("查无此人!");window.location.href="login.html";</script><?php		}else{	if($dbpassword!=$password){?><script>alert("密码错误!");window.location.href="login.html";</script>        <?php		}	else{		$_SESSION["username"]=$username;		$_SESSION["code"]=mt_rand(0,100000);?><script>window.location.href="welcome.php";</script>  <?php		}	}mysql_close($con);?></body></html>

(4) welcome.php


welcome.php のログイン成功ページでは、まず isset を使用して、login.php によって渡されたコードがあるかどうかを確認します、

ここでの isset と上記の is_null の違い, isset は、そのような変数があるかどうかを判断するために使用されます。 is_null は、そのような変数が存在する場合にその変数が null であるかどうかを判断するために使用されます。

コードセッションがない場合は、ユーザーが異常にログインしたことを意味します。 exit.php を終了して終了します。

ログインが正常であれば、サーバー オブジェクト内の各小さなオブジェクトを通じてユーザー情報が出力されます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>欢迎登录</title></head><body><?phpsession_start();if(isset($_SESSION["code"])){?>欢迎登录!<?phpecho "${_SESSION["username"]}";?><br />你的IP:<?phpecho "${_SERVER['REMOTE_ADDR']}";?><br />你的系统语言:<?phpecho "${_SERVER['HTTP_ACCEPT_LANGUAGE']}";?><br />你的浏览器为:<?phpecho "${_SERVER['HTTP_USER_AGENT']}";?><br /><a href="exit.php">退出登录</a><?php}else{?><script>alert("请正常登录!");window.location.href="exit.php";</script><?php}?></body></html>
この時点で、ログイン システム全体が開発されました。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。