Урок 10. Задачи на формы в PHP
Практика
Примеры решения задач
Задача
Спросить город пользователя с помощью формы. Результат записать в переменную $g. Вывести на экран фразу 'Ваш город: %Город%'.
Решение:
<form method=GET>
<input type=text name=g>
<input type=submit>
</form>
<?/*Если форма была отправлена и город не пустой:*/if(!empty($_REQUEST[g])){$g=$_REQUEST[g];echo'Ваш город: '.$g;}?>
Warning: Use of undefined constant g - assumed 'g' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 16
Задача
Запрет ввода тегов.
Решить предыдущую задачу так, чтобы пользователь не мог вводить теги и сломать сайт. Для этого при записи содержимого поля в переменную $g обработать содержимое, т.е. $_REQUEST['g']) функцией strip_tags, которая удалит теги (можно вместо нее обработать функцией htmlspecialchars):
ПРОВЕРЬ!!!
<form method=GET>
<input type=text name=g>
<input type=submit>
</form>
<?/*Если форма была отправлена и город не пустой:*/if(isset($_REQUEST[g])){$g=strip_tags($_REQUEST[g]);echo'Ваш город: '.$g;}?>
Warning: Use of undefined constant g - assumed 'g' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 30
Задача
Скрыть форму после отправки.
Сделать так, чтобы форма после отправки скрывалась:
<?/*Если город пустой, покажем форму*/if(isset($_REQUEST[g])){?>
<form method=GET>
<input type=text name=g>
<input type=submit>
</form>
<?}?>
<?/*Если форма была отправлена и город не пустой:*/if(isset($_REQUEST[g])){$g=strip_tags($_REQUEST[g]);echo'Ваш город: '.$g;}?>
Warning: Use of undefined constant g - assumed 'g' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 41
Warning: Use of undefined constant g - assumed 'g' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 47
Задачи для решения. Формы
Задача
Спросить имя пользователя с помощью формы. Результат записать в переменную $n. Вывести на экран фразу 'Привет, %Имя%'.
Решение:
<form method=GET>
<input type=text name=n>
<input type=submit>
</form>
<?if(isset($_REQUEST[n])){$n=$_REQUEST[n];echo'Привет, '.$n;}?>
Warning: Use of undefined constant n - assumed 'n' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 61
Задача
Спросить у пользователя имя, возраст, а также попросите его ввести сообщение (в textarea). Вывести эти данные на экран в формате, приведенном под данной задачей. Позаботиться о том, чтобы пользователь не мог вводить теги (удалить теги) и ломать сайт.
Привет, Иван. Ваш возраст 25.
Ваше сообщение: …
Решение:
<form method=GET>
<input type=text name=n>
<input type=text name=v>
<textarea name=m></textarea>
<input type=submit name=s>
</form>
<?if(isset($_REQUEST[s])){$v=strip_tags($_REQUEST[v]);$n=strip_tags($_REQUEST[n]);$m=strip_tags($_REQUEST[m]);echo"Привет, $n. Ваш возраст $v. Ваше сообщение: $m";}?>
Warning: Use of undefined constant s - assumed 's' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 80
Задача
Спросить возраст пользователя. Если форма была отправлена и введен возраст, то вывести его на экран, а форму убрать. Если же форма не была отправлена (это будет при 1-м заходе на страницу), просто показать ее.
Решение:
<?if(!isset($_REQUEST[v])){?>
<form method=GET>
<input type=text name=v>
<input type=submit>
</form>
<?}?>
<?if(isset($_REQUEST[v])){$v=strip_tags($_REQUEST[v]);echo'Ваш возраст '.$v;}?>
Warning: Use of undefined constant v - assumed 'v' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 91
Warning: Use of undefined constant v - assumed 'v' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 97
Задача
Спросить у пользователя логин и пароль (в браузере должны быть звездочки). Сравнить их с логином $l и паролем $p, хранящихся в файле. Если все верно, вывести "Доступ разрешен", иначе, - "Доступ запрещен". Сделать так, чтобы скрипт обрезал концевые пробелы в строках, которые ввел пользователь.
ПРОВЕРЬ!!!
Решение:
<form method=GET>
<input type=text name=l>
<input type=password name=p>
<input type=submit name=s>
</form>
<?if(isset($_REQUEST[s])){$l=u;$p=1;$o=trim($_REQUEST[l]);$q=trim($_REQUEST[p]);if($l==$o and$p==$q){echo'Доступ разрешен';}else{echo'Доступ запрещен';}}?>
Warning: Use of undefined constant s - assumed 's' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 113
Атрибуты value и placeholder
Задача
Спросить имя пользователя с помощью формы. Результат записать в переменную $n. Сделать так, чтобы после отправки формы значения ее полей не пропадали.
Решение:
<form method=GET>
<input name=n value="<?if(isset($_GET[n]))echo$_GET[n]?>">
<input type=submit name=s>
</form>
<?if(isset($_REQUEST[s])){$n=$_REQUEST[n];echo$n;}?>
Warning: Use of undefined constant s - assumed 's' (this will throw an Error in a future version of PHP) in /home/vhosts/homa.xp3.biz/kniga/kniga011/10.php on line 127
Задача
Спросить у пользователя имя, а также попросить его ввести сообщение (textarea). Сделайть так, чтобы после отправки формы значения его полей не пропадали.
Решение:
<form method=GET>
<input name=n value="<?if(isset($_GET[n]))echo$_GET[n]?>">
<textarea name=m><?if(isset($_GET[m]))echo$_GET[m]?></textarea>
<input type=submit>
</form>