【发布时间】:2012-08-13 03:35:42
【问题描述】:
我有一个脚本,可以将分类广告的表单数据邮寄给我。昨天我下班时,它工作得很好。现在它只在 FireFox 中工作,我在 Opera 和 Safari 中都收到了我的“else”声明“我们在发送您的邮件时遇到错误,请通知 XXXX@XX.COM”,这对我来说毫无意义。
导致此错误的原因是什么,为什么它在某些浏览器中失败但在其他浏览器中有效?
<script language="javascript">
function submitt()
{
setTimeout('document.paypal.submit()',1000);
}
</script>
<?php
$to = "XXX@XXX.com" ;
$from = $_REQUEST['email'] ;
$name = $_REQUEST['Name'] ;
$headers = "From: $from";
$subject = "Classified Tests";
$fields = array();
$fields{"Name"} = "Name";
$fields{"email"} = "Email";
$fields{"Phone"} = "Phone";
$fields{"Address"} = "Street Address";
$fields{"City"} = "City";
$fields{"State"} = "State";
$fields{"Zip"} = "Zip Code";
$fields{"Classification"} = "Classification";
$fields{"Ad-Headline"} = "Headline";
$fields{"Ad-Content"} = "Ad Content";
$fields{"Words"} = "Word Count";
$fields{"Weeks"} = "Weeks to Run";
$fields{"WordCount"} = "Total Words";
$fields{"Rate"} = "Word Rate";
$fields{"GrossAmountDue"} = "Gross Amount";
$fields{"NonProfit"} = "Non Profit Ad?";
$item_name = $_POST['item_name'];
$amount = $_POST['amount'] ;
$currency_code = $_POST['currency_code'];
$no_shipping = $_POST['item_number'];
$shipping = $_POST['item_number'];
$cmd = $_POST['cmd'];
$bn = $_POST['bn'];
$no_note = $_POST['item_number'];
$lc = $_POST['lc'];
$business = $_POST['business'];
$body = "This Ad has been submitted:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); }
if($from == '') {print "You have not entered an email, please go back and try again";}
else {
if($name == '') {print "You have not entered a name, please go back and try again";}
else {
$send = mail($to, $subject, $body, $headers);
if($send)
{print "Your Ad has been submitted, redirecting to paypal."; echo "<SCRIPT LANGUAGE='javascript'>submitt();</SCRIPT>";}
else
{print "We encountered an error sending your mail, please notify XXX@XXX.com"; }
}
}
?>
<form action="https://www.paypal.com/cgi-bin/webscr" id="paypal" target="_self" name="paypal" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="XXXXXXXXXXXX">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="Classified Ad">
<input type="hidden" name="amount" id="Amount" value="">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="cn" value="Add special instructions to the seller:">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="shipping" value="0.00">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted">
</form>
导致此错误的原因是什么,为什么它在某些浏览器中失败但在其他浏览器中有效?
【问题讨论】:
-
为什么要使用花括号,当你也有方括号的时候?
-
它在某个浏览器中不工作可能与您的输入和前端代码有关,而不是 PHP。
-
是的,不要将
{}用于数组。正确用法是[]。 -
"<SCRIPT LANGUAGE='javascript'>submitt();</SCRIPT>"可能是一个错字。 -
@JosiahSouth 拥有相同的页面并不意味着所有浏览器都能正确使用它(参见:Internet Explorer)。它几乎可以肯定是前端代码:您应该调试 PHP 生成的输出,但可能不是 PHP 本身。