2015-07-03 37 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