【发布时间】:2011-04-06 11:07:41
【问题描述】:
帮助!我在将一些条件语句放入表单的 php 脚本时遇到了一些麻烦。
这是 HTML 的要点:
<input type="text" name="address1" id="address1" class="required" />
<input type="text" name="address2" id="address2" />
<input type="text" name="city" id="city" />
<input type="text" name="postcode" id="postcode" class="required" />
而php看起来有点像这样:
$address1 = $_REQUEST["address1"] ;
$address2 = $_REQUEST["address2"] ;
$city = $_REQUEST["city"] ;
$postcode = $_REQUEST["postcode"] ;
$message =
"address: $address1, " .
"$address2, " .
"$city, " .
"$postcode" .
$sent = mail($to, $subject, $message, 'From:' . $email_address) ;
我已经对“address1”和“postcode”进行了一些 jQuery 验证,因此它们不是问题,因为它们总是会返回一个值。如果没有填写“address2”和“city”(也许填表人的地址没有第二行,或者没有按照他们的想法填写城市——正确——邮政编码就足够了在找到他们的地址时)他们仍然会在电子邮件中返回一个值(“无”)。
我希望发生的事情是让留空的表单输入根本不发送任何电子邮件。换句话说,如果 $address2 变量为空,请不要向我发送“空格”。例如,如果一切都完成了,我会得到这个,这很好:
地址:1 Test Street, West End, Test City, AB1 23C
如果缺少一个字段,我会得到这个,这有点乱:
地址:1 Test Street, , Test City, AB1 23C
但我想要这个,因为它又漂亮又整洁:
地址:1 Test Street, Test City, AB1 23C
我一直在尝试了解 isset 函数,但没有任何运气。我也尝试了一个基本的“if”语句,但似乎也无法获得任何结果。我必须承认,php 不是我的强项,我在这方面花了很多时间但没有成功。非常感谢您的帮助!
非常感谢,
马丁。
【问题讨论】:
-
您的代码似乎容易受到电子邮件标头注入的影响。另外:
"I've got some jQuery validation on 'address1' and 'postcode' so they're not an issue as they'll always return a value."您不能相信客户端验证会按照您的意愿工作 - 用户可以绕过它或根据需要制作自己的表单。 -
如果您首先使用客户端显示表单,您可以绕过它。
标签: php variables if-statement conditional isset