我在Bootstrap模式中创建了一个登录表单,但是当输入正确的信息时,用户会显示相同的页面,但模式已关闭,即未重定向到viewDashboard.php
。
代码
<!-- Modal -->
<div class="modal fade" id="Modal" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="ModalLabel">Login to Portal</h4>
</div>
<div class="modal-body">
<form class="form-horizontal" action="" method="post">
<fieldset>
<div class="form-group">
<label for="inputID" class="col-lg-2 control-label">Username</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="inputID" name="user" placeholder="Username">
</div>
</div>
<div class="form-group">
<label for="inputPassword" class="col-lg-2 control-label">Password</label>
<div class="col-lg-10">
<input type="password" class="form-control" id="inputPassword" placeholder="Password">
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</fieldset>
</form>
</div>
</div>
</div>
<?php
include("core/connection.php");
if($conn AND !empty($_POST)){
$stid = oci_parse($conn, "SELECT * FROM Customers WHERE Customers.CustomerNo = ".$_POST['user']."");
oci_execute($stid);
$count = oci_fetch_all($stid, $res);
if ($count > 0) {
session_start();
$_SESSION['account'] = $_POST['account'];
header("Location: viewDashboard.php");
}
oci_free_statement($stid);
oci_close($conn);
}
?>
</div>
答案 0 :(得分:3)
如果您的用户经过了正确的身份验证,则应为他创建一个新的session
session_start();
$_SESSION['user'] = array('id' => '...', name => '...', ...);
然后,可以在您的受保护部分中使用会话中的信息来检查用户是否已连接
session_start();
if (!isset($_SESSION['user']) {
// redirect to login page
}
最后,应在使用以下方法将任何信息发送到客户端之前进行重定向:
// once logged
header('location:viewDashboard.php');
// on logout or if trying to access secured section
header('location:login.php');
编辑以反映前两条评论:
您的网页结构应如下:
//login.php
<?php
if (isset($_POST)) {
// login check
if ($isLogged) {
// session creation
header('location:...');
}
}
?>
<html>
<head>...</head>
<body>
...
<!-- Your modal box -->
</body>
</html>
如果您想在登录失败后重新打开模态框,则应使用PHP设置标志的值(例如在JS中设置标记的!$isLogged
)。如果该标志设置为true,则使用Twitter的boostrap js触发模态框。
参考文献: