ユーザー登録機能の実裝
最も簡単な登録ページを作成します。登録ページには 3 つのパラメータがあります:
1. ユーザー名
2. パスワード
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>
より高速なパフォーマンスを?qū)g現(xiàn)するために、コードのインターフェイスは美化されていません。早急にユーザー登録をご案內(nèi)させていただきます。
1. 繰り返されるパスワードを決定する パスワードが繰り返されるため、ユーザーが 2 回入力したパスワードが矛盾している場合は、次のステップに進む意味がありません。
ウェブページの多くの場所で、パスワードの繰り返しが今でも使用されています。ユーザーが間違いを犯すのではないかという懸念があるからです。パスワードが間違って入力されました。
ユーザーはパスワードを入力するときに、左右にさらに 2 つのスペースを入力できます。したがって、トリムを使用して、パスワードと繰り返されるパスワードの両側(cè)からスペースを削除します。
if(trim($_POST['password']) != trim($_POST['repassword'])){ exit('兩次密碼不一致,請返回上一頁'); }
2. 書き込むデータを準備しますユーザーの入力データと非表示データの両方をデータベースに書き込む必要があります。
表示されるデータは次のとおりです:
1. 不必要な情報の入力を避けるために、ユーザー名の両側(cè)のスペースを削除する必要があります。
2. mysql の章で、ユーザーのパスワードは社內(nèi)関係者を含む誰にも公開されるべきではないと述べました。パスワードが元に戻せないことを確認してください。初期段階では、MD5 を?qū)W習するだけです。將來的には他の暗號化方法も教えていきます。
不可視データには以下が含まれます:
1。REMOTE_ADDRはIPアドレスを返します。これは、ip2longを使用して整數(shù)ストレージに変換できます。
$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 はすべてのエラーを出力し、プログラムの実行を終了します。 utf8.
//データベースに接続
$conn = mysqli_connect('localhost','root','123456789');
//エラーがある場合は、エラー番號があります
if(mysqli_errno($conn)){ echo mysqli_error($conn); exit; } mysqli_select_db($conn,'book'); mysqli_set_charset($conn,'utf8');
4. SQLステートメントを組み合わせる
取得した情報をデータベースに書き込む必要があります。名前、パスワード、作成時間、IP はすべて揃っています。 対応する変數(shù)を SQL ステートメントに挿入します。結(jié)合された SQL ステートメントは次のとおりです: そして、テーブルを作成するステートメントは次のとおりです: テーブルの形式 (フィールドに対応する説明): 5. ステートメントを送信し、ステータスを確認します mysqli_query上記では、2 つのパラメーターを渡す必要があります: 1. 接続されたリソース、ここでの対応する変數(shù)は $conn です。 2. 送信された SQL ステートメント。 $sql は上ですでに準備されています。 SQL ステートメントは、mysqli_query を通じて MySQL サーバーに送信できます。正常に送信された場合、$result は true になります。それ以外の場合は false。 成功した場合は、登録が成功したことをユーザーに通知できます。 場合によっては、mysqli_insert_id() の使用も必要になる場合があります。自動インクリメントされた主キー ID をここに出力します。 皆さん、今後必要になったときに忘れないよう、この知識ポイントを覚えておいてください。 mysqli_insert_id アプリケーション シナリオ: 新しく追加されたデータ行。この ID 値を別のテーブルに挿入するときに、自動的に増加する ID 値を取得する必要があります。この機能を使用する必要があります。 5. データベース接続を閉じます リソース変數(shù)を mysqli_close 関數(shù)に渡します。 mysqli_close($conn); ユーザー登録の基本的な実裝コードが記述されました。上で説明したのはコード スニペットです。 実裝した connect.php コードは次のとおりです: $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;
$result = mysqli_query($conn,$sql);
if($result){
echo '注冊成功';
}else{
echo '注冊失敗';
}
echo '當前用戶插入的ID為'.mysqli_insert_id($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', '123456789');
//如果有錯誤,存在錯誤號
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);
?>