Java týden Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!
Avatar
phpnoob
Člen
Avatar
phpnoob:10. října 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  -1 10. října 3:29
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:10. října 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. října 7:28
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na phpnoob
Jaroslav Smrž:10. října 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. října 8:41
/* Life runs on code */
Avatar
phpnoob
Člen
Avatar
Odpovídá na Jaroslav Smrž
phpnoob:10. října 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. října 16:36
Avatar
phpnoob
Člen
Avatar
Odpovídá na Jaroslav Smrž
phpnoob:10. října 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. října 17:39
Avatar
phpnoob
Člen
Avatar
Odpovídá na phpnoob
phpnoob:10. října 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. října 17:51
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
phpnoob
Člen
Avatar
phpnoob:10. října 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. října 18:32
Avatar
Odpovídá na phpnoob
Jan Prosecký:10. října 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. října 21:40
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:10. října 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. října 21:56
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. října 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. října 10:09
 
Nahoru Odpovědět 11. října 10:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. října 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. října 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.