需要一种方法来检测页面回发

时间:2013-01-04 23:18:09

标签: php

我是一名php初学者。我想每次运行我的项目来创建一个独特的文件,为此我使用了uniqid()。只有每次重新加载页面以显示从服务器收到的新数据时,它才会创建一个具有单一名称的新文件。但我希望保留第一个文件,直到应用程序关闭。

这是我的代码:

$uniq = uniqid();
if(!isset($_COOKIE['firsttime'])){
  setcookie('firsttime', 'no');
  $num = $uniq;
  $myfile = 'file/'.$num.'.txt';
  if(file_exists($myfile) == FALSE){
    $fo = fopen($myfile, 'w')or die();
    $code = '<form action = "" method = "post">';
    fwrite($fo, $code, strlen($code)) ;
    fclose($fo);
  }else{
    unlink($myfile);
    $file = new File();
  } 
}

someoane可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

看来,如果我读得正确,你应该将cookie指定为唯一的名称,然后使用它而不是每次都生成一个新的。 现在,你说如果它不是回发你想要它运行。通过这个我假设你的意思是发布一个表单,所以你只运行一次,然后如果用户在页面上发布表单然后你没有创建一个新的id,你改为使用当前正在使用的那个..

if(!isset($_POST['some_form_element']))
{
    if(isset($_COOKIE['firsttime'])){
      $myfile = 'file/'.$_COOKIE['firsttime'].'.txt';

    }
    else
    {
        $uniq = uniqid();
        setcookie('firsttime', $uniq);
        $myfile = 'file/'.$uniq.'.txt';
    }

    if(file_exists($myfile) == FALSE){
        $fo = fopen($myfile, 'w')or die();
        $code = '<form action = "" method = "post">';
        fwrite($fo, $code, strlen($code)) ;
        fclose($fo);
    }else{
        unlink($myfile);
        $file = new File();
    } 
}

其中“some_form_element”是表单中的任何元素,或隐藏字段等。最好使用特定的东西而不仅仅是!$ _ POST。

如果我对你的需求有误,请告诉我。我可以更新。