功能实现:提交订单,收到短信通知,同时跳转到订单成功界面。
本地测试一切正常,可以正常跳转,但是传到服务器之后,跳转不成功,一直停留在表单的action界面,并提示invalid address!求高手指点下,亟待解决!
本地测试一切正常,可以正常跳转,但是传到服务器之后,跳转不成功,一直停留在表单的action界面,并提示invalid address!求高手指点下,亟待解决!
解决方案 »
- HTTP请求中出现两段Cookie:
- 安装了easyphp在本机.局域网的其他电脑怎样才可以看到我的网页?
- 用system执行php文件后面加参数如何接受
- <div id="_firebugConsole" style="display: none;" FirebugVersion="1.4.2"/> 究竟是什么
- 100分求数据库查询解法
- 上海的SOHO一族请进来~~~
- 求php的win98下开发环境,大家帮帮忙。
- 关于动态页面
- 【紧急】float数据如何转换成整数?2.01E+21
- 关于thinkphp中的路径问题
- PHP用单一入口加载HTML文件不能显示框架?
- 在线求助~如何根据数据库中的价格生成价格区间~急
那自然是你弄错了的
可能目标文件你没有传上去
也可能服务器端并不支持 header 函数你得先搞清楚 invalid address!是哪个环节发出的
本地测试不会出现这个 而是直接跳到orderok.php
你的跳转是 header('Location: /orderok.php?......
显然还差了一级目录 orderform而直接 http://www.iptvbeijing.com/orderok.php 则是 404
显然你本地还做了特殊设置,而服务器上并没有
那个order.php只是一个给手机发短信然后跳转到orderok.php页面的过度,实际操作中并不需要他显示,只有在进行验证时才跳出提示。
至于那个invalid adress 依旧找不到原因啊!
<?php
error_reporting(0);
session_start();
date_default_timezone_set('Asia/Shanghai');
require_once("class.phpmailer.php");
require_once("config.php");
$out_trade_nos = date('Ymdhis');
$paytypes = $_POST['pay'];
$products = $_POST['product'];
$names = $_POST['name'];
$mobs = $_POST['mob'];
$years = $_POST['year'];
$months = $_POST['month'];
$days = $_POST['day'];
$hours = $_POST['hour'];
$halfdays = $_POST['halfday'];
$provinces = $_POST['province3'];
$citys = $_POST['city3'];
$areas = $_POST['area3'];
$addesss = $_POST['addess'];
$link_email = $_POST['email'];
$total_fee = $dfprize * $alipayzk;
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = "gb2312";
$mail->Host = $Mailhost;
$mail->SMTPAuth = true;
$mail->Username = $MailUsername;
$mail->Password = $MailPassword;
$mail->From = $MailFrom;
$mail->FromName = $FromName;
$mail->AddAddress($MailTo,$FromName);
$mail->AddAddress($MailTob,$FromName);
$mail->WordWrap = 50;
$mail->IsHTML(true);
$mail->Subject = "有新订单,请及时查看发货!";
$mail->Body = "
<div style='width:50%;margin: 0 auto;padding:30px;border:2px dotted #bd0a01;background:#FFC;'>
<p align='center' style='height:40px;line-height:40px;font-size:28px;font-weight:bold;color:#bd0a01;border-bottom:2px dotted #bd0a01;'>订单详情</p>
<p>【订单编号】:<font color='#BD0000'>".$out_trade_nos."</font></p>
<P>【产品】:"."$_POST[product]"."</P>
<P>【姓名】:"."$_POST[name]"."</P>
<P>【手机】:<a href='http://www.baidu.com/s?wd="."$_POST[mob]"."'>"."$_POST[mob]"."</a></P>
<P>【安装时间】:"."$_POST[year]"."-"."$_POST[month]"."-"."$_POST[day]"."-"."$_POST[hour]"."."."$_POST[halfday]"."</P>
<P>【地址】:"."$_POST[province3]".""."$_POST[city3]".""."$_POST[area3]".""."$_POST[addess]"."</P>
<p>【邮箱】:<a href='http://www.baidu.com/s?wd="."$_POST[email]"."'>"."$_POST[email]"."</a></P>
<P>【付款方式】:"."$_POST[pay]"."</P>
</div>";
if(empty($_POST['name'])||empty($_POST['mob'])||empty($_POST['email'])||empty($_POST['code'])||$_POST['code'] != $_SESSION['wfcode']){
echo "<p style='font-size:12px;color:#BD0000;'>错误:信息填写不完整或验证码不正确!<a href='#' onClick='javascript:history.back(-1);'>返回重新填写 >></a></p>";
exit(0);
}if(!$mail->Send()){
echo "<p style='font-size:12px;color:#BD0000;'>错误:".$mail->ErrorInfo."</p>";
}
elseif($paytypes=="Alipay"){
$url="alipay_".$paytypes."/alipayto.php?product=".$products."&total_fee=".$total_fee."&body=".$names."&out_trade_no=".$out_trade_nos;
Header("Location:$url");
exit;
}
else{
Header("Location :orderform/orderok.php?address=$addesss&area=$areas&province=$provinces&city=$citys&halfday=$halfdays&hour=$hours&day=$days&month=$months&year=$years&pay=$paytypes&name=$names&mob=$mobs&out_trade_no=$out_trade_nos&product=$products");
exit;
}?>
这个是order.php的代码
exit;
}
依旧不行,郁闷了
而直接访问 http://www.iptvbeijing.com/orderform/order.php,这肯定是没有数据提交的
所以执行到
echo "<p style='font-size:12px;color:#BD0000;'>错误:信息填写不完整或验证码不正确!<a href='#' onClick='javascript:history.back(-1);'>返回重新填写 >></a></p>";
exit(0);
就退出了,header 函数是肯定执行不到的
但此时 invalid adress 已经显示过了(见 #9 截图1)所以 invalid adress 必然是在这之前产生的鉴于你的代码中并无 invalid adress 字样,所以 invalid adress 应在几个嵌入的文件之中
order.php引用的只有
require_once("class.phpmailer.php");
require_once("config.php");
这两个
config作为配置查看了,肯定没有,刚查看了下phpmailer.php里面有一段
'smtp_error' => 'SMTP server error: ',
'empty_message' => 'Message body empty',
'invalid_address' => 'Invalid address',
'variable_set' => 'Cannot set or reset variable: '
而涉及到 'invalid_address' 这个的,在phpmailer.php中有几处,根据版主在这个http://bbs.csdn.net/topics/390890071帖子的说法,貌似是这一段出问题了,但是该怎么改进呢?
private function AddAnAddress($kind, $address, $name = '') {
if (!preg_match('/^(to|cc|bcc|ReplyTo)$/', $kind)) {
echo 'Invalid recipient array: ' . kind;
return false;
}
$address = trim($address);
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
if (!self::ValidateAddress($address)) {
$this->SetError($this->Lang('invalid_address').': '. $address);
if ($this->exceptions) {
throw new phpmailerException($this->Lang('invalid_address').': '.$address);
}
echo $this->Lang('invalid_address').': '.$address;
return false;
}
if ($kind != 'ReplyTo') {
if (!isset($this->all_recipients[strtolower($address)])) {
array_push($this->$kind, array($address, $name));
$this->all_recipients[strtolower($address)] = true;
return true;
}
} else {
if (!array_key_exists(strtolower($address), $this->ReplyTo)) {
$this->ReplyTo[strtolower($address)] = array($address, $name);
return true;
}
}
return false;
}