Poslao: 13 Maj 2013 12:15
|
offline
- FoxVanis
- Ugledni građanin
- 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.
|
|
Poslao: 13 Maj 2013 13:16
|
offline
- m4rk0
- Administrator
- Administrator tech foruma
- Marko Vasić
- Gladijator - Maximus Decimus Meridius
- Pridružio: 14 Jan 2005
- Poruke: 15766
- 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 ?
|
|
|
|
Poslao: 13 Maj 2013 13:27
|
offline
- FoxVanis
- Ugledni građanin
- 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.
|
|
|
|
Poslao: 13 Maj 2013 22:15
|
offline
- E.L.I.T.E.
- Legendarni građanin
- Pridružio: 23 Maj 2012
- Poruke: 4575
|
Evo ga, ako je dobro, ubaci ću ga sutra u onu stranu na sajtu da bude kompletna
<?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>
|
|
|
|
Poslao: 13 Maj 2013 22:28
|
offline
- m4rk0
- Administrator
- Administrator tech foruma
- Marko Vasić
- Gladijator - Maximus Decimus Meridius
- Pridružio: 14 Jan 2005
- Poruke: 15766
- 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.
|
|
|
|
Poslao: 14 Maj 2013 11:12
|
offline
- E.L.I.T.E.
- Legendarni građanin
- Pridružio: 23 Maj 2012
- Poruke: 4575
|
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
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.
|
|
|
|
Poslao: 14 Maj 2013 12:15
|
offline
- iCho
- 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>
|
|
|
|
Poslao: 14 Maj 2013 15:42
|
offline
- FoxVanis
- Ugledni građanin
- 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.
|
|
|
|
|
|