PHP はユーザーを登録する手...LOGIN

PHP はユーザーを登録する手順を通じてデータベースを操作します。

最も簡単な登録ページを作成します。登録ページには 3 つのパラメータがあります:

1. ユーザー名

2. パスワード

3. パスワードを繰り返します

ユーザーが 3 つのパラメータを書き込んだ後、送信をクリックすると、POST レコードが connect.php に渡されます。ページ。

POST レコードを処理して MySQL データベースに書き込むと、ユーザー登録が完了します。

コードは次のとおりです:

<form action="connect.php" method="post">
    用户名:<input type="text" name="username"><br />
    密码:<input type="password" name="password"><br />
    重复密码:<input type="password" name="repassword"><br />
    <input type="submit" value="提交">
</form>

より高速なパフォーマンスを実現するために、コードのインターフェイスは美化されていません。早急にユーザー登録をご案内させていただきます。

1. 繰り返されるパスワードを決定する

パスワードが繰り返されるため、ユーザーが 2 回入力したパスワードが矛盾している場合は、次のステップに進む意味がありません。

ウェブページの多くの場所で、パスワードの繰り返しが今でも使用されています。ユーザーが間違いを犯すのではないかという懸念があるからです。パスワードが間違って入力されました。

ユーザーはパスワードを入力するときに、左右にさらに 2 つのスペースを入力できます。したがって、トリムを使用して、パスワードと繰り返されるパスワードの両側からスペースを削除します。

if(trim($_POST['password']) != trim($_POST['repassword'])){
    exit('两次密码不一致,请返回上一页');
}

2. 書き込むデータを準備します

ユーザーの入力データと非表示データの両方をデータベースに書き込む必要があります。

表示されるデータは次の通りです:

パスワード不必要な情報の入力を避けるために、ユーザー名の両側のスペースを削除する必要があります。 mysql の章で、ユーザーのパスワードは社内関係者を含む誰にも公開されるべきではないと述べました。パスワードが元に戻せないことを確認してください。初期段階では、MD5 を学習するだけです。将来的には他の暗号化方法も教えていきます。 非表示データには以下が含まれます: 説明$time
変数
ユーザーの登録時刻

$_SERVER['REMOTE_ADDR']

ユーザーの登録IP


1. time によって返される UNIX タイムスタンプ

2. REMOTE_ADDR は IP アドレスを返します。ip2long を使用してそれを整数ストレージに変換できます。

$username = trim($_POST['username']);
$password = md5(trim($_POST['password']));
$time = time();
$ip = ip2long($_SERVER['REMOTE_ADDR']);

3. データベースへの接続、判定エラー、ライブラリと文字セットの選択

1. mysqli_connect を使用してデータベースサーバーに接続します。

2. エラーがある場合は、mysqli_errno を使用してエラー番号を取得します

3. エラーがある場合、mysqli_error はすべてのエラーを出力し、プログラムの実行を終了します

4. データベースを選択し、文字セットを設定します。 utf8.

//连接数据库
$conn = mysqli_connect('localhost','root','liwenkaihaha');
//如果有错误,存在错误号
if(mysqli_errno($conn)){
    echo mysqli_error($conn);
    exit;
}
mysqli_select_db($conn,'user');
mysqli_set_charset($conn,'utf8');

4. SQL ステートメントを結合します

ユーザー名、パスワード、作成時刻、IP を取得しました。

対応する変数を SQL ステートメントに挿入します。結合された SQL ステートメントは次のとおりです:

$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";

そして、テーブルを作成するステートメントは次のとおりです:

CREATE TABLE IF NOT EXISTS user (
id int(11) NOT NULL,
username varchar(30) NOT NULL,
password char(32) NOT NULL,
createtime int(11) NOT NULL,
createip int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

テーブルの形式 (フィールドに対応する説明):

idusernamepasswordcreatetime createip
ユーザー番号ユーザー名パスワード作成時間作成IP

5. ステートメントを送信しステータスを決定する

my sqli_query 上で述べたように、2 つのパラメータが必要です。渡されるもの:

接続されたリソース、ここでの対応する変数は $conn です。

送信された SQL ステートメント。 $sql は上ですでに準備されています。

SQL ステートメントは、mysqli_query を通じて MySQL サーバーに送信できます。正常に送信された場合、$result は true になります。それ以外の場合は false。

成功した場合は、登録が成功したことをユーザーに通知できます。

場合によっては、mysqli_insert_id() の使用も必要になる場合があります。自動インクリメントされた主キー ID をここに出力します。

皆さん、今後必要になったときに忘れないよう、この知識ポイントを覚えておいてください。

mysqli_insert_id アプリケーション シナリオ: 新しく追加されたデータ行。この ID 値を別のテーブルに挿入するときに、自動的に増加する ID 値を取得する必要があります。この機能を使用する必要があります。

$result = mysqli_query($conn,$sql);
if($result){
    echo '注册成功';
}else{
    echo '注册失败';
}
echo '当前用户插入的ID为'.mysqli_insert_id($conn);

5. データベース接続を閉じます

リソース変数を mysqli_close 関数に渡します。

mysqli_close($conn);

ユーザー登録の基本的な実装コードが書かれました。上で説明したのはコード スニペットです。

実装した connect.php コードは次のとおりです:

<?php

if (trim($_POST['password']) != trim($_POST['repassword'])) {

   exit('两次密码不一致,请返回上一页');

}

$username = trim($_POST['username']);

$password = md5(trim($_POST['password']));

$time = time();

$ip = $_SERVER['REMOTE_ADDR'];

$conn = mysqli_connect('localhost', 'root', 'liwenkaihaha');

//如果有错误,存在错误号
if (mysqli_errno($conn)) {

   echo mysqli_error($conn);

   exit;
}

mysqli_select_db($conn, 'book');

mysqli_set_charset($conn, 'utf8');

$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";

$result = mysqli_query($conn, $sql);

if ($result) {
   echo '成功';
} else {
   echo '失败';

}

echo '当前用户插入的ID为' . mysqli_insert_id($conn);

mysqli_close($conn);

?>


次のセクション
<?php if (trim($_POST['password']) != trim($_POST['repassword'])) { exit('两次密码不一致,请返回上一页'); } $username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = $_SERVER['REMOTE_ADDR']; $conn = mysqli_connect('localhost', 'root', 'liwenkaihaha'); //如果有错误,存在错误号 if (mysqli_errno($conn)) { echo mysqli_error($conn); exit; } mysqli_select_db($conn, 'book'); mysqli_set_charset($conn, 'utf8'); $sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')"; $result = mysqli_query($conn, $sql); if ($result) { echo '成功'; } else { echo '失败'; } echo '当前用户插入的ID为' . mysqli_insert_id($conn); mysqli_close($conn); ?>
コースウェア
    なし