Php HTML输入字段跳转

Php HTML输入字段跳转,php,html,forms,Php,Html,Forms,我有两个文本字段,用户和密码。当我输入密码时,它跳到第一个。我不知道为什么会这样。我不知道它为什么要跳。如何更改它以使密码表单不会跳转?代码如下: <?php session_start(); require_once 'database.php'; if (isset($_SESSION['user'])){ echo "Welcome ".$_SESSION['user']; ?> <form name="logout" method="post" action="

我有两个文本字段,用户和密码。当我输入密码时,它跳到第一个。我不知道为什么会这样。我不知道它为什么要跳。如何更改它以使密码表单不会跳转?代码如下:

<?php

session_start();
require_once 'database.php';
if (isset($_SESSION['user'])){

echo "Welcome ".$_SESSION['user'];

?>

<form name="logout" method="post" action="logout.php">

<input type="submit" name="logout" id="logout" value="Logout">

</form>

<br /><form name="news" method="post" action="news.php">

 <input type="submit" name="news" id="news" value="News">

</form>

<?php

}

elseif(isset($_SESSION['admin'])){

echo"Welcome ".$_SESSION['admin'];

echo"<br><br>You are logged in as an Admin";

?>

<form name="logout" method="post" action="logout.php">

<input type="submit" name="logout" id="logout" value="Logout">

</form>



</form>

<?php

}else{

?>

<form name="login_form" method="post" action="login2.php">

 <label>

 <input name="user" type="text" id="user">ID<br />

 <input name="pass" type="password" id="pass">Password<br />

 </label>

 <input type="submit" name="login" id="login" action="index.php" value="Login">

 </label>

 </p>

</form>

<form name="Register" method="post" action="reg.php">

 <input type="submit" name="register" id="register" value="Register">

</form><br />

<form name="news" method="post" action="news.php">

 <input type="submit" name="news" id="news" value="News">

</form>

<?php

 }

 ?>


ID
密码



将两个输入包装在一个标签中。浏览器正在变得混乱,它认为整个内容是第一次输入的标签(显然,标签就是这样工作的)。您应该只使用
包装输入文本。

您将两个输入包装在一个标签中。浏览器正在变得混乱,它认为整个内容是第一次输入的标签(显然,标签就是这样工作的)。您应仅使用
包装文本以供输入。

此:

    <label>

     <input name="user" type="text" id="user">ID<br />

     <input name="pass" type="password" id="pass">Password<br />

 </label>

ID
密码
应该是这样的:

<input name="user" type="text" id="user">
<label for="user">ID</label><br />
<input name="pass" type="password" id="pass">
<label for="pass">Password</label><br />

ID
密码
这是:

    <label>

     <input name="user" type="text" id="user">ID<br />

     <input name="pass" type="password" id="pass">Password<br />

 </label>

ID
密码
应该是这样的:

<input name="user" type="text" id="user">
<label for="user">ID</label><br />
<input name="pass" type="password" id="pass">
<label for="pass">Password</label><br />

ID
密码

另外,他有两个同名id的字段。正确的解决方案是,我喜欢在1(一)个输入周围加上
标签,因为摆弄不必要的id对可怜的老我来说太麻烦了(我可能会加上它)。但事实上,永远不要超过1。@Wrikken我也这么做。我不是有意暗示那是错的。。包装两个
s是错误的。好吧,“仅用于包装输入文本”让我当时感到困惑,很高兴澄清这一点;)@j08691具有相同名称和id的两个字段在唯一的条件内。另外,他有两个具有相同名称和id的字段。正确的解决方案,但是,我喜欢在1(一)个输入周围加上
标签
,因为摆弄不必要的id对可怜的老我来说太麻烦了(我可能会添加它的有效用途)。但事实上,永远不要超过1。@Wrikken我也这么做。我不是有意暗示那是错的。。包装两个
s是错误的。好吧,“仅用于包装输入文本”让我当时感到困惑,很高兴澄清这一点;)@j08691具有相同名称和id的两个字段处于唯一条件内。我无法重现此问题。您在哪个浏览器上观察到它?如果仅使用包含登录表单的页面进行测试,是否仍然会发生这种情况?(代码中有很多问题需要解决,但我不认为它们中的任何一个会导致问题。)–抱歉,现在我发现问题是,如果您首先单击密码字段(有点奇怪),那么Firefox会关注用户名字段(由于错误的
标签
标记)。我无法重现问题。您在哪个浏览器上观察到它?如果仅使用包含登录表单的页面进行测试,是否仍然会发生这种情况?(代码中有很多问题需要解决,但我不认为其中任何一个是导致问题的原因。)–抱歉,现在我发现问题在于,如果您首先单击密码字段(有点奇怪),那么Firefox会关注用户名字段(由于错误的
标签
标记)。