我有一个名为" number.txt"的文件(里面有一个数字,例如:0) 我想读取number.txt中的数字,并使用fwrite写入数字加1 (数字+ 1),这样每次有人访问此网页时,该数字都会加1。
但是当我测试它时,它只在第一次工作(现在number.txt是1)。 然后我再试一次,fread函数读为0但不是1。
<?php
$fgc = file_get_contents('number.txt');
settype($cont, "integer");
$cont = $cont + 1;
settype($cont, "string");
file_put_contents('number.txt', $cont);
$str = settype($cont, "string");
$fp = fopen( $str ,'w+');
if($fp==false) {
$str = $str + 1;
$fp = fopen( $str ,'w+');
}
if($fp==false) {
$str = $str + 1;
$fp = fopen( $str ,'w+');
}
if($fp==false) {
$str = $str + 1;
$fp = fopen( $str ,'w+');
}
if($fp==false) {
$str = $str + 1;
$fp = fopen( $str ,'w+');
}
$da = $_GET['data'];
fwrite($fp, $da);
fclose($fp);
?>
答案 0 :(得分:4)
为什么不这样做简单:
file_put_contents('numbers.txt', is_writeable('numbers.txt')?((int)file_get_contents('numbers.txt'))+1:exit('Failed to open file'));
答案 1 :(得分:1)
借用Eugene's great one-liner,提出了以下解决方案。
(信用转为Eugene)
如果文件不存在,以下代码将创建该文件,并在每次重新加载时增加+1。
(测试)
<?php
$filename = "number.txt";
$filename = fopen($filename, 'a') or die("can't open file");
file_put_contents('number.txt', ((int)file_get_contents('number.txt'))+1);
// To show (echo) the contents of the file, you can use one of the following
// include("number.txt");
// echo file_get_contents('number.txt');
?>
答案 2 :(得分:0)
这是因为您要将写入数据设置为旧的GET var而不是新的set var。
fwrite($fp, $da);
尝试使用
fwrite($fp, $str);
而且你只需要fopen()一次。
答案 3 :(得分:0)
$filename = 'number.txt';
$content = (int) file_get_contents($filename);
$content++;
var_dump($content);
file_put_contents($filename, $content);
您必须创建该文件number.txt并将其作为文件内容插入0,然后您的脚本应该每次都有效。
答案 4 :(得分:0)
您正在将内容读入变量$ fgc,但是您尝试使用$ cont来表示未初始化的值。所以你的settype调用将把它强制转换为0.相反,试试:
$fgc = file_get_contents('number.txt');
settype($fgc, "integer");