NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Lekce 10 - Vylepšení kontaktního formuláře v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na kivdul
Jan Lupčík:13.12.2015 20:54

$_SESSION je tvé řešení. Platí 20 minut od poslední změny.

<?php
if (isset($_GET['odpoved']) && $_GET['odpoved'])
{
    if (isset($_SESSION['skore']) && $_SESSION['skore'])
        $_SESSION['skore'] += $_GET['odpoved'];
    else
        $_SESSION['skore'] = $_GET['odpoved'];
}
Odpovědět
13.12.2015 20:54
TruckersMP vývojář
Avatar
kivdul
Člen
Avatar
Odpovídá na Jan Lupčík
kivdul:19.12.2015 11:13

díky

ta globální proměná $_SESSION[ ] je skvělá :-D

 
Odpovědět
19.12.2015 11:13
Avatar
Karel Šlaj
Člen
Avatar
Karel Šlaj:13.8.2016 11:57

Tak poprvé se mi při postupování dle vašich návodů vyskytl problém (y), na které jsem krátký. Využívám dvě textarea a snažím se je odeslat společně:

$sucess = mb_send_mail($adress, $subject, $_POST['message'], $_POST['strategy'], $head);

Tímhle způsobem mi začal chodit email z adresy mého hostingu namísto zadané a odeslalo se jen jedno textové pole.

$sucess = mb_send_mail($adress, $subject, $_POST['message' + 'strategy'],  $head);

Byl další neůspěšný pokus.
Hodně dlouho jsem hledal chyby ve zbytku kódu, ale nenašel. Dále mám problém ještě s tím, že přesměrování mě posílá na afort-crowfall.clan­web.eu/mailfor­m.php?sucess=y­es , což je neexistující stránka. Můj mailform se jmenuje recruiting.php
Jinak kdyby přece jenom byla chyba jinde, tak vkládám celý obsah souboru recruiting.php
http://www.itnetwork.cz/dev-lighter/770

Děkuji za případnou pomoc. Moc si vážím zdejších návodů!

 
Odpovědět
13.8.2016 11:57
Avatar
Odpovídá na Karel Šlaj
Neaktivní uživatel:13.8.2016 12:19

Já to udělal takto, jedná se o script z register.php, myslím, že by ti to mohlo pomoct :)

