[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Собственные примеры на основе Гостевой книги
MNO121280
По совету Twina решил создать отдельную ветку со своими примерами, может кому-нибудь поможет лучше разобраться,
тем более курсы Twina очень классные.

index.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// index.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>
<h3
style="color: red">Пример 1.</h3>
<form
action="" method="post">
Текстовое поле text1
<input name="text1" type="text"><br />
Текстовое поле text2
<input name="text2" type="text"><br />
Текстовое поле text3
<input name="text3" type="text"><br />
<br /><input
name="ok1" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
$text1 = !empty($_POST['text1']) ? $_POST['text1']:null;
echo "В текстовое поле text1 ввели: $text1<br />";
$text2 = !empty($_POST['text2']) ? $_POST['text2']:null;
echo "В текстовое поле text2 ввели: $text2<br />";
$text3 = !empty($_POST['text3']) ? $_POST['text3']:null;
echo "В текстовое поле text3 ввели: $text3<br />";
?>

<div
style="text-align: center;">
<br /><a
href="page001.php">Дальше>>></a>
</div>



page001.php
Свернутый текст


<?[SPAN=darling]php[/SPAN]
// page001.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>

<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Если ввести какой-нибудь текст в виде <Hello, world!>, то он не отобразиться, т. к. браузер интепретирует весь текст
в угловых скобках, как тэг. Чтобы текст отображался коректно его нужно сначала обработать функцией htmlspecialchars().
Т. е. вместо echo $text; нужно писать echo htmlspecialchars($text);.Правильно работающий пример внизу:
</div>

<h3
style="color: red">Пример 2.</h3>
<form
action="" method="post">
Текстовое поле text4
<input name="text4" type="text"><br />
Текстовое поле text5
<input name="text5" type="text"><br />
Текстовое поле text6
<input name="text6" type="text"><br />
<br /><input
name="ok2" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
$text4 = !empty($_POST['text4']) ? $_POST['text4']:null;
echo "В текстовое поле text4 ввели: ".htmlspecialchars($text4)."<br />";
$text5 = !empty($_POST['text5']) ? $_POST['text5']:null;
echo "В текстовое поле text5 ввели: ".htmlspecialchars($text5)."<br />";
$text6 = !empty($_POST['text6']) ? $_POST['text6']:null;
echo "В текстовое поле text6 ввели: ".htmlspecialchars($text6)."<br />";
?>
<div
style="text-align: center;">
<br /><a
href="page002.php">Дальше>>></a>
</div>



page002.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page002.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Остается одна проблема, как сделать так, чтобы при отправке данных из формы поля, оставались заполнеными на тот
случай, если мы где-то допустили ошибку. В преведущих примерах, мы сначала выводили на экран форму с текстовыми
полями и кнопкой отправки данных. Затем создавали переменную, которую в зависимости от того, было ли заполнено
соответсвующее поле либо инициализировали значение null, или записывали в нее данные полученные из формы и затем
выводили на экран, при помощи оператора echo (придварительно не забыв ее обработать функцией htmlspecialchars() ).
В наших примерах мы использовали следующие параметры тега input: name и type. Кроме этих параметров у этого тега
есть еще один параметр: value (значение). Все что будет написано в параметре value="", будет написано в нашем
текстовом поле, пока мы не введем в него новый текст. Если вместо занчения параметра value, вставить теги
php <?[SPAN=darling]php[/SPAN] и ?>, то можно вывести в тесктовое поле текст полученный из него при отправки данных из формы.
Оканчательный вид параметра value примет такой вид: value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text) ?>". Обращаем
внимание, что при записи параметра нужно использовать "" а не '', чтоб избежать не нужных проблем в дальнейшем.
Для того, чтоб все работало коректно, перепишем наши пример в следующем порядке: Сначала создадим переменную,
в которую записывается текст полученый из текстового поля, не забыв при этом проверить было ли заполнено текстовое
поле и если нет, то инициализировать ее значением null. Затем выводим на экран нашу форму, не забыв дописать в тег
input параметр value="" вставив вместо зачения параметра код: <?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text) ?>. И внизу
под формой еще раз выведем текст полученный из нашей формы.
</div>
<h3
style="color: red">Пример 3.</h3>

<?
[SPAN=darling]php[/SPAN]
$text7 = !empty($_POST['text7']) ? $_POST['text7']:null;
$text8 = !empty($_POST['text8']) ? $_POST['text8']:null;
$text9 = !empty($_POST['text9']) ? $_POST['text9']:null;
?>

<form
action="" method="post">
Текстовое поле text7
<input name="text7" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text7) ?>"><br />
Текстовое поле text8
<input name="text8" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text8) ?>"><br />
Текстовое поле text9
<input name="text9" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text9) ?>"><br />
<br /><input
name="ok3" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
echo "В текстовое поле text7 ввели: ".htmlspecialchars($text7)."<br />";
echo "В текстовое поле text8 ввели: ".htmlspecialchars($text8)."<br />";
echo "В текстовое поле text9 ввели: ".htmlspecialchars($text9)."<br />";
?>
<div
style="text-align: center;">
<br /><a
href="page003.php">Дальше>>></a>
</div>



page003.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page003.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify; text-indent: 2em;">
Часто, чтоб ограничить доступ к определенным страницам или сервисам на
сайте, предлагают заполнить форму, и по результатам введенных данных либо
разрешить доступ к странице или сервису, либо отказать в вежливой форме.
Есть множество способов чтоб обойти это и получить доступ не только к
определенной странице или сервису, но и другой секретной информации
хранящейся на сайте. Чтоб предотвратить это, мы должны быть уверенны в
том, что информация получена именно из нашей формы, а не откуда еще либо.
Для этого мы должны убедиться что пользователь нажал кнопку отправки
данных на сервер чтоб отправить информацию на сервер. Сделать это можно
при помощи параметра name тега input(кнопки отправки данных на сервер) и
конструкции if-else. Для того, чтоб убедиться в том, что кнопка была не нажата
можно использовать функцию empty($_POST['Здесь мы пишем параметр name
нашей кнопки']), затем при помощи знака "!" изменяем смысл нашего условия
на противоположный (т. е. если кнопка была нажата) и проверяем это при
помощи конструкции if. В итоговом варианте конструкция if будет иметь
следующий вид: if(!empty($_POST['ok'])). Далее если кнопка нажата выводим
текст введеный в текстовое поле. Если кнопка не нажата, т. е. условие
которое мы задали в конструкции if осталось не выполненым, то при помощи
инструкции else выводим сообщение об этом.

</div>
<h3
style="color: red">Пример 4.</h3>
<?
[SPAN=darling]php[/SPAN]
$text10 = !empty($_POST['text10']) ? $_POST['text10']:null;
$text11 = !empty($_POST['text11']) ? $_POST['text11']:null;
$text12 = !empty($_POST['text12']) ? $_POST['text12']:null;
?>

<form
action="" method="post">
Текстовое поле text10
<input name="text10" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text10) ?>"><br />
Текстовое поле text11
<input name="text11" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text11) ?>"><br />
Текстовое поле text12
<input name="text12" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text12) ?>"><br />
<br /><input
name="ok4" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
if(!empty($_POST['ok4']))
{

echo "В текстовое поле text10 ввели: ".htmlspecialchars($text10)."<br />";
echo "В текстовое поле text11 ввели: ".htmlspecialchars($text11)."<br />";
echo "В текстовое поле text12 ввели: ".htmlspecialchars($text12)."<br />";
}
else
echo 'Данные были получены не из формы!';
?>
<div
style="text-align: center;">
<br /><a
href="page004.php">Дальше>>></a>
</div>



