将<select>添加到HTML登录表单中断。为什么?</选择>

时间:2014-12-19 10:52:46

标签: php html

我的HTML登录表单工作了一段时间,但现在我需要添加<select>

问题是,一旦我添加登录表单中断。

  <form action="" class="form-signin" method="post" role="form">
    <h2 class="form-signin-heading">Sign In</h2>
    <input type="text" class="form-control" name="user" id="user" placeholder="User" required autofocus>
    <input type="password" class="form-control" name="pass" id="pass" placeholder="Pass" required>
    <select class="form-control" id="site" name="site">  // This has been added
      <option value="Company A">Company A</option>
      <option value="Company B">Company B</option>
      <option value="Company C">Company C</option>
    </select> 
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
  </form>

  <?php
   $dbh = new PDO('sqlite:database.sqlite');

   $stmt = $dbh->prepare("SELECT COUNT(*) FROM users WHERE user = :user AND pass = :pass");

   foreach ($_POST as $key => $value) {
     $stmt->bindParam("$key", $_POST[$key]);
   }

   $stmt->execute();

   if ( $stmt->fetchColumn() > 0 ) {
     session_start();
     $_SESSION['active'] = 1;
     $_SESSION['site'] = $_POST['site']; // This has been added
     $_SESSION['user'] = $_POST['user'];
     header("Location: /");
   }
  ?>

我已经标记了我添加的代码``这已添加了',所以你可以看到哪些部分打破它但我不明白为什么会发生这种情况。

5 个答案:

答案 0 :(得分:2)

此行代码的原因

$stmt = $dbh->prepare("SELECT COUNT(*) FROM users WHERE user = :user AND pass = :pass");
foreach ($_POST as $key => $value) {
  $stmt->bindParam("$key", $_POST[$key]);
}

你绑定了所有帖子项目,但只需要两个userpass,所以要保持两者不分开,不要像foreach那样绑定。

$stmt = $dbh->prepare("SELECT COUNT(*) FROM users WHERE user = :user AND pass = :pass");
$stmt->bindParam(":user", $_POST['user']);
$stmt->bindParam(":pass", $_POST['pass']);

如果html在选择原因中看起来很奇怪(缺少关闭选项) 所以替换

<option value="Company A">Company A<option>

<option value="Company A">Company A</option>

答案 1 :(得分:0)

变化

  <option value="Company A">Company A<option>

  <option value="Company A">Company A</option>

答案 2 :(得分:0)

您没有正确关闭第一个选项。

<option value="Company A">Company A<option>

应该是:

<option value="Company A">Company A</option>

答案 3 :(得分:0)

请更改此

<option value="Company A">Company A<option>

<option value="Company A">Company A</option>

答案 4 :(得分:0)

第一个option中有一个拼写错误:结束标记不是结束标记(缺少斜杠)。