-2

我有一个名为“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);
?>
4

5 回答 5

4

为什么不做这样简单的事情:

file_put_contents('numbers.txt', is_writeable('numbers.txt')?((int)file_get_contents('numbers.txt'))+1:exit('Failed to open file'));
于 2013-08-06T12:50:16.017 回答
1

借用Eugene 伟大的 one-liner,想出了以下解决方案。

(归功于尤金

如果文件不存在,以下代码将创建该文件,并在每次重新加载时增加 +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'); 

?>
于 2013-08-06T13:24:24.907 回答
0

这是因为您将写入数据设置为旧的 GET var 而不是新的 set var。

fwrite($fp, $da);

尝试使用

fwrite($fp, $str);

而且你只需要 fopen() 一次。

于 2013-08-06T12:52:17.820 回答
0
$filename = 'number.txt';
$content = (int) file_get_contents($filename);
$content++;
var_dump($content);
file_put_contents($filename, $content);

您必须创建该文件 number.txt 并在其中插入 0 作为文件内容,然后您的脚本应该每次都可以工作。

于 2013-08-06T12:54:37.717 回答
0

您正在将内容读入变量 $fgc,但您尝试使用 $cont 来表示未初始化的值。因此,您的 settype 调用会将其转换为 0。相反,请尝试:

$fgc = file_get_contents('number.txt');
settype($fgc, "integer");
于 2013-08-06T12:54:57.817 回答