2016-04-15 64 views
0

我最近和一羣學生一起創建了一個網站,但遇到了一些麻煩。 我們在php5.4的本地主機上創建了這個網站,它工作的很完美。 但現在我們想讓網站在線,並且網站主辦使用不同版本的php(5.6)。 所以現在會話不會啓動。 它將我們重定向到主頁,但我們未登錄。 我們認爲這是因爲php的版本,因爲它起初工作。PHP Session 5.4 to 5.6

<?php 
include_once 'connect.php'; 
session_start();// Starting Session 
// Storing Session 
$user_check=$_SESSION['gebruiker']; 
// SQL Query To Fetch Complete Information Of User 
$ses_sql="select email_adres from gebruiker where email_adres='".$user_check".'"; 
$row = mysqli_fetch_assoc($ses_sql); 
$login_session =$row['username']; 
if(!isset($login_session)){ 
    header('Location: login.php'); // Redirecting To Home Page 
} 
else{ 
    header('Location: acountgegevens.php'); 
} 
?> 


<?php 
include_once 'connect.php'; 
function logincheck(){ 
    if(isset($_POST['submit'])){ 

     $error = 0; 
     // declare variables 
     $email = null; 
     $password = null; 

     // check if email address has been set 
     if (isset($_POST['email_adres']) && 
      !empty($_POST['email_adres'])) { 
      $email = addslashes($_POST['email_adres']); 
     } 

     // check if password has been set 
     if (isset($_POST['password']) && !empty($_POST['password'])) { 
      $password = md5($_POST['password']); 
     } 
     if ($email == null || $password == null) { 
      $error = 1; 
     } 

     // query database for user credentials 
     $db = new PDO('**'); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     $statement = $db->prepare("SELECT * 
            FROM gebruiker 
            WHERE email_adres = :email 
            AND wachtwoord = :password 
            LIMIT 1"); 
     $statement->execute(array(':email' => $email, ':password' => $password)); 

     $result = $statement->fetch(PDO::FETCH_OBJ); 

     if (!$result) { 
      $error = 1; 
     } else { 
      session_start(); 
      $_SESSION['gebruiker'] = $email; 

      var_dump($_SESSION); 

?> 
<script>location.href='index.php'</script> 
<?php 

     } 
     return $error; 
    } 
} 
?> 

這兩個文件都包括在內,但我們不能弄明白。

有人可以幫忙嗎?

+0

'在session_start();'應在第一線。 –

+0

是的,如果包含的* connect.php *使用會話變量,'session_start()'必須是第一件事。 – Phiter

+0

您不能混合和匹配不同的數據庫連接API,可以使用'PDO'或使用'MySQLi'。 – Tom

回答

0

我會猜測您的connect.php未被更改爲與託管公司host/user/password匹配,因此正在輸出錯誤消息。

這當然意味着session_start()位於connect.php之後,因此在您的腳本嘗試向瀏覽器發送內容之後將不起作用。

你只看到失敗session_start()的結果,但我會檢查connect.php正確配置了新主機的位置