2015-07-03 28 views
0

我最近一直在用php做实验,我正在尝试理解会话。 到目前为止,我明白每个页面需要一个session_start(),如果我需要登录来查看某些页面/携带信息,但我无法弄清楚如何在登录页面后保留用户的信息。如何通过PHP登录重定向进行会话?

这里是我的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

资源我试过了:http://www.formget.com/login-form-in-php/ http://phppot.com/php/php-login-script-with-session/ http ://stackoverflow.com/questions/16889995/simple-login-session-php http://www.homeandlearn.co.uk/php/php14p2.html 和http://stackoverflow.com/questions/10097887/ php-login-script – motoko96

+2

你必须在logCheck.php中有'session_start()'来处理$ _SESSION变量 – Toumash

回答

2

任何地方你使用任何$_SESSION数据,你需要启动会话session_start(),包括在头文件和包含文件,你可以很容易地从StackOverflow找到各种方法来检查一个会话是否已经启动,如果没有,你可以调用session_start();

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

+0

非常感谢!出于某种原因,我无法将我的想法包括在会议应该如何开始/停留。感谢您花时间向像我这样的新手解释它:P – motoko96

+0

每个人都是小菜一次 – Martin

+0

@ motoko96尝试这里:http://stackoverflow.com/a/18542272/3536236会话检查,然后开始:) – Martin