无法下载使用gd库创建的图像(如果它在会话中)

时间:2014-09-23 12:02:06

标签: php session gd

我有这样的代码:

<?php
session_start();
if(!isset($_SESSION['log']) || $_SESSION['log'] != $_POST['accesso']){
  exit(":)");
}

header('Content-Type: image/jpeg');

$image_width = 200;
$image_height = 40;
$image = imagecreate($image_width, $image_height);
imagejpeg($image);

?>

如果我尝试保存图像或用鼠标右键或命令ctrl + s,则没有任何反应。如果我删除会话session_start();,一切都会有效。

解决方案?

1 个答案:

答案 0 :(得分:0)

好的,&#34;讨论&#34;它在评论中并拒绝提供更多信息,我能做的最好就是猜测问题是什么。所以:

  1. 没有session_start()全局没有$ _SESSION。服务器根本没有启动或持久化,因此您根本无法下载图像(因为!isset($_SESSION['log'])在这种情况下应始终返回TRUE。如果没有,我认为您有{{1}在你的php.ini文件中设置为1(它告诉服务器在每次请求时启动会话。我将它设置为0并查看是否有任何改变。)

  2. 请记住,当会话处于活动状态(session.auto_start已调用)时,您存储在$ _SESSION变量中的任何内容都将存在,直到会话超时,您更改会话cookie(&#34;忘记&#34 ;您的会话ID),或明确删除session_start()中的所述值(如下所示:$_SESSION)。尝试取消设置$ _SESSION [&#39; log&#39;]或以某种方式更改它,看看会发生什么。

  3. 在我的位置,我会在脚本的最开头添加如下指令,以帮助我调试:

  4. unset($_SESSION['log']);

    另外,如果真的error_reporting(E_ALL); /* report all errors no matter what type */ ini_set('display_errors', 1); /* display errors to output */是您的问题,那么您真的应该阅读会话如何在PHP中运行:http://php.net/manual/en/book.session.php