我的字符串中没有来自内爆 post 数组的值? PHP

no values in my string from an imploded post array? PHP

今天开始学习PHP所以原谅我是一个菜鸟。我有一个简单的 HTML 表单,用户输入 4 个字符串然后提交。

HTML表格

<html>
<head>
<title>EMS</title>
</head>

<body>
<h1>EMS - Add New Employees</h1>

<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
<table>
<tr><td>Enter a NAME:</td><td> <input type="text" name="name"></td></tr>
<tr><td>Enter a PPSN:</td><td>  <input type="text" name="ppsn"></td></tr>
<tr><td>Enter a PIN :</td><td>  <input type="text" name="pin"></td></tr>
<tr><td>Enter a DOB:</td><td>  <input type="text" name="dob"></td></tr>
<tr><td></td><td><input type="submit" value="Add New Employee" name="data_submitted"></td></tr>
</table>
</form>
</html>

我想将 $_POST["data submitted"] 数组中的 4 个元素分解为一个字符串。

PHP

<?php


    if (isset($_POST['data_submitted'])){ 



       $employee = implode(",",$_POST['data_submitted']);



        echo "employee = ".$employee;
    }


?>

为什么我运行项目时,将4个字符串输入到表单中并提交,输出时员工字符串中没有任何内容?然而,当我在没有 'data_submitted'.

的情况下像这样内爆 $_POST 数组时,员工字符串中有一个值
$employee = implode(",",$_POST);

$employee 字符串的输出现在是 - employee = will,03044,0303,27/5/6,Add New Employee

它包含姓名、pps、pin、dob 和这个 ADD New Employee 值? 如何让 $employee 字符串只包含 $POST_[data_submitted] 数组中的姓名、pps、pin 和 dob?

如果要对提交的数据进行内爆,那么需要参考具体的项目,如下:

<?php
$clean = [];

if (isset($_POST['data_submitted'])){ 

 // one way to deal with possibly tainted data
 $clean['name'] =  htmlentities($_POST['name']);
 $clean['ppsn'] =  htmlentities($_POST['ppsn']);
 $clean['pin']  =  htmlentities($_POST['pin']);
 $clean['dob']  =  htmlentites($_POST['dob']);


 $employee = implode(",",$clean);
 echo "employee = $employee";
}

切勿在未先检查以确保这样做安全的情况下使用提交的数据。你需要验证它。由于 OP 未指定命名输入 "ppsn"、"pin"、"dob" 属于哪种数据,因此此示例进行了最少的验证。每个输入可能需要更多或不同的东西。

无论您是新手还是熟悉 PHP,经常在线阅读 Manual 是个好主意。

首先,您需要知道 php 会将以下格式的值处理:value="value here" as string.

因此,调用 implode(",",$_POST['data_submitted']); 将 return Add New Employee 如下声明:<pre><input type="submit" value="Add New Employee" name="data_submitted"></pre>.

根据你的问题:

How do I just get the $employee string to contain just the name, pps, pin and dob from the $_POST[data_submitted] array?

解决方案

1. Unset the <code>$_POST['data_submitted']</code> index in the $_POST super global variable
2. Implode it



// Unset the $_POST['data_submitted'] index
$post_data = unset( $_POST['data_submitted'] );

// Format the post data now
$format_post_data = implode( ",", $post_data );

// Escape and display the formatted data 
echo htmlentities( $format_post_data, ENT_QUOTES  );