page004.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page004.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;">
<span
style="text-indent: 2em;">
Часто при заполнении формы регистраци или любой другой формы пользователь несколько полей может оставить незаполнеными,
и мы должны предупредить пользователя об этом выведя в браузер специальное сообщение. Сначала мы должны проверить все
ли поля заполнил пользователь, потом установить какие именно он оставил пустыми и уже затем вывести соответсвующее
сообщение на экран. Для того чтоб выполнить такую проверку можно использовать конструкцию if-elseif-elsе. В начале
будет проверяться условие, записанное в скобках после оператора if, и если оно истинно, то выполняться записанные после
него инструкции. Если оно окажется ложным, то будет проверяться условие записанное после оператора elseif. Если же и оно
окажется ложным, то все инструкции записаные после elseif будут пропущены, а выполнены будут те, которые будут записаны
после оператора else. Получается что-то вроде небольшой лестницы, на каждой ступеньке которой проверяется записанное на
ней условие. Если оно выполнено, то программа выполняет инструкции, которые мы установили для данной ступеньки, если нет
то мы спускаемся на ступеньку ниже, и так пока не достигнем конца. Теперь давайте рассмотрим возможные варианты, и то,
как мы на них будем реагировать.</span>
<pre>

Первый вариант:

Пользователь не заполнин текстовое поле, и нажал кнопку.

Действие:

Вывести сообщение, что текстовое поле не заполнено.

Второй вариант:

Пользователь заполнил текстовое поле и нажал кнопку

Действие:

Выводим текст введеный в текстовое поле.

Вариант третий:

Пользователь не нажал кнопку или данные получены не из формы.

Действие:

Выводим соответсвующее сообщение.

</pre>
<span
style="text-indent: 2em;">
Проверку первого варианта можно поместить в конструкцию if. Все инструкции должны выполняться только в том случае,
если оба условия (кнопка нажата и текстовое поле заполнено) выполнены. Сделать это можно при помощи оператора и - &&.
Конструкция if будет выглядеть: if(условие1 && условие2), а именно if(!empty($_POST['ok']) && !$text).
Т. е. мы проверяем, чтоб кнопка была нажата и чтоб значение $text имелло значение null (именно таким значением мы
инициализировали переменную, если соответсвующее ей текстовое поле не заполнено), т. е. пусто. В конструкции elseif
мы просто проверяем, что кнопка была нажата: elseif(!empty($_POST['ok']). И наконец в инструкции else мы ничего не
сравнивая выводим сообщение, что кнопка не разу не была нажата.
</span>
</div>
<h3
style="color: red">Пример 5.</h3>
<?
[SPAN=darling]php[/SPAN]
$text13 = !empty($_POST['text13']) ? $_POST['text13']:null;
$text14 = !empty($_POST['text14']) ? $_POST['text14']:null;
$text15 = !empty($_POST['text15']) ? $_POST['text15']:null;
?>

<form
action="" method="post">
Текстовое поле text13
<input name="text13" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text13) ?>"><br />
Текстовое поле text14
<input name="text14" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text14) ?>"><br />
Текстовое поле text15
<input name="text15" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text15) ?>"><br />
<br /><input
name="ok5" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
if(!empty($_POST['ok5']) && (!$text13 || !$text14 || !$text15))
echo 'Oдно из текстовых полей было не заполнено!<br />';
elseif(!empty($_POST['ok5']) && !empty($_POST['text13']) && !empty($_POST['text14'])
&& !
empty($_POST['text15']))
{

echo "В текстовое поле text13 ввели: ".htmlspecialchars($text13)."<br />";
echo "В текстовое поле text14 ввели: ".htmlspecialchars($text14)."<br />";
echo "В текстовое поле text15 ввели: ".htmlspecialchars($text15)."<br />";
}
else
echo 'Данные были получены не из формы!';
?>
<div
style="text-align: center;">
<br /><a
href="page005.php">Дальше>>></a>
</div>



page005.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page005.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify; ">
<span
style="text-indent: 2em;">Теперь сделаем так чтоб сообщить пользователю не только то, что он не заполнил одно из
полей, но еще и выведем сообщение из которого он может узнать, какое именно он не заполнил. Для этого воспользуемся
конструкцией if-else, но после оператора if вставим еще одну конструкцию if-elseif с помощью которой будем выводить
пользователю соответсвующие значения, в зависимости от того, какие поля не заполнены.</span>
Вот как будет выглядеть функция проверки формы:<br /><br />
<pre>

if(условие)
{
if(условие)
echo 'MessageError1';
elseif(условие)
echo 'MessageError2';
else
echo htmlspecialchars($text1), '<br>', htmlspecialchars($text2);
}
else
{
echo 'MessageError3';
}
</pre>
</div>
<h3
style="color: red">Пример 6.</h3>
<?
[SPAN=darling]php[/SPAN]
$text16 = !empty($_POST['text16']) ? $_POST['text16']:null;
$text17 = !empty($_POST['text17']) ? $_POST['text17']:null;
$text18 = !empty($_POST['text18']) ? $_POST['text18']:null;
?>

<form
action="" method="post">
Текстовое поле text16
<input name="text16" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text16) ?>"><br />
Текстовое поле text17
<input name="text17" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text17) ?>"><br />
Текстовое поле text18
<input name="text18" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text18) ?>"><br />
<br /><input
name="ok6" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
if(!empty($_POST['ok6']))
{
if(!$text16)
echo 'Текстовое поле text16 не заполнено<br />';
if(!$text17)
echo 'Текстовое поле text17 не заполнено<br />';
if(!$text18)
echo 'Текстовое поле text18 не заполнено<br />';
else
{
echo "В текстовое поле text16 ввели: ".htmlspecialchars($text16)."<br />";
echo "В текстовое поле text17 ввели: ".htmlspecialchars($text17)."<br />";
echo "В текстовое поле text18 ввели: ".htmlspecialchars($text18)."<br />";
}
}

else
echo 'Данные были получены не из формы!';
?>
<div
style="text-align: center;">
<br /><a
href="page006.php">Дальше>>></a>
</div>



