今天开始学习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?
答案 0 :(得分:4)
如果您希望破坏提交的数据,那么您需要参考具体项目,如下所示:
$(document).ready(function () {
$("input.ssd").click(function () {
var lsid = $(this).attr("id");
lsid = Number(lsid);
var csrf = $("[name='csrfmiddlewaretoken']").val();
$.ajax({
type: "POST",
url: "/a_solution/",
data: {
'l_sid': lsid,
'csrfmiddlewaretoken': csrf
},
success: function (data) {
console.log("success");
console.log(data);
},
datatype: 'html',
error: function () {
console.log("oops! something went wrong");
}
});
});
});
在未事先检查确保安全的情况下,切勿使用提交的数据。你需要验证它。由于OP没有指定命名输入“ppsn”,“pin”,“dob”属于哪种数据,因此该示例进行了最少的验证。每个输入可能需要更多或不同的东西。
无论您是新手还是熟悉PHP,经常阅读在线Manual都是个好主意。
答案 1 :(得分:0)
首先,您需要知道 php 会将格式为value="value here"
的格式视为字符串。
因此,调用implode(",",$_POST['data_submitted']);
将返回此处声明的Add New Employee
:
<input type="submit" value="Add New Employee" name="data_submitted">
。
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 );