Есть ли лучший способ использования пост-данных, а не определение переменных вручную?
Мой текущий метод
<form method="POST" action="form.php">
<input type="text" name="name" id="name" />
<input type="submit" value="Submit">
</form>
<?php
$name = $_POST['name'];
function echoname ($name) {
echo $name;
};
echo "This is my new" . echoname ($name);
?>
Теперь я знаю, что вы можете просто сделать это для моего примера, но это всего лишь пример:
<?php
$name = $_POST['name']
echo "This is my new" . $name;
?>
Есть ли лучший способ использовать $_POST['value']
без необходимости каждый раз определять данные сообщения как переменной?
В качестве примечания, я посмотрел здесь: PHP Manual $ _POST уже
Благодарю!
Если вы не хотите использовать extract()
для целей безопасности (даже если вы можете просто пропустить переменные, которые уже существуют), вы можете просто пропустить массив - проверьте, существует ли значение $_POST
, и если это так, создайте переменная ключа:
<?php
$postVariablesToExtract = array("name", "password", "email");
foreach ($postVariablesToExtract as $postVariableToExtract) {
if (isset($_POST[$postVariableToExtract])) {
$$postVariableToExtract = $_POST[$postVariableToExtract];
} else {
$$postVariableToExtract = null;
}
}
var_dump($name); //null - as we don't have any POST values
var_dump($password); //null - as we don't have any POST values
var_dump($email); //null - as we don't have any POST values
?>
extract
- это, в основном, функция, подобная этой, которая создает переменные на основе ключей. Единственная разница здесь в том, что мы устанавливаем только те переменные, которые мы уже определили (поэтому я не могу изменить свое имя пользователя, опубликовав username=MyOwnUsernameVariable
).
Существует множество способов получения данных, но в некоторых случаях это зависит от требований.
foreach ($ _POST как $ key => $ value) $ body. = $ key. '->'. $ value. '
";
Если опубликованные данные не имеют ключа, а только значения, используйте данные Raw Post:
$ postdata = file_get_contents ("php://input");
Вы можете использовать $ _REQUEST, а также $ _POST, чтобы получить все, например, данные Post, Get и Cookie.
Вы также можете использовать просто $ input_data = $ _POST extract(), который может быть вам полезен.
Я не уверен, как вам это нужно, но может быть важно, чтобы $ _POST был нормальным массивом, поэтому вы можете использовать функцию foreach.
foreach ($_POST as $item) {
print_r($item);
}
Конечно, вы можете использовать переменную напрямую, то есть:
echo "This is my new " . $_POST['name'];
Однако неплохо проверить наличие пустоты (или проверки в целом). Например, в приведенном ниже случае, если переменная пуста, я присваиваю значение по умолчанию:
$name = empty($_POST['name']) ? 'John' : $_POST['name'];
echo "This is my new $name";
isset
. empty
выберет значение по умолчанию, если значение было ""
или 0
что, скорее всего, не то, что хочет OP.
$_POST['value']
уже является переменной, поэтому ее не нужно хранить в переменной. Опять же, его обычная практика хранить его в переменной перед тем, как манипулировать им.
Кроме того, $_POST
- это массив. Вот почему вам нужно указать ключ, в вашем случае ['value']
является вашим ключом. Теперь вы также можете выделить весь $_POST
если хотите увидеть другие значения, которые он имеет, но тогда эхо не работает на массивах, поэтому вам нужно будет использовать print_r($_POST);
Да, вы можете использовать
echo "This is my new" . $_POST['name'];
но, лучший способ
if(isset($_POST['name'])) // check if this data is exsit
echo "This is my new" . $_POST['name'];