我花了几个小时为项目的网站寻找合适的免费网络托管服务。它没有什么过于花哨的东西,并不包括MySQL数据库连接和非常简单的登录系统。但是,我还没有找到一个能让网站正常运行的托管服务(一切都在本地工作正常)。
特别是,登录脚本无法在线工作(两个网络托管服务类似的问题,Byethost和Web4Free.eu
<?php
error_reporting(E_ALL);
session_start();
include "db-connect.php";
if (isset($_GET['login'])) {
$login = $_GET['login'];
if ($login == 1 && isset($_POST['email']) && isset($_POST['password'])) {
$email = $_POST['email'];
$password = $_POST['password'];
$mysqli = checkDataBaseConnection();
$query = $mysqli->query("SELECT `user`.`password` FROM `user`, `alumni` WHERE `alumni`.`mail`='".$email."' AND `alumni`.`id`=`user`.`id`");
$hash_raw = $query->fetch_array();
if (!empty($hash_raw)) {
$hash = $hash_raw[0];
if (password_verify($password, $hash)) {
$_SESSION['loggedin'] = 1;
header('Location: dash.php');
exit;
}
}
}
}
?>
DB-connect.php:
<?php
function checkDataBaseConnection() {
// Defining all variables, etc.
if(!isset($mysqli)) {
$mysqli = new mysqli($mysql_host, $mysql_name, $mysql_pw, $mysql_db);
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
if (!mysqli_set_charset($mysqli, "utf8")) {
printf("Error loading character set utf8: %s\n", mysqli_error($mysqli));
}
}
return $mysqli;
}
?>
尽管已将error_reporting设置为E_ALL,但在提交保存在数据库中的电子邮件地址(无论密码是否正确)后,都不会显示错误。事实上,显示 nothing ,只显示空白页面。如果电子邮件地址不在数据库中,一切正常。更奇怪的是,数据库连接在另一个(非登录)中完美运行。
是否存在一些我忽略的明显错误,或者这些问题是否与托管服务的某些PHP设置有关?如果是这样,你能推荐另一个 支持这些功能的免费托管服务吗?
非常感谢,