Php 检查变量是否已设置,然后加密用户帖子不起作用

Php 检查变量是否已设置,然后加密用户帖子不起作用,php,encryption,md5,Php,Encryption,Md5,在这段代码中,我想使用md5函数对用户密码进行加密但是当用户不输入任何内容时,它会回显 d41d8cd98f00b204e9800998ecf8427e 并使用isset函数修复此问题,但它不起作用请尝试以下方法: <?php $password = $_POST["password"]; if (isset($password) == true){ echo "your password = ".$password."<hr>"; echo "Encryp

在这段代码中,我想使用md5函数对用户密码进行加密
但是当用户不输入任何内容时,它会回显

d41d8cd98f00b204e9800998ecf8427e

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

请尝试以下方法:

<?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" />
';

?>
改变这个

// 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=$\u POST[“password”];
如果(isset($password)==true){
回显“您的密码=”.$password。“
”; echo“Encrypted password=“.md5($password)。”
“; }否则{ echo“请输入您的密码”; };
对此

$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($\u POST[“password”])==true){
$password=$_POST[“password”];
回显“您的密码=”.$password。“
”; echo“Encrypted password=“.md5($password)。”
“; }否则{ echo“请输入您的密码”; };
因为,当您第一次加载页面时,
$\u POST['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";
};

实际上
$\u POST
如前所述是通过HTTP POST传递给当前脚本的变量关联数组。因此,最好的做法是直接使用
$\u POST
本身和在使用它们之前检查任何预期变量的存在性

e、 g.
array\u key\u存在('password',$\u POST)
isset($_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" />
';

?>
if(数组\u键\u存在('password',$\u POST)){
$password=$_POST[“password”];
回显“您的密码=”.$password。“
”; echo“Encrypted password=“.md5($password)。”
“; }否则{ echo“请输入您的密码”; };
尝试
if(isset($password)){
而不是
if(isset($password)==true){
作为说明,您没有加密密码,只是对密码进行散列。另一个重要的说明是,MD5散列对密码是不安全的(尤其是在没有盐的情况下!)非常正确@drmavelous,@drmavelous我来这里是想说同样的事情如果变量没有定义,这将如何执行?如果(isset($\u POST[“password”])==true)很好。实际上
isset($\u POST[“password”])
检查变量是否定义/设置。你也可以像
if(isset($\u POST[“password”])那样编写
检查变量是否已设置。如果未设置,则只会加载表单。但如果已设置,则会显示密码。有时这不仅仅是关于有一个工作脚本,我仍然建议在处理任何预期变量之前检查您的
$\u POST
:)“哈希”密码,不是加密的。@dr好极了,我第一次同意了你的观点,在我的回答中,我只是在回答这个问题;)
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";
};