用PHP处理HTML表单的问题



我有以下问题:虽然我实际上使用"if isset"要检查变量是否包含值,只要在$besteatigung中有值并且忽略空的$ email就足够了。有人能帮帮我吗?(我是初学者)

<html>
<head>
<link rel="stylesheet" href="style.css">
<title>Newslatter Anmeldung</title>
<meta charset="utf-8">
</head>
<body>
<div>  
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
<p>Ihre E-Mail adresse bitte: </p>
<input type="email" name="Email">
<p>Anrede: (optional)</p>
<input type="radio" name="Geschlecht" value="Mann">
<label for="Geschlecht">Mann</label><br>
<input type="radio" name="Geschlecht" value="Frau">
<label for="Geschlecht">Frau</label><br>
<p>Vorname: (optional)</p>
<input type="text" name="Vorname">
<p>Nachname: (optional)</p>
<input type="text" name="Nachname">
<p><input type="checkbox" name="bestaetigung">hiermit bin ich einverstanden,<br> dass meine Daten elektronisch gespeichert werden,<br> damit mir die gewünschte Newsletter zugestellt werden kann ... <br>(gesetzliches Blahblah zum Datenschutz und Speicherung der Daten ....)</p>
<input type="submit" value="Anmelden" name="submit">
</form>
</div>
</body>
</html>
<?php
if(isset($_POST['submit'])){
if(isset($_POST['Email'])){ 
if(isset($_POST['bestaetigung'])){
$Email = htmlspecialchars(stripslashes(trim($_POST['Email'])));
$Geschlecht = $_POST['Geschlecht'];
$Vorname = htmlspecialchars(stripslashes(trim($_POST['Vorname'])));
$Nachname = htmlspecialchars(stripslashes(trim($_POST['Nachname'])));

$date = date("syHjin");

$file = fopen("nl-anwaerter.txt", "a");
fwrite($file, "$Email");
fwrite($file, "|");
fwrite($file, "$Geschlecht");
fwrite($file, "|");
fwrite($file, "$Vorname");
fwrite($file, "|");
fwrite($file, "$Nachname");
fwrite($file, "|");
fwrite($file, "$date");
fwrite($file, "n");
fclose($file);

$empaenger = "$Email";
$betreff = "Ihre Newsletter Anmeldung";
$from = "From: PHP mailer <deinnews@letter.de>rn ";
$from .= "Reply-To: php@mail.comrn";
$from .= "Content-Type: text/htmlrn";
$msg = "<h1>Newsletter Anmeldung</h1><br><p>Hallo $Name $Nachname um dich entgültig für den Nwesletter anzumelden Klicke bitte auf folgenden Linl: ";

if(mail($empaenger,$betreff,$msg,$from)){
echo "Eine E-Mail wurde erfolgreich an $Email gesendet, bitte klicke auf den Link in dieser um die Anmeldung zu bestätiegen";
}

}
}

}
?>

你好,我有以下问题:虽然我实际上使用"if isset"要检查变量是否包含值,只要在$besteatigung中有值并且忽略空的$ email就足够了。有人能帮帮我吗?(我是初学者)

isset函数不检查变量是否为空。一个空字符串(如果输入为空,您的电子邮件输入将是什么)被视为已设置。参考类型比较表

相反,您应该使用empty来检查电子邮件字段是否有值:

if(!empty($_POST['Email'])){

最新更新