page006.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page006.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Одино из основных преимуществ Интернета, возможность тут же под статьей оставить свой комментарий к статье,
интересному материалу или понравившейся фотографии. Так автор может из первых рук узнать о том, что в его статье
непонятно, по коментариям можно найти единомышлеников или просто интресных людей и следить за их материалами. Тег
<input> здесь не подходит, т. к. коменатрии обычно длинные, и при наборе большого текста, он станет невидим.
Для этог используют специальное многострочное поле, которое созадается при помощи тега <textarea> - текстовая
область. У текстовой области те же параметры, что и у тега <input>, но есть и дополнительные: cols и rows
( параметр cols - задает сколько знаков мы можем напечатать, а rows сколько знаков мы можем напечать в высоту,
до появления вертикальной полосы прокрутки.)
</div>
<?
[SPAN=darling]php[/SPAN]
$text13 = !empty($_POST['text13']) ? $_POST['text13']:null;
$text14 = !empty($_POST['text14']) ? $_POST['text14']:null;
$text15 = !empty($_POST['text15']) ? $_POST['text15']:null;
?>
<h3
style="color: red">Пример 7.</h3>
<form
action="" method="post">
Текстовое поле text13
<input name="text13" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text13) ?>"><br />
Текстовое поле text14
<input name="text14" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text14) ?>"><br />
Текстовое поле text15
<input name="text15" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text15) ?>"><br />
<br /><input
name="ok5" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
if(!empty($_POST['ok5']) && (!$text13 || !$text14 || !$text15))
echo 'Oдно из текстовых полей было не заполнено!<br />';
elseif(!empty($_POST['ok5']) && !empty($_POST['text13']) && !empty($_POST['text14'])
&& !
empty($_POST['text15']))
{

echo "В текстовое поле text13 ввели: ".htmlspecialchars($text13)."<br />";
echo "В текстовое поле text14 ввели: ".htmlspecialchars($text14)."<br />";
echo "В текстовое поле text15 ввели: ".htmlspecialchars($text15)."<br />";
}
else
echo 'Данные были получены не из формы!';
?>
<div
style="text-align: center;">
<br /><a
href="page007.php">Дальше>>></a>
</div>



page007.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page007.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Когда мы печатаем в любом текстовом редакторе, какой-нибудь текст, мы используем клавишу enter для того, чтоб начать
после ее нажатия, текст печаталься с новой строки. Но в нашем примере этого не произойдет. Почему? Потому что в
HTML-документе, перевод строки происходит после тега <br />. Но даже этот вариант нам не подойдет, т. к.
функция htmlspecialchars( ) заменит тег на обычный текст и выведит их на страницу, так как они есть. Чтоб скрипт мог
правильно вывести текст, нужно применить специальную функцию для вывода текстового поля nl2br(). Полный вариант будет
выглядеть как: nl2br(htmlspecialchars($text)); . Но надо помнить что употреблять эти две функции нужно именно в этом
порядке, иначе скрипт заменит переводы строки на тег <br /> и выведет их в браузер.
</div>
<h3
style="color: red">Пример 8.</h3>
<?
[SPAN=darling]php[/SPAN]
$text23 = !empty($_POST['text23']) ? $_POST['text23']:null;
$text24 = !empty($_POST['text24']) ? $_POST['text24']:null;
$text25 = !empty($_POST['text25']) ? $_POST['text25']:null;
$text26 = !empty($_POST['text26']) ? $_POST['text26']:null;
?>

<form
action="" method="post">
Текстовое поле text23
<input name="text23" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text23) ?>"><br />
Текстовое поле text24
<input name="text24" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text24) ?>"><br />
Текстовое поле text25
<input name="text25" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text25) ?>"><br />
<br />
Текстовая область text26<br />
<textarea
name="text26" cols="45" rows="10"><?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text26) ?></textarea><br />
<br /><input
name="ok8" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
if(!empty($_POST['ok8']))
{
if(!$text23)
echo 'Текстовое поле text23 не заполнено<br />';
if(!$text24)
echo 'Текстовое поле text24 не заполнено<br />';
if(!$text25)
echo 'Текстовое поле text25 не заполнено<br />';
if(!$text26)
echo 'Текстовая область text26 не заполнена<br />';
else
{
echo "В текстовое поле text23 ввели: ".htmlspecialchars($text23)."<br />";
echo "В текстовое поле text24 ввели: ".htmlspecialchars($text24)."<br />";
echo "В текстовое поле text25 ввели: ".htmlspecialchars($text25)."<br />";
echo "В текстовую область text26 ввели: <br />".nl2br(htmlspecialchars($text26))."<br />";
}
}

else
echo 'Данные были получены не из формы!';
?>
<div
style="text-align: center;">
<br /><a
href="page008.php">Дальше>>></a>
</div>



page008.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page008.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

$text33 = !empty($_POST['text33']) ? $_POST['text33']:null;
$text34 = !empty($_POST['text34']) ? $_POST['text34']:null;

file_put_contents('text3_1.txt', $text33);
file_put_contents('text3_2.txt', $text34);

if(isset($_POST['ok11']))
{
if(!$text33)
echo 'Текстовое поле text33 не заполнено<br />';
if(!$text34)
echo 'Текстовая область text34 не заполнена<br />';
else
{
file_put_contents('text3.txt', $text34 ."\n", FILE_APPEND);
file_put_contents('text3_1.txt', $text33);
file_put_contents('text3_2.txt', $text34."\n");
header('location:http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
exit();
}
}

else
echo 'Данные были получены не из формы!';
?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Теперь представим такой вариант. Кто-то из пользователей написал сообщение и отправляет его несколько раз, в
результате чего, сервер испытывает лишнюю нагрузку, что может сказаться на его правильной работе. Поэтому мы должны,
сделать так, чтоб пользователь мог послать сообщение не больше одного раза. Для этого можно использовать
перенаправление с помощью заголовков в случае успешной записи данных в файл. Наш код пернаправления будет выглядеть
следующим образом: header('location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); после чего останавливаем
выполнение сценария функцией exit(). Это нужно сделать только после того, как данные успешно были сохранены, поэтому
этот код нужно вставить после записи данных в текстовой файл. Но если это сделать без измениния структуры, то будет
выведена ошибка, так как нельзя отправлять заголовок раньше вывода, поэтому нам придеться изменить структуру нашего
примера. В преведущих прмерах мы сначала объявляли и инициализировали переменные, потом выводили на экран форму, и
уже потом скрипт обрабатывал данные из формы. Чтобы препоцессор не выдавал ошибок нужно поменять местами вывод формы
и сам скрипт. Т. е. сначала идут переменные, потом скрипт, а после него вывод формы. А код вывода данных из текстового
файла помещаем после вывода формы
</div>
<h3
style="color: red">Пример 9.</h3>
<form
action="" method="post">
Текстовое поле text33
<input name="text33" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text33) ?>"><br />
<br />
Текстовая область text34<br />
<textarea
name="text34" cols="45" rows="10"><?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text34) ?></textarea><br />
<br /><input
name="ok11" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
if(file_exists('text3_1.txt'))
echo "В текстовое поле text33 ввели: ".htmlspecialchars(file_get_contents('text3_1.txt'))."<br />";
if(file_exists('text3_2.txt'))
echo "В текстовое поле text34 ввели: ".nl2br(htmlspecialchars(file_get_contents('text3_2.txt'))).'<br /><br />';

