Подтвердить что ты не робот

Как я могу выполнить функцию PHP в действии формы?

Я пытаюсь запустить функцию из PHP script в действии формы.

Мой код:

<?php
require_once ( 'username.php' );

echo '
<form name="form1" method="post" action="username()">
  <p>
    <label>
      <input type="text" name="textfield" id="textfield">
    </label>
  </p>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Submit">
    </label>
  </p>
</form>';
?>

Я повторяю форму, но мне нужна функция "имя пользователя", которая вызывается из username.php для выполнения. как я могу сделать это простым способом для вышеперечисленного?

4b9b3361

Ответ 1

<?php
require_once ( 'username.php' );

if (isset($_POST['textfield'])) {
    echo username();
    return;
}

echo '
<form name="form1" method="post" action="">
  <p>
    <label>
      <input type="text" name="textfield" id="textfield">
    </label>
  </p>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Submit">
    </label>
  </p>
</form>';
?>

Вам нужно запустить функцию на странице, на которую отправляется форма.

Ответ 2

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

<?php
function name() {
  return 'Mark';
}

echo 'My name is: name()';   // Output: My name is name()
echo 'My name is: '. name(); // Output: My name is Mark

Параметр действия тега в HTML не должен ссылаться на функцию PHP, которую вы хотите запустить. Действие должно относиться к странице на веб-сервере, которая будет обрабатывать ввод формы и возвращать новый HTML пользователю. Это может быть то же место, что и PHP script, который выводит форму, или некоторые люди предпочитают делать отдельный файл PHP для обработки действий.

Основной процесс одинаковый:

  • Создайте HTML-форму для пользователя.
  • Пользователь заполняет форму, нажимает кнопку отправки.
  • Данные формы отправляются в местоположения, определенные действием на сервере.
  • script проверяет данные и делает с ними что-то.
  • Обычно возвращается новая HTML-страница.

Простым примером может быть:

<?php
// $_POST is a magic PHP variable that will always contain
// any form data that was posted to this page.
// We check here to see if the textfield called 'name' had
// some data entered into it, if so we process it, if not we
// output the form.
if (isset($_POST['name'])) {
  print_name($_POST['name']);
}
else {
  print_form();
}

// In this function we print the name the user provided.
function print_name($name) {
  // $name should be validated and checked here depending on use.
  // In this case we just HTML escape it so nothing nasty should
  // be able to get through:
  echo 'Your name is: '. htmlentities($name);
}

// This function is called when no name was sent to us over HTTP.
function print_form() {
  echo '
    <form name="form1" method="post" action="">
    <p><label><input type="text" name="name" id="textfield"></label></p>
    <p><label><input type="submit" name="button" id="button" value="Submit"></label></p>
    </form>
  ';
}
?>

В будущей информации я рекомендую прочитать уроки PHP: http://php.net/tut.php

Существует даже раздел о работе с формами.

Ответ 3

Я не уверен, что понимаю, чего вы пытаетесь достичь, поскольку у нас нет того, что должно возвращаться username(), но вы можете попробовать что-то подобное. Я бы также рекомендовал вам не эхо-целую страницу и, скорее, использовать что-то подобное, ее гораздо легче читать и поддерживать:

<?php
require_once ( 'username.php' );
if (isset($_POST)) {
  $textfield = $_POST['textfield']; // this will get you what was in the
                                    // textfield if the form was submitted
}
?>

<form name="form1" method="post" action="<?php echo($_SERVER['PHP_SELF']) ?">
  <p>Your username is: <?php echo(username()) ?></p>
  <p>
    <label>
      <input type="text" name="textfield" id="textfield">
    </label>
  </p>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Submit">
    </label>
  </p>
</form>

Это опубликует результаты на той же странице. Итак, в первый раз, когда вы показываете страницу, отображается только пустая форма, если вы нажмете на submit, поле текстового поля будет в переменной $textfield, и вы сможете отобразить ее снова, как хотите.

Я не знаю, должна ли функция username() вернуть вам URL-адрес, куда вы должны отправлять результаты, но то, что вы хотите в атрибуте action вашей формы. Я привел результат в примерном абзаце, чтобы вы могли увидеть, как вы можете отобразить результат. См. Раздел "Ваше имя пользователя...".


//Правка:

Если вы хотите отправить значение, не выходя из страницы, вы хотите использовать AJAX. Сделайте поиск в jQuery на StackOverflow или в Google.

Возможно, вы захотите, чтобы ваша функция вернула имя пользователя, а не эхо. Но если вы абсолютно хотите отгонять его от функции, просто назовите ее как <?php username() ?> в своей HTML-форме.

Я думаю, вам нужно будет понять поток клиент-серверного процесса ваших страниц, прежде чем идти дальше. Скажем, что примерный код выше называется form.php.

  • Вызывается ваш form.php.
  • form.php создает HTML-код и отправляется в браузер клиента.
  • Клиент видит только полученную HTML-форму.
  • Когда пользователь нажимает кнопку, у вас есть два варианта: a) пусть браузер делает обычную вещь, поэтому отправьте значения в полях формы на страницу, указанную в действии (в этом случае URL-адрес определяется PHP_SELF, который это текущий page.php). Или б) используйте javascript для перемещения этих данных на страницу без обновления страницы, это обычно называется AJAX.
  • Страница, в вашем случае она может быть изменена на username.php, затем будет проверяться в отношении базы данных, если имя пользователя существует, а затем вы хотите восстановить HTML, который содержит нужные вам значения, к шагу 1.

Ответ 4

Я думаю, это должно быть так.

<?php
require_once ( 'username.php' );

echo '
<form name="form1" method="post" action="<?php username() ?>">
 <p>
  <label>
   <input type="text" name="textfield" id="textfield">
  </label>
 </p>
 <p>
  <label>
   <input type="submit" name="button" id="button" value="Submit">
  </label>
 </p>
</form>';
?>

Ответ 5

Лучше что-то вроде этого... опубликуйте данные на собственной странице и, возможно, сделайте проверку на входе пользователя.

   <?php
    require_once ( 'username.php' );

    if(isset($_POST)) {
      echo "form post"; // ex $_POST['textfield']
    }


    echo '
    <form name="form1" method="post" action="' . $_SERVER['PHP_SELF'] . '">
      <p>
        <label>
          <input type="text" name="textfield" id="textfield">
        </label>
      </p>
      <p>
        <label>
          <input type="submit" name="button" id="button" value="Submit">
        </label>
      </p>
    </form>';
    ?>

Ответ 6

Действительно ли это вызов функции для атрибута действия? или он должен быть включен в атрибут onSUbmit, потому что для атрибута действия соглашения требуется страница /URL.

Я думаю, вы должны использовать AJAX с этим,

Есть много PHP AJAX Framework для выбора из

http://www.phplivex.com/example/submitting-html-forms-with-ajax

http://www.xajax-project.org/en/docs-tutorials/learn-xajax-in-10-minutes/

ETC.

Или классический способ

http://www.w3schools.com/php/php_ajax_php.asp

Я надеюсь, что эти ссылки помогут

Ответ 7

Вы можете поместить функцию username() на другую страницу и отправить форму на эту страницу...