Fonction de connexion (3)

Les préparatifs précédents et la page frontale de connexion sont terminés. Nous allons maintenant introduire le code de la fonction de connexion.

Créez d'abord un fichier login.php pour écrire notre code php de connexion.

La première étape consiste à vous connecter d'abord à la base de données, sinon les informations dans la base de données ne seront pas obtenues. Le code est le suivant :

<?php
$link = mysqli_connect("localhost","root","root","joke");//注意后面的这几个参数,服务器名,数据库的用户名,密码,数据库名。密码没有可以不填
if (!$link) {
    die("连接失败: " . mysqli_connect_error());
}
?>

Étape. 2 : Qu'il s'agisse d'un nom d'utilisateur ou d'un mot de passe, nous transmettons toujours la valeur au programme php via le formulaire frontal, puis nous la vérifions. Par conséquent, notre étape suivante consiste à d'abord obtenir la valeur transmise par le front-end. formulaire avant de pouvoir partir Vérifiez si c'est vrai ou faux. Le code pour obtenir la valeur est le suivant :

<?php
$username = $_POST['username'];
$password = $_POST['password'];
?>

Pourquoi publions-nous au lieu de get ? Cela nécessite de regarder le formulaire à notre réception et les informations contenues dans la balise form :

<form action="login.php" method="post">
...
</form>

action indique où les informations sont soumises et comment la méthode est transmise. Ici, nous sommes la méthode post

Étape 3 : Nous obtenons après le réglage. la valeur, vous devez vérifier si la valeur est la même que celle de la base de données. Elles doivent être les mêmes avant de pouvoir vous connecter. Le code de vérification est le suivant :

<?php
$sql="select * from login where username = '{$username}' and password  = '{$password}'";//先从数据库中查询户名和密码
$rs=mysqli_query($link,$sql); //执行sql查询
$row=mysqli_fetch_array($rs);//将查询的结果放入变量$row中
?>

Étape 4 : Après avoir interrogé les résultats, nous va lancer la vérification :

<?php
if($row) { 
     if ($username == $row['username'] && $password == $row['password']) //判断表单获取的用户名,密码和数据库中的是否一致
     { 
         echo "登陆成功,正在为你跳转至后台页面";
         header("location:index.html");//如果一致会跳转到后台的首页
     }
 }else{
     echo "账号或密码错误" . "<br/>";
     echo "<a href='login.html'>返回登陆页面</a>";//如果不一致,将重新跳转至登录页面重新登录
 }
?>

Il semble que j'ai raté quelque chose ?

...

...

Le code de vérification ne semble pas être mentionné....

Enfin, parlons du code de vérification.

Nous avons besoin d'un programme pour générer des codes de vérification. Tout d'abord, créez un fichier PHP appelé passcode.php pour écrire et générer des codes de vérification.

Ci-dessous, j'écrirai la méthode d'écriture détaillée du code de vérification. Chaque point clé et difficile sera commenté, afin que vous puissiez comprendre, prêter attention et lire le code :

<?php
//设置开启session
session_start();
$image = imagecreatetruecolor(100, 30);    //设置验证码图片大小的函数
//设置验证码颜色,用法:imagecolorallocate(int im, int red, int green, int blue);
$bgcolor = imagecolorallocate($image,255,255,255); //#ffffff
//区域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的区域着色,col 表示欲涂上的颜色
imagefill($image, 0, 0, $bgcolor);
//设置变量
$captcha_code = "";
//生成随机数字
for($i=0;$i<4;$i++){
    //设置字体大小
    $fontsize = 10;
    //设置字体颜色,随机颜色
    $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));      //0-120深颜色
    //设置数字
    $fontcontent = rand(0,9);
    //10>.=连续定义变量
    $captcha_code .= $fontcontent;
    //设置坐标
    $x = ($i*100/4)+rand(5,10);
    $y = rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
//存到session
$_SESSION['authcode'] = $captcha_code;
//增加干扰元素,设置雪花点
for($i=0;$i<200;$i++){
    //设置点的颜色,50-200颜色比数字浅,不干扰阅读
    $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));
    //imagesetpixel — 画一个单一像素
    imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
}
//增加干扰元素,设置横线
for($i=0;$i<4;$i++){
    //设置线的颜色
    $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));
    //设置线,两点一线
    imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);
}
//设置头部,image/png
header('Content-Type: image/png');
//imagepng() 建立png图形函数
imagepng($image);
//imagedestroy() 结束图形函数 销毁$image
imagedestroy($image);
?>

Si vous voulez comprendre la fonction de chacun ligne de code d'une manière vivante et spécifique, vous pouvez en parler Changez le code (essayez d'être très différent d'avant, pour que cela soit évident), puis voyez si le changement est différent d'avant De cette façon, vous. connaîtra la fonction de cette ligne de code.

L'étape suivante consiste à vérifier le code de vérification. Regardez le code :

<?php
//判断验证码是否填写并且是否正确
 if(!$_POST['code']){            //首先判断前端页面是否有验证码的值传过来,没有就提示验证码不能为空
     echo('验证码不能为空');
     return;
 }else if($_POST['code']!=$_SESSION['authcode']){   //如果有,判断是否正确
     echo('验证码不正确');
     return;
 }
?>

D'accord, c'est notre fonction de connexion complète.

Formation continue
||
<?php session_start(); header("content-type:text/html;charset=utf-8"); //连接数据库 $link = mysqli_connect("localhost","root","root","joke"); if (!$link) { die("连接失败: " . mysqli_connect_error()); } $username =$_POST['username']; $password = $_POST['password']; //判断验证码是否填写并且是否正确 if(!$_POST['code']){ echo('验证码不能为空'); return; }else if($_POST['code']!=$_SESSION['authcode']){ echo('验证码不正确'); return; } $sql="select * from login where username = '{$username}' and password = '{$password}'"; $rs=mysqli_query($link,$sql); //执行sql查询 $row=mysqli_fetch_array($rs); if($row) { // 用户存在; if ($username == $row['username'] && $password == $row['password']) { //对密码进行判断。 echo "登陆成功,正在为你跳转至后台页面"; header("location:index.html"); } }else{ echo "账号或密码错误" . "<br/>"; echo "<a href='login.html'>返回登陆页面</a>"; } // 我这里没有数据库,所以右边会显示连接失败。 ?>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel