ホームページ  >  記事  >  バックエンド開発  >  PHPユーザーログインコードセッション、Cookie自動メモリ機能_PHPチュートリアル

PHPユーザーログインコードセッション、Cookie自動メモリ機能_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:59:471105ブラウズ

ユーザーがログインするとき、私の例のように多くの基本的なユーザー ログインが行われます。ユーザーがあなたのアドレスを知っている場合、ログインする必要はありません。例 2 ではセッションを使用します。操作ページでよく使用されます。セッションの検証に合格しましたが、次回のログインを記憶できません。例 3 では、セッションと Cookie を同時に使用してログインし、次回の自動ログイン機能を自動的に記録できます。

まず最も単純な例を見てみましょう

以下に簡単なlogin.htmコンテンツを添付します

コードは次のとおりです コードをコピー




ユーザー名

パスワード<入力 type=パスワード name="パスワード">





login.php の内容は次のとおりです:

コードは次のとおりです コードをコピー


エラー報告(0);
$mysql_servername = "localhost" //ホストアドレス
; $mysql_username = "root" //データベースユーザー名
; $mysql_password = "" //データベースパスワード
; $mysql_database = "ペン" //データベース
; mysql_connect($mysql_servername, $mysql_username, $mysql_password);
mysql_select_db($mysql_database); $name=$_POST['名前'];
$passowrd=$_POST['パスワード'];

if ($name && $passowrd){

$sql = "SELECT * FROM liuyanban WHERE name = '$name' およびパスワード='$passowrd'";
$res = mysql_query($sql);
$rows=mysql_num_rows($res);
if($rows){
Header("refresh:0;url=a.htm");//ページにジャンプします、パスに注意してください
終了します;
}
echo "";
}その他{
echo "";
}

?>

PHPを学んだばかりの私が書いたものがもう1つあります

これはログイン ページ、他のログイン エイリアスとパスワードのレンダリングです

コードは次のとおりですコードをコピー

phpコード

コードは次のとおりです コードをコピー

session_start();//これは宣言する必要があります。ヒントは次のとおりです。php.5 より前のバージョンでは問題が発生します。
$myname =get_value('myname',post);
$mypass =get_value('mypass',post);
if(!preg_match("/^w+$/",$myname) || strlen($myname)15 ){
alert('入力されたユーザー名情報が正しくありません!ユーザー名は数字、アンダースコア、英字で構成する必要があり、長さは 3 ~ 15 文字です!','');
}
if(!preg_match("/^w+$/",$mypass) || strlen($mypass)15 ){
alert('ユーザーのパスワードを入力してください! パスワードは数字、アンダースコア、英字で構成する必要があり、長さは 6 ~ 15 文字です!','');
}
$sql="select * from tbn where admin_name='$myname' and admin_pwd='".md5($mypass)."'";
$result =mysql_query($sql);
if(mysql_num_rows($result) ){
$my =mysql_fetch_array($result);
$_SESSION['uid']=$myname;
//$_SESSION['auth']=return_auth($my['group_id']); //これは、ユーザー グループがユーザー グループの権限を取得するために使用されるためです
header("location:main.php");
}その他{
alert('ヒント: 入力したユーザー名とパスワードが一致しません!','');
}

?>

上記の例では、セッションに情報のみを保存しました。セッションと Cookie を同時に適用してユーザーのログイン情報を保存する方法を見てみましょう。

1.データベース接続デバイスページ:connectvars.php


コードは次のとおりです //データベースのステータス

定義(""DB_HOST"", ""127.0.0.1"");
//ユーザー名
定義(""DB_USER"", ""ルート"");
//パスワード
定義(""DB_PASSWORD"", ""19900101"");
//データベース名
定義(""DB_NAME"",""テスト"") ;
?>

2. ログインページ: logIn.php

コードをコピー
3. ログインページ: logged.php
コードは次のとおりです コードをコピー

//データベースに接続するための関連情報を挿入します
require_once ""connectvars.php"";

//セッションを開始します
session_start();

