Nous réaliserons la page d'inscription la plus simple. Il y a trois paramètres dans la page d'inscription :
Nom d'utilisateur
Mot de passe
Mot de passe en double
Une fois que l'utilisateur a écrit les trois paramètres, lorsqu'il clique sur Soumettre, l'enregistrement POST est transmis à 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 si le mot de passe a été saisi. Toute idée de 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 :
Variable
| Description<🎜> < br/> | ||||||
$_POST['username'] <🎜> | Nom d'utilisateur <🎜> | ||||||
$_POST['mot de passe'] <🎜>< br/> | Mot de passe<🎜> <🎜> |
Nous devons supprimer les espaces des deux côtés 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 :
Variable span>
| Description<🎜> | ||||||
$time<🎜> | Heure d'inscription de l'utilisateur<🎜> | ||||||
IP enregistrée de l'utilisateur |
L'horodatage Unix renvoyé par time
REMOTE_ADDR renvoie l'adresse IP, que nous pouvons utiliser ip2long pour convertir en stockage entier.
$username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = ip2long($_SERVER['REMOTE_ADDR']);
3. Connectez-vous à la base de données, jugez les erreurs, sélectionnez la bibliothèque et le jeu de caractères
Nous utilisons mysqli_connect pour nous connecter au serveur de base de données.
S'il y a une erreur, utilisez mysqli_errno pour obtenir le numéro d'erreur
Quand il y a une erreur, mysqli_error affiche toutes les erreurs et quitte l'exécution du programme
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. Combinaison d'instructions SQL
Nous devons écrire les informations obtenues dans la base de données. Nous avons 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
| < td width=" 193" valign="top">nom d'utilisateur<🎜>mot de passe<🎜> | createtime<🎜> | createip<🎜> | ||||||||||
Numéro d'utilisateur< 🎜> | Nom d'utilisateur <🎜> >< /td> | Mot de passe <🎜> | Heure de création<🎜> | <🎜>Créer une adresse IP <🎜> <🎜><🎜>< /td> |
5. Envoyez une déclaration et déterminez le statut
mysqli_query Comme nous l'avons dit ci-dessus, deux paramètres doivent être transmis :
Ressources connectées, la variable correspondante ici est $conn.
L'instruction SQL envoyée. $sql est déjà préparé ci-dessus.
Les instructions SQL peuvent être envoyées au serveur MySQL via mysqli_query. $result est vrai s'il est envoyé avec succès. Sinon faux.
En cas de succès, nous pouvons informer l'utilisateur que l'inscription a réussi.
Dans certains cas, il peut être nécessaire d'utiliser mysqli_insert_id(). Imprimez ici l’ID de la clé primaire auto-incrémentée.
N'oubliez pas ce point de connaissance pour éviter de l'oublier en cas de besoin à l'avenir.
Scénario d'application mysqli_insert_id : une ligne de données nouvellement ajoutée. Nous devons obtenir la valeur d'ID en croissance automatique lors de l'insertion de cette valeur d'ID dans une autre table. Vous devez utiliser cette fonction.
$result = mysqli_query($conn,$sql); if($result){ echo '注册成功'; }else{ echo '注册失败'; } echo '当前用户插入的ID为'.mysqli_insert_id($conn);
6. 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); ?>