<select multiple =“”>不使用php处理html表单

时间:2015-06-17 23:45:16

标签: php html arrays forms post

好的,所以我有一个html表单,并使用php进行服务器端验证,以便从表单中将信息作为电子邮件发送。对于我的生活,我不能得到表格将项目作为数组发送。 这是我的HTML:    &lt;选择多个名称=&#34;症状[]&#34;&gt;    &lt; option value =&#34; ADHD&#34;&gt; ADHD&lt; / option&gt;    &lt; option value =&#34; Insomnia&#34;&gt; Insomnia&lt; / option&gt;    &lt; option value =&#34;抑郁症&#34;&gt;抑郁症&lt; /选项&gt;    &lt; option value =&#34; PTSD&#34;&gt; PTSD&lt; / option&gt;    &lt;选项值=&#34;自闭症&#34;&gt;自闭症&lt; /选项&gt;    &lt; option value =&#34;压力&#34;&gt;压力&lt; /选项&gt;    &lt;选项值=&#34;成瘾&#34;&gt;成瘾&lt; /选项&gt;    &lt; option value =&#34;疼痛&#34;&gt;疼痛/头痛&lt; / option&gt; 这是我的PHP,我认为问题在于: //验证预期数据存在 if(!isset($ _ POST [&#39; first_name&#39;])||     !isset($ _ POST [&#39; last_name&#39;])||     !isset($ _ POST [&#39; email&#39;])||     !isset($ _ POST [&#39;电话&#39;])||     !isset($ _ POST [&#39;症状&#39;])||     !isset($ _ POST [&#39; location&#39;])||     !isset($ _ POST [&#39;评论&#39;])){     死了(&#39;我们很抱歉,但您提交的表单似乎有问题。&#39;); } $ first_name = $ _POST [&#39; first_name&#39;]; //必填 $ last_name = $ _POST [&#39; last_name&#39;]; //必填 $ email_from = $ _POST [&#39; email&#39;]; //必填 $ telephone = $ _POST [&#39;电话&#39;]; //不是必需的 $症状= $ _POST [&#39;症状&#39;]; //不是必需的 $ location = $ _POST [&#39; location&#39;]; //不是必需的 $ comments = $ _POST [&#39;评论&#39;]; //必填 还有这部分的PHP,但我不会想到这些症状&#39;区域是一个问题...... function clean_string($ string){   $ bad = array(&#34; content-type&#34;,&#34; bcc:&#34;,&#34; to:&#34;,&#34; cc:&#34;,& #34; HREF&#34);   return str_replace($ bad,&#34;&#34;,$ string); } $ email_message。=&#34;名字:&#34; .clean_string($ first_name)。&#34; \ n&#34 ;; $ email_message。=&#34;姓氏:&#34; .clean_string($ last_name)。&#34; \ n&#34 ;; $ email_message。=&#34;电子邮件:&#34; .clean_string($ email_from)。&#34; \ n&#34 ;; $ email_message。=&#34;电话:&#34; .clean_string($ telephone)。&#34; \ n&#34 ;; $ email_message。=&#34;症状:&#34; .clean_string($症状)。&#34; \ n&#34 ;; $ email_message。=&#34;位置:&#34; .clean_string($ location)。&#34; \ n&#34 ;; $ email_message。=&#34;评论:&#34; .clean_string($ location)。&#34; \ n&#34 ;; 我一直试图改变整天的!isset和$症状线以获得“症状”#39;选择多个以数组形式显示在我的电子邮件中。现在它只是说&#34;阵列&#34;在电子邮件中。我想也许.clean-string应该与数组而不是字符串有关?我完全陷入困境,我已经尝试了一切我能找到,复制和粘贴并修改并改变了我在stackoverflow上找到的5组不同的代码......

1 个答案:

答案 0 :(得分:1)

如果你echo(或连接或其他一些将转换成字符串的方法)一个数组,它只会说“数组”,所以你必须以某种方式将它转换为字符串。一种方法是使用implode,因此您可以将数组显示为以逗号分隔的列表:

$email_message .= "Symptoms: ".clean_string(implode(", ",$symptoms))."\n";

http://php.net/implode

如果你想得到想象力并确保在最后一项之前有“和”,你可以做到

$symptomString = implode(", ", $symptoms); 
$lastComma = strrpos($symptomString, ", ");
$symptomString = substr_replace($symptomString, "and", $lastComma, 2);