Постоянная ошибка 404

G
На сайте с 24.11.2010
Offline
63
1008

При переходе на главную страницу все время отображается страница 404. Статус: 500

Что ему не нравится? Понять пока-что не могу...

В индексном файле:

<?php

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
session_start();
require_once 'core/library/db.php';
require_once 'core/configs/main.php';
require_once 'core/library/main.php';
require_once 'core/library/validator.php';
require_once 'core/models/category.php';
require_once 'core/models/post.php';

//$url = (isset($_GET['$url']) ? $_GET['$url'] : 0);
$cntrName = (!is_null(getUrlSegment(0))) ? 'main' : getUrlSegment(0);
$actionName = (!is_null(getUrlSegment(1))) ? 'action_index' : 'action_'.getUrlSegment(1);
if(file_exists('core/controllers/'.$cntrName.'.php')){
require_once 'core/controllers/'.$cntrName.'.php';
if(function_exists($actionName)){
$actionName();
}else{
show404page();
}
}else {
show404page();
}

В контроллере:

<?php

function action_index(){
if(is_auth()){
echo 'INDEX PAGE';
}else{
echo 'Hello guest!';
}
}
function action_contact(){
echo 'CONTACT PAGE';
}
function action_registration(){
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$formData = [ 'login' => getSaveData(htmlspecialchars(trim($_POST['login']))),
'password' => getSaveData(trim($_POST['password'])),
'email' => getSaveData(trim($_POST['email']))
];
$rules = [ 'login' => ['required', 'login'],
'password' => ['required','password'],
'email' => ['required','email']
];
$errors = validateForm($rules, $formData);
if(empty($errors)){
$formData['password'] = md5($formData['password'].SECRET_KEY);
//$sql = "INSERT INTO `user` (`login`, `password`, `email`) VALUES ('{$formData['login']}','{$formData['password']}','{$formData['email']}') ON DUPLICATE KEY UPDATE login='{$formData['login']}', password='{$formData['password']}', email='{$formData['email']}'";
$sql = "INSERT INTO `user`(`login`, `password`, `email`) VALUES ('{$formData['login']}','{$formData['password']}','{$formData['email']}')";
$sql1 = "SELECT id FROM user WHERE login='{$formData['login']}' or email='{$formData['email']}'";
$res = selectData($sql1);
if($res->num_rows === 0){
}
if(insertUpdateDelete($sql)) {
header("Location: /main/successReg");
}else{
echo 'Пользователь с таким логином или почтой уже существует. :(';
}
}
}
renderView('registration', $errors);
}
function action_successReg(){
echo 'Поздравляем!';
}

function action_login()
{
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$formData = [ 'login' => getSaveData(htmlspecialchars(trim($_POST['login']))),
'password' => getSaveData(trim($_POST['password'])),
];
$formData['password'] = md5($formData['password'] . SECRET_KEY);
$sql = "SELECT id FROM user WHERE login='{$formData['login']}' and password='{$formData['password']}'";
$res = selectData($sql);
if ($res->num_rows === 0) {
echo 'Некорректный логин или пароль!';
} else {
$_SESSION['user'] = mysqli_fetch_assoc($res);
header('Location: /');
}
}
renderView('login', []);
}
function action_logout(){
session_unset();
session_destroy();
header('Location: /');
}

Еще интересно то, что если перехожу на страницу с регистрацией или авторизацией - везде пишет Hello guest и ничего не отображает... Ошибок никаких не выводит. Что за проблема - понять пока не могу...

Если у кого-то есть время и желание помочь разобраться - все файлы загрузил сюда: https://yadi.sk/d/T26Ho66f3LZ2JL

M
На сайте с 04.12.2013
Offline
223
#1

Не увидел, чтобы вы где-то в коде генерировали 500-ую. Возможно, происходит зацикливающий редирект.

---------- Добавлено 31.07.2017 в 12:40 ----------

На скрине у вас 500-ая даже на фэйвайконе срабатывает. Т.е. ошибка может быть и не в коде, т.к. по идее запросы к статику передавать во фронт не нужно.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
G
На сайте с 24.11.2010
Offline
63
#2
miketomlin:
Не увидел, чтобы вы где-то в коде генерировали 500-ую. Возможно, происходит зацикливающий редирект.

---------- Добавлено 31.07.2017 в 12:40 ----------

На скрине у вас 500-ая даже на фэйвайконе срабатывает. Т.е. ошибка может быть и не в коде, т.к. по идее запросы к статику передавать во фронт не нужно.

Ну вот и я о том же... Понять не могу вообще из-за чего, по факту, переходит постоянно на страницу 404. Помню, последнее что делал это добавлял getUrlSegment - до этого все отлично работало. Как страница регистрации, так и все остальные. Но смотрю в эту функцию и не вижу ничего такого, что давало бы текущий эффект...

K
На сайте с 26.04.2017
Offline
19
#3


$cntrName = (!is_null(getUrlSegment(0))) ? 'main' : getUrlSegment(0);
$actionName = (!is_null(getUrlSegment(1))) ? 'action_index' : 'action_'.getUrlSegment(1);

Это так и задумано? В переменные всегда будет попадать null, если в URL нет ни одного сегмента. Если есть, то попадут 'main' и 'action_index' соответственно.

Попробуйте знаки восклицания убрать перед is_null. Ещё приятнее, на мой взгляд, так:


$cntrName = getUrlSegment(0) ?? 'main';
$action = getUrlSegment(1) ?? 'index';
$actionName = "action_{$action}";

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий