開いた
選ぶ

基本ユーザー登録php。 PHPとMySQLで信じられないほどシンプルな登録システムを構築します。 データベースの作成

最終更新日は2018年4月5日です。

ユーザーのログインと登録は、CMSアプリケーションの基本的な要件です。 これは、プロジェクト開始時の最初の作業です。 ユーザーログイン認証を使用するアプリケーションは、匿名アクセスを防止することでセキュリティを提供します。 OAuthログインを有効にする、シングルサインオン(SSO)を実装するなど、アプリケーションで認証を有効にするさまざまな方法があります。 前のチュートリアルでは、実装方法とについて見てきました。

この例には、ログイン機能と登録機能の両方が含まれています。 MySQLデータベースを使用して登録済みメンバーを保存しました。 ユーザー登録には、ユーザーから詳細を取得するための入力が含まれます。 このフォームを送信すると、フォームデータがPHPに投稿され、データベースに保存されます。 ユーザーパスワードは、データベースに保存する前に暗号化されます。 PHPコードに投稿する前に。 ユーザーが有効な資格情報でログインすると、ユーザーとユーザーはさらに先に進むことができます。

ユーザー登録フォーム

このコードは、サインアップフォームをユーザーに表示するためのものです。 ユーザーが詳細をフォームに送信すると、JavaScript関数が呼び出され、ユーザー入力が検証されます。 検証が成功すると、PHPコードは投稿されたフォームデータを読み取り、データベース挿入を実行します。

">

JavaScript検証は、必須フィールドの空でないチェックと、正規表現パターンを使用した電子メール形式の検証を処理します。

登録フォームデータを使用して挿入を作成するこのPHPコード。 データベース挿入を実行した後、ユーザーを確認するために成功/エラー応答が送信されます。

