Heim > Backend-Entwicklung > PHP-Tutorial > header - php莫名其妙的执行了两次

header - php莫名其妙的执行了两次

WBOY
Freigeben: 2016-06-06 20:28:44
Original
1604 Leute haben es durchsucht

环境php5.3 nginx1.8
在生成验证码图片的时候

<code>` private function outputImg(){
    if (imagetypes() & IMG_JPG) {
        header('Content-type: image/jpeg');
        imagejpeg($this->im);
    } elseif (imagetypes() & IMG_GIF) {
        header('Content-type: image/gif');
        imagegif($this->im);
    } elseif (imagetype() & IMG_PNG) {
        header('Content-type:image/png');
        imagepng($this->im);
    } else {
        exit("Don't support image type!");
    }
}`

</code>
Nach dem Login kopieren
Nach dem Login kopieren

程序莫名其妙的执行了两次,注释掉header('Content-type: image/jpeg')后正常,页面显示乱码。

header - php莫名其妙的执行了两次

header - php莫名其妙的执行了两次

header - php莫名其妙的执行了两次

回复内容:

环境php5.3 nginx1.8
在生成验证码图片的时候

<code>` private function outputImg(){
    if (imagetypes() & IMG_JPG) {
        header('Content-type: image/jpeg');
        imagejpeg($this->im);
    } elseif (imagetypes() & IMG_GIF) {
        header('Content-type: image/gif');
        imagegif($this->im);
    } elseif (imagetype() & IMG_PNG) {
        header('Content-type:image/png');
        imagepng($this->im);
    } else {
        exit("Don't support image type!");
    }
}`

</code>
Nach dem Login kopieren
Nach dem Login kopieren

程序莫名其妙的执行了两次,注释掉header('Content-type: image/jpeg')后正常,页面显示乱码。

header - php莫名其妙的执行了两次

header - php莫名其妙的执行了两次

header - php莫名其妙的执行了两次

你把imagetypes()这个放到if里面肯定会重复执行的啊

问题原因:在输出图像的时候,因为有header('Content-type: image/jpeg')这个函数,页面会重写头信息,在浏览器端浏览的时候,会先执行一个html的头,然后在执行image的头,所以页面就执行了两次
解决办法:要生成验证码,然而页面缺执行了两次,而session写入了两次,但图片缺执行一次,是第一次的,那么就给图片字符串加一个有效期,生成的时候检测上一次生成时间,如果间隔一秒,读取上一次的字符串生成验证码即可

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage