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

Ocena jakości kodu PHP

Object Storage Arubacloud
0 głosów
320 wizyt
pytanie zadane 21 maja 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)

Cześć.

Mam pytanie do doświadczonych programistów PHP jak oceniacie mój kod asynchronicznego pobierania danych w PHP.Chodzi mi co można by w nim poprawić aby był lepszy i wydajniejszy.Stworzyłem też własny wzorzec MVC , który jest oparty na JS i czy to też jest poprawne czy raczej nie?

<?php

session_start();

   //udana walidacja
  $udana_walidacja = true;

  //połączenie z inputem text
  $email = $_GET['email'];
  $imie = $_GET['imie'];
  $nazwisko = $_GET['nazwisko'];
  $miasto = $_GET['miasto'];
  $ulica = $_GET['ulica'];
  $kod = $_GET['kod'];
  $numer = $_GET['numer'];
  $telefon = $_GET['telefon'];
  $haslo1 = $_GET['haslo1'];
  $haslo2 = $_GET['haslo2'];


  //walidacja e-maila
  if((strlen($email)<5) ||(strlen($email)>25))
  {
    $udana_walidacja = false;
    $zly_email = false;
    $_SESSION['error_email'] = "Zły adres e-mail";
  }else{
      $zly_email = true;
  }
  $email = $_GET['email'];
  $emailB = filter_var($email,FILTER_SANITIZE_EMAIL);
  if((filter_var($emailB,FILTER_SANITIZE_EMAIL)==false)||($emailB!=$email))
  {
    $wszystko_OK = false;
    $zly_email = false;
    $_SESSION['e_email'] = "Niepoprawny adres e-mail";
  }else{
      $zly_email = true;
  }
  //walidacja imienia
  if((strlen($imie)<3) || (strlen($imie)>15))
  {
      $zle_imie = false;
    $udana_walidacja = false;
    $_SESSION['error_imie'] = "Imię jest zbyt krutkie";
  }else{
      $zle_imie = true;
  }
  //walidacja nzawiska
  if((strlen($nazwisko)<3) || (strlen($nazwisko)>30))
  {
      $zle_nazwisko = false;
    $udana_walidacja = false;
    $_SESSION['error_nazwisko'] = "Nazwisko jest zbyt krutkie";
  }else{
      $zle_nazwisko = true;
  }
  //walidacja kodu pocztowego
  if(strlen($kod)<6){
      $zly_kod = false;
      $udana_walidacja = false;
  }else{
      $zly_kod = true;
  }
  if(strlen($numer)<1)
  {
      $zle_numer = false;
      $udana_walidacja = false;
  }else{
      $zle_numer = true;
  }
  //walidacja miasta
  if((strlen($miasto)<3) || (strlen($miasto)>25))
  {
      $zle_miasto = false;
    $udana_walidacja = false;
    $_SESSION['error_miasto'] = "Podaj poprawne miasto";
  }else{
      $zle_miasto = true;
  }
  //walidacja ulicy
  if((strlen($ulica)<4) || (strlen($ulica)>25))
  {
      $zla_ulica = false;
    $udana_walidacja = false;
    $_SESSION['error_ulica'] = "Podaj poprawną ulice";
  }else{
      $zla_ulica = true;
  }
  //walidacja telefonu
  if(strlen($telefon)<9){
      $zly_telefon = false;
      $udana_walidacja = false;
  }else{
      $zly_telefon = true;
  }
  //walidacja hasła
 /* if(strlen($haslo1)<6){
      $zly_haslo = false;
      $udana_walidacja = false;
  }*/
  if(preg_match('/^([a-zA-Z0-9_-]{6,40})$/D',$haslo1))
  {
      $zly_haslo = false;
    $udana_walidacja = false;
    $_SESSION['error_haslo'] = "hasło musi zawierać min 8 znaków";
  }else{
      $zly_haslo = true;
  }
  if($haslo1 != $haslo2)
  {
      $zle_haslo2 =false;
    $udana_walidacja = false;
    $_SESSION['error_haslo'] = "hasła musza być takie same";
  }else{
      $zle_haslo2 = true;
  }

  $haslo_hash = password_hash($haslo1,PASSWORD_DEFAULT);

  if(!isset($_GET['wybor']))
  {
    $udana_walidacja = false;
    $zanacz = false;
    $_SESSION['error_regulamin'] = "musisz zakceptować regulamin";
  }else{
      $zanacz = true;
  }
  //laczenie z baza mysql
  require_once"connect.php";//uzuskanie wartości od connect.php
  mysqli_report(MYSQLI_REPORT_STRICT);
  try
  {
    $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
    if($polaczenie->connect_error != 0)//sprawdzenie czy połączenie z bazą danych się udało
    {
      throw new Exception(mysqli_connect_errno());//informacja o błędzie z logowania do mysqli
      
    }else
    {
      //połączyliśmy się już z bazą i sprawdzamy czy instnieje już taki e-mail
      $rezultat = $polaczenie->query("SELECT iduser FROM user WHERE email='$email'");

      if(!$rezultat) throw new Exception($polaczenie->error);

      $ile_takich_maili = $rezultat->num_rows;
      if($ile_takich_maili>0)
      {
        $zly_email2 = false;
        $udana_walidacja = false;
        $_SESSION['error_email'] = "Podany e-mail już istnieje";
      }
      if($udana_walidacja == true)
      {
            //poprawnie przeprowadzona walidacja :D


            if($polaczenie->query("INSERT INTO user VALUES (NULL,'$email','$haslo_hash','$imie','$nazwisko','Polska','$miasto','$kod','$ulica','$numer','$telefon')"))
            {
              $_SESSION['udanarejestracja'] = true;
            // echo  header('location:udanarejestracja.php');
                $sukces = 1;
                $tablica = array($sukces);
                echo json_encode($tablica);
            }
            else
            {
              throw new Exception($polaczenie->error);
            }
      }else{
          $tablica = array(" ",$zly_email,$zle_imie,$zle_nazwisko,$zle_miasto,$zla_ulica,$zly_kod,$zle_numer,$zly_telefon,$zly_haslo,$zle_haslo2,$zanacz);
          echo json_encode($tablica);

      }
      $polaczenie->close();
    }
  }
  catch (Exception $e)
  {
    echo "Bład serwera przepraszamy za utrudnienia";
    echo "<br/> Informacja dla codera".$e;
  }
