Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查提交按钮_Php_File_For Loop_Submit_Lines - Fatal编程技术网

Php 检查提交按钮

Php 检查提交按钮,php,file,for-loop,submit,lines,Php,File,For Loop,Submit,Lines,我遇到了一些问题,我希望此脚本: 打开test.txt文件 检查用户是否向txt文件添加了任何文本 如果用户添加了任何文本,请删除现有行并将其替换为新行。从$邮政 如果用户没有,请在test.txt中添加$\u POST 问题: 当我用垃圾邮件发送提交按钮时,这个.txt文件就会乱七八糟。有人知道怎么做支票,这样就不会搞砸了吗? 请不要建议MYSQL,我需要这些在.txt文件 谢谢 函数cutline($filename,$line_no=-1){ $strip\u return=FALSE;

我遇到了一些问题,我希望此脚本:

  • 打开test.txt文件
  • 检查用户是否向txt文件添加了任何文本
  • 如果用户添加了任何文本,请删除现有行并将其替换为新行。从$邮政
  • 如果用户没有,请在test.txt中添加$\u POST
  • 问题:

    当我用垃圾邮件发送提交按钮时,这个.txt文件就会乱七八糟。有人知道怎么做支票,这样就不会搞砸了吗? 请不要建议MYSQL,我需要这些在.txt文件

    谢谢

    函数cutline($filename,$line_no=-1){
    $strip\u return=FALSE;
    $data=文件($filename);
    $pipe=fopen($filename,'w');
    $size=计数($data);
    如果($line_no==-1)$skip=$size-1;
    else$skip=$line_no-1;
    对于($line=0;$line)
    HWID
    
    我不能100%确定文本文件是怎么搞砸的,但我想锁定在这里不会有帮助,因为当脚本完成(或重新加载)时,锁会被释放

    看起来您只是在执行过程中“杀死”了
    cutline
    ,其余的行将不会被写入。解决这一问题的一种方法是将文件的新内容保存在临时变量中,并只调用
    fwrite
    一次。(我不确定这是否可行)

    另一种可能是在执行
    cutline
    方法时,将
    cutline
    的结果写入一个临时文件,并用新文件替换旧文件。这可能发生在方法内部

    无论哪种方式,如果脚本在不安全状态下被终止,现有文件都不会被触动。但是,当用户在调用
    cutline
    函数之后以及在您将新输入添加到此行之前重新加载页面时,您仍然可以从用户那里丢失新输入

    fwrite($fh, $stringData);
    
    我认为这真的很难强制执行,因为这个操作相当快

    编辑:


    如果这是一个有效的用例,请不要忘记同时使用多个用户测试脚本。如果两个或多个用户同时编辑同一个文件,它也会出错。因此,您可能会以一些锁定结束,但这不会解决此处描述的问题。

    文本是如何出错的?您能再详细说明一下吗?您的答案是否定的在我所能看到的任何地方“关闭”文件。文本正在出错,因为您在完成文本编写之前重新打开了文件。打开的文件将在脚本结束时关闭。否则,您将永远无法再次打开文件。或者任何人。(直接关闭它仍然是明智的。)
    fwrite($fh, $stringData);