在本网站上的人们提供了大量帮助之后,我已经能够写出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文件。这可能是我主人的限制吗?
答案 0 :(得分:4)
简单的解决方案可能是name="w"
为小写,$_GET['W']
为大写。
此解决方案尚未经过测试!
修改
要修复下面评论中的问题,请交换围绕
的fwrite peramatersfwrite($fh,'1');
编辑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/
。
但事实上你不应该使用这段代码。您应该使用数据库。如果两个用户(相对)同时执行此脚本会怎样?