if(file_exists('text3.txt'))
echo nl2br(htmlspecialchars(file_get_contents('text3.txt')));
?>
<div
style="text-align: center;">
<br /><a
href="page009.php">Дальше>>></a>
</div>



page009.php
Свернутый текст

<?[SPAN=darling]php[/SPAN]
// page009.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

$text35 = !empty($_POST['text35']) ? $_POST['text35']:null;
$text36 = !empty($_POST['text36']) ? $_POST['text36']:null;
$info = array();

file_put_contents('text4_1.txt', $text35);
file_put_contents('text4_2.txt', $text36);

if(isset($_POST['ok12']))
{
if(!$text35)
$info[] = 'Текстовое поле text35 не заполнено.<br />';
if(!$text36)
$info[] = 'Текстовая область text36 не заполнена.<br />';
if(count($info) == 0)
{
file_put_contents('text4.txt', $text36 ."\n", FILE_APPEND);
file_put_contents('text4_1.txt', $text35);
file_put_contents('text4_2.txt', $text36."\n");
header('location:http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
exit();
}
}

else
$info[] = 'Данные были получены не из формы!';
?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
В преведущем примере, сообщение об ошибке выводиться выше формы, что не очень красиво. Для этого создаем массив $info,
следующим кодом: $info = array(); и инициализируем его в том же месте, где и все остальные переменные. Так же нам
придеться переделать проверку правильности ввода данных. Вместо вывода сообщений об ошибках, мы помещаем их в наш массив.
И потом проверив наш массив, на наличие в нем элементов, в случае если он пустой, записываем данные из формы в текстовой
файл и перенаправляем браузер на новую страницу. Если есть ошибки с помощью функции implode( ) собираем наши сообщения
об ошибках и выводим их через разделитель <br /> на экран. Код который выполняет это будет таким:
echo implode('<br />'$info).<br />.
</div>
<h3
style="color: red">Пример 10.</h3>
<form
action="" method="post">
Текстовое поле text35
<input name="text35" type="text" value="<?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text35) ?>"><br />
<br />
Текстовая область text36<br />
<textarea
name="text36" cols="45" rows="10"><?[SPAN=darling]php[/SPAN] echo htmlspecialchars($text36) ?></textarea><br />
<br /><input
name="ok12" type="submit">
</form>

<?
[SPAN=darling]php[/SPAN]
echo implode('<br />', $info) .'<br />';

if(file_exists('text4_1.txt'))
echo "В текстовое поле text35 ввели: ".htmlspecialchars(file_get_contents('text4_1.txt'))."<br />";
if(file_exists('text4_2.txt'))
echo "В текстовое поле text36 ввели: ".nl2br(htmlspecialchars(file_get_contents('text4_2.txt'))).'<br /><br />';

if(file_exists('text4.txt'))
echo nl2br(htmlspecialchars(file_get_contents('text4.txt')));
?>
<div
style="text-align: center;">
<br /><a
href="page010.php">Дальше>>></a>
<div>





Спустя 7 часов, 37 минут, 5 секунд (11.11.2010 - 08:58) twin написал(а):
Потерялся второй файл где-то.
Ну и совсем было бы замечательно прикрепить архивчик. smile.gif Такую тему и закрепить не грех будет.

Спустя 4 часа, 56 минут, 39 секунд (11.11.2010 - 13:55) inpost написал(а):
Ты бы хоть выделил код от текста, неудобно читать текст внутри кода.

Спустя 10 дней, 13 часов, 59 секунд (22.11.2010 - 02:55) MNO121280 написал(а):
Вот решил выложить собственные примеры, может кому-нибудь пригодятся. Когда
пишешь свое, то начинаешь лучше понимать, что и откуда береться, и как все это работат.

page010.php
Свернутый текст


<?php
// page010.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

$userID[1] = !empty($_POST['userID1']) ? $_POST['userID1'] : null;
$userID[2] = !empty($_POST['userID2']) ? $_POST['userID2'] : null;
$userID[3] = !empty($_POST['userID3']) ? $_POST['userID3'] : null;

file_put_contents('text5_1.txt', $userID[1]);
file_put_contents('text5_2.txt', $userID[2]);
file_put_contents('text5_3.txt', $userID[3]);

if(isset($_POST['ok13']))
{
file_put_contents('text5_1.txt', $userID[1]);
file_put_contents('text5_2.txt', $userID[2]);
file_put_contents('text5_3.txt', $userID[3]);
}

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Теперь попробуем сохранить, данные в текстовом файле, не только текстовой области, но и текстового поля. Самое
простое решение - это создать отдельный текстовой файл для текстового поля, и выводить данные в форму из него. Для
формы из двух полей это может показаться вполне приемлемым решением, но такое бывает крайне редко. Кроме ника
пользователя и самого в коментариях добавляется дата добавления коментария. На любом форуме данных о пользователе
оставившем сообщение, еще больше. В результате чего, мы бы получили бы огромную кучу текстовых файлов, огромных
размеров скрипт, который требовал бы много ресусов. К тому же если бы возникла бы необходимость его изменить, то это
было бы крайне трудно, из-за его размеров и огромного количества переменных. Любая даже самая незначительная ошибка,
допущеная при написании переменной, приведет к появлению новой переменной, которая нам абсолютно не нужна. И на
исправление этой ошибки может уйти очень много времени. Судите сами, когда на нашем сайте всего три зарегистрированных
пользователя: Иванов, Петров и Сидоров в программе мы можем информацию о их возрасте (по английски возраст обозначется
словом: age) записать премернно так: $Ivanov_age, $Petrov_age, $Sidorov_age. Если у нас было-бы несколько Ивановых,
то тогда нам придеться к фамилии добавить имя, и таже переменная выглядела бы как: $Ivanov_Ivan_age. A если-бы
Ивановых Иванов было двое, то нам бы пришлось еще бы записать и отчество: $Ivanov_Ivan_Ivanovich_age. А теперь
представим ситуацию когда у нас есть два Ивановых Ивана Ивановича. Тогда бы мы могли бы записать
$Ivanov_Ivan_Ivanovich_1_age. А если-бы у нас было-бы не один и не два Ивановых Ивана Ивановича, а гораздо больше?
Если приглядеться внимательней к имени нашей переменной, то ее можно разбить на три части: $Ivanov_Ivan_Ivanovich
+ 1 + age. А что если написать имя переменной, и указать те части которые у нее изменяются? И здесь мы приходим к
понятию массива... Нашу переменную можно записать, $Ivanov_Ivan_Ivanovich, а в квадратных скобках, те ее части,
которые отличаются от других переменных с тем же именем: $Ivanov_Ivan_Ivanovich[1][age], или еще проще $user[1][age].
Создать массив очень просто, достаточно написать $userID = array(); ID сокращение от английского слова: identification
(отдождествление, выяснение, установление личности) создаст пустой массив userID, в который мы можем записывать
индефикационный номер нашего пользователя. Причем каждый номер будет уникальным, да же если Фамилия Имя и Отчество
наскольких пользователей совпадают.
</div>
<h3
style="color: red">Пример 11.</h3>
<form
action="" method="post">
Текстовое поле userID1: <input name="userID1" type="text" value="<?php echo htmlspecialchars($userID[1]) ?>"><br />
Текстовое поле userID2: <input name="userID2" type="text" value="<?php echo htmlspecialchars($userID[2]) ?>"><br />
Текстовое поле userID3: <input name="userID3" type="text" value="<?php echo htmlspecialchars($userID[3]) ?>"><br />
<br />
<input
name="Ok13" type="submit">
</form><br />
<?php


if(file_exists('text5_1.txt'))
echo "В текстовое поле userID1 ввели: ".htmlspecialchars(file_get_contents('text5_1.txt')).'<br />';
if(file_exists('text5_2.txt'))
echo "В текстовое поле userID2 ввели: ".htmlspecialchars(file_get_contents('text5_2.txt')).'<br />';
if(file_exists('text5_3.txt'))
echo "В текстовое поле userID3 ввели: ".htmlspecialchars(file_get_contents('text5_3.txt')).'<br /><br />';
echo "<pre>";
print_r($userID);
echo "</pre>";
echo "<br /><br />";
echo "Наш массив состоит из ".count($userID)." элементов.";
?>
<div
style="text-align: center;">
<br /><a
href="page011.php">Дальше>>></a>
<div>



page011.php
Свернутый текст


<?php
// page011.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

$userID[1]['first name'] = !empty($_POST['first_name']) ? $_POST['first_name']:null;
$userID[1]['middlename'] = !empty($_POST['middlename']) ? $_POST['middlename']:null;
$userID[1]['surname'] = !empty($_POST['surname']) ? $_POST['surname']:null;
$userID[1]['email'] = !empty($_POST['email']) ? $_POST['email']:null;
$userID[1]['age'] = !empty($_POST['age']) ? $_POST['age']:null;

file_put_contents('text6_1.txt', $userID[1]['first name']);
file_put_contents('text6_2.txt', $userID[1]['middlename']);
file_put_contents('text6_3.txt', $userID[1]['surname']);
file_put_contents('text6_4.txt', $userID[1]['email']);
file_put_contents('text6_5.txt', $userID[1]['age']);

if(isset($_POST['ok14']))
{
file_put_contents('text6_1.txt', $userID[1]['first name']);
file_put_contents('text6_2.txt', $userID[1]['middlename']);
file_put_contents('text6_3.txt', $userID[1]['surname']);
file_put_contents('text6_4.txt', $userID[1]['email']);
file_put_contents('text6_4.txt', $userID[1]['age']);
}
?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;">
<span
style="text-indent: 2em;">Одна из особенностей массива в PHP, ассоциативные массивы. В отличии от массивов,
которые называют векторными (индексы которых заданы целыми числами от 0 и далее...), индекс ассоциативного массива
можно задать не только цифрами, но и с помощью ключа, который может состоять из букв и цифр, или только из букв.
Пример ассоциативного массива:</span>
<pre>

$userID = array(
array(
"first name" => "Ivan",
"middlename" => "Ivanovich"
"surname" => "Ivanov",
"email" => "Ivanov@example.com"
"age" => 20,
)
);
</pre>
<span
style="text-indent: 2em;">С помощью массивов можно даже сделать автозаполнение формы. Для того чтоб увидеть как
это все работает заполните первую форму. Форму после заголовка "Автозаполнение" оствьте пустой.</span>
</div>
<h3
style="color: red;">Пример 12</h3>
<form
action="" method="post">
Текстовое поле first_name: <input name="first_name" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'first name']) ?>"><br />
Текстовое поле middlename: <input name="middlename" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'middlename']) ?>"><br />
Текстовое поле surname: <input name="surname" type="text" value="<?php echo htmlspecialchars($userID[1]['surname'])
?>"><br />
Текстовое поле email: <input name="email" type="text" value="<?php echo htmlspecialchars($userID[1]['email']) ?>">
<br />

