PHP exploite la base de données à travers des étapes pour enregistrer un utilisateur
Nous créons la page d'inscription la plus simple. Il y a trois paramètres dans la page d'inscription :
1. Nom d'utilisateur
2. Mot de passe
3. Répéter le mot de passe
L'utilisateur écrit trois Après les paramètres, lorsque vous cliquez sur Soumettre, transmettez l'enregistrement POST à la page connect.php.
Nous pouvons traiter l'enregistrement POST et l'écrire dans la base de données MySQL, ce qui complète l'enregistrement de l'utilisateur.
Le code est le suivant :
<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>
Afin d'obtenir des performances plus rapides, notre interface de code n'a pas été embellie. Nous vous guiderons dans l’enregistrement des utilisateurs le plus rapidement possible.
1. Déterminer les mots de passe répétés
En raison de mots de passe répétés, si les mots de passe saisis deux fois par l'utilisateur sont incohérents, cela signifie que l'utilisateur n'est pas passé à l'étape suivante.
Des mots de passe répétés sont encore utilisés à de nombreux endroits de la page Web. Car la crainte est que les utilisateurs fassent des erreurs. Le mot de passe n'a pas été saisi correctement.
Les utilisateurs peuvent saisir deux espaces supplémentaires sur les côtés gauche et droit lors de la saisie de leur mot de passe. Par conséquent, nous utiliserons trim pour supprimer les espaces des deux côtés des mots de passe et des mots de passe répétés.
if(trim($_POST['password']) != trim($_POST['repassword'])){ exit('两次密码不一致,请返回上一页'); }
2. Préparez les données à écrire
Nous devons écrire à la fois les données saisies par l'utilisateur et les données cachées dans la base de données.
Les données visibles sont :
变量 | 说明 |
---|---|
$_POST['username'] | 用户名 |
$_POST['password'] | 密码 |
Nous devons supprimer les espaces de part et d'autre du nom d'utilisateur pour éviter de saisir des informations inutiles.
Comme nous l'avons mentionné dans le chapitre mysql, le mot de passe de l'utilisateur ne doit être visible par personne, y compris les internes de l'entreprise. Assurez-vous que le mot de passe est irréversible. Au stade initial, apprenez simplement MD5. Nous vous apprendrons d’autres méthodes de cryptage à l’avenir.
Les données invisibles incluent :
变量 | 说明 |
---|---|
$time | 用户的注册时间 |
$_SERVER['REMOTE_ADDR'] | 用户的注册IP |
1. L'horodatage unix renvoyé par time
2. REMOTE_ADDR renvoie l'adresse IP, nous pouvons utiliser ip2long pour la convertir en stockage entier.
$username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = ip2long($_SERVER['REMOTE_ADDR']);
3. Connexion à la base de données, jugement des erreurs, sélection des bibliothèques et des jeux de caractères
1. Nous utilisons mysqli_connect pour nous connecter à la base de données. serveur.
2. S'il y a une erreur, utilisez mysqli_errno pour obtenir le numéro d'erreur
3 S'il y a une erreur, mysqli_error affiche toutes les erreurs et quitte l'exécution du programme
<🎜. >4. Sélectionnez la base de données et définissez le jeu de caractères sur 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 Combinez les instructions SQL
Nous devons écrire le résultat obtenu. informations dans la base de données, nous avons obtenu le nom d'utilisateur, le mot de passe, l'heure de création et l'adresse IP. Insérez simplement les variables correspondantes dans l'instruction SQL. L'instruction SQL combinée est la suivante :$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";Et notre instruction pour créer la table est la suivante :
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;Format de la table (champ description correspondant) :
id | username | password | createtime | createip |
---|---|---|---|---|
用户编号 | 用户名 | 密码 | 创建时间 | 创建IP |
$result = mysqli_query($conn,$sql); if($result){ echo '注册成功'; }else{ echo '注册失败'; } echo '当前用户插入的ID为'.mysqli_insert_id($conn);5. Fermez la connexion à la base de données Passez la variable de ressource à la fonction mysqli_close.
mysqli_close($conn);Le code d'implémentation de base pour l'enregistrement des utilisateurs a été écrit. Ce dont nous avons parlé ci-dessus, ce sont des extraits de code. Le code connect.php que nous avons implémenté est le suivant :
<?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); ?>