Prośba o wytłumaczenie kalkulatora

0

Siema,

jest ktoś w stanie wytłumaczyć mi jak ten program krok po kroku działa? W sensie co te polecenia kolejno robią.

Z góry dzięki za pomoc.

Tutaj div

<div class=lewo>
  <form action="ayy.php" method="GET">

  <P>liczbajeden<input name="liczba1"></P>  
  <P>liczbadwa<input name="liczba2"></P>
  <P>znak:<input name="dzialanie"></P>

  <input type=submit name=wyslij value=wyslij>
    
  </form>
</div>

Tutaj php

$liczba=$_GET["liczba1"];
$liczba=$_GET["liczba2"];
$dzialanie=$_GETP["dzialanie"];

if ($dzialanie=="+");
{
  echo $liczba1 + $liczba2;
}

if ($dzialanie=="-");
{
  echo $liczba1 - $liczba2;
}

if ($dzialanie=="*")
{
  echo $liczba1 * $liczba2;
}

if($dzialanie=="/")
{
  echo $liczba1 / $liczba2;
}
3

Czego dokładnie nie rozumiesz? Opisywanie każdej linijki po kolei nie za bardzo ma sens.

0

@jurek1980: Po co do tego input name się przypisuje liczba1

4

Jak masz w HTML tag input to przeglądarka interpretuje to jako pole do wpisania czegoś. Żeby potem odróżnić z którego pola pochodzą dane musi nadać im jakieś nazwy. Tutaj ktoś nadał nazwy typu "liczba1".

0

@jurek1980: Spoko dzieki za pomoc

2

Jak jeszcze czegoś nie rozumiesz to pisz, pytaj.

0

@jurek1980: A w sumie mam jeszcze jedno pytanko. Otóż czemu wywołujemy tutaj te wartości zmiennych zamiast samych zmiennych.
Czy tu jest po prostu coś źle zrobione ?

1

Doprecyzuj o której linijce piszesz. Ogólnie to prosty kod z wieloma łukami bezpieczeństwa. Chodzi Ci o to?
$liczba=$_GET["liczba1"];?

0

@jurek1980: tak

3

Kluczem do zrozumienia jest tu jak działają formularze.
Ten znacznik
<form action="ayy.php" method="GET">
otwiera formularz, który dane przesyła metodą GET.
W PHP później odczytujemy przesłane tą metodą dane z globalnej tablicy o nazwie $_GET czyli jak nazwa metody.
Zobacz tutaj jakiś opis:
https://phpkurs.pl/przekazywanie-danych/

2

@szaolin: o wiele szybciej Ci to pójdzie, jeżeli przeczytasz jakiś kurs, niż będziesz o każdą jedną rzecz tutaj pytał i czekał na odpowiedź.

Wpisz w wyszukiwarce "kurs PHP" albo lepiej "PHP Tutorial" jeżeli znasz angielski i ucz się.

Adres https://phpkurs.pl/ Jurek już Ci podał wyżej, a ja na początek polecam https://www.w3schools.com/

https://www.w3schools.com/php/default.asp

bo możesz od razu robić przykłady z kodem na ich stronie

2
TomRZ napisał(a):

Adres https://phpkurs.pl/ Jurek już Ci podał wyżej, a ja na początek polecam https://www.w3schools.com/

nie korzystaj z w3schools!

1
jurek1980 napisał(a):

dlaczego? Do podstaw? Jedyne co to jest to strona anglojęzyczna i czasem pewne zagadnienie warto poznać w ojczystym języku, szczególnie na początku.

Bo uczy początkujących rzeczy które są absolutnie szkodliwe jak jesteś początkującym.

Aplikacje webowe są dużo bardziej skomplikowane niż np desktopowe. Rzuca się na Ciebie jednocześnie backend, frontend, http/komunikację, HTML i JS, oraz masę innych technologii, niuansów i rozwiązań. I na w3s jak i na masie innych tutoriali jest to całkowicie wymieszane w taką szatkowaną sałatkę, w której początkujący nijak się nie domyśli jako poprawnie budować aplikacje.

W rozdziale 2 na w3s z PHP już ktoś jako przykład pokazał kod z podatnością na XSS!: https://www.w3schools.com/php/phptryit.asp?filename=tryphp_echo2 I to niby jest tutorial dla początkujących. Ani słowa o htmlEntnties() ani o poprawnym printowaniu frontu.

Żeby kogoś poprawnie nauczyć (początkującego) budować aplikacje webowe należałoby go najpierw zaznajomić z JavaScript, ale nie sieciowym tylko desktopowym, np z aplikacjami konsolowymi np w node.js. Potem dodać HTML oraz CSS, potem zbudować aplikację webową z HTML/CSS i JavaScript - tylko tutaj już ktoś miałby podstawy obu tych technologii, nie wpadałby w pułapki frontowe (np używanie innerHTML). Potem mając takie podstawy, możnaby pisać aplikacje konsolowe w PHP lub Pythonie, i taka osoba już miałaby znajomość HTML'a i frontu. Następnie możnaby zrobić aplikacje webową gdzie backend komunikuje się z frontem.

