输入类型密码值?

时间:2012-07-30 18:47:33

标签: php javascript html forms input

您好我遇到以下问题:

我有两个输入字段。一个用于登录用户名,另一个用于密码。现在我想设置两个字段的值。我的问题是密码。我打算意识到以下几点:

HTML:

<input 
type="text"
id="log_password" 
name="log_password" 
value="<?php echo ($log_password);?>" 
onfocus="if(this.value=='Password')this.value='';this.type='password'"
onblur="if(this.value=='') this.value=this.defaultValue;"/>

PHP:

$log_password = "Password";

if(isset($_POST['submit'])){

    $log_password = $_POST['log_password'];

        if(empty($log_password)){
            $errors['log_password'][]="No password given";
            $_POST['log_password'] = "Password";
            $log_password = $_POST['log_password'];
    }       
}

问题是这可以提交表单。如果出现错误,由于type="text"标记,密码再次可见。所以我怎么能解决这个问题,如果有人可以帮助我,我真的很感激。非常感谢。

更新:

<div class="small2"> 
<?php if (!isset($errors['log_password'])):?>
<input 
type="<?= $passwordVal == "" ? "text" : "password" ?>" 
id="log_password" name="log_password" 
value="<?php echo ($log_password);?>" 
placeholder="Passwort" 
onfocus="if(this.value=='Passwort')this.value=''" 
onblur="if(this.value=='') this.value=this.defaultValue;"/>
<?php endif;?>

<?php if (isset($errors['log_password'])):?>
<input class="log-err" 
type="<?= $passwordVal == "" ? "text" : "password" ?>" 
id="log_password" name="log_password" 
value="<?php echo ($log_password);?>" 
placeholder="Passwort" 
onfocus="if(this.value=='Passwort')this.value=''" 
onblur="if(this.value=='') this.value=this.defaultValue;"/>
<?php endif;?>
</div>

5 个答案:

答案 0 :(得分:2)

使用

<input type="password" placeholder="Password" ... />

如果您 必须 将其用作文本字段(为了显示“密码”),您应该使输入类型成为条件:

<?php
    // in case of error, the value that the user entered will be passed back via GET (POST?)
    $passwordVal = isset($_GET['log_password']) ? $_GET['log_password'] : "";
?>

<!-- if ($passwordVal) is an empty string, type is "text", else type is "password". -->
<input type="<?= $passwordVal == "" ? "text" : "password" ?>" ... />

答案 1 :(得分:2)

正如马特正确建议的那样,您可以使用占位符标记。

但是为了让占位符工作,你不能设置“价值”。解决方案当然是使用条件类型,或者使用jQuery框架。你可以这样做..

<?
    $your_pass = 'bla-bla-bla';
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Test page</title>
        <!-- Load jQuery library from Google repository -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    </head>
    <body>
        <form action="#">
            <input type="password" name="log_password" id="log_password" />
        </form>
    </body>
    <script>

        $(document).ready(function() {
            /* execute this by jQuery when document is ready */

            /* must use traditional javascript to change input's type attribute */
            document.getElementById('log_password').setAttribute('type', 'text');

            /* set empty value attribute of input with id "log_password" */
            $('input#log_password').attr('val','');

            /* set placeholder attribute */
            $('input#log_password').attr('placeholder','Password');

            $('input#log_password').focus(function(){
                /* when input with id log_password is focus.. */
                $(this).attr('placeholder','');

                /* set the value as you prefer... */
                $(this).val('<?=$your_pass?>');

                /* reset type of input to password */
                document.getElementById('log_password').setAttribute('type', 'password');
            });
        });
    </script>
</html>

答案 2 :(得分:0)

我认为,如果出现错误,您需要将更改类型从'text'更改为'password'

答案 3 :(得分:0)

编写您认为是函数的代码,然后通过加载页面,焦点事件和模糊事件来调用它。 Matt的解决方案很不错,但我认为它仅限于HTML5支持的浏览器。

答案 4 :(得分:0)

文档上的脚本如何准备检查log_password值是否为密码并更改类型。

哦对不起,请看deste的帖子+1