2012-11-16 37 views
3

這裏第一次。讓我們希望這個作品!

我是PHP新手,嘗試創建一個站點,用戶可以在其中編輯他們自己的頁面。我的登錄系統工作到一半。它可以正確識別用戶名和密碼,但它似乎不存儲$ _SESSION變量。起初,我認爲這是因爲我試圖使用戶名(本身就是一個變量)$ _SESSION變量,但即使當我將它設置爲絕對的時候,我的代碼來檢查用戶是否已登錄將他們重定向到「你沒有登錄」頁面。這裏是我的驗證的PHP代碼:

<?php 

$host="xxxx.ipagemysql.com"; 
$username="xxxxx"; 
$password="xxxxxx"; 
$db_name="farmers"; 
$tbl_name="users"; 

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$farmeruser=$_POST['farmeruser']; 
$farmerpw=$_POST['farmerpw']; 

$sql="SELECT * FROM ".$tbl_name." WHERE farmeruser='".$farmeruser."' and farmerpw='".$farmerpw."';"; 

$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count==1){ 

session_start(); 
$_SESSION['member'] = "affirmative"; 
header("location:succesful_login.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

這裏是我的網頁,它永遠不會承認該用戶登錄:

<?php 
session_start(); 
if($_SESSION['member'] == "affirmative") 
{ 
echo 
"Welcome!"; 
} 
else { 
header('Location: http://www.leukosweb.com/user_not_recognized.php'); 
} 
?> 

任何想法,爲什麼這是不工作?

PS。我想改變用戶的登錄名稱「肯定」。如果你想幫助我在login varification頁面中使用一個變量來設置$ _SESSION'member'變量,那也是非常棒的!

+2

[請,不使用在新的代碼'mysql_ *'功能](http://stackoverflow.com/q/12859942)。它們不再被維護,並且已經開始棄用過程,請參閱[紅盒子](http://php.net/mysql-connect)。請改爲了解[準備好的語句](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://php.net/pdo)或[MySQLi](http:// php。淨/ mysqli的); [這篇文章](http://php.net/mysqlinfo.api.choosing)將幫助你決定。如果你選擇PDO,[這裏是一個很好的教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 –

+0

此外,在發出「位置」標頭後,請立即'退出;' – Phil

+0

感謝您的提示。我沒有意識到我在使用已棄用的函數。這實際上是我用過的第二個。在此之前我發現我是一個不同的已被棄用的函數,同時在之前的論壇上回答了這個問題。 –

回答

0

好,而ANAD帕爾的答案是不正確的,它讓我在正確的方向。事實證明,你必須在以下行

session.save_path = "/var/php_sessions" 

改變你的iPage帳戶的php.ini文件到

session.save_path = "/tmp" 

現在一切工作正常。謝謝!具有諷刺意味的是,它不是我自己的代碼,但ipage默認存儲會話不起作用。 <

1

session_start()需要向用戶的瀏覽器添加一個cookie,並且如果在第一個<?php之前有任何空間將被輸出到瀏覽器並且會破壞設置cookie。我將在session_start()移動到二號線

<?php 
session_start(); 

,並確保有您可以檢查您的瀏覽器的cookies,看看你是否有一個cookie PHP_SESSION或類似的沒有多餘的空間,如果你

print session_start(); 

如果會話能夠被創建,它應該返回true - 如果沒有,您可能會遇到PHP配置和創建會話的問題。

也需要對此加以糾正

header("location:succesful_login.php");

應該

+0

感謝您的提示。 @shinkou打印會話在屏幕上顯示「1」,所以我猜測它正在創建會話。我不確定你的意思是通過移動session_start();到第二行 - 不是它已經在哪裏? –

+0

oh nvm我看到你的意思是驗證頁面。 –

+0

好,試了一下,仍然沒有工作。 –

0

你需要嘗試一些東西,看看什麼錯誤。我們來看看下面的幾行。

session_start(); 
$_SESSION['member'] = "affirmative"; 
header("location:succesful_login.php"); 

註釋掉標題位置重定向。 將$ _SESSION ['member']設置爲肯定後,回顯該變量以查看其中的內容。

echo "DBUG: ".$_SESSION['member']. "<br />"; 

讓我們先測試一下,得到那個工作,然後你可以用你要求的用戶名來設置它。

$_SESSION['member'] = $farmeruser; 

但是,$ farmeruser直接來自$ _GET ...您可能想要在防止SQL注入後從行中獲取用戶名。

讓我們先檢查該代碼,然後將其設置爲查看它是否正常工作。我也想把session_start()放在頁面的頂部。將連接數據庫詳細信息放在單獨的包含文件中。

+0

是的,我計劃在我得到它的時候添加一些安全功能,現在我已經有了。原來,這是iPage的默認保存設置。 –

1

檢查會話超時時間在php.ini文件

+0

謝謝!不是答案,但它使我朝着正確的方向前進。這是ipage的php.ini文件,這是問題所在。他們的默認保存路徑不是存在的地方,除非你創建它!您必須創建確切的路徑和位置,或將ini文件更改爲您自己的某個位置=) –

1

轉到Ipage並登錄到您的帳戶。
去CGI和腳本語言支持
選擇PHP腳本
有通過按 Ctrl + F鍵和改變
`的session.save_path =找到的save_path編輯php.ini文件 「的/ var/php_sessions」'

`的session.save_path = 「/ tmp中」`

+0

謝謝!這一定是答案。 – Harsha