我的登录进度存在一些问题。它会登录,但不会手动刷新页面,也不会将登录按钮更改为注销按钮。
我有一个单页的jquery插件,可以使页面紧凑,尽管它不会将每个脚本与每个部分隔离开。
这是我的页面; http://adam-norbacker.ostersjo.nu/
用户名:test 密码:密码
现在这里有关于问题的插件和脚本: https://github.com/davist11/jQuery-One-Page-Nav
登录/退出按钮:
<div id="menu" class="default">
<ul id="nav">
<?php
session_start();
if(isset($_SESSION['username'])){
$content_hash_name = $_GET['menu'];
if($content_hash_name == 'section-8');
echo "<li><a href='logout.php' class='external'>logout</a></li>";
}else{
echo "<li><a href='#section-8'>login</a></li>";
}
?>
</ul>
</div>
登录脚本:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST' ) {
$username = trim(htmlentities(mysql_real_escape_string($_POST['username'])));
$password = trim(htmlentities(mysql_real_escape_string($_POST['password'])));
if (!empty($username) && !empty($password)) {
$_SESSION['username'] = $username;
echo "<br/> welcome ", $username;
} else {
echo "Please enter correct username or password";
}
} else {
echo "please Login";
}
?>
<h1>Login</h1>
<form action="" onSubmit="" method="post">
<label>User Name :</label>
<input type="text" name="username" /><br />
<label>Password</label>
<input type="password" name="password" /><br />
<input type="submit" value="Login" name="submit"/>
</form>
</div>
答案 0 :(得分:0)
你不必使用jQuery来做这件事。只需确保在输出HTML之前执行PHP脚本:
// check login here
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST' ) {
$username = trim(htmlentities(mysql_real_escape_string($_POST['username'])));
$password = trim(htmlentities(mysql_real_escape_string($_POST['password'])));
if (!empty($username) && !empty($password)) {
$_SESSION['username'] = $username;
$message = "<br/> welcome ", $username;
} else {
$message = "Please enter correct username or password";
}
} else {
$message = "please Login";
}
?>
// here is the menu
// here you can echo any messages that comes from login attempt
if (isset($message)) {
echo $message;
}
// and the login form
确保在渲染视图之前完成整个PHP操作。
答案 1 :(得分:0)
用户按下登录按钮后,运行此php脚本重新加载页面。
header("Location:yourpath/yourhomepage.php")
如果你打算在php而不是jquery中使用登录验证。您必须要求重新加载页面。
答案 2 :(得分:0)
唯一的方法是使用Javascript,因为PHP代码已经被解析了。
最简单的方法是使用jQuery并对PHP页面进行AJAX调用。 这是代码:
<script type="text/javascript">
$(document).ready(function(){
$("#loginBtn").click(function(){
var username = $("#username").val();
var password = $("#password").val();
$.ajax({
url: 'login.php',
type: 'POST',
data: {username: username, password: password},
dataType: 'json',
success: function(response){
// Success
$("#loginBtn").hide();
$("#logoutBtn").show();
},
error: function(response){
// Error
}
});
return false;
});
$("#logoutBtn").click(function(){
$("#logoutBtn").hide();
$("#loginBtn").show();
return false;
});
});
</script>
<input type="text" value="" id="username" />
<input type="password" value="" id="password" />
<button id="loginBtn">Login</button>
<button id="logoutBtn" style="display:none;">Logout</button>