Početak učenja PHP-a

3

Početak učenja PHP-a

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Super! Ajde sad da ti dam 4+ za trud i vladanje, super si uradio.
Super si se snašao za početak ali sam hteo da uradiš sve samo na jednoj PHP stranici.
Sad ću ti dati pomoć da vidiš kako sam mislio. Nabrzaka sam napisao ali radi perfektno:
<body> <?php if(isset($_POST["ime"]) || isset($_POST["prezime"]) || isset($_POST["mejl"]) || isset($_POST["poruka"])) {    $pass=true;    $napomena='';    if (empty($_POST["ime"]) || empty($_POST["prezime"]))    {       $napomena.= "Polja za ime i prezime moraju biti popunjena!<br>";       $pass=false;    }    if (empty($_POST["mejl"]))    {       $napomena.= "Polje za mejl je obavezno i mora biti popunjeno!<br>";       $pass=false;    }    if (empty($_POST["poruka"]))    {       $napomena.= "Niste uneli sadržaj poruke!<br>";       $pass=false;    } } // Proveri da li je poruka poslata if($pass) { // Poslata poruka ?> <b>Dobrodošli</b>  <?php echo $_POST["ime"] . " " .  $_POST["prezime"] ?>! <br> <b>Vaš mejl je</b>  <?php echo $_POST["mejl"]; ?>. <br> <b>Vaša poruka: </b> <?php echo $_POST["poruka"]; ?> <br><br> <?php } else {    // Prikaži napomenu    if(!empty($napomena)){echo '<div style=" color:red; margin-bottom:10px; border:1px solid red; padding:10px;">'.$napomena.'</div>';}     ?>    <form action="poruke.php" method="post">    <input type="text" name="ime" value=""> <b>Ime</b> <br/>    <input type="text" name="prezime" value=""><b>Prezime</b>  <br/>    <input type="text" name="mejl" value=""><b>E-mail</b>  <br/>    <textarea name="poruka" cols="20" rows="5" value=""></textarea><b>Poruka</b>  <br/>    <input type="submit" value="Pošalji!">    </form> <?php }?> </body>
Ovo stavi u jedan index.php i radiće ti savršeno. Da bi odmah naučio malo "naprednije" programiranje daću ti skraćenu ternery verziju:
<body> <?php if(isset($_POST["ime"]) || isset($_POST["prezime"]) || isset($_POST["mejl"]) || isset($_POST["poruka"])) {    // Ovde ti je kraća opcija provere i upita (ternery):    $napomena.=empty($_POST["ime"]) || empty($_POST["prezime"]) ? "Polja za ime i prezime moraju biti popunjena!<br>" : false;    $napomena.=empty($_POST["mejl"]) ? "Polje za mejl je obavezno i mora biti popunjeno!<br>" : false;    $napomena.=empty($_POST["poruka"]) ? "Niste uneli sadržaj poruke!<br>" : false;    $pass=empty($napomena) ? true : false; } // Proveri da li je poruka poslata if($pass) { // Poslata poruka ?> <b>Dobrodošli</b>  <?php echo $_POST["ime"] . " " .  $_POST["prezime"] ?>! <br> <b>Vaš mejl je</b>  <?php echo $_POST["mejl"]; ?>. <br> <b>Vaša poruka: </b> <?php echo $_POST["poruka"]; ?> <br><br> <?php } else {    // Prikaži napomenu    echo !empty($napomena) ? '<div style=" color:red; margin-bottom:10px; border:1px solid red; padding:10px;">'.$napomena.'</div>' : NULL; ?>    <form action="poruke.php" method="post">    <input type="text" name="ime" value="<?php echo isset($_POST["ime"]) ? $_POST["ime"] : '' ?>"> <b>Ime</b> <br/>    <input type="text" name="prezime" value="<?php echo isset($_POST["prezime"]) ? $_POST["prezime"] : '' ?>"><b>Prezime</b>  <br/>    <input type="text" name="mejl" value="<?php echo isset($_POST["mejl"]) ? $_POST["mejl"] : '' ?>"><b>E-mail</b>  <br/>    <textarea name="poruka" cols="20" rows="5" value="<?php echo isset($_POST["poruka"]) ? $_POST["poruka"] : '' ?>"></textarea><b>Poruka</b>  <br/>    <input type="submit" value="Pošalji!">    </form> <?php }?> </body>
Moćno zar ne? Ovo što sam ti zadnje postavio je bolje i kvalitetnije za pregle i definisanje funkcija. Isto se ponaša kao if/else funkcija. Shvatićeš kada uporediš kodove.
$poruka=!empty($text) ? $text : 'Prazno';
isto je kao
if(!empty($text)) {$poruka=$text;} else {$poruka='Prazno';}
Imaš sledeći zadatak:
Pokušaj napraviti validator e-mail adrese. Znači funkciju koja proverava dali je email pravilno upisan ili nije.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • m4rk0  Male
  • Administrator
  • Administrator tech foruma
  • Marko Vasić
  • Gladijator - Maximus Decimus Meridius
  • Pridružio: 14 Jan 2005
  • Poruke: 15754
  • Gde živiš: Majur (Colosseum)

Napisano: 13 Maj 2013 12:38

Ova tema ima potencijala da bude odlicna za pocetnike i dosla mi je kao kec na deset, a verujem i ostalim pocetnicima. Ono sto bih zamolio je da kada se ponudi resenje zadatka, da se sto detaljnije objasni sta koja linija koda znaci. Naravno, ne mora red po red, ali konkretno u gornjem code-u bi valjalo napomenuti sledece:

isset i empty funkcije, operator I I , true i false vrednost varijable $pass,
Znaci, zasto bas oni u konkretnom slucaju.

Dopuna: 13 Maj 2013 13:16

Takodje me interesuje, kako ce ovaj gornji code da radi ako nismo ubacili mail() funkciju ?



offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

m4rk0 ::Napisano: 13 Maj 2013 12:38

Ova tema ima potencijala da bude odlicna za pocetnike i dosla mi je kao kec na deset, a verujem i ostalim pocetnicima. Ono sto bih zamolio je da kada se ponudi resenje zadatka, da se sto detaljnije objasni sta koja linija koda znaci. Naravno, ne mora red po red, ali konkretno u gornjem code-u bi valjalo napomenuti sledece:

isset i empty funkcije, operator I I , true i false vrednost varijable $pass,
Znaci, zasto bas oni u konkretnom slucaju.

Dopuna: 13 Maj 2013 13:16

Takodje me interesuje, kako ce ovaj gornji code da radi ako nismo ubacili mail() funkciju ?

Mhm. Posle ću da upišem objašnjenje funkcija. Polako sa mail() funkcijom. Neka nauči osnove. Navodim ga deo po deo da uradi. Posle će doći mail funkcija. Neka sada uradi proveru email-a.
Posle ću mu dati još 2-3 zadatka i na kraju neka sve ubaci u email. Super je vežbica.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4455

Evo ga, ako je dobro, ubaci ću ga sutra u onu stranu na sajtu da bude kompletna Ziveli

<?php if (isset($_POST['email_korisnika']) == true && empty($_POST['email_korisnika']) == false) {         $mejl = $_POST['email_korisnika'];         if (filter_var($mejl, FILTER_VALIDATE_EMAIL) == true)             {             echo 'Email adresa koju ste uneli je validna';             }                  else             {             echo 'Email adresa koju ste uneli nije validna';             } ?> <form action = "" method = "post">         <input type="text" name="email_korisnika" />         <input type="submit" value="Proveri" /> </form>   

offline
  • m4rk0  Male
  • Administrator
  • Administrator tech foruma
  • Marko Vasić
  • Gladijator - Maximus Decimus Meridius
  • Pridružio: 14 Jan 2005
  • Poruke: 15754
  • Gde živiš: Majur (Colosseum)

Ako si se vec odlucio za skracivanje globalne varijable $_POST['email_korisnika'], to si trebao da uradis pre if petlje i da tu skracenu verziju odmah iskoristis vec kod isset i empty funkcije. Nadam se da ne gresim.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4455

Napisano: 13 Maj 2013 22:33

Uvideo sam još jednu grešku. Fali mi vitičasta zagrada za kraj petlje.

@m4rk0 - ja mislim da je njabolje da sačekamo Fox-a ili neko drugo stručno lica za ovo.

Dopuna: 14 Maj 2013 11:12

Arrow http://elitebeta.comoj.com/email_verifikacija.php

<?php if (isset($_POST['email_korisnika']) == true && empty($_POST['email_korisnika']) == false) {         $mejl = $_POST['email_korisnika'];         }         if (filter_var($mejl, FILTER_VALIDATE_EMAIL) == true)             {             echo 'Email adresa koju ste uneli je validna';             }                  else             {             echo 'Email adresa koju ste uneli nije validna';             } ?> <form action = "" method = "post">         <input type="text" name="email_korisnika" />         <input type="submit" value="Proveri" /> </form>   

Isprobao sam i radi.

offline
  • iCho  Male
  • Elitni građanin
  • Pridružio: 03 Maj 2011
  • Poruke: 1808
  • Gde živiš: Mos Eisley

Napisano: 14 Maj 2013 12:14

Pri prvom ulasku na stranicu izbacuje mi da adresa nije validna iako je nisam uneo.

Zašto?

Zato što nisi sve uslove obuhvatio prvim uslovom:
Tvoja skripta sada radi ovako:

Ako je dostavljena vrednost $_POST['email_korisnika'] i vrednost nije prazna definiši promenljivu $mejl.
Ako je adresa validna izbaci poruku da je validna, ako nije izbaci poruku da nije.

A trebalo bi ovako:

Akko je dostavljena vrednost $_POST['email_korisnika'] i vrednost nije prazna definiši promenljivu $mejl, zatim ispitaj validnost i izbaci odgovarajuću poruku.

Akko - ako i samo ako, znači ako su oba uslova ispunjena ispitaj validnost, ako nisu ne radi ništa.

Dopuna: 14 Maj 2013 12:15

<?php if (isset($_POST['email_korisnika']) == true && empty($_POST['email_korisnika']) == false) {         $mejl = $_POST['email_korisnika'];                 if (filter_var($mejl, FILTER_VALIDATE_EMAIL) == true)             {             echo 'Email adresa koju ste uneli je validna';             }                  else             {             echo 'Email adresa koju ste uneli nije validna';             } } ?> <form action = "" method = "post">         <input type="text" name="email_korisnika" />         <input type="submit" value="Proveri" /> </form>   

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Odlično! Prošli put sam ti pokazao kako da moj zadatak uradiš. Sada sam tvoju email proeru dodao svom kodu i okačio. Sve je opet na jednoj stranici. Malo ću te možda zbuniti ovim kodom ali tek na posletku ću dati objašnjenje u detalj. Pokušaj sam prokljuviti malo.
<body> <?php if(isset($_POST["ime"]) || isset($_POST["prezime"]) || isset($_POST["mejl"]) || isset($_POST["poruka"])) {    // Ovde ti je kraća opcija provere i upita (ternery):    $napomena.=empty($_POST["ime"]) || empty($_POST["prezime"]) ? "Polja za ime i prezime moraju biti popunjena!<br>" : NULL;    $napomena.=empty($_POST["mejl"]) ? "Polje za mejl je obavezno i mora biti popunjeno!<br>" :    (filter_var($_POST["mejl"], FILTER_VALIDATE_EMAIL)==true ? NULL : 'Email adresa koju ste uneli nije validna<br>');    $napomena.=empty($_POST["poruka"]) ? "Niste uneli sadržaj poruke!<br>" : NULL;    $pass=empty($napomena) ? true : false; } // Proveri da li je poruka poslata if($pass) { // Poslata poruka ?> <b>Dobrodošli</b>  <?php echo $_POST["ime"] . " " .  $_POST["prezime"] ?>! <br> <b>Vaš mejl je</b>  <?php echo $_POST["mejl"]; ?>. <br> <b>Vaša poruka: </b> <?php echo $_POST["poruka"]; ?> <br><br> <?php } else {    // Prikaži napomenu    echo !empty($napomena) ? '<div style=" color:red; margin-bottom:10px; border:1px solid red; padding:10px;">'.$napomena.'</div>' : NULL; ?>    <form action="poruke.php" method="post">    <input type="text" name="ime" value="<?php echo isset($_POST["ime"]) ? $_POST["ime"] : '' ?>"> <b>Ime</b> <br/>    <input type="text" name="prezime" value="<?php echo isset($_POST["prezime"]) ? $_POST["prezime"] : '' ?>"><b>Prezime</b>  <br/>    <input type="text" name="mejl" value="<?php echo isset($_POST["mejl"]) ? $_POST["mejl"] : '' ?>"><b>E-mail</b>  <br/>    <textarea name="poruka" cols="20" rows="5" value="<?php echo isset($_POST["poruka"]) ? $_POST["poruka"] : '' ?>"></textarea><b>Poruka</b>  <br/>    <input type="submit" value="Pošalji!">    </form> <?php }?> </body>
U liniju gde proveravaš dali je popunjeno polje za email sam dodao samo tvoju proveru validnosti email-a.

SLEDEĆI ZADATAK:
Napravi jedan random generator slova i brojeva gde će izbaciti reč od 7 karaktera svaki put kada se refrešuje stranica. Taj niz od slova i brojeva se mora upisati u jedno polje svaki put kada se želi poslati poruka. Mora da izbaci kao grešku ako je polje prazno i ako se nije dobro upisao taj niz. Sve dok taj niz dobro ne upišeš neće se moći poslati poruka. Nešto kao "captcha" ali jednostavnije.

Nastavi u mom kodu ako možeš. Ili ga prepiši sam od početka ali nemoj koristiti ternery već if/else funkcije kako sam pokazao u predhodnom primeru. Super ti ide.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4455

Napisano: 14 Maj 2013 21:33

OK, ovde ću malo da stanem da mi se sve slegne malo Mr. Green Većinu stvari oko ovoga sam shvatio.

Dopuna: 14 Maj 2013 21:42

@iCho - Hvala ti na objašnjenju, ispravio sam kod Ziveli

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

_iKaC ::Oho lesi se vratio kuci LOL

Prvo si bio ovde pa pobegao kod Srkija a sad si se vratio kod mene Smile nisi zadovoljan sa c++


E.L.I.T.E. ::Zadovoljan sam svojim trenutnim znanjem C++-a (iako i nije baš veliko Mr. Green ).

Ovo sa PHP sam baš odlučio i neće me ništa sprečiti, pogotovo što se radi o web programiranju, što znači da će više ljudi videti moj rad, a i krajnje je vreme da se upustim i u te vode Ziveli


_iKaC ::NEverujem ti ali ajde. Ti cas oces 5 stvari od jednom. Video sam to jos ranije od tebe. Odluci se za jedno i budi dobar u jednom.


Posle prve lekcije odustajes. Kao i sa ostalim jezicima. Nisi ti jos uvek video ni P od PHP-a. Ne smeta mi da se saltas sa jednog na drugi jezik i da ne naucis nista ali tako neces postati programer.

Ko je trenutno na forumu
 

Ukupno su 1161 korisnika na forumu :: 35 registrovanih, 7 sakrivenih i 1119 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1798 - dana 19 Sep 2019 18:42

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _commandos_, A.R.Chafee.Jr., aljosa7, amaterSRB, azarakhsh, bounty hunters, branko72, Buzdovan2, caesar2, Gama, Georgius, Kubovac, Ljubitelj2, MarKhan, Mercury, misa1xx, MORAVA1, nenad812, nikoladi, ostoja, pedjolino76, pein, prekodrinski, Recce, royst33, Sasa Pavlovic, stug, theNedjeljko, Toni, USSVoyager, vasa.93, versus2, vespa nikola, voja64, zoidbergs