| Autor | Zpráva | ||
|---|---|---|---|
| slavin Profil |
#1 · Zasláno: 27. 12. 2013, 11:16:06 · Upravil/a: Moderátor (editace znemožněna) 31. 12. 2013, 00:40:44
Dobrý den,
Mám ulohu z ucebnice, ale kdyz ji otevru, tak na zacatku mi vyskoci toto: Notice: Undefined index: jmeno in C:\xampp\htdocs\kniha\03\kontakt.php on line 2 Notice: Undefined index: telefon in C:\xampp\htdocs\kniha\03\kontakt.php on line 3 Notice: Undefined index: email in C:\xampp\htdocs\kniha\03\kontakt.php on line 4 Notice: Undefined index: predmet in C:\xampp\htdocs\kniha\03\kontakt.php on line 5 Notice: Undefined index: zprava in C:\xampp\htdocs\kniha\03\kontakt.php on line 6 PHP kod: <?php $jmeno=trim(htmlspecialchars(strip_tags($_POST['jmeno']))); $telefon=trim(htmlspecialchars(strip_tags($_POST['telefon']))); $email=trim(htmlspecialchars(strip_tags($_POST['email']))); $predmet=trim(htmlspecialchars(strip_tags($_POST['predmet']))); $zprava=trim(htmlspecialchars(strip_tags($_POST['zprava']))); Dekuji |
||
| Marschmallow Profil |
#2 · Zasláno: 27. 12. 2013, 11:21:09
slavin:
Kde máš zakončen ten PHP kód? ?>
|
||
| Alphard Profil |
#3 · Zasláno: 27. 12. 2013, 11:22:40
|
||
| slavin Profil |
#4 · Zasláno: 27. 12. 2013, 11:22:48 · Upravil/a: slavin
Cely kod
<?php
$jmeno=trim(htmlspecialchars(strip_tags($_POST['jmeno'])));
$telefon=trim(htmlspecialchars(strip_tags($_POST['telefon'])));
$email=trim(htmlspecialchars(strip_tags($_POST['email'])));
$predmet=trim(htmlspecialchars(strip_tags($_POST['predmet'])));
$zprava=trim(htmlspecialchars(strip_tags($_POST['zprava'])));
if($_POST['poslat']=="ano") {
$chyby=array();
if(empty($jmeno)) { $chyby[]='Vyplňte své jméno.'; }; // $jmeno je prázdné
if(is_numeric($jmeno)) { $chyby[]='Jméno nemůže mít číselnou hodnotu.'; }; // jméno nemůže být číslo
if(strlen($jmeno)<=2) { $chyby[]='Uvedené jméno je moc krátke.'; }; // minimální délka jména je tři znaky
if(empty($telefon) && empty($email)){ // pokud jsou oba údaje nevyplněny
$chyby[]='Uveďte kontaktní telefon nebo emailovou adresu.';
};
if(!empty($telefon)) { // pokud je $telefon vyplněn
$telefon=str_replace('+', '', $telefon); // zmažeme nečíselné znaky
$telefon=str_replace('-', '', $telefon);
$telefon=str_replace('/', '', $telefon);
$telefon=str_replace(' ', '', $telefon); // zmažeme i mezery
if(!is_numeric($telefon)) { // pokud to není číslo, obsahuje nepovolené znaky
$chyby[]='Telefonní kontakt obsahuje nepovolené znaky.';
}
if(strlen($telefon)<9 || strlen($telefon)>15) {
// délku si můžete zvolit sami podle vašeho uvážení
$chyby[]='Telefonní kontakt má nesprávnou délku.';
}
}
if(!empty($email)){ // pokud je vyplněný $email
if(!preg_match('/^[^@]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}+$/', $email)){
// emailová adresa nemá správní tvar
$chyby[]='Uvedená emailová adresa nemá správní tvar.';
}
}
if(empty($predmet)){ $chyby[]='Uveďte předmět vaši zprávy.'; };
if(strlen($predmet)<5){ $chyby[]='Předmět zprávy je příliš krátký.'; };
if(empty($zprava)){ $chyby[]='Napište vaši zprávu.'; };
if(strlen($zprava)<20){ $chyby[]='Zpráva je příliš krátká. Zkuste ji popsat podrobněji.'; };
$chyba=join('<br />', $chyby);
if(!empty($chyba)){
echo '<div class=“chybovaHlaska“>'.$chyba.'</div>';
};
if(empty($chyba)){ // všechna jsou v pořádku
$textZpravy='Odesílatel: <strong>'.$jmeno.'</strong><br /><br />
[ '.$email.' '.$telefon.' ]<br /><br />
'.$zprava;
require "class.phpmailer.php";
require "class.smtp.php";
$Mail = new PHPMailer();
$Mail->CharSet = 'UTF-8';
$Mail->IsSMTP();
$Mail->Host = "smtp.googlemail.com";
$Mail->Username="prihlasovaci.jmeno.k.emailu";
$Mail->Password="heslo";
$Mail->SMTPAuth=true;
$Mail->From = "prihlasovaci.jmeno.k.emailu@gmail.com";
$Mail->FromName = $jmeno;
$Mail->AddAddress("prihlasovaci.jmeno.k.emailu@gmail.com");
if($_POST['kopie']=="on") {
$Mail->AddBCC($email);
}
$Mail->IsHTML(true);
$Mail->Subject = $predmet;
$Mail->Body = $textZpravy;
$cistyText=strip_tags($textZpravy);
$Mail->AltBody=$cistyText;
if($Mail->Send()) {
$okHlaska="Zpráva byla úspěšne odesláná.";
} else {
echo "Zprávu se nepodařilo odeslat. Zkuste to znovu.";
}
}
}
if($okHlaska==""){
echo '<form action="" method="post">
<label for="jmeno">Vaše jméno:</label>
<input type="text" name="jmeno" id="jmeno" value="'.$jmeno.'" /><br />
<label for="telefon">Telefon:</label>
<input type="text" name="telefon" id="telefon" value="'.$telefon.'" /><br />
<label for="email">Email:</label>
<input type="text" name="email" id="email" value="'.$email.'" /><br />
<label for="predmet">Předmět:</label>
<input type="text" name="predmet" id="predmet" value="'.$predmet.'" /><br />
<label for="zprava">Zpráva / dotaz:</label>
<textarea name="zprava" id="zprava" rows="3">'.$zprava.'</textarea><br />
<input type="checkbox" name="kopie" id="kopie"';
if($_POST['kopie']=="on"){ echo ' checked="checked"'; };
echo '/><label for="kopie">zaslat kopii zprávy na můj
email</label><br />
<input type="submit" value="Odeslat dotaz" />
<input type="hidden" name="poslat" value="ano" />
</form>';
} else {
echo $okHlaska;
}
?>Alphard: „S proměnnými pracujte jen když existují, viz isset() nebo empty(). Hodně ‚učebnic‘ by bylo lepší vyhodit z okna...“ Muzes mi tu hodit konkretni priklad, jsem zacatecnik |
||
| nemeja Profil |
#5 · Zasláno: 27. 12. 2013, 11:31:33
slavin:
Jenže ty je přiřazuješ do proměnných a potom až je kontroluješ. Obal kód, který je ke své práci potřebuje tímto: if( isset( $_POST['jmeno'], $_POST['telefon'], $_POST['email'], $_POST['predmet'], $_POST['zprava'] ) ){ // zjistíš, jestli jsou definované, pokud ne, tak můžeš třeba vypsat formulář, pokud ano, provede se script
/* kontrola a přiřazení proměnných */
} else {
//formulář
} |
||
| slavin Profil |
#6 · Zasláno: 27. 12. 2013, 11:34:53
Nasel jsem toto:
Na zacatku kodu napisu toto error_reporting(E_ALL^E_NOTICE); |
||
| Str4wberry Profil |
PHP při určitém nastavení vypisování chyb, varování a poznámek, se kterým vaše učebnice nepočítala, vypíše v případě, že není odesláno políčko
jmeno, telefon a podobně poznámku, že se snažíte získat obsah neexistujícího indexu pole $_POST.
V tomto případě to vůbec ničemu nevadí. |
||
|
Časová prodleva: 13 let
|
|||
0