PHP exploite la...LOGIN

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) :

idusernamepasswordcreatetimecreateip
用户编号用户名密码创建时间创建IP
5. Envoyez une déclaration et déterminez le statut

mysqli_query Comme nous l'avons dit plus haut, deux paramètres doivent être transmis :

La ressource connectée, 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);

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);

?>


section suivante

<?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); ?>
soumettreRéinitialiser le code
chapitredidacticiel