检查变量是否设置然后加密用户 post 不工作

checking if variable isset then encrypt user post not working

<?php

$password = $_POST["password"];

if (isset($password) == true){
    echo "your password = ".$password."<hr>";
    echo "Encrypted password = ".md5($password)."<hr>";
}else{
    echo "please enter your password";
};

echo'
<form action="index.php" method="post" >
password : <input type="password" name="password">
<input type="submit" />
';

?>

在这段代码中我想使用 md5 函数加密用户密码
但是当用户什么都不输入时它回显

d41d8cd98f00b204e9800998ecf8427e

并使用 isset 函数修复此问题,但它不起作用

试试这个方法:

// set the variable if it was given, otherwise emtpy
$password = array_key_exists('password', $_POST) ? $_POST['password'] : '';

// confirm this is not an empty string
if ($password != '') {
// ... the rest

改变这个

$password = $_POST["password"];

if (isset($password) == true){
    echo "your password = ".$password."<hr>";
    echo "Encrypted password = ".md5($password)."<hr>";
}else{
    echo "please enter your password";
};

至此

if (isset($_POST["password"]) == true){
    $password = $_POST["password"];
    echo "your password = ".$password."<hr>";
    echo "Encrypted password = ".md5($password)."<hr>";
}else{
    echo "please enter your password";
};

因为,当您第一次加载页面时,$_POST['password'] 未设置。所以加载你的表单会遇到麻烦。

此代码有效

<?php

$password = $_POST["password"];

if ($password == ""){ 
    echo "please enter your password";
}else{
    echo "your password = ".$password."<hr>";
    echo "Encrypted password = ".md5($password)."<hr>";
};

echo'
<form action="index.php" method="post" >
password : <input type="password" name="password">
<input type="submit" />
';

?>

实际上 $_POST 正如所解释的 here 是通过 HTTP POST 传递给当前脚本的变量的关联数组。因此,直接使用 $_POST 本身和 使用它们

之前检查是否存在任何预期变量是一种很好的做法

例如array_key_exists('password', $_POST);isset($_POST['password']);

换句话说,您脚本中的条件可以更改为:

if (array_key_exists('password', $_POST)){
    $password = $_POST["password"];
    echo "your password = ".$password."<hr>";
    echo "Encrypted password = ".md5($password)."<hr>";
}else{
    echo "please enter your password";
};