使用GET数据的文件名并将PHP页面输出为JPG扩展名?

时间:2010-05-20 15:04:00

标签: php gd

好吧,目前我正在使用GD来创建一个PNG图像,根据GET数据记录一些不同的东西,例如:http://example.com/file.php?do=this会记录一件事{{1}将记录另一件事。

但是,我想在没有GET数据的情况下执行此操作,因此http://example.com/file.php?do=that会记录一件事,http://example.com/dothis.php会记录另一件事。

但除此之外,我还希望通过JPG文件扩展名访问它。我已经看到了这个,但我无法弄清楚如何。因此,http://example.com/dothat.php将记录一件事,而http://example.com/dothis.JPG记录另一件事。

当然,日志记录部分很简单。我很简单需要知道如何使用文件名代替GET数据以及如何设置php文件以便通过jpg文件扩展名访问。

3 个答案:

答案 0 :(得分:1)

文件名可以通过$ _SERVER数组访问(我希望你可以探索这个数组并找到合适的变量)

虽然扩展技巧是web-server责任
对于Apache模块API,它可以是

RemoveHandler .jpg
AddType application/x-httpd-php .jpg

答案 1 :(得分:0)

如果您不想拥有重复的脚本/链接,并且Web服务器是apache,那么您需要它的mod_rewrite,例如

RewriteEngine On
RewriteRule ^doth/(.*) index.php?page=$1 [L]

下进行。

答案 2 :(得分:0)

如果要使用扩展名.jpg将PHP嵌入到文件中,则需要指示Web服务器将.jpg文件解析为PHP。如果您使用Apache,一种方法是将以下内容添加到文件所在目录中的.htaccess文件中:

addtype application/x-httpd-php .jpg .php

或者您可以将其添加到您的服务器配置中。请参阅this page for details on htaccess for Apache

接下来,编写脚本,以便记录相应的数据。在您的示例中,您似乎不再需要GET数据,并且脚本将仅根据调用的事实记录不同的数据。即dothis.jpg“知道”记录this数据,而dothat.jpg记录that数据。

dothis.jpg:

<?php
    header("Content-type: image/jpeg");
    // log "this" code
    $img = imagecreate($x, $y); // example
    // GD image generation code
    imagejpg($img);
?>

dothat.jpg:

<?php
    header("Content-type: image/jpeg");
    // log "that" code
    $img = imagecreate($x, $y); // example
    // GD image generation code
    imagejpg($img);
?>