WedX - журнал о программировании и компьютерных науках

Проблема с использованием $_POST с текстовой областью

У меня есть простая контактная форма на веб-сайте с 2 текстовыми полями, 1 текстовой областью и 1 скрытым полем.

По какой-то причине все поля POST в PHP-скрипт, кроме textarea. Я делал это тысячу раз раньше, и никогда не было этой проблемы.

Вот мой HTML:

<form action="scripts/contactform.php" method="post">
<table width="0" border="0" cellspacing="3" cellpadding="5" class="gpass">
  <tr>
    <td>Name:</td>
    <td><input name="name" type="text" maxlength="50" /></td>
  </tr>
  <tr>
    <td>E-mail:</td>
    <td><input name="email" type="text"/></td>
  </tr>
  <tr>
    <td>Message:</td>
    <td><textarea name="comment" id="comment" cols="30" rows="5"></textarea>
    <input type="hidden" value=" <?php echo $_SERVER['REMOTE_ADDR'];?>" name="address" />
    </td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input name="submit" type="submit" value="Submit" class="noround" id="regbut" /><input name="reset" type="reset" value="Reset" class="noround" id="regbut"/></td>
  </tr>
</table>
</form>

А мой скрипт выглядит так:

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) 
{
    die('Failed to connect to server: ' . mysql_error());
}

$db = mysql_select_db(DB_DATABASE);
if(!$db) 
{
    die("Unable to select database");
}

$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$comment = mysql_real_escape_string($_POST['comment']);
$ipaddress = mysql_real_escape_string($_POST['address']);

У меня есть несколько вещей для обработки данных под этим, но это не имеет значения, поскольку переменная $comment не определена. Я просмотрел весь сценарий и не нашел конфликтующих имен переменных.

Я совершенно озадачен тем, почему это происходит. Я уже несколько раз успешно обрабатывал textarea на своем сайте, так что это действительно сбивает с толку.

03.01.2012

  • Что показывает var_dump($_POST)? 04.01.2012
  • Что вы увидите, если сделаете print_r($_POST)? 04.01.2012
  • Где вы используете данные comment (я не вижу их в вашем коде)? Что находится в $_POST суперглобальном? Например. var_dump($_POST); 04.01.2012
  • Я вижу это [сообщение]=> string(2) cw (cw — это то, что я набрал) 04.01.2012
  • @PeeHaa, я вставляю его в базу данных, а потом отправляю по электронной почте 04.01.2012
  • Вау! сообщение или комментарий? Что он? 04.01.2012
  • Ну, изначально это было $message, но позже я использовал эту переменную для сообщения электронной почты в сценарии, и было проще просто изменить имя переменной textarea. В чем проблема? 04.01.2012
  • @AndrewDeForest в своем HTML вы использовали comment в качестве имени, но в своем дампе вы говорите, что у вас есть message в качестве имени. Я говорю ПЕБКАК. 04.01.2012
  • ОК, я понимаю, о чем вы говорите, я мог бы поклясться, что проверял это более миллиона раз. О, теперь это работает. Спасибо всем за вклад! 04.01.2012

Ответы:


1

Однажды я столкнулся с ошибкой, похожей на вашу. Мне помогло использование разных параметров id и name. Попробуйте и убедитесь сами, ведь они у вас здесь идентичные.

03.01.2012
  • Вау, почему-то это сработало! Есть идеи, почему? Я отмечу это как ответ через несколько минут, просто дождитесь таймера. Спасибо! 04.01.2012
  • Понятия не имею, правда... Но когда это случилось со мной, я психанул и просто попытался присвоить своему полю другой идентификатор. Я был в шоке, что это сработало для меня тогда. 04.01.2012
  • @ craig1231, это случилось со мной задолго до того, как HTML5 стал известен. 04.01.2012

  • 2

    Хотя в вашем случае textarea не установлено на disabled, причина, по которой я нашел этот пост, заключалась в том, что я не получал значение из textarea, которое было. Итак, вот примечание для всех, кто столкнулся с этой проблемой.

    Чтобы POST значение из textarea, где вы хотите, чтобы поле было нередактируемым, используйте readonly вместо disabled — либо непосредственно в html, либо через setAttribute в JavaScript — а затем используйте CSS, чтобы выделить его, например:

    textarea[readonly] {background-color:#F0F0F0;})
    
    03.03.2017
  • Большое спасибо, это действительно очень помогло 13.03.2020

  • 3

    Вам нужно только добавить значение идентификатора в форму, а затем добавить атрибут формы в текстовую область со значением идентификатора формы.

    <form id="sample".....>
    <textarea name="aba" form="sample".....></textarea>
    </form>
    
    18.11.2017
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]