?>

function wyslij() {
    //pobranie wszystkich informacji z pola edycyjnego
    $(document).ready(function () {
        $.ajax({
            url:"rejestracja_walidacja.php",
            dataType:"json",
            type:"get",
            data:{
                email:$("input#email").val(),
                imie:$("input#imie").val(),
                nazwisko:$("input#nazwisko").val(),
                miasto:$("input#miasto").val(),
                ulica:$("input#ulica").val(),
                kod:$("input#kod").val(),
                numer:$("input#numer").val(),
                telefon:$("input#telefon").val(),
                haslo1:$("input#haslo1").val(),
                haslo2:$("input#haslo2").val()

            },
            success:function (tablica) {
                if(tablica[1] == 1){
                    $(window).attr('location', 'udanarejestracja.php');
                }
                if(tablica[1] == false){
                  //  window.location="udanarejestracja.php";
                    $("#zly_email").html("<p class='nie_wyslano'>Wprowadzono niepoprawny e-mail</p>");
                }
                else {
                    $("#zly_email").html(" ");
                }
                if(tablica[2] == false){
                    $("#zly_imie").html("<p class='nie_wyslano'>Podaj imię</p>");
                } else {
                    $("#zly_imie").html(" ");
                }
                if(tablica[3] == false){
                    $("#zly_nazwisko").html("<p class='nie_wyslano'>Podaj nazwisko</p>");
                }else {
                    $("#zly_nazwisko").html(" ");
                }
                if(tablica[4] == false){
                    $("#zly_miasto").html("<p class='nie_wyslano'>Podaj miasto (Potrzebne do wysyłki)</p>");
                }
                 else {
                    $("#zly_miasto").html(" ");
                }
                if(tablica[5] == false){
                    $("#zly_ulica").html("<p class='nie_wyslano'>Podaj nazwę ulicy bez liczb</p>");
                }
                 else {
                    $("#zly_ulica").html(" ");
                }
                if(tablica[6] == false){
                    $("#zly_kod").html("<p class='nie_wyslano'>Podaj kod pocztowy</p>");
                }else {
                    $("#zly_kod").html(" ");
                }
                if(tablica[7] == false){
                    $("#zly_numer").html("<p class='nie_wyslano'>Podaj numer lokalu</p>");
                }else {
                    $("#zly_numer").html(" ");
                }
                if(tablica[8] == false){
                    $("#zly_telefon").html("<p class='nie_wyslano'>Podaj numer telefonu</p>");
                }else {
                    $("#zly_telefon").html(" ");
                }if(tablica[9] == false){
                    $("#zly_haslo").html("<p class='nie_wyslano'>hasło musi mieć 6 znaków i @</p>");
                }else {
                    $("#zly_haslo").html(" ");
                }
                if(tablica[10] == false){
                    $("#zly_haslo2").html("<p class='nie_wyslano'>hasła muszą być takie same</p>");
                }else {
                    $("#zly_haslo2").html(" ");
                }
            }
        });
    });
    var czek = document.getElementById("regulamin").checked;
    if (czek == true){
        $(document).ready(function () {
            $.ajax({
                url: "rejestracja_walidacja.php",
                dataType: "json",
                type: "get",
                data: {
                    wybor:$("input#wybor").val(),
                    email:$("input#email").val(),
                    imie:$("input#imie").val(),
                    nazwisko:$("input#nazwisko").val(),
                    miasto:$("input#miasto").val(),
                    ulica:$("input#ulica").val(),
                    kod:$("input#kod").val(),
                    numer:$("input#numer").val(),
                    telefon:$("input#telefon").val(),
                    haslo1:$("input#haslo1").val(),
                    haslo2:$("input#haslo2").val()
                },
                success:function (tablica) {
                    if(tablica[11] == true){
                        $("#zly_regulamin").html(" ");
                    }
                }
            });
        });
    }else {
        $("#zly_regulamin").html("<p class='nie_wyslano'>Musisz wyrazić zgode</p>");
    }
}








 
komentarz 21 maja 2019 przez Milesq Nałogowiec (32,020 p.)

