来自内爆阵列的我的字符串中没有值? PHP

时间:2018-02-14 19:42:56

标签: php arrays forms implode

今天开始学习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?

2 个答案:

答案 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  );