php - if(isset($_POST['登录']))
问题描述
对不起我的英语,我是一名法国学生。我会尝试进行 PHP 登录,但它不起作用。登录工作完美,我使用了与它相同的代码,所以这很奇怪。
让我们看看我的 login.php :
<?php
if(isset($_POST['login'])) {
extract($_POST);
echo "Connexion réussie";
if(!empty($lpassword) && !empty($lpseudo)) {
$q = $db->prepare("SELECT * FROM users WHERE pseudo = :pseudo");
$q->execute(['pseudo' => $lpseudo]);
$result = $q->fetch();
if($result == true) {
$hashpassword = $result['password'];
if(password_verify($lpassword, $hashpassword)) {
echo "Le mdp est bon, connexion en cours";
} else {
echo "Le mot de passe est incorrect";
}
} else {
echo "Le compte portant l'email " . $lmail . "n'existe pas";
}
} else {
echo "Les champs ne sont pas remplis !";
}
} else {
echo "Marche pas";
}
?>
和我的页面表格:
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<link rel="stylesheet" href="connexion_style.css" />
<title>To-Ornament - Connexion / Inscription</title>
<body>
<?php
include 'includes/database.php';
global $db;
?>
<section>
<form method="post" action="connexion.php">
<h2>Inscription</h2>
<label for="pseudo">Pseudo</label> <br>
<input type="text" name="pseudo" id="pseudo" size="50" maxlength="20" />
<br>
<label for="pass">Mot de passe</label> <br>
<input type="password" name="password" id="password" size="50"/>
<br>
<label for="conf_pass">Confirmation du mot de passe</label> <br>
<input type="password" name="cpassword" id="cpassword" size="50"/>
<br>
<label for="email">Adresse mail</label> <br>
<input type="email" name="email" id="email" size="50"/>
<br> <br>
<a href=""><input class="Inscription" type="submit" value="S'inscrire" name="formsend" id="formsend"></a>
</form>
<?php include 'includes/signin.php'; ?>
<p id="barre"></p>
<form>
<h2>Connexion</h2>
<label for="pseudo">Pseudo</label> <br>
<input type="text" name="lpseudo" id="lpseudo" maxlength="20" size="50"/>
<br>
<label for="pass">Mot de passe</label> <br>
<input type="password" name="lpassword" id="lpassword" size="50"/>
<br> <br>
<a href=""><input class="Connexion" type="submit" name="login" value="Connexion" id="login"></a>
</form>
<?php include 'includes/login.php'; ?>
</section>
</body>
</html>
我不明白如何使用 signin.php 但不能使用 login.php 因为 name=login 对我的“if(isset($_POST['login']))”也是正确的..
请快帮我!如果您需要,请向我询问更多问题
解决方案
<form>
<h2>Connexion</h2>
我认为您忘记了method="post" action="login.php"
表单中的定义。
你不应该使用extract
你无法控制的数据。如果其中有一些$_POST
您不等待的数据,它可以覆盖您已经定义的变量。一个简单的例子:
$_POST = [
'success' => true
];
$success = false;
extract($_POST);
var_dump($success); // true
推荐阅读
- sql-server - 从 0001 开始在现有表中添加新列
- java - 如何在 Java 中使用多行 lambda 表达式对 int[] 进行排序
- c# - 控制台窗口切换开关
- c++ - 如何配置 Codeblocks 在程序完成后不关闭控制台?
- c# - 即使从 NUGet 包管理器安装了最新版本,system.runtime DLL 仍指向旧版本的问题
- html - enctype="multipart/form-data" 编码错误
- php - 使用自定义价格 woocommerce 添加到购物车
- php - 在 laravel 7 中通过用户名进行身份验证
- nginx - 如何在子目录中反向代理应用程序?
- regex - 正则表达式匹配一个非空字符序列,其中有偶数个给定字符(包括 0)和任意数量的其他字符