【问题标题】:Add class in HTML with PHP使用 PHP 在 HTML 中添加类
【发布时间】:2022-01-11 17:30:13
【问题描述】:

我有一个带有电子邮件和密码验证的表单。当密码错误时,password 框必须是红色的,以表明出现问题,我这样做是添加一个 "vermei" 类。

我必须在 PHP 中这样做,已经尝试过:

$dom=new DOMDocument;
$dom->loadHTML($html);
$input=$dom->getElementById('password');
foreach($input as $pd){
    $pd->setAttribute('class', $pd->getAttribute('class').' vermei');
}
$html = $dom->saveHTML(); // return 'variable $html not found'

echo '<script>
        alert("Password Incorrect!");
        history.go(-1); //work until this part, the code below do not run. 
 //I did this go back cuz when form is submitted, go to config.php, and
 // this code back to sign in page
        var password = document.getElementById("password");
        document.getElementById("password").focus();
        password.classList.add("vermei");
    </script>';

有人可以帮我在密码输入中添加"vermei" 类吗?

【问题讨论】:

  • 还有什么问题?
  • getElementById 只返回一个元素,而不是一个列表。你不需要循环。
  • @daremachine 两个代码都没有在 html 中添加 vermei 类,什么也没有发生
  • 这些方法对我来说都没有意义。在第一种方法中,您似乎要覆盖 HTML 文件,您何时以及为什么要这样做?而在第二种方法中,您会立即将用户重定向回上一页,因此在此之后运行的任何代码都没有实际意义。您在哪里执行密码输入的验证?我不清楚这里的整体逻辑流程是什么。但如何更新 UI 将完全取决于此。
  • 顺便说一句...如果这是一个登录表单,那么您不应该告诉他们哪个输入不正确。用户应该知道的是登录失败。告诉他们用户名是正确的,但密码不是给攻击者信息。信息不多,而且他们可能会获得其他信息,但最好不要养成向未经身份验证的用户提供信息的习惯。

标签: javascript php html


【解决方案1】:

您的第一个代码不起作用,因为$input 是单个元素,而不是列表,因此您不能循环遍历它。将循环替换为:

$input->setAttribute("class", $input->getAttribute("class") . " vermei");

通常您会在输出表单的代码中执行此操作,例如

<form>
    ...
    Password: <input id="password" type="password" name="password" <?php if ($password_incorrect) echo 'class="vermei"'; ?>>
    ...
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2020-11-20
    • 2013-06-12
    相关资源
    最近更新 更多