如何通过PHP登录重定向保持会话?

时间:2015-07-03 14:48:22

标签: php html session

我最近一直在尝试使用php,而我正在尝试理解会话。 到目前为止,据我所知,如果我要求登录查看某些页面/携带信息,每个页面都需要一个session_start(),但我无法弄清楚如何在登录页面后保留用户的信息。

这是我的login.php脚本:

<?php

session_start();

?>
<head>
<link rel="stylesheet" type="text/css" href="styles.css">
<link href='http://fonts.googleapis.com/css?family=Lato|Quattrocento+Sans|Oxygen|Hind|Raleway' rel='stylesheet' type='text/css'>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="career.js"></script>
</head>
<body onload="fadeUp()">
<form id="login" class="login" action="logCheck.php" method="POST">
<div id="titleArea"><img src="tampa-bay.png" class="t2"><div class="workspaceTitle">CPC <br><align ="left">WorkSpace</align></div></div>
<center>
<table class="logTable">
<tr><td colspan="2"><input type="text" class="field" value="username" onclick='javascript: this.value = ""' name="user"></td></tr>
<tr><td colspan="2"><input type="password" class="field" onclick='javascript: this.value = ""'  value="password" name="pass"></td></tr>
<tr><td></td><td colspan="2"><input type="submit" name="login" value="Login"></td></tr>
<tr><td></td><td colspan="2">Don't have an account?<a href="register.php"> Register Here</a></td></tr>
<tr><td></td><td colspan="2">Forgot your username/password?<a href="register.php"> Click Here</a></td></tr>
</table>
</center>
</form>
</body>

这是相关的登录验证(logCheck.php)脚本

if(isset($_POST['login'])){

    $username = mysqli_real_escape_string($con,$_POST['user']);

    $pass = mysqli_real_escape_string($con,$_POST['pass']);

    $sel_user = "select * from userdata where username='$username' AND password='$pass'";

    $run_user = mysqli_query($con, $sel_user);

    $check_user = mysqli_num_rows($run_user);

    if($check_user>0){
        $_SESSION['username']=$_POST['user'];

        echo "<script>window.open('careerindex.php','_self')</script>";
    }
    else {
        echo "<script>alert('Username or password is not correct, try again!')</script><script>window.open('login.php','_self')</script>";
    }
}
?>

最后,我还有一个包含在所有需要登录的页面上保存标题的包含。这是标题的会话:

<?php
session_start();
if (isset($_SESSION['username'])) {
?>
    logged in HTML and code here
<?php
} else {
?>
    Not logged in HTML and code here
<?php
}
?>

我尝试在每个页面上使用常规session_Start(),一个使用用户名的会话变量(如$_SESSION['username']=$_POST['user'];)。但我无法理解我做错了什么。有什么建议? (Ps,我试过谷歌搜索,在这里查找答案和w3学校,但建议的方法似乎没有工作)

1 个答案:

答案 0 :(得分:2)

您正在使用任何$_SESSION数据的任何地方,您需要使用session_start()启动会话,包括在标头和包含文件中,您可以从StackOverflow轻松找到各种方法来检查会话是否已经已启动,如果没有,您可以致电session_start();

只要您正确引用$_SESSION值并且您已经明确session_start();正确运行,如果您还有其他问题,那么您需要提供更具体的详细信息和代码。