Функция входа на сайт клиента не работает с визуальным обновлением, которое я предоставляю.Большая часть сайта также работает на устаревшем php, поэтому я обновляю его.
В настоящее время я работаю над разделом вопросов и ответов.
index.php принудительно перенаправляет наlogin.php, если пользователь не вошел в систему;login.php ссылается на файл конфигурации с именем define.mysqli.php, который устанавливает соединение с БД, а также требует, чтобы файл func.php содержал множество функций, таких как getQuestions () и getUserInfoById ();соединение в порядке, но функциональность самого сайта не работает из-за ошибок, таких как mysqli_real_escape_string (): не удалось получить mysqli в файле login.php (ошибка 1), в файле func.php есть неопределенные переменные (ошибка2) mysqli_query () ожидает, что параметр 1 будет иметь значение mysqli, значение null указано в func.php (ошибка 3)
Мне просто нужна рука, указывающая, что еще нужно изменить.Другие вопросы по StackOverflow были слишком просты;Я понимаю, какие изменения мне нужно внести, но я слишком много работаю, и я работаю в качестве младшего разработчика без наставника sr dev.
Ошибка 1: mysqli_real_escape_string (): Couldn 'получить mysqli в login.php
//top of code
<?php
//Display errors; COMMENT OUT WHEN NOT DEBUGGING
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//DB
require('lib/func.php');
//The function looks like this
//Checks if user is already logged in and redirects.
if (isset($_SESSION['user'])){
$user = getUserInfo($_SESSION['user']);
if ($user != null) {
if ($user['admin'] == 1) {
header('Location: admin.php');
exit;
} else {
header('Location: login.php');
}
}
}
if (isset($_POST)){
if(sizeof($_POST) > 0) {
$user = mysqli_real_escape_string($link, trim($_POST['username'])); //error
$pass = mysqli_real_escape_string($link, trim($_POST['password'])); //error
if(isValidAdminUser($user,$pass)) {
persistUser($user);
header('Location: admin.php');
exit;
} elseif(isValidStateUser($user,$pass)) {
persistUser($user);
header('Location: /');
exit;
} else {
$error = "Invalid username or password";
}
}
}
//what am i missing from this? what's am i doing wrong/needs improvement?
Ошибка 2: неопределенные переменные в func.php
//top of file
<?php
include("define.mysqli.php");
if(!isset($_SESSION)){
session_start();
}
//....
function isValidAdminUser($uname,$pass) {
$query = "SELECT * FROM users WHERE login = '$uname' AND admin = 1";
$result = mysqli_query($link, $query) or die(mysqli_error($link)); //error
if(mysqli_num_rows($result) > 0) {
$user = mysqli_fetch_array($result); //error
if(md5($pass) == $user['password'])
return true;
}
return false;
}
//the original code was
function isValidAdminUser($uname,$pass) {
$query = "SELECT * FROM users WHERE login = '$uname' AND admin = 1";
$result = mysql_query($query) or die(mysql_error()); //error
if(mysqli_num_rows($result) > 0) {
$user = mysqli_fetch_array($result); //error
if(md5($pass) == $user['password']) {
return true;
}
}
return false;
}
//i changed it to mysqli best i could but $link is undefined???
Ошибка 3: mysqli_query () ожидает, что параметр 1 будет mysqli, значение NULL указано вfunc.php
//in same code as above
так выглядит мой конфигурационный файл (define.mysqli.php)
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
if(!isset($_SESSION)){
session_start();
}
if(!defined("DATABASE_PREFIX"))
define("DATABASE_PREFIX","dbr_");
$hostname = "127.0.0.1";
$username = "*correct_username";
$password = "*correct_password";
$database = "*correct_database";
$link = mysqli_connect($hostname, $username, $password, $database);
if(!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
//echo "Success: Established MySQL connection." . PHP_EOL;
//echo "Host Information: " . mysqli_get_host_info($link) . PHP_EOL;
mysqli_close($link);
?>
Я стараюсь изо всех сил изменить параметры с mysql_ * наmysqli_ * правильно, но я не знаю, что мне не хватает.