Ale zrób to odwrotnie, czyli pokaż komuś "prostą" stronę

<html>
<body>
<style> b { color: red; }</style>
<script>console.log("hey");</script>
<?php echo "witaj" . PHP_EOL . "<br>"?>
</body>

I masz to wyszatkowane w taki sposób ze początkujący dostaje 5 technologii na raz i nie rozumie ich. To prowadzi do podatności na XSS, SqlInjection i masę innych podstawowych błędów, których początkujacy po prostu by nie robili gdyby ich zaznajomić z każdą tych technologii osobno.

0

@TomRiddle: no ale to podstawy. Ktoś kto uczy się robić echo zmienna nie musi na początku wiedzieć i rozumieć co to XSS czy inne ataki. Jak uczysz się jeździć samochodem to najpierw masz ogarnąć kręcenie kierownicą, wyczuć odległość, prędkość i hamowanie a nie ćwiczyć poślizgi, jazdę na granicy przyczepności. Też najpierw robisz kategorię B potem C.

1
jurek1980 napisał(a):

@TomRiddle: no ale to podstawy. Ktoś kto uczy się robić echo zmienna nie musi na początku wiedzieć i rozumieć co to XSS czy inne ataki. Jak uczysz się jeździć samochodem to najpierw masz ogarnąć kręcenie kierownicą, wyczuć odległość, prędkość i hamowanie a nie ćwiczyć poślizgi, jazdę na granicy przyczepność.ass też najpierw kategorię B potem C.

Tak, jeśli programujesz prostą aplikację tylko w PHP (np aplikacje konsolową). Wtedy żeby zrobić echo nie musisz umieć nic o XSS.

Ale kursy na w3s wrzucają Cię od razu do webówki, w której już musisz znać te rzeczy. Czym innym jest zrobić echo "hello", co jest po prostu wypisaniem tekstu, a czym innym jest <br><?php echo $txt co jest printowaniem widoku i łączeniem plain textu z HTMLem. Ale jak słusznie zauważyłeś, to jest za trudne, więc nikt tego nie robi. Ale to jest złe wrzucić początkującego w trudną dziedzinę, a potem omijać absolutne minimum. Lepiej wrzucić początkującego w coś łatwego, np aplikacje konsolowe.

Właśnie to że w3s pokazuje coś w stylu <br><?php echo $txt ?> to jest źródło problemu. Bo żeby pokazać coś takiego, ktoś musiałby już od początku znać zarówno PHP, jaki HTML jak i problemy w bezpieczeństwie tego - ale nie zna. Więc czemu taki temat daje się początkującym?

To nie tutorial lub początkujący wymaga tej ogromnej wiedzy - tylko dziedzina. I webówka jest taką dziedziną która tego wymaga. Odpowiedzią nie jest omijać te minima - odpowiedzią jest poczekać z wrzuceniem początkujących prosto w aplikacje webowe bez wcześniejszego ogarnięcia backendu, HTML'a i JSa odpowiednio. A w3s nie czeka - wrzuca od razu kogoś w jeden "prosty" plik w którym wymieszany jest php, html, css, js i sql często. A to jest zbyt skomplikowany temat dla początkującego, dużo za skomplikowany.

0

Być może za mało tego kursu zrobiłem, ale z tego co pamiętam z przed X lat, to można było ćwiczyć funkcja po funkcji. W mojej skromnej opinii demonizujesz, bo pamiętaj, że kurs adresowany jest dla ludzi uczących się podstaw. Taka osoba nie zrozumie działania htmlentities pozna to w 10, 20 lekcji. A co do wplatania tam HTMLa no to też były jakiejś linki z opisem jeśli lekcja to wykorzystywała.

0
jurek1980 napisał(a):

Być może za mało tego kursu zrobiłem, ale z tego co pamiętam z przed X lat, to można było ćwiczyć funkcja po funkcji. W mojej skromnej opinii demonizujesz, bo pamiętaj, że kurs adresowany jest dla ludzi uczących się podstaw. Taka osoba nie zrozumie działania htmlentities pozna to w 10, 20 lekcji.

No to jest jasny argument że taka osoba nie powinna być wrzucana w PHP+HTML. Tylko albo sam HTML albo sam PHP.

0

