IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: PHP ALEBO FLASK ?

Aktivity
Avatar
phpnoob
Člen
Avatar
phpnoob:10.10.2019 3:29

Zdravím , chcel by som sa naučiť backend kvôli tomu aby som bol schopný spraviť backend pre hotovú html/css/js šablonu . napríklad mám kúpenú alebo nakodovanu nejakú peknú html/css/js šablonu ale chcel by som pridať vstupy a výstupy do databáz ,login , register, session , role a ich oprávnenia , atd.

prešiel som si free lekcie php/mysql "Lekce 2 - První databázová tabulka a MySQL ovladače v PHP" + "Lekce 3 - Formulář a výpis dat z databáze do tabulky v PHP" a nakoniec som si spravil NERS CMS .. Prišiel som na to že nechápem všetkému , neviem to zopakovať (iba copy paste) , a tiež som zistil to že mi php syntax nevyhovuje , je totiž pre mna neprehladná a zbytočne zdlhava .

keď sa pozriem na kod a vidím tam 3 rôzne druhy zátvoriek , apostrofy , šípky tak mi tá syntax príde nesympatická a málo prehladna , ešte keď kvôli bezpečnosti musím písať kod ešte menej prirodzene .

Natrafil som na python framework flask a kod mi príde ovela krajší a prehľadnejší a prirodzenejší , a mám pocit že sa môžem sústrediť viacej na logiku webaplikácie ako na samotnú syntax . .

teraz taká dilema , mám pokračovať sa učiť v php , a snažiť sa pochopiť php , alebo sa mám zamerať na flask ? keď mám html/css/js šablonu napríklad trhoviska či bazáru a chcem doribiť backend aby to mohli uživatelia používať , tak čo je lepšia volba ? v php je viacej príkladov a väčšia komunita , to mi príde ako jediná velká výhoda php . Ale ten python flask mi príde ovela ovela sympatickejší . čo by ste mi odporúčali ? ak sa mám naučiť php tak myslím že sa ho naučím len tak že si sám vytvorím zadanie a budem sa snažiť problemy vyriešiť , každopádne si myslím že v phpčku sa aj tak rýchlo stratím . ďakujem moc :)

 
Odpovědět
10.10.2019 3:29
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:10.10.2019 7:28

Co se tyce PHP, muzes zacit psat objektove a pouzivat MVC (ModelViewCon­troller) a kod bude prehlednejsi a nebude se cpat HTML do php.

Nahoru Odpovědět
10.10.2019 7:28
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na phpnoob
Jaroslav Smrž:10.10.2019 8:41

PHP je snad nejjednodušší jazyk na naučení s jednoduchou syntaxí. Pravidla pro uvozovky i apostrofy jsou tu krásně vysvětlena, stačí jen opakovat lekce, dokud to řádně nepochopíš a až pak pokračovat dále. Navíc začátečník ocení dynamické typování. Nemusíš se tak zabývat, jestli se jedná o string, integer, float atd. Pomocí copy / paste se vůbec nic nenaučíš. Tuším, že v seriálu PHP se zde pracuje s databázovým wrapperem, který používá statické metody. To je pro tebe již vyšší dívčí a je jasné, že tomu nemůžeš rozumět (metody a funkce se pak volají pomocí -> nebo v případě statických metod ::). Zkus nejprve pochopit princip GET a POST a jak funguje URL a formuláře, co se tam děje, jak se předávají proměnné atd. Pak až se pusť do databází. Nemá smysl spěchat a chtít všechno pochopit za jedno odpoledne.

Nahoru Odpovědět
10.10.2019 8:41
/* Life runs on code */
Avatar
phpnoob
Člen
Avatar
Odpovídá na Jaroslav Smrž
phpnoob:10.10.2019 16:36

super , ďakujem . skúsim sa naučiť to get a post a potom pôjdem dalej . to get a post sa viaže tuším na formulár na parameter name , skúsim sa stým pohrať.

 
Nahoru Odpovědět
10.10.2019 16:36
Avatar
phpnoob
Člen
Avatar
Odpovídá na Jaroslav Smrž
phpnoob:10.10.2019 17:39

ok , pustil som sa na tie formuláre ,

mám jednoduchý formulár kde input name = "informácia" . ako túto informáciu mám vypísať ? nejde mi to . toto je ten formulár .
<form action = "index.php" method = "post">
<input type = "text" name = "informacia">
<input type = "submit">
</form>

skúšal som použiť print_r ($_REQUEST) ; to mi fungovalo ..., ale ako vypísať hodnotu ktorú som zadal do "informácia" ? skúšal som print_r $_informacia (nefungovalo), skúšal som print_r ("informacia") nefungovalo , skúšal som print_r ['informacia'] , alebo print_r [$informacia] . atd. tak isto som skúšal echo a nefungovalo ..

to znamená zatial mi funguje len toto :

<?php
print_r ($_REQUEST);
?>
<form action = "index.php" method = "post">
<input type = "text" name = "informacia">
<input type = "submit">
</form>

ako mám vypísať hodnotu ktorú som zadal do do inputu menom "informacia" ? BTW ešte tam nechcem pridavať ochranu proti XSS , to potom budem robiť korektne , teraz sa to potrebujem učiť . opatrenia proti xss robia pre učenie zložitejší kod a na učenie to netreba.

 
Nahoru Odpovědět
10.10.2019 17:39
Avatar
phpnoob
Člen
Avatar
Odpovídá na phpnoob
phpnoob:10.10.2019 17:51

to print_r mi tam pridáva to arrey . aha . takže echo ($_POST); ? to mi nefunguje :/ print ($_POST) tak isto ..

 
Nahoru Odpovědět
10.10.2019 17:51
Avatar
phpnoob
Člen
Avatar
phpnoob:10.10.2019 18:32

