问题描述
我有以下问题:虽然我实际上使用“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,"$Vorname");
fwrite($file,"$Nachname");
fwrite($file,"$date");
fwrite($file,"\n");
fclose($file);
$empaenger = "$Email";
$betreff = "Ihre Newsletter Anmeldung";
$from = "From: PHP mailer <deinnews@letter.de>\r\n ";
$from .= "Reply-To: PHP@mail.com\r\n";
$from .= "Content-Type: text/html\r\n";
$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”来检查变量是否包含值,但如果仅在 $bestatigung 中有值并且空的 $ email 被简单地忽略就足够了。有人能帮助我吗? (我是初学者)
解决方法
isset
函数不检查变量是否为空。空字符串(如果输入为空,您的电子邮件输入将是什么)被视为已设置。咨询type comparison table。
相反,您应该使用 empty
来检查电子邮件字段是否有值:
if(!empty($_POST['Email'])){