我的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: /");
}
?>
我已经标记了我添加的代码``这已添加了',所以你可以看到哪些部分打破它但我不明白为什么会发生这种情况。
答案 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]);
}
你绑定了所有帖子项目,但只需要两个user
和pass
,所以要保持两者不分开,不要像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
中有一个拼写错误:结束标记不是结束标记(缺少斜杠)。