无需手动刷新页面即可将登录更改为注销

时间:2014-05-21 10:37:23

标签: php jquery html login

我的登录进度存在一些问题。它会登录,但不会手动刷新页面,也不会将登录按钮更改为注销按钮。

我有一个单页的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>

3 个答案:

答案 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>