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);
    
  • concatate
    $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){
    ...
    

    现在,当我们开始连接时,我们已经有了一个要连接的字符串(尽管是空的)。

    remove
    return$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循环之前。我会更新我的答案。