kde mám chybu ? :/

<?php

if (issset($_POST ["odoslat1"])) {

echo ($_POST["infor­macia"]) ;

}

?>
<form action = "index.php" method = "post">
<input type = "text" name = "informacia">
<input type = "submit" name = "ososlat1" value = "ososlat">
</form>

 
Nahoru Odpovědět
10.10.2019 18:32
Avatar
Odpovídá na phpnoob
Jan Prosecký:10.10.2019 21:40

Mas issset misto isset. Celkove to vypada jako bys neumel psat. Cekujes odoslat1 ale v name mas ososlat1

 
Nahoru Odpovědět
10.10.2019 21:40
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:10.10.2019 21:56

atribut name mate v html napsany jako ososlat ale v php jako odoslat, mezi atributy a uvozovkami se mezeri nedelaji

name="odoslat1"

, co se tice print_r tak ta vypisuje list urcitych polozek (array) protoze echo vypisuje string a jeste neco dalsiho, neviem presne nazev ale neni mozne takto vypsat array. Vypsani arraye jinak jak pomoci printr jde pomoci cyklu ale s cykly bych jeste nezacinal. Jedna rada, cekuj si i jestli jsou vyplneny boxy, muze se potom odeslat formular bez toho aby v nem neco bylo, ano muzete si dat na strane klienta atribut required ale POST pozadavek se da poslat i vzdalene a ochrana na strane klienta je takova ochrana neochrana, vzdy si to muze upravit na sve strane a potom nevite co muzete ocekavat.. jinak da se potom zjistit jak se data posilaji pomoci $_SERVER['REQU­EST_METHOD].

if($_SERVER['REQUEST_METHOD'] === 'POST') {...}

ale to nemeni nic na tom ze nejdulezitejsi validace je na strane serveru nikoliv uzivatele. A pomoci XSS se brani jednoduse pomoci funkce htmlspecialchars, nejlepe i s flagem ENT_QUOTES.

htmlspecialchars($string, ENT_QUOTES)

ale v tomhle pripade to je k nicemu, na nejaky nechteny kod se nikdo jiny nedostane pokud nezada stejny input. htmlspecialchars funguje ze prevede vse co jde na html entity (uvozovky napriklad &gt, &lt), hlavne nedelej copy paste lepsi udelat hello world nez kompletny system bez toho aby si rozumnel aspon zakladnim pojmum. Jestli chces tak mi napis rano a muzu ti s necim pomoct, verim ze se tu najdou i lepsi v php ale aspon neco zakladniho.

Nahoru Odpovědět
10.10.2019 21:56
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.10.2019 10:08

"kde mám chybu ? "
zkousel jsi zapnout error_reporting() ?

<?php

if (isset($_POST ["ososlat1"])) { // zde, nazev funkce je isset ne issset,
// zde, opet, tlacitko je nazvane name = "ososlat1", ne odoslat1
if (isset($_POST ["informacia"]))
echo htmlspecialchars($_POST["informacia"]) ; // zde, pro echo se nepouzivaji zavorky jako pro print_r
// zde, opet, nemuzes vypsat hodnotu, ktera nebyla odeslana (ano, ty ji ve formulari mas, ale hacker ti ji nemusi poslat, stav, ktery musis vyresit)
// zde do tretice, pokud vypisujes do html kodu hodnotu, mel bys pouzit htmlspecialchars (pokud jsi nechtel vypsat html kod)
}

?>
<form action = "index.php" method = "post">
<input type = "text" name = "informacia">
<input type = "submit" name = "ososlat1" value = "ososlat">
</form>

Jinak, ja to resim tak, ze jsem si vsechny zmatecni funkce pojmenoval po svem.
function escapeHtml($str) {return htmlspecialchar­s($str);}

A klidne programuj v pythonu, kdyz ti to vyhovuje a jde lepe. Ja osobne davam prednost prehlednejsimu php a jeho pouzitelne online dokumentaci php.net . Navic sis vybral v pythonu nejaky framework, ten ti zjednodusuje praci tim, ze ma spoustu veci resenych rozumne, proti zakladnimu pythonu. Pro php existuji tez ruzne frameworky. Treba pro mail, formulare a dalsi veci.

Tipy:
html, css - bootstrap css framework
js - jquery framework

Editováno 11.10.2019 10:09
 
Nahoru Odpovědět
11.10.2019 10:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.10.2019 10:14
@ini_set('error_reporting', E_ALL); // ruzne druhy povoleni chyb pro ruzne verze php
@ini_set("display_errors", "on");
//@ini_set('display_errors', 1);
//@ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
ob_start(); // vykreslovani do pameti pro prikazy echo, print, zrychli zobrazovani dlouhe stranky
header('P3P: CP="CAO PSA OUR"');        // aby session fungovala spravne v iframe v IE -- to asi nepotrebujes, pokud nepouzivas iframy
header("Content-Type: text/html; charset=UTF-8"); // nastaveni kodovani na utf-8, pro jistotu
setlocale(LC_TIME, "Czech_Czech Republic"); // dalsi nastaveni ohledne jazyka, datumu, casu...
setlocale(LC_ALL, "CZ_cs.UTF-8");
if (!isset($_SESSION)) {session_start();} // spusteni session, pokud uz spustene nejsou -- to zatim asi take nepotrebujes

Ja vim, na zabiti. Ale proste se neda spolehat, ze ma server nastaveni, jaka potrebujes. Tak je lepsi si je vynutit.

 
Nahoru Odpovědět
11.10.2019 10:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.