周梦康 发表于 2014-03-25 3150 次浏览 标签 : fsockopen

http://mengkang.net/33.html测试无误之后,我实际运用的时候却无法正常,发送邮件,我也的确2了一把,没有想着去打开在上面一个帖子中强调的调试代码,各种纠结之后,终于想到了可能的原因,那就是我发送的数据中有&符号。这样在拼装头信息的post数据的时候就出错啦!

例如我发送的数据是:

$data = array(
    'email'=>'mengkang@php.net',
    'nickname'=>'周梦康',
    'mailBody'=>'<h3>333&nbsp&nbsp有新的留言</h3><p>mengkang < mengkang@php.net >在评论中说:</p><div style="border-radius: 4px;margin: 10px 0 10px;border: 1px dashed #BEB0B0;padding: 8px;background: #F0F0F0;">sadsadfsdafsdaf</div><p><a href="http://m.cn/github/zhoumengkang/index.php?m=Blog&a=blog&id=21#floor26">点击链接查看</a></p>'
    );

组装出来的post信息就是这样的了:

POST /github/zhoumengkang/index.php?m=Comment&a=sendEmail HTTP/1.1
Host: m.cn
Content-Type: application/x-www-form-urlencoded
Content-Length: 385
Connection: Close

email=mengkang@php.net&nickname=周梦康&mailBody=<h3>333&nbsp&nbsp有新的留言</h3><p>mengkang < mengkang@php.net >在评论中说:</p><div style="border-radius: 4px;margin: 10px 0 10px;border: 1px dashed #BEB0B0;padding: 8px;background: #F0F0F0;">sadsadfsdafsdaf</div><p><a href=http://m.cn/github/zhoumengkang/index.php?m=Blog&a=blog&id=21#floor26">点击链接查看</a></p>
这样就全乱了,因为post头会以&分割键值对吧。所以我应该在发送之前把整个数据中的中有可能出现&的地方都要事先替换,模拟fsockopen请求完毕之后再换替换回来。

评论列表