创建一个PHP文件,可以通过变量来写入文本并保存。 这个问题我提交了4次,要看看怎么才能通过!

例如访问http://127.0.0.1/write.php?&abc=123&cdoe=7.8.9目录下read.txt内容被写入:abc,123cdoe,7.8.9-... 例如访问http://127.0.0.1/write.php?&abc=123&cdoe=7.8.9
目录下read.txt内容被写入:
abc,123
cdoe,7.8.9

----
需要每个变量按行写入,可以增量写入。每个新的数据占独立的一行。
最好是有类似密*/码验-证,例如加个参数&ok=123,密\*码/为123时,写入的数据才生效,不会被恶*/意引用。

提个问题这么难,提交3个,都说不符合规范,什么才算规范?我不在乎那几个财富悬赏,多提问几次
展开
 我来答
miniappcy3tv95eaedrf
2016-11-07 · TA获得超过2363个赞
知道大有可为答主
回答量:1909
采纳率:92%
帮助的人:1116万
展开全部
<?php

error_reporting(E_ERROR);

if(empty($_GET['ok']) || $_GET['ok']!='password'){
exit('error');
}

unset($_GET['ok']);

$strarr=array();

foreach ($_GET as $k => $v) {
$strarr[]=$k.','.$v;
}

file_put_contents('readme.txt', implode("\r\n", $strarr));

echo 'ok';
更多追问追答
追问
还有2个问题,每次提交都需要写入新的数据,哪怕这2个数据是一样的,各占一行。

就是同一个连接刷新2次,需要写入2次结果。可以设置间隔2秒内的提交只写入1次。
另一个问题是写入的新数据需要在最前。
非常感谢!
追答
<?php
 
error_reporting(E_ERROR);
 
if(empty($_GET['ok']) || $_GET['ok']!='password'){
    exit('error');
}

session_start();

$laststamp=$_SESSION["timestamp"];
$time=time();
if(!empty($laststamp) && $time-$laststamp<3){
    exit('重复提交');
}
$_SESSION["timestamp"]=$time;
 
unset($_GET['ok']);
 
$strarr=array();
 
foreach ($_GET as $k => $v) {
    $strarr[]=$k.','.$v;
}

//多一个空行间隔两次数据
$strarr[]='';

if(file_exists('readme.txt')){
    $lastdata=file('readme.txt');
    if(!empty($lastdata)){
        $strarr=array_merge($strarr,$lastdata);
    }
}

file_put_contents('readme.txt', implode("\r\n", $strarr));
 
echo 'ok';

这种方式在数据比较多时很消耗服务器资源,文件上个几十M可能就运行不起来了。

建议新数据放在文件尾,读取收集的方式改变一下。

流浪金玄
2016-11-07 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:204
采纳率:100%
帮助的人:76.1万
展开全部
<?php
$myfile=fopen("read.txt", "w") or die("Unable to open file!");
$pw=$_GET['abc'];
$data='abc,'.$pw.'\n';
fwrite($myfile, $data);
$val = $_GET['cdoe'];
$data='cdoe,'.$val.'\n';
fwrite($myfile, $data);
fclose($myfile);
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式