php - 在 PHP 中处理 HTML 表单的问题
问题描述
我有以下问题:虽然我实际上使用“if isset”来检查变量是否包含一个值,但只要在 $bestetigung 中有一个值并且空的 $ 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>\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”来检查变量是否包含值,但只要在$besteatigung中有一个值并且空的$ email被简单地忽略就足够了。有人能帮助我吗?(我是初学者)
解决方案
该isset
函数不检查变量是否为空。一个空字符串(如果输入为空白,您的电子邮件输入将是什么)被视为已设置。查阅类型对照表。
相反,您应该使用empty
来检查电子邮件字段是否有值:
if(!empty($_POST['Email'])){
推荐阅读
- tkinter - 如何解决 tkinter 模块安装错误
- django - django模型默认值在模型创建和记录插入后有函数
- c++ - 从文件中读取学生姓名和成绩并输出到另一个文件
- ibm-mobilefirst - 大家好,我想要参数化,连接策略节点,如域,adapter.xml MFP 中的协议..并从外部属性文件传递值
- php - 使用 php deployer 在服务器上未设置环境变量
- bash - sed - 通过组合 3 个 sed 命令从 .txt 的不同部分提取 2 个单词之间的数据
- ios - 状态栏覆盖 ios 真实设备 (iphone X)
- apache-spark - 使用 pyspark 从 s3 读取/加载 avro 文件
- python - 如何以原始格式恢复压缩的 .bed 文件
- json - 如何使用角度以特殊字符开头的键打印 JSON 值?