• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd przy wczytywaniu stylu CSS przy PHP.

Object Storage Arubacloud
0 głosów
1,166 wizyt
pytanie zadane 19 listopada 2017 w HTML i CSS przez nielotweb Bywalec (2,240 p.)
Ogarniam sobię PHP OOP, a dokładniej wzorzec MVC. I chciałem wczytać sobie plik stylów CSS, jak to się po ludzku robi "<link rel="stylesheet" type="text/css" href="style.css">" ale go nie wczytuje.. a plik jest w dobrym miejscu. A to jest błąd z konsoli: "Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost/largemvc/style.css"."

I mi powiedzcie jak to mogę naprawić? Jeśli będzie trzeba wrzucę odpowiednie pliki.

2 odpowiedzi

+1 głos
odpowiedź 19 listopada 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 19 listopada 2017 przez nielotweb
 
Najlepsza
Przejdź na zakładkę Network konsoli (F12), odnajdź na liście zasobów ten plik style.css, kliknij aby podejrzeć ten request i zerknij na zakładkę Preview lub Response - opis dla Google Chrome. Możesz też wejść ręcznie na jego adres, tylko tak mniej profesjonalnie to po prostu wygląda (i w konsoli zobaczysz więcej danych o requeście jak nagłówki, http status itd.) :p

Mój "strzał": ćwiczyłeś MVC, zrobiłeś routing i przekierowałeś w .htaccess (lub przez inne reguły serwera) wszystkie requesty na jakiś plik główny aplikacji do zinterpretowania przez routing. Zapomniałeś dopisać, aby najpierw sprawdził czy istnieje faktycznie dany plik na serwerze i jeśli tak, to by zwrócił ten plik - dotyczy to właśnie plików css, obrazków czy skryptów - dowolnych plików, które mają być pobrane wprost z serwera. Jeśli dobrze zgadłem to na podglądzie requesta zobaczysz coś z aplikacji - błąd, error 404 lub inny komunikat jaki masz, gdy routing nie znajdzie nic pasującego.
komentarz 19 listopada 2017 przez nielotweb Bywalec (2,240 p.)

Geniusz :P Tak to właśnie jak opisałeś, wiadomość z zakładki network : "This site http://localhost/client doesnt exists". Czyli "client" to jest folder w którym jest style.css.. czyli to uznaje że client to jest kontroller.

A tutaj jest plik z Routingu ( dopiero się ucze MVC ) : 

class Route
{

    public static function start()
    {
        //GET AND EXPLODE URL
        $url = $_GET['url'];
        $url = rtrim($url, '/');
        $url = explode('/', $url);
        
        if ( $url[0] == 'index.php' )
        {
            $url[0] = 'index';
            require_once 'application/controllers/index.php';
        }

        //TAKE A NEW FILE NAME
        $strtoFile = strtolower($url[0]);
        $file = 'application/controllers/' . $strtoFile . '.php';

        //IF FILE EXISTS, REQUIRE THIS
        if ( file_exists($file) )
        {      
            require_once 'application/controllers/' . $url[0] . '.php';   
        } 
        else {
            
            //REDRIECT TO 404 PAGE
            Route::ErrorPage();
            
        }
        
        //CREATE A CLASS FROM URL
        $createController = new $url[0];
        //ADD VIEW TO CLASS
        echo $createController->action_include();
        
    }
    public static function ErrorPage() 
    {
        //KILL AND GIVE INFO
        die('This site http://'.$_SERVER['HTTP_HOST'].'/'.$_GET['url'].' doesnt exists');
    }

 

1
komentarz 19 listopada 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
E tam, po prostu odrobina doświadczenia i rozwiązywania takich problemów :P

Jak robisz przekierowania po stronie serwera, aby wszystko szło na index.php (czy tam inny plik główny)? Jeśli to Apache i .htaccess to pewnie RewriteRule, a więc musisz dodać przed tym RewriteCond ze sprawdzeniem czy taki plik istnieje. Wtedy serwer powinien zwrócić tenże plik i nie wykonać kolejnych reguły przepisywania na index.php.
komentarz 19 listopada 2017 przez nielotweb Bywalec (2,240 p.)

Tak, to apache i .htaccess. W .htaccess mam takie coś:

RewriteEngine On
RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]

Czy dobrze myślę i trzeba dodać to? :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

W jakimś tutorialu o MVC gdzieś to widziałem, poprostu jeszcze totalnie tego .htaccess nie ogarniam, muszę poczytać o nim :P

1
komentarz 19 listopada 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Dokładnie, dobrze myślisz. -f sprawdza czy jest to istniejący plik, -d czy katalog, a -l czy dowiązanie. W tym przypadku powinno Ci wystarczyć tylko to z -f, bo potrzebujesz sprawdzić czy nie jest plikiem.
komentarz 19 listopada 2017 przez nielotweb Bywalec (2,240 p.)
Dobra już działa, ładuje się :D Już powoli rozumiem to całe MVC, bo kilka dni siedziałem i nic nie rozumiałem aż dzisiaj ogarnąłem o co w tym chodzi po części.

To jak można to mam jeszcze jedno pytanko, gdy wpisuje http://localhost/largemvc/   i bez pierwszego argumentu, w sensie bez tego np. http://localhost/largemvc/about

to mi wywala że "Undefined index: url". W jaki sposób mogę zrobić że gdy nie ma ustawionego tego pierwszego 'argumentu' w scieżce to przekierowuje na stronę główną czyli index.php?

Mogę to zrobić w .htaccess?
1
komentarz 19 listopada 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Najprościej podchodząc możesz sprawdzić czy $_GET['url'] istnieje, np. przy użyciu isset albo ??. Możesz też użyć funkcji filter_input, wtedy nigdy nie będzie błędu, a gdy taka wartość nie będzie istniała to po prostu będzie puste. Albo możesz pokombinować po stronie .htaccess, aby zawsze przesyłane było to ?url=... do tego pliku, choć to wygląda trochę jak obejście, bo sam kod nadal nie jest zabezpieczony tzn. może rzucać takie ostrzeżenia.
komentarz 19 listopada 2017 przez nielotweb Bywalec (2,240 p.)
Dobra rozumiem, już sobie poradzę. Także wielkie dzięki za pomoc ;p
0 głosów
odpowiedź 19 listopada 2017 przez mtk3d Nałogowiec (46,690 p.)
Spróbuj usunąć rel="stylesheet", komuś na stacku pomogło, ale spróbuj w przeglądarce wyświetlić te style po linku.
komentarz 19 listopada 2017 przez nielotweb Bywalec (2,240 p.)
Zapomniałem dopisać, wcześniej to sprawdzałem. Niby żadnego błędu nie ma w konsoli ale i tak nie wczytuje.
komentarz 19 listopada 2017 przez mtk3d Nałogowiec (46,690 p.)
A jak wpiszesz link do styli w przeglądarce, to normalnie się wyświetla?
komentarz 19 listopada 2017 przez nielotweb Bywalec (2,240 p.)
Poniżej opisałem czemu nie działa, i nie, nie wyświetla normalnie wyskakuje błąd który ustawił em w Routingu;p

Podobne pytania

0 głosów
0 odpowiedzi 149 wizyt
pytanie zadane 19 marca 2020 w C i C++ przez j.cob_21 Początkujący (350 p.)
0 głosów
0 odpowiedzi 70 wizyt
pytanie zadane 20 sierpnia 2018 w Assembler przez Cixo Gaduła (4,070 p.)
0 głosów
0 odpowiedzi 235 wizyt
pytanie zadane 6 sierpnia 2017 w Java przez Rubeus024 Obywatel (1,680 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...