我最近和一群学生一起创建了一个网站,但遇到了一些麻烦。我们在本地主机上用php5.4创建了这个网站,它运行得很好。但现在我们想让网站上线,网络托管使用了不同版本的php(5.6)。所以现在会话没有开始。它将我们重定向到主页,但我们没有登录。我们认为这是因为php的版本,因为它一开始确实有效。
<?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;
}
}
?>
这两个文件都包括在内,但我们搞不清楚。
有人能帮忙吗?
我猜您的connect.php
没有更改为与托管公司host/user/password
匹配,因此正在输出错误消息。
当然,这意味着放在connect.php
之后的session_start()
,因此在脚本尝试向浏览器发送内容之后,将无法工作。
您只看到失败的session_start()
的结果,但我会检查connect.php
是否为其新的托管位置正确配置。