Szeretnék egy üzenetküldő ürlapot készíteni. HTML és PHP. Valaki tud segíteni?
<html>
<head>
<title>
</title>
<link href="kapcs.css" rel="stylesheet" type="text/css"> </link>
</head>
<form id="form" name="form" method="post" action="kapcs.php">
<body>
<label>
Név: <input type="text" name="nev" id="nev" />
</label>
<p>
<label>
E-mail: <input type="text" name="email" id="email" />
</label>
</p>
<p>
<label>
Telefonszám: <input type="text" name="tel" id="tel" />
</label>
</p>
<p>
<label>
Üzenet szövege: <textarea name="uzenet" id="uzenet" cols="45" rows="5"></textarea>
</label>
</p>
<p>
<label>
<input type="submit" name="mehet" id="mehet" value="mehet" />
</label>
</p>
</form>
</body>
</html>
<?php
if(isset($_POST['submit'])) {
if(empty($_POST['nev'])) {
$hiba[] = "Nem adott meg nevet.";
}
if(empty($_POST['uzenet'])) {
$hiba[] = "Nem adott meg üzenetet.";
}
if ((empty($_POST['email'])) or (!preg_match ('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])' .
'(([a-z0-9-])*([a-z0-9]))+' . '(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i', $_POST["email"] ))) {
$hiba[] = "Nem adott meg e-mail címet, vagy rosszul adta meg.";
}
if(!isset($hiba)) {
$nev = $_POST['nev'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$uzenet = $_POST['uzenet'];
$date = date("Y. m. d. H:i:s");
$ujsor = "\r\n";
$uzenet = "neve: $nev" . $ujsor;
$uzenet .= "e-mail címe: $email" . $ujsor;
$uzenet .= "telefon: $tel" . $ujsor;
$uzenet .= "üzenet: $uzenet" . $ujsor;
mail("deejay.hexy@gmail.com","weblap e-mail", $uzenet, "From: $email");
echo "<p>Üzenet elküldve</p>";
}
}
if((!isset($_POST['submit'])) or (isset($hiba))) {
if(isset($hiba)) {
foreach ($hiba as $hibalista) {
echo $hibalista."<br>";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Név: <input type="text" name="nev" value="<?php echo $_POST['nev']; ?>">*<br><br>
Telefon: <input type="text" name="tel" value="<?php echo $_POST['tel']; ?>"><br><br>
E-Mail: <input type="text" name="email" value="<?php echo $_POST['email']; ?>">*<br><br>
<textarea name="uzenet" rows="3" cols="20"><?php echo $_POST['uzenet']; ?></textarea><br><br>
<input type="submit" name="submit" value="Küldés">
</form>
<?php
}
?>
HTML-problémák:
1. Nincs Doctype
2. Ajánlatos lenne definiálni a karakterkódolást.
3. A <title> elem nyitó és záró tagja közé tartalom kell
4. A <link> elem üres, nem kell lezárni.
5. <body> és <form> tagek felcserélve
Tehát kb így:
PHP-problémák - gyorsan, zanzásítva:
1. A szkript elejére:
$hiba = array();
hogy inicializáld a tömböt.
2. Az
if(isset($_POST['submit']))
helyett
if(isset($_POST["mehet"]))
ugyanis az űrlap "name" attribútumában "mehet" szerepel.
3. E-mail ellenőrzésre a ronda reguláris kifejezés helyett van modernebb megoldás:
if (empty($_POST["email"]) || filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) == false)
bővebben:
4. Használj Captchát. Egyrészt a CSRF elkerülése végett ( [link] ), másrészt a bot-ok támadása ellen.
5. Az
if(!isset($hiba))
helyett inkább
if (count($hiba) == 0)
ugyanis azt akarjuk ellenőrizni, hogy van-e hiba a $hiba tömbben.
És ennek a feltételnek az else ágába tenném a hibák kiírását.
6. És ezt ez egész hóbelevancot összevonnám az előbbi űrlappal (ez esetben a <form> tag action attribútuma változik kapcs.php-ról).
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!