2016-04-15 65 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正确配置了新主机的位置