我有这样的代码:
<?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();
,一切都会有效。
解决方案?
答案 0 :(得分:0)
好的,&#34;讨论&#34;它在评论中并拒绝提供更多信息,我能做的最好就是猜测问题是什么。所以:
没有session_start()
全局没有$ _SESSION。服务器根本没有启动或持久化,因此您根本无法下载图像(因为!isset($_SESSION['log'])
在这种情况下应始终返回TRUE。如果没有,我认为您有{{1}在你的php.ini文件中设置为1(它告诉服务器在每次请求时启动会话。我将它设置为0并查看是否有任何改变。)
请记住,当会话处于活动状态(session.auto_start
已调用)时,您存储在$ _SESSION变量中的任何内容都将存在,直到会话超时,您更改会话cookie(&#34;忘记&#34 ;您的会话ID),或明确删除session_start()
中的所述值(如下所示:$_SESSION
)。尝试取消设置$ _SESSION [&#39; log&#39;]或以某种方式更改它,看看会发生什么。
在我的位置,我会在脚本的最开头添加如下指令,以帮助我调试:
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。