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

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

Мой код:

<?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 для выполнения. как я могу сделать это одним из способов вышесказанного?

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

 <?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>'; ?> 

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

В 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, который выводит форму, или некоторые люди предпочитают делать отдельный PHP-файл для обработки действий.

Основной процесс один и тот же:

  1. Создайте HTML-форму для пользователя.
  2. Пользователь заполняет форму, клики отправляют.
  3. Данные формы отправляются в местоположения, определенные действием на сервере.
  4. Скрипт проверяет данные и делает с ними что-то.
  5. Обычно возвращается новая 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

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

Я не уверен, что понимаю, чего вы пытаетесь достичь, поскольку у нас нет того, что должно возвращаться 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-адрес, куда вы должны отправлять результаты, но это то, что вам нужно в атрибуте действия вашей формы. Я привел результат в примерном абзаце, чтобы вы могли увидеть, как вы можете отобразить результат. См. Раздел «Ваше имя пользователя …».


// Редактировать :

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

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

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

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

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

 <?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>'; ?> 

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

  <?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>'; ?> 

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

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

Существует много возможностей PHP AJAX Frameworks на выбор:

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

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

И Т.П.

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

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

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

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