Текстовое поле age: <input name="age" type="text" value="<?php echo htmlspecialchars($userID[1]['age']) ?>"><br />
<br />
<input
name="Ok14" type="submit">
</form><br />

<?php

if(file_exists('text6_1.txt'))
echo "В текстовое поле first_name ввели: ".htmlspecialchars(file_get_contents('text6_1.txt')).'<br />';
if(file_exists('text6_2.txt'))
echo "В текстовое поле middlename ввели: ".htmlspecialchars(file_get_contents('text6_2.txt')).'<br />';
if(file_exists('text6_3.txt'))
echo "В текстовое поле surname ввели: ".htmlspecialchars(file_get_contents('text6_3.txt')).'<br />';
if(file_exists('text6_4.txt'))
echo "В текстовое поле email ввели: ".htmlspecialchars(file_get_contents('text6_4.txt')).'<br />';
if(file_exists('text6_5.txt'))
echo "В текстовое поле age ввели: ".htmlspecialchars(file_get_contents('text6_5.txt')).'<br /><br />';
echo '<pre>';
print_r($userID);
echo '</pre>';
echo "<br /><br />";
echo "Наш массив состоит из ".count($userID)." элементов.";
?>
<h3
style="color: red;">Автозаполнение формы</h3>
<div
style="align: justify;">(чтоб увидеть как все это работает, заполните поля первой формы, а поля этой формы
оставьте пустыми)</div>
<form
action="" method="post">
Текстовое поле first_name1: <input name="first_name1" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'first name']) ?>"><br />
Текстовое поле middlename1: <input name="middlename1" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'middlename']) ?>"><br />
Текстовое поле surname1: <input name="surname1" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'surname']) ?>"><br />
Текстовое поле email1: <input name="email1" type="text" value="<?php echo htmlspecialchars($userID[1]['email'])
?>"><br />
Текстовое поле age1: <input name="age1" type="text" value="<?php echo htmlspecialchars($userID[1]['age']) ?>">
<br /><br />
<input
name="Ok14" type="submit">
</form><br />
<div
style="text-align: center;">
<br /><a
href="page012.php">Дальше>>></a>
<div>



page012.php
Свернутый текст

<?php
// page012.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

$userID = array();

$id = !empty($_POST['id']) ? $_POST['id']:null;
$userID[0]['surname'] = !empty($_POST['surname']) ? $_POST['surname']:null;
$userID[0]['first name'] = !empty($_POST['first_name']) ? $_POST['first_name']:null;
$userID[0]['middlename'] = !empty($_POST['middlename']) ? $_POST['middlename']:null;
$userID[0]['email'] = !empty($_POST['email']) ? $_POST['email']:null;
$userID[0]['age'] = !empty($_POST['age']) ? $_POST['age']:null;

