PHP文件写入问题

时间:2013-08-06 12:46:39

标签: php

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

5 个答案:

答案 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");