Sprawdziłem @TomRiddle i w intro piszą o konieczności poznania podstaw HTML czy JS i dają linki do kursów.
https://www.w3schools.com/php/php_intro.asp
Tak jest ten kurs zaprojektowany. Jakoś trzeba zacząć. Nawet przy próbie nauki PHP pod kątem aplikacji w linii komend trzeba poznać pewne aspekty działania tylko w linii komend, tablice typu ARG_V itd.
Ciężko jest uczyć, ciężko jest wymyślić kurs. Ktoś kto je wymyśla ma z reguły jakiś plan. Lat temu X pamiętam jak uczyli nas C/C++ i prowadzący na pytanie co to jest to int Main() kazał się nie interesować, bo do tego dojedziemy.
Tak czy siak to jakoś trzeba zacząć.

0
jurek1980 napisał(a):

Sprawdziłem @TomRiddle i w intro piszą o konieczności poznania podstaw HTML czy JS i dają linki do kursów.
https://www.w3schools.com/php/php_intro.asp
Tak jest ten kurs zaprojektowany. Jakoś trzeba zacząć. Nawet przy próbie nauki PHP pod kątem aplikacji w linii komend trzeba poznać pewne aspekty działania tylko w linii komend, tablice typu ARG_V itd.
Ciężko jest uczyć, ciężko jest wymyślić kurs. Ktoś kto je wymyśla ma z reguły jakiś plan. Lat temu X pamiętam jak uczyli nas C/C++ i prowadzący na pytanie co to jest to int Main() kazał się nie interesować, bo do tego dojedziemy.
Tak czy siak to jakoś trzeba zacząć.

W żaden sposób to nie jest usprawiedliwienie czemu proponują początkującym kod podatny na XSS; oraz tego że jest słabej jakości.

Są dużo lepsze źródła do nauki w necie, w3s powiedziałbym jest raczej nisko.

1

Na w3schools są osobne tutoriale dla cybersecurity, a w rozdziale "PHP Form Validation" jest wspomniane i wyjaśnione XSS.

Równie dobrze można by się przyczepić, że o XSS nie piszą w oficjalnym manualu PHP opisującym instrukcję echo: https://www.php.net/manual/en/function.echo.php

W3Schools jest dobre na sam początek ale jako prosty wstęp, gdzie autorzy nie chcą przeciążać początkującego wszystkimi tematami.

To nie jest tutorial dla kogoś, kto jutro będzie stawiał produkcyjny serwis otwarty na ataki.

Pokaż mi tutorial, który przygotuje początkującego, całkowicie zielonego, do postawienia w chwile dużego serwisu, gdzie oprócz ataków XSS, SQLInjection będzie gotowy na dziesiątki innych bardziej subtelnych pułapek takich jak DOS albo data scraping.

0
TomRZ napisał(a):

Na w3schools są osobne tutoriale dla cybersecurity, a w rozdziale "PHP Form Validation" jest wspomniane i wyjaśnione XSS.

Równie dobrze można by się przyczepić, że o XSS nie piszą w oficjalnym manualu PHP opisującym instrukcję echo: https://www.php.net/manual/en/function.echo.php

Nie, dlatego że to jest po prostu printowanie, w nie łączenie plaintestowych wartości i HTML, także nie.

TomRZ napisał(a):

W3Schools jest dobre na sam początek ale jako prosty wstęp, gdzie autorzy nie chcą przeciążać początkującego wszystkimi tematami.

To nie jest tutorial dla kogoś, kto jutro będzie stawiał produkcyjny serwis otwarty na ataki.

Nie zgadzam się. Jakby tylko osoby które budują duże profesjonalnego serwisy zasługiwały na tutoriale bez błędów. Polecanie kodu podatnego na XSS to jest błąd po prostu.

TomRZ napisał(a):

Pokaż mi tutorial, który przygotuje początkującego, całkowicie zielonego, do postawienia w chwile dużego serwisu, gdzie oprócz ataków XSS, SQLInjection będzie gotowy na dziesiątki innych bardziej subtelnych pułapek takich jak DOS albo data scraping.

Mylisz koncept dodawania dodatkowych zabezpieczeń (dodaniach zabezpieczenia przeciwko ddos albo DS) vs samoczynne tworzenie dziur.

Bo żeby zabezpieczyć się przed DDOS musisz dodać faktycznie jakieś nowe zabezpieczenie i musisz się na tym znać (np dodać dodatkowy alarm do domu)

Natomiast żadna aplikacja nie jest zasadniczo podatna na XSS i sql injection - taka podatność wynika tylko i wyłącznie jeśli programista sam doda taką lukę (np zostawi otwarte drzwi).

Czyli co innego jest jak ktoś Cię napadnie i postrzeli (DDOS), a co innego jak kupisz broń i sam sobie strzelisz w stopę (XSS). Twój argument teraz brzmi, że jeśli nie umiesz się obronić przed napadem, to nie ma sensu żeby ktoś Ci tłumaczył jak się nie postrzelić w stopę.

Podsumowanie

Początkującym już na starcie trudno jest zrozumieć XSS i sql infection.

Strona z tutorial ami która pokazuje jako przykład kod który już od startu jest na to podatny w mojej opinii nie jest dobrym źródłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1