PHP不生成txt文件

时间:2011-12-16 00:02:23

标签: php html

在本网站上的人们提供了大量帮助之后,我已经能够写出99%的这个脚本,但它仍然没有正常执行。这是代码:

PHP

<?php
if( isset($_GET) && !empty($_GET['W']) ){
    $url = md5($_GET['w']);
    if(!is_file('/hit_counters/'.$url.'.txt')){
        $fh= fopen('/hit_counters/'.$url.'.txt', 'w');
        fwrite('1',$fh);
        fclose($fh);
    }else{
        $hits = file_get_contents('/hit_counters/'.$url.'.txt');
        $hits++;
        file_put_contents('/hit_counters/'.$url.'.txt', $hits);
    }
}
?>

HTML

<form>
<input type="txt" name="w" />
<input type="submit" value="Submit" />
</form>

<iframe src="<?php echo $url; ?>"></iframe>

<p><?php echo $hits; ?></p>

由于某种原因,它似乎没有起作用。您可以在此处查看实时演示:http://www.colindunn.com/prints/index.php并在此处详细了解代码:http://codepad.org/ZeTuj707

查看我的服务器,根本不会生成TXT文件。这可能是我主人的限制吗?

2 个答案:

答案 0 :(得分:4)

简单的解决方案可能是name="w"为小写,$_GET['W']为大写。

此解决方案尚未经过测试!

修改

要修复下面评论中的问题,请交换围绕

的fwrite peramaters
fwrite($fh,'1');

http://uk3.php.net/fwrite

编辑2

您没有创建第一次访问网站时显示屏中稍后使用的$hits变量。

请参阅下面设置$hits的代码,将其插入文件中,然后留待以后使用。

<?php
if( isset($_GET) && !empty($_GET['W']) ){
    $url = md5($_GET['w']);
    if(!is_file('/hit_counters/'.$url.'.txt')){
        $fh= fopen('/hit_counters/'.$url.'.txt', 'w');
        $hits = 1;
        fwrite($fh, $hits);
        fclose($fh);
    }else{
        $hits = file_get_contents('/hit_counters/'.$url.'.txt');
        $hits++;
        file_put_contents('/hit_counters/'.$url.'.txt', $hits);
    }
}
?>

答案 1 :(得分:0)

这应该有用。

if(isset($_GET) && !empty($_GET['w']) )
{
    $url = md5($_GET['w']);
    $filename = '/hit_counters/'.$url.'.txt';

    $hits = (int)file_get_contents($filename);

    // if the file could not be read, $this will be false
    if ($hits === false) $hits = 0;

    $hits++;

    // if the file did not exist, it will now be created with a value of 1 in it.
    file_put_contents($filename, $hits);
}

也就是说,如果你可以写在目录/hit_counters/

但事实上你不应该使用这段代码。您应该使用数据库。如果两个用户(相对)同时执行此脚本会怎样?