【问题标题】:checking if variable isset then encrypt user post not working检查变量 isset 是否加密用户帖子不起作用
【发布时间】:2015-09-30 08:43:21
【问题描述】:
<?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 函数解决了这个问题,但它不起作用

【问题讨论】:

  • 试试if (isset($password)){而不是if (isset($password) == true){
  • 请注意,您没有加密密码,而只是对其进行哈希处理。作为另一个重要说明,MD5 哈希对于密码是不安全的(尤其是没有盐!)
  • 非常真实@drmarvelous,
  • @drmarvelous 我来这里是为了说同样的话

标签: php encryption md5


【解决方案1】:

试试这个方法:

// 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

【讨论】:

    【解决方案2】:

    改变这个

    $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'] 未设置。所以加载你的表单会遇到麻烦。

    【讨论】:

    • 如果变量未定义,这将如何执行? if (isset($_POST["password"]) == true)
    • 好点。实际上isset($_POST["password"]) 检查变量是否已定义/设置。你也可以像if(isset($_POST["password"]))这样写来检查变量是否被设置。如果未设置,那么它只会加载您的表单。但如果设置,它将显示密码。
    【解决方案3】:

    此代码有效

    <?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 :)
    【解决方案4】:

    实际上$_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";
    };
    

    【讨论】:

    • “散列”密码,未加密。
    • @drmarvelous,我第一次同意你的观点,在我的回答中,我只是在回答问题;)
    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2014-02-20
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多