PHP强制刷新图片的方法

在编写PHP自动处理脚本时可能会遇到需要输入验证码的情况,比如我在写淘宝店铺助手时就要求登录时必须输入验证码。解决办法是增加一个专用登录页面,在登录时如果遇到需要输入验证码的情况就通过curl使用同一个cookie在同一session下从目标服务器取到验证码保存成本地图片,然后在专用登录界面显示该验证码图片让用户输入对应的验证码,再提交完成登录,登录结果自动保存在cookie里,之后使用同一cookie在同一session里使用就不再需要登录。

为了方便管理,每次登录时都保存成images/checkcode.jpg,在专用登录界面如果使用常规方法<img src="images/checkcode.jpg">显示验证码图片,浏览器会优先从缓存读取图片来显示,这样用户看到的是旧的验证码图片,解决办法是在jpg文件后加随时间变化的参数,比如“日时分秒”数值:

$content = getContent($checkcode_url);
file_put_contents('images/checkcode.jpg', $content);
echo '<form action="login.php" method="post"><img src="images/checkcode.jpg?' . date('dHis') . '" width="100" height="30" border="1"> <input name="checkcode" type="text" size="8"> <input type="submit" name="Submit" value="提交"></form>';

配置使用cookie的脚本:
define('COOKIE_FILE', 'tbcookie');
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));

Tags: ,

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。