W php istnieją standardy pisania PSR

https://www.php-fig.org/psr

https://www.php-fig.org/psr/psr-1/

4 odpowiedzi

0 głosów
odpowiedź 21 maja 2019 przez Benek Szeryf (91,010 p.)
Za dużo if-ów, dlatego trudno to w ogóle analizować. Ale nie zrażaj się, ważne by pisać dalej. Na początku spróbuj zredukować liczbę tych instrukcji warunkowych.
0 głosów
odpowiedź 21 maja 2019 przez BT101 Stary wyjadacz (12,540 p.)

Nie jestem eskpertem jeśli chodzi o PHP ale na pewno:

  • zmienne nazywaj po angielsku
  • rozbijaj kod na mniejsze funkcje/metody
  • poczytaj o OOP
  • poczytaj o PDO (zamiast mysqli)
  • poczytaj o rest api
0 głosów
odpowiedź 21 maja 2019 przez Ehlert Ekspert (212,670 p.)

Php nie nadaje się do zadań asynchronicznych i takowe deleguje się do noda i innych technologii które z asynckiem radzą sobie lepiej.

Co do jakości to niestety nie mogę ocenić, bo tu nie ma jakości crying polecam solidną lekturę https://phptherightway.com

komentarz 21 maja 2019 przez michal_php Stary wyjadacz (13,700 p.)
A jak zatem można przerzucić zmienne z PHP do HTML bez ich mieszania i framework.
0 głosów
odpowiedź 21 maja 2019 przez michal_php Stary wyjadacz (13,700 p.)
A mam takie pytanie jak można przesłać z PHP do HTML cały jakiś szablon z bazy danych.I jak by to wykonać z MVC (tylko że to pewnie wymaga budowania framework ?)

Podobne pytania

+2 głosów
4 odpowiedzi 321 wizyt
0 głosów
1 odpowiedź 197 wizyt
pytanie zadane 28 grudnia 2016 w JavaScript przez rom1119 Początkujący (460 p.)
0 głosów
1 odpowiedź 261 wizyt
pytanie zadane 28 grudnia 2016 w JavaScript przez Totek Użytkownik (860 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 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!

...