To ja trochę o kodzie, choć nie zagłębiałem się aż tak bardzo.
$table = "user".$_SESSION['id']."_".$_SESSION['rok']."_".$_SESSION['miesiac'];
$sql = "UPDATE ".$table." SET habit1=3 WHERE dayid=".$day." ";
- Dobrze rozumiem, że dla każdego użytkownika i każdego miesiąca danego roku tworzysz nową tabelę w bazie? To lekko mówiąc słabe rozwiązanie.
- Wszędzie gdzie łączysz się z bazą robisz to osobno, tj coś w stylu
$polaczenie = new mysqli($db_host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno!=0){
throw new Exception(mysqli_connect_errno());
}
To trochę słabe, co jak będziesz chciał zmienić bazę na inną? Albo zwracaną treść błędu? Musisz to wszędzie robić. Poza tym polecam PDO, przy zmianie bazy danych jest właśnie o wiele prościej.
if ($rezultat = $polaczenie->query("SELECT * FROM users WHERE nick='$login'")) {
- Zamiast tego binduj parametry, wtedy masz pewne zabezpieczenie przed sql injection, bo zapytanie i wartości są wysyłane osobno do bazy.
$haslo = $_POST['haslo'];
- Gdy ktoś np. ręcznie wyśle żądanie i nie doda takiej danej, interpreter rzuci ostrzeżenie o nieistniejącym elemencie tablicy. Teoretycznie to nic groźnego, ale wypadałoby to sprawdzać - isset / ?? albo jeszcze lepiej używać filter_input.
- Wrzucać wszystkie dane użytkownika takie jak email do sesji? No nie wiem, moim zdaniem wystarczyłoby zapisać samo id i przy każdym wejściu pobierać te dane z bazy.
- Nazewnictwo w kodzie - raz masz po polsku, raz po angielsku. Polecam ujednolicić do angielskiego. Poza tym polecałbym stosować zapis cammelCase. Coś takiego jak function ileBlankCellsBegging($miesiac, $rok) to już w ogóle wygląda śmiesznie.
echo $_SESSION["$sessionVarName"];
- Po co te cudzysłowy? Zupełnie zbędne.
strlen($nick)<3
- Nie wiem czy to ważne akurat w tym miejscu, ale strlen ma problem z polskimi znakami. Polecam używać mb_strlen.
$day = date('j');
- Lepiej przerzucić się na stałe na klasę DateTime, daje większe możliwości.
$secret = ' 6Ld6ySIUAAAAAH5X7ioxXNaMOaFJNvDF_Diu40OY';
- Chyba prawdziwy, takich rzeczy raczej się publicznie nie udostępnia w końcu to secret.
<?php echoSessionIfExist('e_nick')?>
- Zamiast tego w funkcji bym nie wyświetlał nicku, a zwracał go (return). Wtedy możesz użyć znaczników <?= ?> do wyświetlenia, a funkcja staje się bardziej uniwersalna (bo w części miejsc kodu możesz chcesz np. przypisać nick do jakiejś zmiennej a nie wyświetlać).
- Po co ten komentarz z oznaczeniami dat na końcu każdego pliku? :P Rozumiem że to pewnie dla Ciebie, dla ułatwienia, ale docelowo raczej nie ma sensu aby takie coś ładowało w każdym pliku na produkcji, zbędne dane tylko.
- Standardowo dość: mieszasz kod HTML z PHP, kod staje się coraz mniej czytelny. Polecam oddzielić logikę od widoku, np. przy użyciu systemu szablonów Twig.
- Niektóre obrazki z katalogu img bardzo dużo ważą. Nie wiem czy wszystkie są używane, ale np. 2,3MB to dużo. a wątpię, że na stronie potrzebujesz tła o rozmiarze 4912x3264px. Przeskaluj to. Fakt, przeważnie każdy z nas ma teraz dostęp do szybkiego internetu bez limitów, ale są ograniczone łącza mobilne, są niskie prędkości, obciążenia serwerów... Skoro można ograniczyć ilość przesyłanych danych to dlaczego nie?
- Po co puste atrybuty, np. value="" albo class=""? Niby nie szkodzą, ale jak dla mnie bez sensu.
- Te wszystkie skrypty, jquery, bxslider, na pewno potrzebne Ci w head? Bo wydaje mi się że nie, a dobra praktyka mówi, aby umieszczać skrypty na końcu sekcji body, aby przeglądarka najpierw ładowała stronę, a nie pobierała skrypty.
No cóż... Nie wiem na jakim etapie nauki jesteś, ale żadna poważna aplikacja obecnie tak nie wygląda. Pisze się obiektowo, używa Composera, autoloadingu z PSR-4. Większość też używa frameworków, chociaż oczywiście i czystego PHP trzeba się najpierw jakoś nauczyć. Do tego korzystaj z Gita i kod umieszczaj np. na GitHubie, wtedy tworzysz swoje "portfolio" (akurat tym konkretnym nie za bardzo radzę się chwalić) i każdy może go łatwo przejrzeć, poprawić itd. A umieszczać aplikacje do testów i pokazania polecam jednak na jakimś poważniejszym hostingu, bo cba.pl z reklamami nie wygląda zachęcająco. Pewnie chodzi też o koszty i rozumiem, bo sam tak zaczynałem. Lecz jeżeli masz zamiar dalej się w to zagłębiać wypadałoby znaleźć lepsze rozwiązanie.
Polecam też zajrzeć tutaj: http://www.phptherightway.com/ oraz tu https://phpbestpractices.org/ i jeszcze zapoznać się z PSR-2, bardzo popularnymi standardami określającymi wygląd kodu: http://www.php-fig.org/psr/psr-2/
Och, dość długa mi ta wypowiedź wyszła.. I żeby nie było, nie chcę Cię jakoś skrytykować, zniechęcić czy coś. Wystawiłeś kod do oceny, więc tylko to zrobiłem. Całość oceniam kiepsko.