if(mysql_affected_rows($link)==1)
                {
            $to = $_POST['email'];
            $subject = "Yourradio-registration info";

            $message = '<html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="viewport" content="width=device-width" />
          <style>
            a{color:#2BA6CB;}
            .btn{text-decoration:none;color:#FFF;background-color:#666;padding:10px 16px;font-weight:bold;margin-right:10px;text-align:center;cursor:pointer;display:inline-block;}
            .btn.btn-primary{background:#1CD5B4;;  color:#fff;  border:none !important;  border:2px solid transparent !important;  font-family:"Source Sans Pro",Arial,sans-serif;  margin:0px auto;}
             .btn:hover,.btn:active,.btn:focus{background:#393e46 !important;  color:#fff;  outline:none !important;}
            p.callout{padding:15px;background-color:#ECF8FF;margin-bottom:15px;}
            .callout a{font-weight:bold;color:#2BA6CB;}
            table.social{background-color:#ebebeb;}
            .social .soc-btn{padding:3px 7px;font-size:12px;margin-bottom:10px;text-decoration:none;color:#FFF;font-weight:bold;display:block;text-align:center;} a.fb{background-color:#3B5998!important; }
            a.tw{background-color:#1daced!important; } a.gp{background-color:#DB4A39!important; } a.ms{background-color:#000!important; } .sidebar .soc-btn{display:block;width:100%;}
            table.head-wrap{width:100%;} .header.container table td.logo{padding:15px; } .header.container table td.label{padding:15px; padding-left:0px;} table.body-wrap{width:100%;}
            table.footer-wrap{width:100%;clear:both!important;} .footer-wrap .container td.content  p{border-top:1px solid rgb(215,215,215); padding-top:15px;} .footer-wrap .container td.content p{font-size:10px;font-weight:bold;}
            h1, h2, h3, h4, h5, h6{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif; line-height:1.1; margin-bottom:15px; color:#000;} h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:60%; color:#6f6f6f; line-height:0; text-transform:none; } h1{font-weight:200; font-size:44px;}
            h2{font-weight:200; font-size:37px;} h3{font-weight:500; font-size:27px;} h4{font-weight:500; font-size:23px;} h5{font-weight:900; font-size:17px;} h6{font-weight:900; font-size:14px; text-transform:uppercase; color:#444;} .collapse{margin:0!important; p,ul{margin-bottom:10px; font-weight:normal; font-size:14px; line-height:1.6;}
            p.lead{font-size:17px; } p.last{margin-bottom:0px;} ul li{margin-left:5px;list-style-position:inside;}
            ul.sidebar{background:#ebebeb;display:block;list-style-type:none;} ul.sidebar li{display:block; margin:0;} ul.sidebar li a{text-decoration:none;color:#666;padding:10px 16px; margin-right:10px; cursor:pointer;border-bottom:1px solid #777777;border-top:1px solid #FFFFFF;display:block;margin:0;}
            ul.sidebar li a.last{border-bottom-width:0px;}
            ul.sidebar li a h1, ul.sidebar li a h2, ul.sidebar li a h3, ul.sidebar li a h4, ul.sidebar li a h5, ul.sidebar li a h6, ul.sidebar li a p{margin-bottom:0!important;}
            .container{display:block!important;max-width:600px!important;margin:0 auto!important;clear:both!important;}
            .content{padding:15px;max-width:600px;margin:0 auto;display:block; }
            .content table{width:100%; }
            .column{width:300px;float:left;}
            .column tr td{padding:15px; }
            .column-wrap{padding:0!important; margin:0 auto; max-width:600px!important;}
            .column table{width:100%;}
            .social .column{width:280px;min-width:279px;float:left;} .clear{display:block; clear:both; }
            @media only screen and (max-width:600px){a[class="btn"]{display:block!important; margin-bottom:10px!important; background-image:none!important; margin-right:0!important;} div[class="column"]{width:auto!important; float:none!important;}table.social div[class="column"]{width:auto!important;}}
            </style>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Yourradio registration</title>
            </head>
            <body bgcolor="#FFFFFF"><table class="head-wrap" bgcolor="#999999"><tr><td></td><td class="header container" >
            <div class="content"><table bgcolor="#999999"><tr><td>
            <a href="http://radiodb.tk/index.php"><img src="http://radiodb.tk/images/logo.png" width="50px" heigth="50px"/></td></tr></table></div></td><td></td></tr></table><!-- /HEADER -->
            <!-- BODY --><table class="body-wrap"><tr><td></td><td class="container" bgcolor="#FFFFFF"><div class="content"><table><tr><td><h3>Hi '.$_POST["f_name"].' '.$_POST["l_name"].'</h3>
            <p class="lead">Welcome to Yourradio!</p><p>In this email you can find some important info about your registration.</p><p>DON´T DELETE THIS EMAIL!</p><p><b>Your registration:</b></p>
            <table width="100%"><tr><td><b>Username:</b></td><td>'.$_POST["username"].'</td></tr><tr><td><b>Password:</b></td><td>'.$_POST["password"].'</td></tr></table>
            <p class="callout"><a href="http://radiodb.tk/form.php" class="btn btn-primary">Login to your account &raquo;</a></p>
            <table class="social" width="100%"><tr><td><table align="left" class="column"><tr><td><h5 class="">Contact Info:</h5>Email: <strong><a href="emailto:[email protected]">[email protected]</a></strong></p></td></tr></table><span class="clear"></span>       </td></tr></table>
            </td></tr></table></div></td><td></td></tr></table><table class="footer-wrap"><tr><td></td><td class="container"><div class="content"></div></td><td></td></tr></table></body></html>';

            $headers = "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            $headers .= 'From: [email protected]>' . "\r\n";
if(mail($to,$subject,$message,$headers)):
    $successMsg = 'Email has sent successfully.';
else:
    $errorMsg = 'Email sending fail.';
endif;

EDIT:

if(mail($to,$subject,$message,$headers)):
    $successMsg = 'Email has sent successfully.';
else:
    $errorMsg = 'Email sending fail.';
endif;
Editováno 13.8.2016 12:21
Odpovědět
13.8.2016 12:19
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Karel Šlaj
mkub:13.8.2016 13:32

najprv si musis spojit $_POST['message'] a $_POST['strategy'], a nasledne to posles ako jednu premennu, totiz skustocna syntax tej funkcie je:

bool mb_send_mail ( string $to , string $subject , string $message [, string $additional_headers = NULL [, string $additional_parameter = NULL ]] )

kde:
$to - znamena prijemcu
$subject - znamena policko "Subject"
$message - je samotna sprava
$additional_headers - rozsirujuce hlavicky (nepovinna, standardne nastavena na "NULL")
$additional_pa­ramter - doplnujuce parametre (nepovinna, standardne nastavena na "NULL")
viac o funkcii: http://php.net/…end-mail.php

cize asi nejako takto:

...
$sucess = mb_send_mail($adress, $subject, $_POST['message'] . $_POST['strategy'],  $head);
...

resp. takto:

...
$msg = $_POST['message'] . $_POST['strategy'];
$sucess = mb_send_mail($adress, $subject, $msg, $head);
...

totiz vyraz "+" nesluzi na spajanie retazcov, ale na scitavanie cisiel

 
Odpovědět
13.8.2016 13:32
Avatar
Karel Šlaj
Člen
Avatar
Odpovídá na mkub
Karel Šlaj:16.8.2016 9:49

Děkuju tady oboum redaktorům za výpomoc. Už to funguje tak jak jsem si představoval (*_*)

 
Odpovědět
16.8.2016 9:49
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Karel Šlaj
mkub:16.8.2016 10:12

ak ti to pomohlo, oznac to ako riesenie

 
Odpovědět
16.8.2016 10:12
Avatar
Miroslav Mucha:4.11.2017 11:03

Ahoj, mám dotaz: V některých případech (viz níže) není za podmínkou if() kód zapsán ve složených závorkách. Kdy je nutné ho uzavřít a kdy ne?

.1
if (isset($_POST['jmeno']))
        $jmeno = $_POST['jmeno'];
else
        $jmeno = '';

Př. 2
<?php
        if ($hlaska)
                echo('<p>' . htmlspecialchars($hlaska) . '</p>');

        $jmeno = (isset($_POST['jmeno'])) ? $_POST['jmeno'] : '';
        $email = (isset($_POST['email'])) ? $_POST['email'] : '';
        $zprava = (isset($_POST['zprava'])) ? $_POST['zprava'] : '';
?>
 
Odpovědět
4.11.2017 11:03
Avatar
Odpovídá na Miroslav Mucha
Neaktivní uživatel:4.11.2017 11:36

Je treba ho uzavrit v pripade, kdy se jedna o vice nez jeden souvisly statement, nebo expression.

Takze sice muzes udelat tohle:

if (true)
  something
    .doStuff()
    .resAttr
    .finallCall()

Ale uz ne:

if (true)
  something()
  somethingElse()

Protoze se to vyhodnoti jako neco uplne jineho.

Doporucuju ty zavorky vzdycky psat, protoze pak pri upravach nevznikaji divny chyby.

Editováno 4.11.2017 11:37
Odpovědět
4.11.2017 11:36
Neaktivní uživatelský účet
Avatar
Peter Sciranka
Tvůrce
Avatar
Odpovídá na Miroslav Mucha
Peter Sciranka:4.11.2017 11:43

Ahoj, ide o to, že či sa má po "if" vykonať viac ako jedna operácia, vtedy je nutné použiť zložené zátvorky. Ak sa jedná iba o jednu operáciu, tak stačí použiť skrátený zápis == bez zložených zátvoriek.
Príklad:

if(x>y){
        a = 10;
        b = 20;
}

V tomto prípade sa majú vykonať dve operácie, tak je nutné to zabaliť do zložených zátvoriek.
Ak chceme pri podmienke vykonať len jednu operáciu, stačí to zapísať v skrátenom formáte:

if(x>y)
        a=10;

Ak by sme v druhom príklade zaísali aj "b=20;" tak to by sa vykonalo bez ohľadu na to, či by platila podmienka alebo nie.
Stačí to takto?

Odpovědět
4.11.2017 11:43
Act as if it was Impossible to Fail
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 10 zpráv z 149.