Нет файлов журнала генерируемых из ошибки PHP API
Поэтому я задал этот вопрос на StackOverflow, и людям там, похоже, не очень понравился мой вопрос, поэтому я постараюсь подробнее остановиться здесь.
Таким образом, моя текущая проблема исходит из PHP API, который я создаю для обработки аутентификации пользователей. В настоящий момент я знаю, что он небезопасен во многих различных отношениях (например, SQL-инъекции) Но это то, что я исправлю со временем. Это мой первый раз, когда я пишу что-то подобное, и я хотел просто доказать себе, что это действительно работает, а затем медленно начать строить оттуда.
Всякий раз, когда я выполняю свой запрос от клиента Javascript и отправляю его в свой PHP API, я получаю это в качестве ответа
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>200 OK</title> </head><body> <h1>OK</h1> <p>The server encountered an internal error or misconfiguration and was unable to complete your request.</p> <p>Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error.</p> <p>More information about this error may be available in the server error log.</p> <hr> <address>Apache/2.4.29 (Ubuntu) Server at rest.localhost Port 80</address> </body></html>
Что странно для меня, так это то, что в моих журналах ошибок нет никаких ошибок.
Я проверил все журналы в /var/log/apache и /var/log/mysql
Ни один из них не показывает никакой информации об ошибках. Мой файл журнала доступа MySQL обычно показывал, что у меня есть логин пользователя, но я ничего не делаю, а затем выхожу из системы. Теперь нет логина от пользователя, который должен был бы войти в систему.
Мой PHP API в настоящее время выглядит так:
-rest/ -inc/ -conn.php -config.php -user.php -user_handle.php
user_handle.php
<?php error_reporting(-1); include_once("inc/config.php"); include_once("inc/user.php"); include_once("inc/conn.php"); $user = new User(); header("Content-Type:application/json; charset=UTF-8;"); $json_str = file_get_contents('php://input'); return $json_str; $obj = json_decode($json_str); if($obj->type === "reg") { $email = $obj->email; $password = $obj->password; $ip = $obj->ip; $sub_user = $user->register($email, $password, $ip); return $sub_user; } else { return "Error"; } ?>
config.php
<?php // MySQL Connection class Dbset { protected $serverName; protected $userName; protected $passCode; protected $dbName; function dbset() { $this->serverName = 'localhost'; $this->userName = 'mimbl'; $this->passCode = 'password'; $this->dbName = 'mimbl'; } } // End of MySQL Connection ?>
conn.php
<?php include_once('config.php'); class MySQL extends Dbset{ var $myconn; function connect() { $dbConfig = new Dbset(); $con = mysqli_connect("".$dbConfig->serverName."", "".$dbConfig->userName."", "".$dbConfig->passCode."", "".$dbConfig->dbName.""); if (!$con) { die('Could not connect to database!'); } else { $this->myconn = $con; echo 'Connection established!';} return $this->myconn; } function close() { mysqli_close($myconn); echo 'Connection closed!'; } } ?>
user.php
<?php include "conn.php"; class User { public $password; public $email; public $ip; // User Registration function register($email, $password, $ip) { $dbC = new MySQL(); $dbC->connect(); $query = "INSERT INTO users (`email`, `pass`, `ip`) VALUES ('".$email.", '".$password."', '".$ip."')"; $result = $dbC->myconn->query($query); if ($result === TRUE) { return "Success"; } else { return "Error"; } } } ?>
Если Вам также интересно узнать о вопросе StackOverflow, вы можете найти это Здесь
Любые предложения и помощь будут оценены по достоинству
Что я уже пробовал:
Включение более глубокого протоколирования ошибок в Apache, PHP и MySQL
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
PHP: SQL-инъекция - руководство пользователя[^]
Richard Deeming
Вы также храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]
Richard Deeming
И я надеюсь, что вы не собираетесь использовать этот IP-адрес для проверки в будущем? Потому что у большинства людей нет "фиксированного" IP-адреса; он будет меняться довольно регулярно.