http://ru.html.net/tutorials/php/lesson11.php | |
Урок 11: Передача переменных через формыИнтерактивные сайты принимают ввод от пользователей. Один из распространённых способов получения ввода - формы. В этом уроке посмотрим, как создать форму и обработать ввод на сервере. <form>При создании формы участвуют два важных атрибута: action и method.
HTML-страница с формойСтраница с формой не обязаны быть РНР-файлом (но может быть). Она даже не обязана находиться на том же сайте, что и файл, который получает данные. В нашем первом примере мы рассмотрим очень простую форму с одним текстовым полем: <html> <head> <title>Форма</title> </head> <body> <h1>Введите ваше имя</h1> <form method="post" action="handler.php"> <input type="text" name="username"> <input type="submit"> </form> </body> </html> В браузере отобразится форма: Теперь начинается самое интересное: получение и обработка данных с помощью PHP. Запрашивание данных формы с помощью PHPЕсли вам необходимо запросить данные, отправленные через форму (методом post), вы используете $_POST: $_POST["fieldname"]; который возвратит значение поля формы. Попробуем это на примере. Сначала создадим страницу с формой, как ранее. Затем создадим РНР-страницу (обработчик) "handler.php" (обратите внимание, что это имя страницы, которое мы записали в атрибуте action в нашей <form>). Файл "handler.php" будет содержать: <html> <head> <title>Форма</title> </head> <body> <?php echo "<h1>Привет, " . $_POST["username"] . "</h1>"; ?> </body> </html> Пользовательский ввод и условияВ следующем примере мы попробуем использовать пользовательский ввод для создания условий. Сначала нам понадобится форма: <html> <head> <title>Форма</title> </head> <body> <form method="post" action="handler.php"> <p>Как вас зовут:</p> <input type="text" name="username"></p> <p>Ваш любимый цвет: <input type="radio" name="favoritecolor" value="r" /> Красный <input type="radio" name="favoritecolor" value="g" /> Зелёный <input type="radio" name="favoritecolor" value="b" /> Синий </p> <input type="submit" value="Submit" /> </form> </body> </html> В браузере это будет так: Теперь используем эти вводы для создания страницы, которая автоматически изменяет цвет фона на основе указаний пользователя. Это делается созданием условия (см. Урок 6), которое использует данные, введённые пользователем в форму. <?php $strHeading = "<h1>Привет, " . $_POST["username"] . "</h1>"; switch ($_POST["favoritecolor"]) { case "r": $strBackgroundColor = "rgb(255,0,0)"; break; case "g"; $strBackgroundColor = "rgb(0,255,0)"; break; case "b": $strBackgroundColor = "rgb(0,0,255)"; break; default: $strBackgroundColor = "rgb(255,255,255)"; break; } ?> <html> <head> <title>Форма</title> </head> <body style="background: <?php echo $strBackgroundColor; ?>;"> <? echo $strHeading; ?> </body> </html> Фон будет белым, если пользователь не укажет в форме предпочтительный цвет. Это достигается установкой значения default(по умолчанию), которое применяется, если ни одно из условий не выполнено. Но что будет, если пользователь не укажет своё имя? Тогда в заголовке будет только "Привет,". Создадим дополнительное условие для изменения этого варианта. <?php $strUsername = $_POST["username"]; if ($strUsername != "") { $strHeading = "<h1>Привет, " . $_POST["username"] . "</h1>"; } else { $strHeading = "<h1>Привет, незнакомец!</h1> "; } switch ($_POST["favorite color"]) { case "r": $strBackgroundColor = "rgb(255,0,0)"; break; case "g"; $strBackgroundColor = "rgb(0,255,0)"; break; case "b": $strBackgroundColor = "rgb(0,0,255)"; break; default: $strBackgroundColor = "rgb(255,255,255)"; break; } ?> <html> <head> <title>Форма</title> </head> <body style="background: <?php echo $strBackgroundColor; ?>;"> <? echo $strHeading; ?> </body> </html> В вышеприведённом примере мы используем условия для проверки информации от пользователя. В данном случае не столь важно, если пользователь не укажет имя. Но поскольку ваш код становится всё более навороченным, жизненно важно, чтобы учитывался вариант, когда пользователь вообще не заполняет формы. Пример: Форма контактной информацииОсновываясь на имеющихся знаниях о PHP и формах, вы можете создать форму контактной информации с использованием функции mail, которая имеет следующий синтаксис: mail(куда, субъект, сообщение); Сначала создаём простую HTML-форму: <html> <head> <title>Форма контактной информации</title> </head> <body> <h1>Форма контактной информации</h1> <form method="post" action="handler.php"> <p>Субъект:<br /><input type="text" name="subject" /></p> <p>Сообщение:<br /><textarea name="message"></textarea></p> <input type="submit"> </form> </body> </html> Затем понадобится РНР-скрипт для отправки пользовательского ввода: <html> <head> <title>Функции</title> </head> <body> <?php // Получатель (измените на ваш e-mail адрес) $strEmail = "name@mydomain.com"; // Получить пользовательские вводы $strSubject = $_POST["subject"]; $strMessage = $_POST["message"]; mail($strEmail,$strSubject,$strMessage); echo "Mail Sent."; ?> </body> </html> Заметьте, что пример работает, только если у вас есть доступ к почтовому серверу. По умолчанию это не так в XAMPP и в большинстве бесплатных хостов. Итак, некоторые хосты могут требовать наличия заголовка формы, который выполняется с дополнительным параметром: mail("вы@имявашегодомена.com", "Тест", "Это тестовое сообщение", "От: мне@мойдомен.com"); |
|