我的字符串中没有来自内爆 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 );
今天开始学习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 );