我目前使用以下代码作为图片验证码。
<?php
session_start();
$alphanum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
// generate the verication code
$rand = substr(str_shuffle($alphanum), 0, 5);
// choose one of four background images
$bgNum = rand(1, 4);
$image = imagecreatefromjpeg("background$bgNum.jpg");
$textColor = imagecolorallocate ($image, 0, 0, 0);
// create the hash for the random number and put it in the session
$_SESSION['image_random_value'] = md5($rand);
// write the random number
imagestring ($image, 15, 50, 10, $rand, $textColor);
// Date in the past
header("Expires: Mon, 23 January 2009 01:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
// send the content type header so the image is displayed properly
header('Content-type: image/jpeg');
// send the image to the browser
imagejpeg($image);
// destroy the image to free up the memory
imagedestroy($image);
?>
然后我使用以下内容验证表单提交中的captch代码...
if (md5(addslashes($_POST['antispam'])) != $_SESSION['image_random_value']) {
我已经使用它多年了,它在浏览器中运行得很完美,但我刚刚意识到它在Iphone上无法运行。
使用echo $ _SESSION ['image_random_value'];在浏览器中返回会话值,但在iphone上返回一个空变量?
我已经厌倦了更改过期日期,并且注释掉了一些参数ref cache control。但这一切都不起作用。 有关信息,我也在我的iPhone上启用了cookie。
我错过了哪些提示或指示?
答案 0 :(得分:0)
对于那些有类似问题的人来说,原来我是直接从URL中提取脚本,这当然会导致设置会话的问题。希望能有所帮助。