$userID[1]['surname'] = !empty($_POST['surname1']) ? $_POST['surname1']:null;
$userID[1]['first name'] = !empty($_POST['first_name1']) ? $_POST['first_name1']:null;
$userID[1]['middlename'] = !empty($_POST['middlename1']) ? $_POST['middlename1']:null;
$userID[1]['email'] = !empty($_POST['email1']) ? $_POST['email1']:null;
$userID[1]['age'] = !empty($_POST['age1']) ? $_POST['age1']:null;

$userID[2]['surname'] = !empty($_POST['surname2']) ? $_POST['surname2']:null;
$userID[2]['first name'] = !empty($_POST['first_name2']) ? $_POST['first_name2']:null;
$userID[2]['middlename'] = !empty($_POST['middlename2']) ? $_POST['middlename2']:null;
$userID[2]['email'] = !empty($_POST['email2']) ? $_POST['email2']:null;
$userID[2]['age'] = !empty($_POST['age2']) ? $_POST['age2']:null;

$userID[3]['surname'] = !empty($_POST['surname3']) ? $_POST['surname3']:null;
$userID[3]['first name'] = !empty($_POST['first_name3']) ? $_POST['first_name3']:null;
$userID[3]['middlename'] = !empty($_POST['middlename3']) ? $_POST['middlename3']:null;
$userID[3]['email'] = !empty($_POST['email3']) ? $_POST['email3']:null;
$userID[3]['age'] = !empty($_POST['age3']) ? $_POST['age3']:null;

file_put_contents('text7_1.txt', $userID[0]['surname']);
file_put_contents('text7_2.txt', $userID[0]['first name']);
file_put_contents('text7_3.txt', $userID[0]['middlename']);
file_put_contents('text7_4.txt', $userID[0]['email']);
file_put_contents('text7_5.txt', $userID[0]['age']);

file_put_contents('text7_6.txt', $userID[1]['surname']);
file_put_contents('text7_7.txt', $userID[1]['first name']);
file_put_contents('text7_8.txt', $userID[1]['middlename']);
file_put_contents('text7_9.txt', $userID[1]['email']);
file_put_contents('text7_10.txt', $userID[1]['age']);

file_put_contents('text7_11.txt', $userID[2]['surname']);
file_put_contents('text7_12.txt', $userID[2]['first name']);
file_put_contents('text7_13.txt', $userID[2]['middlename']);
file_put_contents('text7_14.txt', $userID[2]['email']);
file_put_contents('text7_15.txt', $userID[2]['age']);

file_put_contents('text7_16.txt', $userID[3]['surname']);
file_put_contents('text7_17.txt', $userID[3]['first name']);
file_put_contents('text7_18.txt', $userID[3]['middlename']);
file_put_contents('text7_19.txt', $userID[3]['email']);
file_put_contents('text7_20.txt', $userID[3]['age']);

if(isset($_POST['ok15']))
{
file_put_contents('text7_1.txt', $userID[0]['surname']);
file_put_contents('text7_2.txt', $userID[0]['first name']);
file_put_contents('text7_3.txt', $userID[0]['middlename']);
file_put_contents('text7_4.txt', $userID[0]['email']);
file_put_contents('text7_5.txt', $userID[0]['age']);

$userID[0]['surname'] = $_POST['surname'];
$userID[0]['first name'] = $_POST['first_name'];
$userID[0]['middlename'] = $_POST['middlename'];
$userID[0]['email'] = $_POST['email'];
$userID[0]['age'] = $_POST['age'];
}

if(!isset($_POST['ok15']) && $id != 1)
{
$userID[1]['surname'] = null;
$userID[1]['first name'] = null;
$userID[1]['middlename'] = null;
$userID[1]['email'] = null;
$userID[1]['age'] = null;
}
else
{
file_put_contents('text7_6.txt', $userID[1]['surname']);
file_put_contents('text7_7.txt', $userID[1]['first name']);
file_put_contents('text7_8.txt', $userID[1]['middlename']);
file_put_contents('text7_9.txt', $userID[1]['email']);
file_put_contents('text7_10.txt', $userID[1]['age']);

$userID[2]['surname'] = "";
file_put_contents('text7_11.txt', $userID[2]['surname']);
$userID[2]['first name'] = "";
file_put_contents('text7_12.txt', $userID[2]['first name']);
$userID[2]['middlename'] = "";
file_put_contents('text7_13.txt', $userID[2]['middlename']);
$userID[2]['email'] = "";
file_put_contents('text7_14.txt', $userID[2]['email']);
$userID[2]['age'] = "";
file_put_contents('text7_15.txt', $userID[2]['age']);


$userID[2]['surname'] = "";
file_put_contents('text7_16.txt', $userID[3]['surname']);
$userID[3]['first name'] = "";
file_put_contents('text7_17.txt', $userID[3]['first name']);
$userID[2]['middlename'] = "";
file_put_contents('text7_18.txt', $userID[3]['middlename']);
$userID[2]['email'] = "";
file_put_contents('text7_19.txt', $userID[3]['email']);
$userID[2]['age'] = "";
file_put_contents('text7_20.txt', $userID[3]['age']);

$userID[1]['surname'] = $_POST['surname'];
$userID[1]['first name'] = $_POST['first_name'];
$userID[1]['middlename'] = $_POST['middlename'];
$userID[1]['email'] = $_POST['email'];
$userID[1]['age'] = $_POST['age'];
}

if(!isset($_POST['ok15']) && $id != 2)
{
$userID[2]['surname'] = null;
$userID[2]['first name'] = null;
$userID[2]['middlename'] = null;
$userID[2]['email'] = null;
$userID[2]['age'] = null;
}
else
{
$userID[1]['surname'] = "";
file_put_contents('text7_6.txt', $userID[1]['surname']);
$userID[1]['first name'] = "";
file_put_contents('text7_7.txt', $userID[1]['first name']);
$userID[1]['middlename'] = "";
file_put_contents('text7_8.txt', $userID[1]['middlename']);
$userID[1]['email'] = "";
file_put_contents('text7_9.txt', $userID[1]['email']);
$userID[1]['age'] = "";
file_put_contents('text7_10.txt', $userID[1]['age']);

$userID[2]['surname'] = $_POST['surname'];
$userID[2]['first name'] = $_POST['first_name'];
$userID[2]['middlename'] = $_POST['middlename'];
$userID[2]['email'] = $_POST['email'];
$userID[2]['age'] = $_POST['age'];

file_put_contents('text7_11.txt', $userID[2]['surname']);
file_put_contents('text7_12.txt', $userID[2]['first name']);
file_put_contents('text7_13.txt', $userID[2]['middlename']);
file_put_contents('text7_14.txt', $userID[2]['email']);
file_put_contents('text7_15.txt', $userID[2]['age']);

$userID[3]['surname'] = "";
file_put_contents('text7_16.txt', $userID[3]['surname']);
$userID[3]['first name'] = "";
file_put_contents('text7_17.txt', $userID[3]['first name']);
$userID[3]['middlename'] = "";
file_put_contents('text7_18.txt', $userID[3]['middlename']);
$userID[3]['email'] = "";
file_put_contents('text7_19.txt', $userID[3]['email']);
$userID[3]['age'] = "";
file_put_contents('text7_20.txt', $userID[3]['age']);
}