$error_msg = "";
//ユーザーがログインしていない場合、つまり $_SESSION[""user_id""] が設定されていない場合、次のコードを実行します
if(!isset($_SESSION[""user_id""])){
If(isset($_POST[""submit""]))//ユーザーがログインフォームを送信するときに、次のコードを実行します
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$user_username = mysqli_real_escape_string($dbc,trim($_POST[""username""]));
$user_password = mysqli_real_escape_string($dbc,trim($_POST[""password""]));

if(!empty($user_username)&&!empty($user_password)){
//MySql の SHA() 関数は、文字列の一方向暗号化を実行するために使用されます
$query = "SELECT user_id, username FROM missmatch_user WHERE username = ""$user_username"" AND "."password = SHA(""$user_password"")";
$data = mysqli_query($dbc, $query);
//ユーザー名とパスワードを使用してクエリを実行します。見つかったレコードが 1 つだけの場合は、SESSION と COOKIE を設定し、同時にページをリダイレクトします
If(mysqli_num_rows($data)==1){
$row = mysqli_fetch_array($data);
$_SESSION[""user_id""]=$row[""user_id""];
$_SESSION[""ユーザー名""]=$row[""ユーザー名""];
setcookie(""user_id"", $row[""user_id""], time()+(60*60*24*30));
setcookie(""ユーザー名"", $row[""ユーザー名""], time()+(60*60*24*30));
$home_url = ""loged.php"";
header(""場所: "".$home_url);
}else{// 見つかったレコードがエラーと一致しない場合は、エラー メッセージを設定します
$error_msg = "「申し訳ありませんが、ログインするには有効なユーザー名とパスワードを入力する必要があります。」";
}
}その他{
$error_msg = "「申し訳ありませんが、ログインするには有効なユーザー名とパスワードを入力する必要があります。」";
}
}
}else{//ユーザーがすでにログインしている場合は、ログインしたページに直接ジャンプします
$home_url = ""loged.php"";
header(""場所: "".$home_url);
}
?>

<頭>
不一致 - ログイン



                                                                                                          & Lt;!-$ _Session ["User_id" "] により、ユーザーがログインしていない場合はログイン フォームが表示され、ユーザー名とコードを入力することが決定されます-& gt;
If(!isset($_SESSION[""user_id""])){
echo ""

"".$error_msg.""

"";
?>

">
                                                                                                           &lt; legend&gt; login&lt;/legend&gt;


value="" ️


}
?>






コードは次のとおりです

コードをコピー //セッションに保存されている変数値を適用する前にセッションを開く必要があります session_start();
//セッションが設定されていない場合は、Cookieが設定されているかどうかを確認します

if(!isset($_SESSION[""user_id""])){
If(isset($_COOKIE[""user_id""])&&isset($_COOKIE[""username""])){
// Cookie を使用してセッションに値を割り当てます
$_SESSION[""user_id""]=$_COOKIE[""user_id""];
$_SESSION[""ユーザー名""]=$_COOKIE[""ユーザー名""];
}
}
//セッション変数を使用してログインステータスを確認します
if(isset($_SESSION[""ユーザー名""])){
echo ""あなたは "".$_SESSION[""username""] としてログインしています。""
"";
echo "" ログアウト("".$_SESSION[""username"]."")"";
}
/**ログインページでは、$_SESSION[""username""]、
などのユーザーのセッションを騙すことができます * $_SESSION[""user_id""] はデータベースにクエリを実行し、多くの作業を実行できます*/
?>



4. セッションと Cookie ページからログアウトします: logOut.php (公開後は lonIn.php にリダイレクトします)

コードは次のとおりです コードをコピー

/**セッションページとCookieページを同時に公開する*/
//公開する場合でも、セッション変数にアクセスするには、まずセッションを開始する必要があります
session_start();
//セッション変数を使用してログインステータスを確認します
if(isset($_SESSION[""user_id""])){
//セッション変数をクリアするには、$_SESSION スーパーグローバル変数を空の配列に設定します
$_SESSION = array();
//セッション Cookie が存在する場合は、有効期限を 1 時間前に設定して削除します
If(isset($_COOKIE[セッション名()])){
setcookie(session_name(),"""",time()-3600);
}
// 組み込みの session_destroy() 関数呼び出しを適用してセッションをキャンセルします
Session_destroy();
}
//同時に、システムによって削除できるように、各 Cookie の有効期限を過去の時刻に設定します。時刻は秒単位です
。 setcookie(""user_id"","""",time()-3600);
setcookie(""ユーザー名"","""",time()-3600);
// location ヘッダーはブラウザを別のページにリダイレクトします
$home_url = ""logIn.php"";
header(""場所:"".$home_url);
?>

ユーザーの登録とログインにはユーザー情報とデータベースのやり取りが含まれるため、ユーザーが送信する情報が不正な情報にならないように特別な注意を払う必要があります。この例では、正規表現を使用して登録部分とログインを制限しています。この部分は単に htmlspecialchars() を使用します。実際のアプリケーションでは、処理がより厳密になる可能性があります。
このチュートリアルは、ユーザーの登録とログインのプロセスを示しているだけであり、そのコードは学習の参考のみを目的としており、プロジェクトの制作に直接使用することはできません。
このチュートリアルでは、ログイン成功後のユーザーの管理にセッションを使用します。また、特に時間制限のある要件の場合は、Cookie を使用して管理することもできます。
ユーザー エクスペリエンスを向上させるために、ユーザー登録部分を AJAX と組み合わせて、ユーザーが送信をクリックするのを待たずにユーザーが入力した情報を検出できます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631288.html技術記事ユーザーがログインするとき、私の例のように多くの基本的なユーザー ログインが行われます。ユーザーがあなたのアドレスを知っている場合、ログインする必要はありません。例 2 は...
を利用しています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。