2010-07-28 69 views
1

我剛開始到MySQL和PHP - 我只是想創建一個我們正在測試一個項目一個簡單的登錄系統。我已經連接並創建了登錄邏輯,但現在我無法將會話變量傳遞給新頁面。有人能告訴我正確的方法嗎?PHP會話變量 - 在束手無策

這裏是我的登錄腳本 - 這是通過提交表單啓動:

<?php 
session_start(); 

$link = mysql_connect('xxxxxxx.ipowermysql.com', 'xxxxxx', 'xxxxxx'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db(austinhabich_IC_20090511_174535) or die(msql_error()); 

$email=$_POST['email']; 
$password=$_POST['password']; 

$sql="SELECT * FROM player WHERE email='$email' and password='$password'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count==1){ 

$_SESSION['status'] = "1";  

header("location: main.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

,這裏是它重定向到頁面:

<?php session_start(); ?> 
...doctype stuff... 

<html 
xmlns="http://www.w3.org/1999/xhtml"> 
<head> <meta http-equiv="Content-Type" 
content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 

<? 
echo $_SESSION['status']; 

?> </body> </html> 

在這種情況下,我只是試圖甚至讓會話變量註冊,所以我試圖通過試圖打印變量的數據進行測試。我一直在嘗試使用isset,並將其重定向回登錄頁面。重定向工作,但它每次都發生,因爲會議變量沒有註冊。

優化版本PHP 5.2.12是

+0

看起來您沒有在第一頁中調用'session_start'。除非您調用它,否則您將無法設置任何會話變量。 – porges 2010-07-28 21:54:10

回答

0

在快速瀏覽,三件事情:

  • 你似乎缺少在第一個腳本session_start()

  • 如果該帳戶在該表中,它可以同時測試時有發生存在兩次或以上,您會得到「錯誤的用戶名」。

  • 在做header()重定向後,您應該die()

  • austinhabich_IC_20090511_174535需要投入的報價。

  • session_start();需要在腳本的頭部被調用,之前的任何HTML輸出。

  • 你的SQL語句很容易受到SQL注入。在查詢中使用之前,應使用mysql_real_escape_string迫切地對傳入數據進行消毒處理

+0

對 - 我不小心把session_start();在我的代碼示例中登錄腳本的頂部。即使在那裏,我仍然無法獲得會話變量註冊... – user405056 2010-07-28 21:54:36

+0

我也把<?在session_start(); ?>作爲最後一頁的第一行 - 當然,從它的原始位置刪除它,也無濟於事...... – user405056 2010-07-28 21:56:52

+0

@user奇怪,然後我不知道是什麼原因。我補充說,在開始任何事情之前,你應該注意一點。 – 2010-07-28 21:59:05