Не могу получить доступ к данным формы в php - PullRequest
2 голосов
/ 18 августа 2011

Я не новичок, но я тоже не эксперт, я увлеченный ученик.

Проблема (минимизированная) - у меня есть базовая форма, которая отправляет имя на другую страницу, котораядолжен получить имя и распечатать имя.Код обеих форм ниже

Форма:

<?php
echo "hello world!";
echo "
<form action='CFAcomments.php' method='POST'> 
<table style='width: 50%;' border='0'>
<tbody>
<tr>
<td><label for='name'>name: </label></td>
<td><input type='Text' name='name' value='anon' /></td>
</tr>
<tr>
<td><input type='submit' name='send' value='Send' /></td>
</tr>
</tbody>
</table>
</form> 
";?>

Форма обработки:

<?php
echo "hello world 1 !";
echo "<br/>";
var_dump($_POST);    
$name = $_POST("name");
echo "hello $name !";
?>

Результат:

hello world 1 !
array(2) { ["name"]=> string(11) "anon" ["send"]=> string(4) "Send" } 

Проблема:

Даже если var_dump ($ _ POST) показывает отправляемые данные, echo $name ничего не печатает.Изменение echo $name на echo "test" тоже ничего не печатает.Кажется, что код перестает выполняться на $name = $_post("name"); Если я уберу эту строку echo "anything" работает.

Я использовал php и формы в течение последних 2 лет и никогда не сталкивался с этим, любая помощь будет оценена.

Ответы [ 7 ]

4 голосов
/ 18 августа 2011

Ключи массива указываются в квадратных скобках, а не в скобках.

$name = $_POST("name");

// Should be
$name = $_POST["name"];
1 голос
/ 18 августа 2011

Для доступа к элементу массива вы должны использовать квадратные скобки.Таким образом, он просто заменяет

$name = $_POST("name");

на

$name = $_POST["name"];
1 голос
/ 18 августа 2011

Это должно быть

$name = $_POST["name"];

Обратите внимание на квадратные скобки, потому что $ _POST - это массив, а не функция.

1 голос
/ 18 августа 2011

Вам необходимо использовать

$ _ POST ["name"];

$ _ POST - это ассоциативный массив переменных, передаваемых в текущий скрипт через метод HTTP POST.

См .: http://php.net/manual/en/reserved.variables.post.php

1 голос
/ 18 августа 2011
$name = $_POST("name"); 

не правильный путь. Должно быть:

$name = $_POST["name"]; 

, поскольку $ _POST является массивом.

1 голос
/ 18 августа 2011

Вы используете неправильный синтаксис для $ _POST.Это должно быть

 <?php
    $name = $_POST["name"]; 
    echo "hello $name !"; 
 ?>

Вы обращаетесь к нему как к функции, а не к массиву.

1 голос
/ 18 августа 2011

Это потому, что вы не используете правильные скобки. Должно быть:

$_POST['name'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...