openConnection(); $ sql1 = "名前を選択し、tbl_registered_usersからメールを送信します。ここでemail =" $ email ""; $ user = $ db-> query($ sql1); $ result = $ user-> fetchAll(); $ _SESSION ["emailname"] = $ result ["email"]; if(empty($ result))($ sql = "insert into tbl_registered_users(name、email、password)values(" $ name "、" $ email "、" $ password ")"; $ db-> exec($ sql ); $ database-> closeConnection(); $ response = array( "type" => "success"、 "message"=>"正常に登録されました。
今すぐログイン。");)else($ response = array(" type "=>" error "、" message "=>"メールはすでに使用されています。");))?>

PHPを使用したログイン認証

登録ユーザーは、このログインフォームからアプリケーションにログインできます。 ログイン認証は、ログイン用の電子メールとパスワードを登録済みのユーザーデータベースと照合することによって行われます。 一致するものが見つかった場合、アプリケーションはユーザーがさらに先に進むことを許可します。 それ以外の場合、ログインパネルは無効な試行についてユーザーに確認します。

データベースでのユーザーログインを検証するためのPHPコードを以下に示します。 ログインに成功したら、ユーザーをdashboard.phpにリダイレクトします。 ダッシュボードには、ログインしているメンバーのアドレスを指定してウェルカムメッセージが表示されます。 また、現在のセッションからログアウトするオプションがあります。

openConnection(); $ sql = "select * from tbl_registered_users where email =" $ email "and password =" $ password ""; $ user = $ db-> query($ sql); $ result = $ user-> fetchAll(PDO :: FETCH_ASSOC); $ id = $ result ["id"]; $ name = $ result ["name"]; $ email = $ result ["email"]; $ _SESSION ["name"] = $ name; $ _SESSION ["id"] = $ id; $ database-> closeConnection(); header( "location:dashboard.php"); )?>

私たちが毎日ウェブを閲覧しているサイトの多くは、ほとんどすべてのサイトにユーザー登録があります。 そのレッスンでは、ユーザー管理の基本について説明し、最後に、独自のWebサイトに実装できる単純なメンバーエリアについて説明します。

このレッスンは、ユーザー管理の基本をカバーするphpを学ぶ初心者を対象としています。

ステップ1

データベースにユーザーテーブルを作成して、テーブル4のフィールドにユーザーに関する情報を格納します。

  • ユーザーID
  • ユーザー名
  • パスワード
  • 電子メールアドレス

以下のSQLクエリを使用してデータベースを作成します

CREATE TABLE `users`( `UserID` INT(25)NOT NULL AUTO_INCREMENT PRIMARY KEY、 `ユーザー名`VARCHAR(65)NOT NULL、 `パスワード`VARCHAR(32)NOT NULL、 `EmailAddress` VARCHAR(255)NOT NULL ) ;

session_start(); $ dbhost = "localhost"; //mysqlサーバーが配置されているホスト名通常はlocalhost $ dbname="データベース"; // データベース名 $ dbuser = "username"; //データベースのユーザー名 $ dbpass="パスワード"; //データベースにアクセスするためのパスワード mysql_connect($ dbhost、$ dbuser、$ dbpass)またはdie( "MySQLエラー:"。mysql_error()); mysql_select_db($ dbname)またはdie( "MySQLエラー:"。mysql_error()); ?>

このファイルはデータベースへの接続を担当し、すべてのページに表示されます。 コードの行をさらに詳しく見てみましょう。

session_start();

この関数は、新しいユーザーのセッションを開始し、セッションデータを格納して、すでに識別されているユーザーを認識できるようにします。

mysql_connect($ dbhost、$ dbuser、$ dbpass)またはdie( "MySQLエラー:"。mysql_error());

mysql_select_db($ dbname)またはdie( "MySQLエラー:"。mysql_error());

これらの各機能は、別々ですが関連するタスクを実行します。

関数 mysql_connect括弧内のパラメータは適切な値が割り当てられた変数であるため、MySQLデータベースサーバーに接続しますホスト、ユーザー名、パスワードデータが正しくない場合、エラーメッセージが表示されます

関数 mysql_select_db変数に名前を割り当てたデータベースを選択します $ dbname、ベースが見つからない場合は、エラーメッセージを表示します

ステップ-2index.phpファイルを作成します

このページの非常に重要な要素は、PHPの最初の行です。 この行には、上記で作成したファイルが含まれます( base.php)そして基本的に、現在のファイル内のそのファイルから何にでもアクセスできるようにします。 これは、次のPHPコード行で行います。 index.phpというファイルを作成し、このコードを一番上に配置します。

新しいindex.phpファイルを作成し、最初に次のコードを貼り付けます

この行には、上記で作成したファイル(base.php)が含まれます。これにより、現在のファイル内のそのファイルのコードにアクセスできるようになります。

これは関数によって行われます 含む()

次に、ユーザーが登録用のデータを入力する外部インターフェイスを作成します。既に登録されている場合は、データを変更する機会を与えます。 このチュートリアルはPHPを対象としているため、HTML / CSSコードは扱いません。後で、CSSスタイルシートを作成するときに調べますが、今のところ、このコードを前の行の後に貼り付けます。

ユーザー管理システム <title> </span> <span><link rel="stylesheet" href="/style.css" type="text/css" /> </span> </head> <body> <span><div id="main">ここにphpコードを貼り付けます</div> </p> <p>ここで、phpプログラムを使用する前に、その動作の原理を分析してみましょう。特定の状況で画面に何を表示する必要がありますか。</p> <ol><li>ユーザーがすでにログインしている場合は、登録前に非表示にされていたさまざまなオプションを含むページが表示されます。</li> <li>ユーザーがまだログインしていないが登録している場合は、ログインとパスワードを入力するためのフォームが表示されます。</li> <li>ポイント1、2が満たされない場合は、登録フォームを表示します。</li> </ol><p>次のようになります。</p> <p><?php </span> <span>if(!empty empty</span> <span>{ </span> <span>//ここに非表示のオプションを表示します</span> <span>} </span> <span>elseif(!empty empty($ _POST ["password"]))</span> <span>{ </span> <span>//ログインフォームを表示します</span> <span>} </span> <span>そうしないと</span> <span>{ </span> <span>//登録フォームを表示します</span> <span>} </span> <span>?> </p> <p>ユーザーが当サイトで承認されると、情報はセッションに保存されます。グローバル配列を介してアクセスできます。 <b>$ _SESSION</b>。 空関数と記号付き! if条件では、変数に値があるかどうかを確認し、変数に値がある場合は、中括弧の間にコードを実行します。</p> <p>次の行では、すべてが同じように機能しますが、今回は <b>$ _POST</b>グローバル配列。 この配列には、後で作成するログインフォームを介して送信されたデータが含まれています。 前の条件が満たされない場合、最後のelse条件が実行されます。</p> <p>ロジックを理解したので、次のコードをindex.phpファイルのタグの間に貼り付けましょう。 <div></p> <p><?php </span> <span>if(!empty($ _SESSION ["LoggedIn"])&&!empty($ _SESSION ["Username"]))</span> <span>{ </span> <span>?> </span> <span> <h1>ユーザーゾーン</h1> </span> <span> <p Спасибо что вошли! Вы <b><?= $_SESSION [ "Username" ] ?> </b>とあなたのメールアドレス <b><?= $_SESSION [ "EmailAddress" ] ?> </b>.</p> </span> <span><?php </span> <span>} </span> <span>elseif(!empty($ _ POST ["username"])&&!empty($ _ POST ["password"]))</span> <span>{ </span> <span>$ username = mysql_real_escape_string($ _ POST ["username"]);</span> <span>$ password = md5(mysql_real_escape_string</span> <span>$ checklogin = mysql_query(</span> <span>if(mysql_num_rows($ checklogin)== 1)</span> <span>{ </span> <span>$ row = mysql_fetch_array($ checklogin);</span> <span>エコー <span>"<h1>正常にログインしました</h1>" </span>; </span> <span>エコー <span>"<p>これで、プロファイルにリダイレクトされます。</p>" </span>; </span> <span>エコー <span>"<meta content="=2;index.php" />" </span>; </span> <span>} </span> <span>そうしないと</span> <span>{ </span> <span>エコー " <h1>間違い</h1>" ; </span> <span>エコー <span>"<p>アカウントが見つからないか、間違ったユーザー名またはパスワードを入力しました。 <a href=\" index.php\" >再試行</a>.</p>" </span>; </span> <span>} </span> <span>} </span> <span>そうしないと</span> <span>{ </span> <span>?> </span> <h1>入口</h1> <span> <p>ログインしてよかったです。登録。</p> </span> <span> <form method="post" action="index.php" name="loginform" id="loginform"> </span> <fieldset> <span> <label for="username">ログイン:</label><input type="text" name="username" id="username" /><br /> </span> <span> <label for="password">パスワード:</label><input type="password" name="password" id="password" /><br /> </span> <span> <input type="submit" name="login" id="login" value="入って" /> </span> </fieldset> </form> <span><?php </span> <span>} </span> <span>?> </p> <p>このコードには2つの関数があり、これらは次のとおりです。 <b>mysql_real_escape_string</b>これは、データベースで使用するために文字列内の特殊文字をエスケープするため、悪意のある人からあなたを守ります。 <b>md 5</b>この関数は、パラメーターとして渡されるすべてのものを暗号化します。この場合は、グローバル配列のパスワードです。 <b>$ _POST</b>。 関数の作業のすべての結果を変数に割り当てます <b>$ username、 <span>$ password</span> </b>.</p> <p>$ checklogin = mysql_query( <span>"SELECT * FROM users WHERE Username =" "</span>。 $username。 "" AND Password=""。 $password。 "" ");</span> <span>if(mysql_num_rows($ checklogin)== 1)</span> <span>{ </span> <span>$ row = mysql_fetch_array($ checklogin);</span> <span>$ email = $ row ["EmailAddress"];</span> <span>$_SESSION["ユーザー名"]=$ username;</span> <span>$ _SESSION ["EmailAddress"] = $ email;</span> <span>$ _SESSION ["LoggedIn"] = 1;</p> <p>コードのこのセクションでは、そのようなユーザーが存在するかどうかを確認する必要があります。このために、データベースにクエリを送信し、UsernameフィールドとPasswordフィールドが変数と等しいusersテーブルからすべてのフィールドを引き出します。 <b>$usernameと$password</b>。 クエリの結果は変数に格納されます <b>$ checklogin</b>さらに状態で <b>もしも</b>関数 <b>mysql_num_row</b> sは、データベースへのクエリの行数をカウントします。1の場合、つまりユーザーが見つかった場合は、中かっこでコードを実行します。関数 <b>mysql_fetch_array</b>からのクエリ結果を変換します <b>$ checklogin</b>連想配列に、EmailAddressフィールドの値を変数に割り当てます <b>$ email</b>将来の使用のために。</p> <p>現在のセッションでログインと電子メールを入力すると、ユーザーは自分のアカウントにリダイレクトされます。</p> <p><b>ステップ-3</b></p> <p>次に、ユーザーが登録するページを作成する必要があります。</p> <p>register.phpファイルを作成し、次のコードをそのファイルにコピーします。</p> <p><?php include "base.php" ; ?> </span> <span><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> </span> <span><html xmlns="http://www.w3.org/1999/xhtml"> </span> <span><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </span> <span><title>ユーザー管理システム-Registrationtitle></span> <span><link rel="stylesheet" href="/style.css" type="text/css" /> </span> </head> <body> <div id="main"> <span><?php </span> <span>if(!empty($ _ POST ["username"])&&!empty($ _ POST ["password"]))</span> <span>{ </span> <span>$ username = mysql_real_escape_string($ _ POST ["username"]);</span> <span>$ password = md5(mysql_real_escape_string($ _ POST ["password"]));</span> <span>$ email = mysql_real_escape_string($ _ POST ["email"]);</span> <span>$ checkusername = mysql_query( <span>"SELECT * FROM users WHERE Username =" "</span>。 $username。 "" ");</span> <span>if(mysql_num_rows($ checkusername)== 1)</span> <span>{ </span> <span>エコー " <h1>間違い</h1>" ; </span> <span>エコー <span>"<p>このログインはすでに行われていますp>"</span>; </span> <span>} </span> <span>そうしないと</span> <span>{ </span> <span>$ registerquery = mysql_query( <span>"INSERT INTO users(Username、Password、EmailAddress)VALUES(" "</span>。 $username。 ""、""。 $password。 ""、""。 $email。 "") ");</span> <span>if($ registerquery)</span> <span>{ </span> <span>エコー " <h1>罰金</h1>" ; </span> <span>エコー <span>"<p>アカウントが正常に作成されました。 あなたはできる <a href=\" index.php\" >声</a>.</p>" </span>; </span> <span>} </span> <span>そうしないと</span> <span>{ </span> <span>エコー " <h1>間違い</h1>" ; </span> <span>エコー <span>"<p>もう一度登録してみてください。</p>" </span>; </span> <span>} </span> <span>} </span> <span>} </span> <span>そうしないと</span> <span>{ </span> <span>?> </span> <span> <h1>登録</h1> </span> <span> <form method="post" action="register.php" name="registerform" id="registerform"> </span> <fieldset> <span> <label for="username">ログイン:</label><input type="text" name="username" id="username" /><br /> </span> <span> <label for="password">パスワード:</label><input type="password" name="password" id="password" /><br /> </span> <span> <label for="email">Eメール:</label><input type="text" name="email" id="email" /><br /> </span> <span> <input type="submit" name="register" id="register" value="登録" /> </span> </fieldset> </form> <span><?php </span> <span>} </span> <span>?> </span> </div> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p> <p>このコードには、データベースへの書き込みという少し新しいものがあります</p> <p>これは以前と同じデータベースクエリですが、現在は情報を受信して​​いませんが、INSERTコマンドを使用して記述します。まず、情報を入力するフィールドを指定する必要があります。[値]領域で、この場合に書き込まれる情報は、ユーザーから渡された値を持つ変数です。リクエストを生成するためのルールに特に注意してください。</p> <p><b>ステップ-4完了</b></p> <p>ユーザーがログアウトするには、logout.phpファイルを作成し、その中にコードをコピーします。</p> <p><?php include "base.php; <span>$ _SESSION = array(); session_destroy(); ?></span> <meta http-equiv=" refresh" content=" 0 ; index. php" </p> <p>このコードの結果として、$ _ SESSIONグローバル配列がリセットされ、セッションが破棄されます。このファイルへのリンクをユーザーオプションに含めることを忘れないでください。</p> <p>最後に、上記のすべてのスタイルを設定するには、style.cssファイルを作成し、そこに次のコードを配置します。</p> <p>* { </span> <span>マージン:0</span> <span>パディング:0</span> <span>} </span>体 <span>{ </span> <span>} </span> a <span>{ </span> <span>色:#000;</span> <span>} </span> a <span>:hover、a:active、a:visited(</span> <span>テキスト装飾:なし</span> <span>} </span> <span>#主要(</span> <span>幅:780px;</span> <span>マージン:0自動;</span> <span>マージントップ:50px;</span> <span>パディング:10px</span> <span>背景色:#EEE;</span> <span>} </span>フォームフィールドセット <span>(境界線:0;)</span>フォームフィールドセットpbr <span>(クリア:左;)</span>ラベル <span>{ </span> <span>マージントップ:5px;</span> <span>表示ブロック ;</span> <span>幅:100px</span> <span>パディング:0</span> <span>フロート:左;</span> <span>} </span>入力 <span>{ </span> <span>フォントファミリー:Trebuchet MS;</span> <span>ボーダー:1pxソリッド#CCC;</span> <span>マージンボトム:5px;</span> <span>背景色:#FFF;</span> <span>パディング:2px</span> <span>} </span>入力 <span>:hover(</span> <span>ボーダー:1pxソリッド#222;</span> <span>背景色:#EEE;</span> <span>} </p> <p>もちろん、原則として、このレッスンで示した例は完璧にはほど遠いですが、初心者が基本の概念を説明できるように設計されています。</p> <p>このコードのいくつかの部分を分析してみましょう</p> <p>$ username = mysql_real_escape_string($ _ POST ["username"]);</p> <p>$ password = md5(mysql_real_escape_string($ _ POST ["password"]));</p> <p>コードのこのセクションには2つの関数があります。これはmysql_real_escape _stringで、データベースで使用するために文字列内の特殊文字をエスケープして、悪意のある人から保護します。md5この関数は、パラメーターとして渡されるすべてのものを暗号化します。 、この場合、これはグローバル$_POST配列のパスワードです。 関数の作業のすべての結果を変数$usernameに割り当てます。 <span>$ password</span>.</p> <p>サイト訪問者を特定のグループに分割するには、サイトに小さなシステムをインストールする必要があります <b>PHPでの登録</b>。 したがって、条件付きで、訪問者をランダムな訪問者の2つのグループと、より価値のある情報を提供するより特権的なユーザーのグループに分割します。</p> <p>ほとんどの場合、より単純化された登録システムが使用されます。これは、phpで1つのファイルに記述されています。 <b>register.php</b>.<br></p><p>それでは、少し逸脱して、登録ファイルを詳しく見てみましょう。</p><h1>register.phpファイル</h1><p>これに時間がかからないように、最小限の連絡先情報でユーザーを収集するシステムを構築します。 この場合、すべてをmysqlデータベースに入力します。 データベースを高速化するために、MyISAM形式とutf-8エンコーディングでusersテーブルを作成します。</p><p><i><span>ノート! すべてのスクリプトは常に同じエンコーディングで作成する必要があります。 すべてのサイトファイルとMySqlデータベースは同じエンコーディングである必要があります。 最も一般的なエンコーディングはUTF-8とWindows-1251です。</span> </i></p><p>すべてを1つのエンコーディングで記​​述する必要がある理由については、後で説明します。 それまでの間、この情報をスクリプトの最も厳密なルールとして使用してください。そうしないと、将来的にスクリプトの動作に問題が発生します。 もちろん大丈夫ですが、スクリプトのエラーを検索するのに多くの時間を失うことになります。</p> <p>スクリプト自体はどのように機能しますか?</p> <p>すべてを簡素化し、迅速な結果を得たいと考えています。 したがって、ユーザーからはログイン、メール、パスワードのみを受け取ります。 また、スパムロボットから保護するために、小さなキャプチャをインストールします。 そうでなければ、ロンドンの少年が小さなロボットパーサーを作成し、データベース全体を数分で偽のユーザーで埋め尽くし、彼の天才と不処罰を喜ぶでしょう。</p> <p>これがスクリプト自体です。 すべてが1つのファイルにあります <b>register.php</b>:<br></p><p><?php //запускаем сессию session_start(); header(`Content-Type: text/html; charset=utf-8`); //подключемся к базе данных require_once ($_SERVER[`DOCUMENT_ROOT`]."/scripts/pro/config.php"); //выводим вспомогательный файл для отображения ошибок include $_SERVER[`DOCUMENT_ROOT`]."/scripts/pro/functions.php"; $sh="http://".$_SERVER[`HTTP_HOST`]."/"; $pr_cls=` class="txt2" `; $class=` class="txt3"`; //класс для шрифта $fnt=` <span><b>! </b>`; //赤い疑問符$sha=$sh。"scripts/ pro /"; //メインフォルダへのパス$bg= `bgcolor ="#E1FFEB "`; //行の背景色?>サンプル登録スクリプトregister.php style.css "/></p><p>この場合、スクリプトはそれ自体を呼び出します。 そして、それはフォームであり、フォームに入力されたデータのハンドラーです。 ファイルがzipアーカイブで圧縮され、config.php構成ファイル、ユーザーデータベースダンプ、補助関数を含むfunctions.phpファイル、style.cssスタイルファイル、およびレジスターが含まれていることに注意してください。 phpファイル自体。 キャプチャ文字の操作と生成を担当するファイルもいくつかあります。</p> <p>メンバーシップベースのサイトを作成することは、最初は困難な作業のように思えます。 これを自分でやりたいと思ったことがあり、PHPスキルを使用してどのように組み合わせるかを考え始めたときに諦めた場合は、この記事が役に立ちます。 パスワードで保護された安全なメンバーエリアを使用して、メンバーシップベースのサイトを作成するすべての側面について説明します。</p><p>プロセス全体は、ユーザー登録とユーザー認証という2つの大きな部分で構成されています。 最初の部分では、登録フォームの作成とMySQLデータベースへのデータの保存について説明します。 第2部では、ログインフォームを作成し、それを使用してユーザーが安全な領域にアクセスできるようにします。 <br></p><h2>コードをダウンロードする</h2><p>登録/ログインシステムのソースコード全体は、以下のリンクからダウンロードできます。 <br></p><p><b>構成とアップロード</b><br>ReadMeファイルには詳細な手順が含まれています。</p><p>を開きます <i>source \ include \ membersite_config.php</i>テキストエディタでファイルを作成し、構成を更新します。 (データベースログイン、Webサイトの名前、電子メールアドレスなど)。</p><p>ディレクトリの内容全体をアップロードします。 フォームを送信して、register.phpをテストします。</p><h2>登録フォーム</h2><p>ユーザーアカウントを作成するには、ユーザーから最小限の情報を収集する必要があります。 彼の名前、メールアドレス、希望するユーザー名とパスワードが必要です。 もちろん、この時点でより多くの情報を求めることができますが、長い形式は常にオフになります。 それでは、それらのフィールドだけに限定しましょう。</p><p>登録フォームは次のとおりです。</p><p><form id="register" action="register.php" method="post" accept-charset="UTF-8"> <fieldset > <legend>登録</legend> <input type="hidden" name="submitted" id="submitted" value="1"/> <label for="name" >あなたのフルネーム*:</label> <input type="text" name="name" id="name" maxlength="50" /> <label for="email" >電子メールアドレス*:</label> <input type="text" name="email" id="email" maxlength="50" /> <label for="username" >ユーザー名*:</label> <input type="text" name="username" id="username" maxlength="50" /> <label for="password" >パスワード*:</label> <input type="password" name="password" id="password" maxlength="50" /> <input type="submit" name="Submit" value="送信" /> </fieldset> </form></p><p>そのため、名前、メールアドレス、パスワードのテキストフィールドがあります。 使いやすさを向上させるためにを使用していることに注意してください。</p><h2>フォームの検証</h2><p>この時点で、何らかの形式の検証コードを配置することをお勧めします。これにより、ユーザーアカウントの作成に必要なすべてのデータが揃っていることを確認できます。 名前とメールアドレス、パスワードが入力されているかどうか、メールアドレスが適切な形式であるかどうかを確認する必要があります。</p><h2>フォーム送信の処理</h2><p>次に、送信されたフォームデータを処理する必要があります。</p><p>シーケンスは次のとおりです(ダウンロードしたソースのファイルfg_membersite.phpを参照)。</p><p>function RegisterUser()(if(!isset($ _ POST ["submitted"]))(return false;)$ formvars = array(); if(!$ this-> ValidateRegistrationSubmission())(return false;)$ this- > CollectRegistrationSubmission($ formvars); if(!$ this-> SaveToDatabase($ formvars))(return false;)if(!$ this-> SendUserConfirmationEmail($ formvars))(return false;)$ this-> SendAdminIntimationEmail($ formvars); trueを返します;)</p><p>まず、フォームの送信を検証します。 次に、フォーム送信データを収集して「サニタイズ」します(これは、メールを送信したり、データベースに保存したりする前に必ず行ってください)。 次に、フォームの送信がデータベーステーブルに保存されます。 確認を求めるメールをユーザーに送信します。 次に、ユーザーが登録した管理者に連絡します。</p><h2>データベースにデータを保存する</h2><p>すべてのデータを収集したので、それをデータベースに保存する必要があります。 <br>フォーム送信をデータベースに保存する方法は次のとおりです。</p><p>function SaveToDatabase(&$ formvars)(if(!$ this-> DBLogin())($ this-> HandleError( "Database login failed!"); return false;)if(!$ this-> Ensuretable())( return false;)if(!$ this-> IsFieldUnique($ formvars、 "email"))($ this-> HandleError( "このメールはすでに登録されています"); return false;)if(!$ this-> IsFieldUnique( $ formvars、 "username"))($ this-> HandleError( "This UserNameはすでに使用されています。別のユーザー名を試してください"); return false;)if(!$ this-> InsertIntoDB($ formvars))($ this- > HandleError( "データベースへの挿入に失敗しました!"); return false;)return true;)</p><p>memberite_config.phpファイルでデータベースログインの詳細を構成したことに注意してください。 ほとんどの場合、データベースホストには「localhost」を使用できます。 <br>ログイン後、テーブルが存在することを確認します(存在しない場合、スクリプトは必要なテーブルを作成します)。 <br>次に、ユーザー名と電子メールが一意であることを確認します。 一意でない場合は、エラーをユーザーに返します。</p><h3>データベーステーブルの構造</h3><p>これがテーブル構造です。 fg_membersite.phpファイルのCreateTable()関数は、テーブルを作成します。 コードは次のとおりです。</p><p>function CreateTable()($ qry = "Create Table $ this-> tablename("。 "id_user INT NOT NULL AUTO_INCREMENT、"。 "name VARCHAR(128)NOT NULL、"。 "email VARCHAR(64)NOT NULL、"。 "phone_number VARCHAR(16)NOT NULL、"。 "username VARCHAR(16)NOT NULL、"。 "password VARCHAR(32)NOT NULL、"。 "confirmcode VARCHAR(32)、"。 "PRIMARY KEY(id_user)"。 ")"; if(!mysql_query($ qry、$ this-> connection))($ this-> HandleDBError("テーブルの作成中にエラーが発生しました\nquery was \ n $ qry"); return false;)return true;)</p><p>id_userフィールドには、ユーザーの一意のIDが含まれ、テーブルの主キーでもあります。 パスワードフィールドに32文字を使用できることに注意してください。 これを行うのは、追加のセキュリティ対策として、MD5を使用して暗号化されたデータベースにパスワードを保存するためです。 MD5は一方向の暗号化方式であるため、ユーザーがパスワードを忘れた場合にパスワードを復元することはできませんのでご注意ください。</p><h3>テーブルへの登録の挿入</h3><p>データベースにデータを挿入するために使用するコードは次のとおりです。 $formvars配列ですべてのデータを利用できるようになります。</p><p>function InsertIntoDB(&$ formvars)($ confirmcode = $ this-> MakeConfirmationMd5($ formvars ["email"]); $ insert_query = "insertinto"。$this->tablename。"(name、email、username、password、確認コード)values(""。$this-> SanitizeForSQL($ formvars ["name"])。 ""、""。$this-> SanitizeForSQL($ formvars ["email"])。 ""、 "" 。$this->SanitizeForSQL($ formvars ["username"])。 ""、 ""。md5($ formvars ["password"])。 ""、""。$confirmcode。"") "; if(! mysql_query($ insert_query、$ this-> connection))($ this-> HandleDBError("テーブルへのデータの挿入エラー\nquery:$ insert_query"); return false;)return true;)</p><p>PHP関数md5()を使用して、パスワードをデータベースに挿入する前に暗号化することに注意してください。 <br>また、ユーザーのメールアドレスから一意の確認コードを作成します。</p><h2>メールを送信する</h2><p>データベースに登録が完了したので、確認メールをユーザーに送信します。 ユーザーは、登録プロセスを完了するために確認メールのリンクをクリックする必要があります。</p><p>function SendUserConfirmationEmail(&$ formvars)($ mailer = new PHPMailer(); $ mailer-> CharSet = "utf-8"; $ mailer-> AddAddress($ formvars ["email"]、$ formvars ["name"]) ; $ mailer-> Subject="。$this->sitename; $ mailer-> From = $ this-> GetFromAddress(); $ confirmcode = urlencode($ this-> MakeConfirmationMd5($ formvars [" email " ])); $ confirm_url = $ this-> GetAbsoluteURLFolder()。 "/ confirmreg.php?code="。$confirmcode; $ mailer-> Body ="Hello"。$formvars["name"]。"\r \ n \ r \n"。""。$this->sitename。"\r\n"で登録していただきありがとうございます。"登録を確認するには下のリンクをクリックしてください。\r\n"。"$confirm_url \ r \n"。"\r\n"。"よろしくお願いいたします。\r\n"。"Webmaster\ r\n"。$this->sitename; if(!$ mailer-> Send())($ this-> HandleError( "登録確認メールの送信に失敗しました。"); falseを返します;)trueを返します;)</p><h2>更新</h2><p><b>2012年1月9日</b><br>パスワードのリセット/パスワードの変更機能が追加されました <br>コードはGitHubで共有されるようになりました。</p><p>お帰りなさい<?= $fgmembersite->UserFullName(); ?>!</p><h2>ライセンス</h2><p><img src='https://i0.wp.com/gnu.org/graphics/lgplv3-147x51.png' height="51" width="147" loading=lazy loading=lazy><br>コードはLGPLライセンスの下で共有されます。 商用または非商用のWebサイトで自由に使用できます。</p><p>関連する記事はありません。</p> <p>このエントリへのコメントは閉じられています。</p><ul><li><li><li><li><li></ul> <p>非常に多くの場合、初心者は自分のサイトに登録を書くという問題に直面しています。 この記事では、その方法を紹介します。 <br>私はすべてを段階的に書きます。</p><p>ステップ1:MySQLデータベースに接続します。 <br>db_connect.phpファイルを作成しましょう:</p><p>Mysql_connect( "localhost"、 "user"、 "user password")またはdie( "MySQLへの接続エラー!"); <br>mysql_select_db( "database")またはdie( "MySQLデータベースへの接続エラー!"); <br>mysql_set_charset( "utf8"); //データベースのエンコーディングを設定します</p><p>ステップ2.ユーザー用のテーブルを作成しましょう。</p><blockquote>CREATE TABLE `users_profiles`( <br>`user_id` int(11)NOT NULL AUTO_INCREMENT、 <br>`username` varchar(32)NOT NULL、 <br>`password` varchar(32)NOT NULL、 <br>主キー( `user_id`) <br>)ENGINE = MyISAM DEFAULT CHARSET = utf8;</blockquote><p>ステップ3.ファイルhandler.phpを作成しましょう-このファイルには、ユーザー認証のチェックが含まれます。</p><p> <?php<br>include_once "db_connect.php"; //データベース接続を確認します</p><p>//ユーザー名とパスワードがCookieに入力されているかどうかを確認します <br>if(!empty($ _ COOKIE ["username"])AND!empty($ _ COOKIE ["password"])) <br> {<br>// users_profilesテーブルでユーザーを探し、SQLインジェクションに対する保護としてmysql_real_escape_stringを使用します <br>$ search_user = mysql_query( "SELECT * FROM` users_profiles` WHERE `username` =" ".mysql_real_escape_string($ _ COOKIE [" username "])。" "AND` password` = "" .mysql_real_escape_string($ _ COOKIE [" password"] )。 "" "); <br>$ user =(mysql_num_rows($ search_user)== 1)? mysql_fetch_array($ search_user):0; <br> } <br>そうしないと <br> {<br>$ user = 0; <br> } <br> ?> </p><p>ステップ4.登録を書き込みます。 <br>これを行うには、register.phpファイルを作成し、その中に次のコードを記述します。</p><p> <?php<br></p><p><br>if($ user)( <br><br>出口(); <br> }</p><p>If(!empty($ _ POST ["login"])AND!empty($ _ POST ["password"])) <br> {<br><br><br></p><p>//データベースにログインがあるかどうかを確認します <br>if(mysql_result(mysql_query( "SELECT COUNT(*)FROM` users_profiles` WHERE `username`=""。$login。""LIMIT 1;")、0)!= 0) <br> {<br>echo "選択したユーザー名はすでに登録されています!"; <br>出口(); <br> } <br>//データをテーブルに入力します。注意してください-パスワードをmd5でエンコードします <br>mysql_query( "INSERT INTO` users_profiles`( `username`、` password`)VALUES(""。$login。""、 "" .md5($ password)。 "") "); <br>echo "登録に成功しました!"; <br>出口(); <br> } <br>// 登録用紙 <br>エコー " <br> <form action="register.php" method="POST"><br>ログイン: <br/><br> <input name="login" type="text" value="" /><br/><br>パスワード: <br/><br> <input name="password" type="text" value="" /><br/><br> <input type="submit" value="登録" /><br> </form>";<br> ?> </p><p> <?php<br>include_once "handler.php"; //ユーザーがログインしているかどうかを確認します</p><p>//その場合は、メインページにリダイレクトします <br>if($ user)( <br>header( "場所:index.php"); <br>出口(); <br> }</p><p>If(!empty($ _ POST ["login"])AND!empty($ _ POST ["password"])) <br> {<br>//ログインとパスワードをフィルタリングします <br>$ login = mysql_real_escape_string(htmlspecialchars($ _ POST ["login"])); <br>$ password = mysql_real_escape_string(htmlspecialchars($ _ POST ["password"]));</p><p>$ search_user = mysql_result(mysql_query( "SELECT COUNT(*)FROM` users_profiles` WHERE `username`=""。$login。""AND` password` = "" .md5($ password)。 "" ")、0 ); <br>if($ search_user == 0) <br> {<br>echo"無効な入力またはユーザーが見つかりません。"; <br>出口(); <br> } <br>そうしないと <br> {<br>//ユーザー名とパスワードをCookieに保存します <br>$ time = 60 * 60 * 24; //データをCookieに保存する期間 <br>setcookie( "username"、$ login、time()+ $ time、 "/"); <br>setcookie( "password"、md5($ password)、time()+ $ time、 "/"); <br>echo "サイトに正常にログインしました!"; <br>出口(); <br> } <br> } <br>エコー " <br> <form action="login.php" method="POST"><br>ログイン: <br /><br> <input name="login" type="text" /><br /><br>パスワード: <br /><br> <input name="password" type="password" /><br /><br> <input type="submit" value="ログイン" /><br> </form>";<br> ?> </p><p>ステップ6.ユーザーのログアウト。 <br>各ユーザーは、必要に応じてサイトからログアウトする必要があります。 これを行うには、ファイルexit.phpを作成します</p><p> <?php<br>include_once "handler.php"; //ユーザーがログインしているかどうかを確認します</p><p>//ユーザー認証を確認します <br>if($ user)( <br>setcookie( "username"、 ""、time()-1、 "/"); <br>setcookie( "password"、 ""、time()-1、 "/"); <br>session_destroy(); <br>echo "正常にログアウトしました!"; <br>) そうしないと ( <br>echo"このアクションを実行するにはログインする必要があります。"; <br> } <br> ?> </p><p>ステップ7.サイトのメインページを作成します。 <br>最後のファイルを作成しましょう--index.php</p><p> <?php<br>include_once "handler.php"; //ユーザーがログインしているかどうかを確認します</p><p>If($ user)( <br>//ユーザーの情報を表示します <br>エコー「こんにちは、 <b>"。$user["username"]。"</b>!<br /><br>- 外出 <br /><br> ";<br>) そうしないと ( <br>//ゲストの情報を表示します <br>エコー " <br>-承認 <br /><br>- 登録 <br /><br> ";<br> } <br> ?> </p><p>設定するには、.htaccessファイルを作成し、次のように入力します。 <br></p><blockquote>php_value register_globals 0 <br>php_value magic_quotes_gpc 0 <p>php_value zlib.output_compression 1</p><p>AddDefaultCharset UTF-8</p></blockquote><p>これをすべて行うのが面倒な人は、ダウンロードしてください</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> <div id="ftwp-postcontent-end"></div> </div> <div style="clear:both"></div> <div class="thn_post_wrap wp_link_pages"></div> <div id="yandex_rtb_niz" style="text-align: center;"></div> <div class="post_foot"> <div class="post_meta"></div> </div> </div> </div> <div id="ast_nextprev" class="navigation "> <span class="div_middle"><i class="fa fa-stop"></i></span> <div class="nav-box ast-prev"> <a href="https://detnadzor.ru/ja/complications/poisk-partnerov-v-selskom-hozyaistve-razvedenie-lph-kak/" rel="prev"><i class="fa fa-angle-left"></i><br><span>農業のパートナーを探す</span></a> <div class="prev_cat_name"> <a href="https://detnadzor.ru/ja/category/complications/">合併症</a></div> </div> <!-- /next_post --> <div class="nav-box ast-next"> <a href="https://detnadzor.ru/ja/for-weeks/tipovoi-dogovor-kupli-prodazhi-kvartiry-dogovor-kupli-prodazhi-kvartiry/" rel="next"><i class="fa fa-angle-right"></i><br><span>アパートの売買契約(サンプル)</span></a> <div class="next_cat_name"> <a href="https://detnadzor.ru/ja/category/for-weeks/">毎週</a></div> </div> <!-- /next_post --> </div> </div> </div> <div id="sidebar" class="home_sidebar "> <div class="widgets"> <div id="recent-posts-2" class="widget widget_recent_entries" data-widget-id="recent-posts-2"> <div class="widget_wrap"> <h3 class="widgettitle">新しいエントリ</h3> <ul> <li> <a href="https://detnadzor.ru/ja/health/obrazec-dogovora-prodazhi-tovara-po-beznalu-obrazec-dogovora-kupli-prodazhi/">法人間で締結された商品販売のサンプル契約</a></li> <li> <a href="https://detnadzor.ru/ja/ovulation/skachat-spravka-po-forme-070-u-04-spravka-dlya-polucheniya-putevki/">療養所治療のためのバウチャーを取得するためのヘルプ</a></li> <li> <a href="https://detnadzor.ru/ja/medication/zhurnal-order-15-obrazec-zapolneniya-zhurnalno-ordernye-formy/">会計のジャーナル注文形式</a></li> <li> <a href="https://detnadzor.ru/ja/planning/primer-zapolneniya-shtatnogo-raspisaniya-forma-t-3-shtatnoe-raspisanie-nyuansy/">人員配置フォームt3への記入例</a></li> <li> <a href="https://detnadzor.ru/ja/problems/tatu-odna-lyubov-na-vsyu-zhizn-muzhskie-tatu-so-smyslom-muzhskie/">意味のある男性の入れ墨-キャラクターのある男性の入れ墨</a></li> <li> <a href="https://detnadzor.ru/ja/problems/tatuirovka-moya-semya-moya-zhizn-vliyanie-tatuirovok-na-sudbu-i/">人の運命と人生に対する入れ墨の影響</a></li> <li> <a href="https://detnadzor.ru/ja/birth/tatuirovki-prinosyashchie-udachu-slavyanskie-tatu-oberegi-simvoly-dlya-muzhchin-i/">スラブの入れ墨のお守り:男性と女性のシンボル</a></li> <li> <a href="https://detnadzor.ru/ja/ovulation/tatu-bantik-znachenie-tatu-bantik-eskizy-i-foto-tatu-bantik-tatu-bantiki/">弓のタトゥー。 弓の入れ墨の意味。 弓の入れ墨のスケッチと写真。 足にタトゥーの「弓」-それらはどういう意味ですか? 太ももの弓の入れ墨</a></li> <li> <a href="https://detnadzor.ru/ja/danger/tatuirovka-bantik-tatu-bantiki-znachenie-igrivogo-izobrazheniya-na-nogah-i/">弓の入れ墨:弓の入れ墨の指定だけでなく、脚の遊び心のある画像の意味</a></li> <li> <a href="https://detnadzor.ru/ja/signs/tatu-na-shee-speredi-tatu-na-shee-tatuirovki-na-shee-u-zhenshchin-i/">首の入れ墨-女性と男性のための首の入れ墨</a></li> </ul> <span class="widget_corner"></span> <div id="roxeki1" style="height:500px;width:250px;" align="center"></div> </div> </div> <div id="text-4" class="widget widget_text" data-widget-id="text-4"> <div class="widget_wrap"> <div class="textwidget"> <div id="yandex_rtb_R-A-210521-45" class="yandex_rtb_R-A-210521-45" style="text-align: center;"></div> </div> <span class="widget_corner"></span></div> </div> </div> </div> </div> </div> </div> <a class="to_top "><i class="fa-angle-up fa-2x"></i></a> <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700&subset=cyrillic-ext" rel="stylesheet"> <link rel="stylesheet" href="/css/font-awesome.min.css"> <div class="footer_wrap layer_wrapper "> <div id="footer"> <div class="center"></div> <div id="copyright" class="soc_right copyright_center"> <div class="center"> <div class="copytext">detnadzor.ru-家族と子供に関するポータル</div> <div class="foot_right_wrap"> <div class="foot_soc"></div> </div> </div> </div> </div> </div> <!--[if lte IE 9]> <script>(function($) { $(document).ready(function() { $( '#ftwp-container' ).addClass( 'ftwp-ie9' ); } ); } )(jQuery);</script> <![endif]--> <script type="text/javascript" defer src="https://detnadzor.ru/wp-content/cache/autoptimize/js/autoptimize_d190c113c8b6a6db43f296ae02ecb197.js"></script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html>