从PHP创建动态数组&_用于在foreach循环中使用的复选框的POST

从PHP创建动态数组&_用于在foreach循环中使用的复选框的POST,php,arrays,post,foreach,Php,Arrays,Post,Foreach,我试图使用从另一个页面发布的表单数据作为$u POST。数据包含电子邮件和文件路径,这些路径作为值保存在复选框中 我试图实现的是为每个选定的文件发送一封电子邮件作为附件。我已经有了一个数组,但这只是发送所有的文件 我希望通过允许用户选择要附加的文件来改进此表单的功能 任何人都可以提供一个解决方案,将提取文件路径数据(从复选框值)用于foreach循环(将发送电子邮件) 我不需要电子邮件的解决方案,我只需要让循环正常工作,这样一个能够响应以下内容的示例就足够了 电子邮件:$Email 文件:$fi

我试图使用从另一个页面发布的表单数据作为$u POST。数据包含电子邮件和文件路径,这些路径作为值保存在复选框中

我试图实现的是为每个选定的文件发送一封电子邮件作为附件。我已经有了一个数组,但这只是发送所有的文件

我希望通过允许用户选择要附加的文件来改进此表单的功能

任何人都可以提供一个解决方案,将提取文件路径数据(从复选框值)用于foreach循环(将发送电子邮件)

我不需要电子邮件的解决方案,我只需要让循环正常工作,这样一个能够响应以下内容的示例就足够了

电子邮件:$Email 文件:$filename*

/第二次循环/

电子邮件:$Email 文件:$filename* 等等

  • $filename的循环应仅显示上一页上选定的复选框
输入页面如下所示

<!DOCTYPE html>
<html>
<body>
<center>
<h5>Payload Tests</h5>
<form action="output.php" method="post">
<fieldset>
    <legend>Enter Email Address</legend>
    <input type="text" name="email" size="30" value="Enter Email Address"> 
<br>
</fieldset>
<fieldset>
    <legend>Select Container Type</legend>
    <input type="checkbox" name="container1" value="7z" checked> 7zip
    <input type="checkbox" name="container2" value="dmg"> dmg
    <input type="checkbox" name="container3" value="gz"> gz
    <input type="checkbox" name="container4" value="rar" checked> rar
    <input type="checkbox" name="container5" value="tar"> tar
    <input type="checkbox" name="container6" value="zip" checked> zip<br>
</fieldset>
<fieldset>
    <legend>Select Script Type</legend>
    <input type="checkbox" name="script1" value="bat" checked>bat
    <input type="checkbox" name="script2" value="ps1" checked>ps1
    <input type="checkbox" name="script3" value="py">py
    <input type="checkbox" name="script4" value="sh">sh<br>
</fieldset>
<fieldset>
    <legend>Select Macro Type</legend>
    <input type="checkbox" name="macro1" value="docm" checked>docm
    <input type="checkbox" name="macro2" value="xlsm" checked>xlsm<br>
</fieldset>
    <br>
    <input type="submit" value="Send" />
</form>

<br>
<hr>
</center>
</body>
</html>

有效载荷试验
输入电子邮件地址

选择容器类型 7拉链 dmg 广州 rar 焦油 拉链
选择脚本类型 蝙蝠 ps1 派克 sh
选择宏类型 docm xlsm



输出页面如下所示

<!DOCTYPE html>
<html>
<body>
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//Convert posted form data into single variable
$mail1 = ($_POST["email"]);?>
<br>
<p>Email Attachments Sent to....
<br>
Email address: <span style="color:blue"><?php echo $mail1;?></span>
<br>
</p>
<p>
<!-- Now the loop to send each selected file in a separate email -->
<?php
$file = array(extract($_POST)); //Only want the checkbox bits used here not the email??
foreach ($file as $file1){
echo $file1<br>;
//Sendemail code goes here
}
// END loop
// For  Testing ouput
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
</p>
</body>
</html>


电子邮件附件发送到。。。。
电邮地址:


首先,一些代码缩进可能有助于更轻松地阅读代码

接下来,将表单复选框更改为作为数组而不是单个变量提交

<?php
    foreach($_POST['containers'] as $container) {
        //...
    }
    foreach($_POST['scripts'] as $script) {
        //...
    }
    foreach($_POST['macros'] as $macro) {
        //...
    }
?>

输入电子邮件地址

选择容器类型 7拉链 dmg 广州 rar 焦油 拉链
选择脚本类型 蝙蝠 ps1 派克 sh
选择宏类型 docm xlsm

现在,您可以轻松地遍历用户选择的所有值



默认情况下,HTML只将选中的值传递给服务器。

向我们展示您的表单以及如何处理表单。这应该是一个简单的问题来解决,但我们不能给你任何细节,没有看到你的代码。对不起,第一次在这里!!我已经上传了一些代码@GrumpyCrouton,你能告诉我你的想法吗?非常感谢我会尝试一下,让你知道,很抱歉我的编码太差了:-(@RaaStack没问题。祝你好运。我不得不稍微更改php以使其工作,但我到了那里,谢谢你的帮助:-)foreach($_POST[“containers”]as$container=>$file1){echo文件类型:“.$file1”。
“;@RaaStack您更改的代码完全相同,只是在循环中使用了
$file1
而不是
$container
。它实际上除了变量名之外没有更改任何内容。而且您不需要
$container=>
部分,因为您从未使用或需要数组键。感谢您的建议,这非常有用
<?php
    foreach($_POST['containers'] as $container) {
        //...
    }
    foreach($_POST['scripts'] as $script) {
        //...
    }
    foreach($_POST['macros'] as $macro) {
        //...
    }
?>