2012-10-04 130 views
0
<?php 
session_start(); 
include 'db.php'; 
include 'header.html'; 

if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['email'])) { 
    header("location:profile.php"); 

} elseif(!empty($_POST['email']) && !empty($_POST['pass'])) { 
    $email = mysql_real_escape_string($_POST['email']); 
    $pass = md5(mysql_real_escape_string($_POST['pass'])); 

    $sql = mysql_query("SELECT id, name, email, pass FROM users WHERE email='$email' AND pass='$pass'"); 

    $row = mysql_fetch_array($sql); 
    $id = $row['id']; 
    $email1 = $row['email']; 
    $name = $row['name']; 

    $num = mysql_num_rows($sql); 
    if($num == 1) { 
    $_SESSION['id'] = $id; 
    $_SESSION['email'] = $email1; 
    $_SESSION['name'] = $name; 
    $_SESSION['LoggedIn'] = 1; 
    $update = mysql_query("UPDATE users SET lastlogin=NOW() WHERE email='$email1'"); 

    header("location:profile.php"); 

    } else { 
    echo "<h1>Error</h1>"; 
    echo "<p>Sorry! Either your account could not be found or you have entered the wrong email or password. Please try again.</p>"; 
    } 
} 
?> 

此腳本在我的localhost環境中完美工作, profile.php如果會話設置爲或不爲空。有任何想法嗎?php登錄腳本在本地但在主機上不可用

第二個問題,我的代碼是否正確地將'lastlogin'更新爲當前時間?數據庫結構必須爲此做些什麼?它不在我的數據庫中更新。

謝謝你的幫助。

+0

請在腳本的頂部鍵入'error_reporting(E_ALL)'。你會看到至少 – Yang

+0

'NOW()'以這種格式返回日期和時間:「2006-04-12 13:47:36」。我認爲這是你需要的。 –

+0

@metal_fan做到了,但沒有報告錯誤。 FakeHeal謝謝您將繼續測試該部分 – robk27

回答

0

好吧,通過廣泛的搜索找出它。標頭是正在用

include header.html 

線路發送,因此無法執行

header(location: profile.php) 

線。到目前爲止,我從未聽說過這個問題。所以爲了解決這個問題,我剛剛在HTML開始之前移動到了PHP代碼的底部

<?php 
... 
include header.html 
?> 

。現在,包含標題行可以做到這一點,然後頁面仍然會加載標題。

感謝您對此的所有幫助。

+0

不知道爲什麼它仍然在我的本地主機上工作 – robk27

0
header("location: profile.php"); 
       ^//space should present because in some host environment it creates problem 
+0

actully應該使用完整的URI – 2012-10-04 04:20:44

+0

如果文件位於同一臺服務器上,則不需要完整的URI。 @Dagon –

+0

不正確,因爲[header](http://www.php.net/manual/en/function.header.php)手冊頁說:「注意: HTTP/1.1需要絕對URI作爲參數到»位置:包括方案,主機名和絕對路徑,但是一些客戶端接受相對URI。通常可以使用$ _SERVER ['HTTP_HOST'],$ _SERVER ['PHP_SELF']和dirname()相對自己:「 – 2012-10-04 04:23:43

0

如果您是從形式使用最有可能的POST重定向到登錄腳本,你不應該使用$ _ POST [「」]而不是$ _SESSION?

只是一個想法。

+0

抱歉,我沒有發佈表單部分。它直接在這個腳本的下面,我有PHP SELF的表單動作,所以它檢查POST是否爲空,然後運行登錄檢查並將數據放入會話中 – robk27

0

始終使用exit();header重定向

+0

ok會這樣做 – robk27

1

你的代碼是用於更新lastlogin非常好,但什麼是你的錯誤?請說明你得到的錯誤類型。在邏輯上你的代碼似乎是正確的,這可能是一些語法錯誤。在頁面頂部添加error_reporting(E_ALL)並查看實際發生了什麼錯誤。

+0

同時檢查錯誤的mysql_query()。 – Barmar

+0

我沒有收到任何錯誤。登錄後,它將保持在此登錄頁面上,而不是進入配置文件頁面。在我的本地主機上,它轉到配置文件頁面。使用bluehost – robk27

+0

嘗試不是標題。 – Gaurav

相關問題