if(!isset($_POST['ok15']) && $id != 3)
{
$userID[3]['surname'] = null;
$userID[3]['first name'] = null;
$userID[3]['middlename'] = null;
$userID[3]['email'] = null;
$userID[3]['age'] = null;
}
else
{
$userID[1]['surname'] = "";
file_put_contents('text7_6.txt', $userID[1]['surname']);
$userID[1]['first name'] = "";
file_put_contents('text7_7.txt', $userID[1]['first name']);
$userID[1]['middlename'] = "";
file_put_contents('text7_8.txt', $userID[1]['middlename']);
$userID[1]['email'] = "";
file_put_contents('text7_9.txt', $userID[1]['email']);
$userID[1]['age'] = "";
file_put_contents('text7_10.txt', $userID[1]['age']);

$userID[2]['surname'] = "";
file_put_contents('text7_11.txt', $userID[2]['surname']);
$userID[2]['first name'] = "";
file_put_contents('text7_12.txt', $userID[2]['first name']);
$userID[2]['middlename'] = "";
file_put_contents('text7_13.txt', $userID[2]['middlename']);
$userID[2]['email'] = "";
file_put_contents('text7_14.txt', $userID[2]['email']);
$userID[2]['age'] = "";
file_put_contents('text7_15.txt', $userID[2]['age']);

$userID[3]['surname'] = $_POST['surname'];
$userID[3]['first name'] = $_POST['first_name'];
$userID[3]['middlename'] = $_POST['middlename'];
$userID[3]['email'] = $_POST['email'];
$userID[3]['age'] = $_POST['age'];

file_put_contents('text7_16.txt', $userID[3]['surname']);
file_put_contents('text7_17.txt', $userID[3]['first name']);
file_put_contents('text7_18.txt', $userID[3]['middlename']);
file_put_contents('text7_19.txt', $userID[3]['email']);
file_put_contents('text7_20.txt', $userID[3]['age']);
}

?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Можно сделать так чтобы можно было несколько форм можно было заполнять из одной формы.
(Данный примере приводиться, с целью показать, что возможно написать код, который будет
работать, но при этом будет крайне не эффектным и неудобным в сопровождении). Пример внизу:
</div><br /><br />
<h3
style="color: red;">Пример 13</h3>
<form
action="" method="post">
<strong>
Ведите значение $id (Для формы 1, $id=1, и т. д. Максимальное $id=3.)</strong><br /><br />
id<input name="id" type="text" value="<?php echo htmlspecialchars($id) ?>"><br /><br />
Текстовое поле surname: <input name="surname" type="text" value="<?php echo htmlspecialchars($userID[0]['surname'])
?>"><br />
Текстовое поле first_name: <input name="first_name" type="text" value="<?php echo htmlspecialchars($userID[0]
[
'first name']) ?>"><br />
Текстовое поле middlename: <input name="middlename" type="text" value="<?php echo htmlspecialchars($userID[0]
[
'middlename']) ?>"><br />
Текстовое поле email: <input name="email" type="text" value="<?php echo htmlspecialchars($userID[0]['email'])
?>"><br />
Текстовое поле age: <input name="age" type="text" value="<?php echo htmlspecialchars($userID[0]['age']) ?>">
<br /><br />
<input
name="Ok15" type="submit">
<br /><br />
<?php

if(file_exists('text7_1.txt'))
echo "В текстовое поле surname ввели: ".htmlspecialchars(file_get_contents('text7_3.txt')).'<br />';
if(file_exists('text7_2.txt'))
echo "В текстовое поле first_name ввели: ".htmlspecialchars(file_get_contents('text7_1.txt')).'<br />';
if(file_exists('text7_3.txt'))
echo "В текстовое поле middlename ввели: ".htmlspecialchars(file_get_contents('text7_2.txt')).'<br />';
if(file_exists('text7_4.txt'))
echo "В текстовое поле email ввели: ".htmlspecialchars(file_get_contents('text7_4.txt')).'<br />';
if(file_exists('text7_5.txt'))
echo "В текстовое поле age ввели: ".htmlspecialchars(file_get_contents('text7_5.txt')).'<br /><br />';
?>
<br /><br />
<h3
style="color: red;">Форма номер 1 ($id = 1)</h3>
<form
action="" method="post">
Текстовое поле surname1: <input name="surname1" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'surname']) ?>"><br />
Текстовое поле first_name1: <input name="first_name1" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'first name']) ?>"><br />
Текстовое поле middlename1: <input name="middlename1" type="text" value="<?php echo htmlspecialchars($userID[1]
[
'middlename']) ?>"><br />
Текстовое поле email1: <input name="email1" type="text" value="<?php echo htmlspecialchars($userID[1]['email'])
?>"><br />
Текстовое поле age1: <input name="age1" type="text" value="<?php echo htmlspecialchars($userID[1]['age']) ?>">
<br /><br />
<br /><br />
<?php

if(file_exists('text7_6.txt'))
echo "В текстовое поле surname1 ввели: ".htmlspecialchars(file_get_contents('text7_6.txt')).'<br />';
if(file_exists('text7_7.txt'))
echo "В текстовое поле first_name1 ввели: ".htmlspecialchars(file_get_contents('text7_7.txt')).'<br />';
if(file_exists('text7_8.txt'))
echo "В текстовое поле middlename1 ввели: ".htmlspecialchars(file_get_contents('text7_8.txt')).'<br />';
if(file_exists('text7_9.txt'))
echo "В текстовое поле email1 ввели: ".htmlspecialchars(file_get_contents('text7_9.txt')).'<br />';
if(file_exists('text7_10.txt'))
echo "В текстовое поле age1 ввели: ".htmlspecialchars(file_get_contents('text7_10.txt')).'<br /><br />';
?>
<br /><br />
<h3
style="color: red;">Форма номер 2 ($id = 2)</h3>
<form
action="" method="post">
Текстовое поле surname2: <input name="surname2" type="text" value="<?php echo htmlspecialchars($userID[2]
[
'surname']) ?>"><br />
Текстовое поле first_name2: <input name="first_name2" type="text" value="<?php echo htmlspecialchars($userID[2]
[
'first name']) ?>"><br />
Текстовое поле middlename2: <input name="middlename2" type="text" value="<?php echo htmlspecialchars($userID[2]
[
'middlename']) ?>"><br />
Текстовое поле email2: <input name="email2" type="text" value="<?php echo htmlspecialchars($userID[2]['email'])
?>"><br />
Текстовое поле age2: <input name="age2" type="text" value="<?php echo htmlspecialchars($userID[2]['age']) ?>">
<br /><br />
<br /><br />
<?php

