Php 函数将表单$\u POST信息保存到random\u name.txt
我想将表单(Php 函数将表单$\u POST信息保存到random\u name.txt,php,file,Php,File,我想将表单($\u POST)中的信息保存为动态生成文件的备份。因此,我必须为每个提交表单的用户生成一个文件(10个提交的表单=10个不同的文件)。 我尝试创建一个函数来生成一个随机文件名,并在该文件中写入$\u POST数组 function save_post($data){ $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = s
$\u POST
)中的信息保存为动态生成文件的备份。因此,我必须为每个提交表单的用户生成一个文件(10个提交的表单=10个不同的文件)。
我尝试创建一个函数来生成一个随机文件名,并在该文件中写入$\u POST
数组
function save_post($data){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 5; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
var_dump($randomString);
$file = "dump/".$randomString.".txt";
foreach ($data as $k => $v){
$toFile = "Key: $k; Value: $v \n";
}
return file_put_contents($file, $toFile);
}
问题是没有生成任何文件。按如下方式使用:
function save_post($data){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 5; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
var_dump($randomString);
$file = "dump/".$randomString.".txt";
foreach ($data as $k => $v){
$toFile = "Key: $k; Value: $v \n";
}
return file_put_contents($file, $toFile);
}
function save\u post($data){
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$charactersLength=strlen($characters);
$randomString='';
对于($i=0;$i<5;$i++){
$randomString.=$characters[rand(0,$charactersLength-1)];
}
变量转储($randomString);
$file=“dump/”$randomString。“.txt”;
foreach($k=>v的数据){
$toFile=“Key:$k;Value:$v\n”;
}
返回文件内容($file,$toFile);
}
注意:函数在执行操作之前返回值,所以清除了返回语句
//return $randomString;
//var_dump($randomString);
$toFile
function save_post($data){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 5; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
//return $randomString;
//var_dump($randomString);
$file = "dump/".$randomString.".txt";
$toFile = "";
foreach ($data as $k => $v){
$toFile .= "Key: $k; Value: $v \n";
}
return file_put_contents($file, $toFile);
}
function save\u post($data){
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$charactersLength=strlen($characters);
$randomString='';
对于($i=0;$i<5;$i++){
$randomString.=$characters[rand(0,$charactersLength-1)];
}
//返回$randomString;
//变量转储($randomString);
$file=“dump/”$randomString。“.txt”;
$toFile=“”;
foreach($k=>v的数据){
$toFile.=“键:$k;值:$v\n”;
}
返回文件内容($file,$toFile);
}
这和@Saty在评论中说的一模一样。您遇到的问题是由于
return$randomString代码>您的代码中包含的
下面描述如何从函数返回值:
可以返回任何类型,包括数组和对象。这会导致函数立即结束其执行,并将控制权传递回调用它的行
调用return后,将不会执行该函数中return下面的任何代码。代码应该如下所示:
function save_post($data){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 5; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
var_dump($randomString);
$file = "dump/".$randomString.".txt";
foreach ($data as $k => $v){
$toFile = "Key: $k; Value: $v \n";
}
return file_put_contents($file, $toFile);
}
array("greeting" => "hello world", "farewell" => "goodbye world")
$toFile = "";
foreach ($data as $k => $v){
...
我运行了脚本,它将输出如下文件(文件:dump/rHsmM.txt):
如果这不是你想要的,你需要使用它,它将允许你添加多个值。而不是每次循环时重写$toFile
的值,而是将其添加到循环的末尾。要执行此操作,请更改$toFile=“Key:$k;Value:$v\n”代码>行到:
$toFile .= "Key: $k; Value: $v \n";
如果您使用相同的数组重新运行脚本,您将得到以下结果(dump/PFOzo.txt):
更新:正如评论中所指出的,在我们尝试连接它之前,您确实会收到一条关于$toFile
不存在的通知。为了解决这个问题,我们可以确保在foreach循环之前声明它,如下所示:
function save_post($data){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 5; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
var_dump($randomString);
$file = "dump/".$randomString.".txt";
foreach ($data as $k => $v){
$toFile = "Key: $k; Value: $v \n";
}
return file_put_contents($file, $toFile);
}
array("greeting" => "hello world", "farewell" => "goodbye world")
$toFile = "";
foreach ($data as $k => $v){
...
现在,当我们开始连接时,我们已经有了一个要连接的字符串(尽管是空的)。removereturn$randomString代码>代码中间的行!!返回后
一切正常vanished@Saty奇怪的是,在random_name.txt文件中,我只有最后一个key->value,但在形式上我有2个radiogroups@NeculaiAndrei我已经给出了这方面的ans只需使用file\u put\u内容($file,$toFile.PHP\u EOL,file\u APPEND)
在foreach循环中
`@Saty,与其在循环中写入,不如将字符串连接起来并写入文件一次。函数正在工作,文件已生成,所有信息都在那里,但我得到一个注意:未定义变量:toFile in
啊,这是因为我们实际上还没有定义要连接的字符串。我们说“将此添加到现有字符串的末尾”,PHP说“没有现有字符串!”。您可以通过添加$toFile=“”代码>就在foreach循环之前。我会更新我的答案。