| Autor | Zpráva | ||
|---|---|---|---|
| juhano Profil |
#1 · Zasláno: 21. 6. 2009, 15:17:30
Ahojte,
Pomocou JPW sa mi podarilo urobiť "funkcny" formular. Pomocou JPW sa mi podarilo "zdokonalit" formular aby polia Telefon a Email neboli prazdne inak formular neodošle. Ale chcem to este zdokonalit a sice: 1. Kontrolovat pole Telefon ci obsahuje len numericke znaky 2. Kontrolovat pole E-mail ci obsahuje znaky @ a . Ak nebudu splnene tieto podmienky meil neodosle. Prehrabal som cele forum skusam metodou pokus - omyl. PHP cast
<?
$emailadr = "***@***.sk"; //e-mailová adresa na ktoru sa posle formular
$predmet = "Cenova kalkulacia"; //predmet zprávy
$odkoho = $_POST['mail_odosielatela']; //E-mail z ktoreho prisla zprava
$telefon = $_POST['telefon'];
$sprava = "Odkial: ".$_POST['odkial']."
";
$sprava .= "Kam: ".$_POST['kam']."
";
$sprava .= "Telefon: ".$_POST['telefon']."
";
$sprava .= "e-mail: ".$_POST['mail_odosielatela']."
";
$sprava .= "Predmet: ".$_POST['predmet']."
";
$sprava .= "Odkaz: ".$_POST['odkaz'];
if ($odkoho!="" and $telefon!="") //Ošetrujem vyplnenosť poli, ak nie sú vyplnené neodošle mejl
{
echo "<p><strong>Nevyplnili ste pozadovane polia.</p>"; // od tejto časti je to len take laborovanie
}
elseif(isset($_POST['mail_odosielatela'] && ereg('.+@.+\..+', $_POST['mail_odosielatela']))
{
echo "<p><strong>Nevyplnili ste pozadovane polia.</p>";
}
else
{
Mail("$emailadr",$predmet,$sprava,"From:" .$odkoho);
echo "<p><strong>Váš e-mail bol úspešne odeslaný.</p>";
}
else
{
echo "<p><strong>Správu sa nepodarilo odoslať. Nevyplnili ste povinné údaje.</p>";
}
?>
Dakujem sa pomoc nahlad ako to vypada je tu |
||
| Str4wberry Profil |
#2 · Zasláno: 21. 6. 2009, 16:58:09
Řádek 39:
elseif(isset($_POST['mail_odosielatela']) && ereg('.+@.+\..+', $_POST['mail_odosielatela'])) |
||
| fajzen Profil |
#3 · Zasláno: 21. 6. 2009, 17:12:38 · Upravil/a: fajzen
tie podmienky máš napísané úplne opačne :)
správne (jedno zo správnych) riešenie:
<?php
if(empty($_POST['odkial']) || empty($_POST['kam']) || empty($_POST['telefon']) || empty($_POST['mail_odosielatela'])) {
// predpokladám, že aj odkiaľ a kam sú povinné informácie, ak nie, stačí ich z podmienky odmazať
echo "<p><strong>Nevyplnili ste pozadovane polia.</p>";
} else if(!ereg('.+@.+\..+', $_POST['mail_odosielatela'])) {
// e-mailová adresa nemá správny formát
} else if(!preg_match('/^\d+$/', $_POST['mail_odosielatela'])) {
// telefón sa neskladá len z číslic
} else {
$sprava = "Odkial: ".$_POST['odkial']."\r\nKam: ".$_POST['kam']."\r\nTelefon: ".$_POST['telefon']."\r\ne-mail: ".$_POST['mail_odosielatela']."\r\nPredmet: ".@$_POST['predmet']."\r\nOdkaz: ".$_POST['odkaz'];
$emailadr = "***@***.sk"; //e-mailová adresa na ktoru sa posle formular
$predmet = "Cenova kalkulacia"; //predmet zprávy
if(mail($emailadr, $predmet, $sprava, "From:" .$odkoho) {
echo "<p><strong>Váš e-mail bol úspešne odeslaný.</p>";
} else {
// nepodarilo sa odoslať e-mail kvôli nejakým interným problémom
}
}
?>
|
||
| juhano Profil |
#4 · Zasláno: 21. 6. 2009, 17:34:01
@Fajzen,
dik skopiroval a nahradil som tvojim riesenim ale hadze mi to internal server error vdaka za pomoc |
||
| juhano Profil |
#5 · Zasláno: 21. 6. 2009, 19:11:33
<?
if(empty($_POST['telefon']) || empty($_POST['mail_odosielatela']))
{
// predpokladám, že aj odkiaľ a kam sú povinné informácie, ak nie, stačí ich z podmienky odmazať
echo "<p><strong>Nevyplnili ste pozadovane polia.</p>";
}
else if(!ereg('.+@.+\..+', $_POST['mail_odosielatela']))
{
// e-mailová adresa nemá správny formát
echo "<p><strong>Bol zadaný nesprávny E-Mail.</p>";
}
else if(!preg_match('/^\d+$/', $_POST['telefon'])) //tu bola chybicka miesto Telefon bolo mail odosielatela
{
// telefón sa neskladá len z číslic
echo "<p><strong>Telefon musi obsahovat ciselne pole.</p>";
}
else
{
Mail("$emailadr",$predmet,$sprava,"From:" .$odkoho);
echo "<p><strong>Váš e-mail bol úspešne odeslaný.</p>";
}
?>
V tejto podobe sa zda ze to funguje Vdaka za pomoc. Este ma otazku aoky je rozdiel v podmienkach kodu Mojho {
Mail("$emailadr",$predmet,$sprava,"From:" .$odkoho);
echo "<p><strong>Váš e-mail bol úspešne odeslaný.</p>";
}A navrhovaneho Fajzenom
if(mail($emailadr, $predmet, $sprava, "From:" .$odkoho) {
echo "<p><strong>Váš e-mail bol úspešne odeslaný.</p>";
}
|
||
| Alphard Profil |
#6 · Zasláno: 21. 6. 2009, 19:30:24
juhano:
„Este ma otazku aoky je rozdiel v podmienkach kodu“ Ve druhém případě se zpráva vypíše pouze když se email podaří odeslat (fce mail() musí vrátit true), vaše verze tu hlášku vypíše vždy. |
||
| juhano Profil |
#7 · Zasláno: 21. 6. 2009, 20:26:24
@Alphard som evidentne mimo misu z PHP ale:
Pises ze moju hlasku vypise vzdy. AKo vzdy? vypise ju len ked bude vyplneny telefon a email. Inak napise chybovu hlasku. resp. co znamena ked sa podari spravu odoslat? Ved ak je splnena podmienka vyplnenia telefon a mejl sprava sa odosle. Chcem tomu trosku pochopit no :-) ak tam uz nieco mam preco to tam mam. |
||
| fajzen Profil |
#8 · Zasláno: 21. 6. 2009, 20:51:02 · Upravil/a: fajzen
juhano
e-mail sa nemusí podariť odoslať ak nastane chyba SMTP servera (preťažený, odpojený, nenastavený atď), vtedy funkcia mail vráti false |
||
| AM Profil * |
#9 · Zasláno: 21. 6. 2009, 21:10:20
mimochodem, funkce ereg() (a všechny ereg začínající) jsou zavržené a do PHP6 se s nimi nepočítá (protože bývají problémové), používej výhradně preg_* (tedy zde preg_match místo ereg). Hlavně je hrozné míchat v jednom skriptu obojí.
|
||
| juhano Profil |
#10 · Zasláno: 21. 6. 2009, 21:29:23
Pani dakujem za vysvetlenie.
ereg nahradim preg-om. AKurat teda mi to hadze daku chybu: Warning: preg_match() [function.preg-match]: Unknown modifier '+' in /domains1/do1176800/public/www_root/formular.php on line 92 |
||
| AM_ Profil |
#11 · Zasláno: 21. 6. 2009, 21:33:29
výrazy pro preg_ funkce se musejí dávat mezi delimitery - zapisují se ve tvaru delimiter-výraz-delimiter-modifikátory, takže např. ten
'.+@.+\..+' '/.+@.+\..+/' |
||
| juhano Profil |
#12 · Zasláno: 21. 6. 2009, 21:44:31
Dakujem za pomoc ide to tak ako som si predstavoval.
|
||
| juhano Profil |
#13 · Zasláno: 21. 6. 2009, 22:01:59
Este predsa len jedn otazocka na fajzen-a:
ako si myslel ze telofon sa nesklada len z cislic?
else if(!preg_match('/^\d+$/', $_POST['mail_odosielatela'])) {
// telefón sa neskladá len z číslic
|
||
| fajzen Profil |
#14 · Zasláno: 22. 6. 2009, 07:41:13
juhano
pomýlil som sa, skopíroval som si zlú premennú, samozrejme tam má byť $_POST['telefon'] |
||
|
Časová prodleva: 16 let
|
|||
0