if(file_exists('text7_11.txt'))
echo "В текстовое поле surname2 ввели: ".htmlspecialchars(file_get_contents('text7_11.txt')).'<br />';
if(file_exists('text7_12.txt'))
echo "В текстовое поле first_name2 ввели: ".htmlspecialchars(file_get_contents('text7_12.txt')).'<br />';
if(file_exists('text7_13.txt'))
echo "В текстовое поле middlename2 ввели: ".htmlspecialchars(file_get_contents('text7_13.txt')).'<br />';
if(file_exists('text7_14.txt'))
echo "В текстовое поле email2 ввели: ".htmlspecialchars(file_get_contents('text7_14.txt')).'<br />';
if(file_exists('text7_15.txt'))
echo "В текстовое поле age2 ввели: ".htmlspecialchars(file_get_contents('text7_15.txt')).'<br /><br />';
?>
<br /><br />
<h3
style="color: red;">Форма номер 3 ($id = 3)</h3>
<form
action="" method="post">
Текстовое поле surname3: <input name="surname3" type="text" value="<?php echo htmlspecialchars($userID[3]
[
'surname']) ?>"><br />
Текстовое поле first_name3: <input name="first_name3" type="text" value="<?php echo htmlspecialchars($userID[3]
[
'first name']) ?>"><br />
Текстовое поле middlename3: <input name="middlename3" type="text" value="<?php echo htmlspecialchars($userID[3]
[
'middlename']) ?>"><br />
Текстовое поле email3: <input name="email3" type="text" value="<?php echo htmlspecialchars($userID[3]['email'])
?>"><br />
Текстовое поле age3: <input name="age3" type="text" value="<?php echo htmlspecialchars($userID[3]['age']) ?>">
<br /><br />
<br /><br />
<?php

if(file_exists('text7_16.txt'))
echo "В текстовое поле surname3 ввели: ".htmlspecialchars(file_get_contents('text7_16.txt')).'<br />';
if(file_exists('text7_17.txt'))
echo "В текстовое поле first_name3 ввели: ".htmlspecialchars(file_get_contents('text7_17.txt')).'<br />';
if(file_exists('text7_18.txt'))
echo "В текстовое поле middlename3 ввели: ".htmlspecialchars(file_get_contents('text7_18.txt')).'<br />';
if(file_exists('text7_19.txt'))
echo "В текстовое поле email3 ввели: ".htmlspecialchars(file_get_contents('text7_19.txt')).'<br />';
if(file_exists('text7_20.txt'))
echo "В текстовое поле age3 ввели: ".htmlspecialchars(file_get_contents('text7_20.txt')).'<br /><br />';
echo '<pre>';
print_r($userID);
echo '</pre>';
echo "<br /><br />";
echo "Наш массив состоит из ".count($userID)." элементов.";
?>
<br /><br />
<div
style="text-align: center;">
<br /><a
href="page013.php">Дальше>>></a>
<div>



page013.php
Свернутый текст


<?php
// page013.php
// Данный файл, создан в учебных целях

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);

$surname = !empty($_POST['surname']) ? $_POST['surname'] : null;
$first_name = !empty($_POST['fist_name']) ? $_POST['first_name'] : null;
$middlename = !empty($_POST['middlename']) ? $_POST['middlename'] : null;
$email = !empty($_POST['email']) ? $_POST['email'] : null;
$age = !empty($_POST['age']) ? $_POST['age'] : null;
$info = array();

if(!empty($_POST['ok16']))
{
if(!surname)
$info[] = 'Текстовое поле surname не заполнено.';
if(!first_name)
$info[] = 'Текстовое поле first_name не заполнено.';
if(!middlename)
$info[] = 'Текстовое поле middlename не заполнено.';
if(!email)
$info[] = 'Текстовое поле email не заполнено.';
if(!age)
$info[] = 'Текстовое поле age не заполнено.';

if(count($info) == 0)
{
$userID[1]['surname1'] = $surname;
$userID[1]['first_name1'] = $first_name;
$userID[1]['middlename1'] = $middlename;
$userID[1]['email1'] = $email;
$userID[1]['age1'] = $age;
file_put_contents('text8.txt', serialize($userID));

header('location: http://'.$_SERVER['HTTP_HOST' ].$_SERVER['PHP_SELF']);
exit();
}
}

else
$info[] = 'Данные получены не из формы.';
?>
<div
style="margin: 1em 0.4em; padding:1em; background-color: #dddddd; border: solid 1px black; text-align: justify;
text-indent: 2em;"
>
Из предыдущего примера можно заметить, что с увелечением данных, которые обрабатывает скрипт, увеличивается количество
строк в скрипте, что в свою очередь усложняет добавление нового поля в нашу форму. К счастью PHP довольно мощный язык,
и в нем предусмотрены специальные функции, для решения этих проблем. Для этого существуют в PHP две функции:
serialize( ) и unserialize( ). Первая упаковывает массив данных в одну строку, которая потом записывается в текстовой
файл, а вторая распоковывает данные из строки упакованой функцией serialize( ). Чтоб понять лучше как работают эти
функции, давайте для начала раcсмотрим пример с одной формой.
</div><br /><br />
<h3
style="color: red;">Пример 14</h3>
<form
action="" method="post">
Текстовое поле surname: <input name="surname" type="text" value="<?php echo htmlspecialchars($surname); ?>"><br />
Текстовое поле first_name: <input name="first_name" type="text" value="<?php echo htmlspecialchars($first_name); ?>">
<br />

Текстовое поле middlename: <input name="middlename" type="text" value="<?php echo htmlspecialchars($middlename); ?>">
<br />

Текстовое поле email: <input name="email" type="text" value="<?php echo htmlspecialchars($email) ?>"><br />
Текстовое поле age: <input name="age" type="text" value="<?php echo htmlspecialchars($age); ?>"><br /><br />
<input
name="Ok16" type="submit"><br />
</form>

<?php


echo implode('<br />', $info) .'<br />';

if(file_exists('text8.txt'))
{
$array = file_get_contents('txt8.txt');
$array = unserialize($array);
$nuserID = $array[1];
$surname1 = htmlspecialchars($nuserID['surname']);
$first_name1 = htmlspecialchars($nuserID['first_name']);
$middlename1 = htmlspecialchars($nuserID['middlename']);
$email1 = htmlspecialchars($nuserID['email']);
$age1 = htmlspecialchars($nuserID['age']);
?>
В текстовое поле surname ввели: <?php echo $surname1 ?><br />
В текстовое поле firs_name ввели:<?php echo $first_name1 ?><br />
В текстовое поле middlename ввели:<?php echo $middlename1 ?><br />
В текстовое поле email ввели:<?php echo $email1 ?><br />
В текстовое поле age ввели:<?php echo $age1 ?><br />
<br /><br />
<div
style="text-align: center;">
<br /><a
href="page014.php">Дальше>>></a>
<div>
<?php

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.