2013-01-16 67 views
-2

我不知道爲什麼$ _SESSION數據沒有得到店遠程服務器上。雖然,在本地主機上,一切正常。請閱讀評論,找出錯誤的地方。謝謝你的幫助。

signin.php

<?php 
    session_start(); 

    if((isset($_POST['go']))){ 

    require_once('dbc.php'); 

    $corp= $_POST['corp'];   //get account type 
    $eemail =$_POST['eemail'];  //get user email 
    $dpassword=$_POST['dpassword']; //get user password 

    //if valid form 
    if(empty($e)){ 

    $md5pass = md5($dpassword); 
$dbc = mysqli_connect(HOST,NAME,PASSWORD,DATABASE) or die('Error can not connect to database'); 
    //find user in corporate table 
$q="SELECT * FROM corporate WHERE (email='$eemail' AND password='$md5pass' AND activated = 1)"; 

$result= mysqli_query($dbc,$q) or die("Error: ".mysqli_error($dbc)); 

if(@mysqli_num_rows($result) == 1) 
    { 

     $_SESSION = mysqli_fetch_array($result, MYSQLI_ASSOC); 

     //set cookie 
     setcookie('lname', $_SESSION['lname'], time()+1800); 
     setcookie('fname',$_SESSION['fname'],time()+1800); 

    //if no headers sent, send one 
    if(!headers_sent()) 
     {       
    header("Location: http://www.limozoor.com/login/homepage.php"); 
    exit; 
    } 
    } 

//no result 
if(@mysqli_num_rows($result) == 0) 
{ 
echo "<p style='color:red'>Invalid Corporation Account.Try again</p>"; 
}//end if 
} 
?> 

homepage.php

<?php 
session_start(); 
if(!isset($_SESSION['lname'])) 
{ 
    header("Location: ../index.php"); 
exit; 
} 
    ?> 
    //session is set 
    <?php 
    include("dbc.php"); 
    $dbc = mysqli_connect(HOST,NAME,PASSWORD,DATABASE,3306) or die('Error can not connect to database'); 
//other stuff I need to do 
?> 
+1

你需要解釋一下你所看到的,你所期望看到的,然後問一個具體問題是什麼。 *「調試我的代碼」*在這裏通常不受歡迎。 – Madbreaks

+0

備註:您應該使用準備好的語句。你的查詢處於當前狀態很容易被sql注入。 – Supericy

回答

0

嘗試改變報頭重定向作爲會話cookie可能無法之間www.limozoor.com和limozoor.com路過。

//if no headers sent, send one 
if(!headers_sent()) 
    {       
    header("Location: http://limozoor.com/login/homepage.php"); // notice no www 
    exit; 
    } 
+0

從http://limozoor.com開始測試。 –

+0

這工作!謝謝。 – user1596616

-4

此:

if((isset($_POST['go']))){ 

Shoulb是:

if(isset($_POST['go'])) 
    { 

你應該上的密碼不使用md5()對密碼進行加密一個很好的教程去:

Hashing and Salting a Password

+2

額外的括號對任何邏輯絕對 – Madbreaks

+0

們尚未軸承,但他們是不正確的。 –

+1

它們怎麼不正確? 'if((isset(...)))' – Supericy

0

我懷疑這樣做的:

$_SESSION = mysqli_fetch_array($result, MYSQLI_ASSOC); 

就是問題所在。這不是編輯PHP所具有的$_SESSION數組,因此在請求結束時更改會丟失。嘗試將值插入會話中。

+0

我不認爲這會很重要,因爲登錄是第一次使用$ _SESSION。任何會話的其他用途都會被肯定插入一個關鍵字? 但是,首先使用密鑰會更好。 $ _SESSION ['user'] [] = mysql_fetch ... –