<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Два студента пишут лабы &#187; PHP</title>
	<atom:link href="http://www.studcode.ru/archiv/tag/phpcode/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.studcode.ru</link>
	<description>Конспекты лекций, самостоятельные работы по  delphi, с++, php. Курсовые проекты. Все что мы сделали вы можете скачать без проблем!</description>
	<lastBuildDate>Wed, 27 Oct 2010 15:15:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Программирование на стороне сервера</title>
		<link>http://www.studcode.ru/archiv/programmirovanie-na-storone-servera/</link>
		<comments>http://www.studcode.ru/archiv/programmirovanie-na-storone-servera/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 09:52:08 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Интернет программирование]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=779</guid>
		<description><![CDATA[Программирование на стороне сервера.
Еще одна эпохальная технология — это технология серверных сценариев, примером которой является Active Server Page (ASP). Эта технология позволяет создавать великолепные, не зависящие от платформ Web-страницы, которые можно просматривать любой программой просмотра. Или, если вы хотите максимально воспользоваться преимуществами зависящих от платформы технологий, таких как Dynamic HTML, то можете создавать ASP-страницы, которые [...]]]></description>
			<content:encoded><![CDATA[<p>Программирование на стороне сервера.<br />
Еще одна эпохальная технология — это технология серверных сценариев, примером которой является Active Server Page (ASP). Эта технология позволяет создавать великолепные, не зависящие от платформ Web-страницы, которые можно просматривать любой программой просмотра. Или, если вы хотите максимально воспользоваться преимуществами зависящих от платформы технологий, таких как Dynamic HTML, то можете создавать ASP-страницы, которые могут общаться напрямую с Internet Explorer.<br />
В своей основе ASP — это сценарий, исполняемый на сервере IIS. Этот код динамически выполняется при запросе страницы, а получившийся HTML-текст отправляется программе просмотра. Посмотрите, как код в листинге 1.6 использует ASP для создания шести последовательных строк текста, набранных все увеличивающимся шрифтом.</p>
<p><span id="more-779"></span></p>
<p>Листинг 1.6. Web-страница с ASP.<br />
<code> </code></p>
<pre> &lt;SCRIPT LANGUAGE="VBSCRIPT"&gt;&lt;/SCRIPT&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META HTTP-EQUIV="Content-Type" content="text/html;charset=windows-1251"&gt;
&lt;TITLE&gt; ASP Example&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY BGCOLOR="WHITE"&gt;
&lt;%For x = 1 to 6%&gt;
&lt;FONT FACE="ARIAL"  SIZE=&lt;%=X%&gt;&gt;ActiveX - это круто!&lt;/FONT&gt;&lt;P&gt;
&lt;%Next%&gt;
&lt;/BODY&gt; &lt;/HTML&gt;</pre>
<p>В тексте примера присутствует тег &lt;SCRIPT&gt;, хоть он и не обязателен, но обратите внимание, что внутри скобок появился знак процента. Этот синтаксис означает, что код должен быть выполнен на сервере, перед тем как страница будет отправлена клиенту. Обратите также внимание, что знаки процента окружают все фрагменты кода на данной странице, т. е. весь он выполняется до того, как программа просмотра получит страницу. Полученный HTML-текст выглядит так:<br />
<code> </code></p>
<pre>&lt;HTML&gt;&lt;HEAD&gt;
&lt;META HTTP-EQUIV="Content-Type" content="text/html;charset=windows-1251"&gt;
&lt;TITLE&gt;ASP Example&lt;/TITLE&gt;&lt;/HEAD&gt;
&lt;BODY BGCOLOR="WHITE"&gt;
&lt;FONT FACE="ARIAL" SIZE=1&gt;ActiveX - это круто!&lt;/FONT&gt;
&lt;P&gt;&lt;FONT FACE="ARIAL" SIZE=2&gt;ActiveX - это круто!&lt;/FONT&gt;
&lt;P&gt;&lt;FONT FACE="ARIAL" SIZE=3&gt;ActiveX - это круто!&lt;/FONT&gt;
&lt;P&gt;&lt;FONT FACE="ARIAL" SIZE=4&gt;ActiveX - это круто!&lt;/FONT&gt;
&lt;P&gt;&lt;FONT FACE="ARIAL" SIZE=5&gt;ActiveX - это круто!&lt;/FONT&gt;
&lt;P&gt;&lt;FONT FACE="ARIAL" SIZE=6&gt;ActiveX - это круто!&lt;/FONT&gt;
&lt;P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</pre>
<p>В получившемся HTML и скрывается красота ASP. Результирующая страница может содержать чистый HTML, понятный любой программе просмотра! Это делает ASP идеальным для приложений, которые должны выполняться в Интернете, где со страницей может работать любая программа просмотра. Однако ASP не ограничивается минимальным общим знаменателем, и вы можете добавлять в результирующую страницу клиентский сценарий, элементы управления ActiveX и Dynamic HTML. Таким образом, ASP гибки настолько, насколько Вы этого сами захотите.<br />
К серверным языкам сценариев относятся также широко известные языки Perl и PHP. В отличие от ASP, они совместимы практически с любым Web-сервером, включая и IIS (PWS), которые по умолчанию поддерживают только ASP (IIS &#8211; сразу после установки, PWS &#8211; после установки свободно распространяемого модуля ASP.EXE). Существует, правда, Java-пакет Instant ASP фирмы ChillySoft, позволяющий программировать на ASP и под другими Web-серверами, но он коммерческий. В то же время весьма популярный свободно распространяемый кросс-платформенный web-сервер Apache имеет в комплекте интерпретаторы Perl и PHP. Эти интерпретаторы существуют в версиях для Windows и UNIX-совместимых ОС, поэтому также могут считаться платформно-независимыми. В общем же случае выбор серверного языка сценариев обусловлен конфигурацией web-сервера заказчика, поскольку, даже имея навыки конфигурирования web-серверов, порой невозможно добраться до сервера, на котором расположен сайт заказчика.<br />
В рамках данного курса будут рассматриваться серверные языки сценариев ASP, Perl, PHP.<br />
Инструменты и технологии программирования.<br />
Минимальным набором инструментов web-программиста является текстовый редактор и браузер, под который оптимизируется сайт. При использовании серверных сценариев требуется и web-сервер, желательно такой же, как и у заказчика. Избегайте отладки сценариев на сервере клиента &#8211; ваши ошибки могут привести к его зависанию, и не всегда у вас есть права и возможность его перезагрузки! Лучше всего установить web-сервер на рабочей станции или домашнем компьютере и подключить к нему требуемый интерпретатор. Следует, правда, иметь в виду, что функциональные возможности web-серверов и интерпретаторов под разными ОС (Windows и UNIX) зачастую различны.<br />
Что касается редактора, то можно использовать как стандартный «Блокнот» или встроенный редактор файлового менеджера FAR (желательно с плагином Colorer для подсветки тегов и операторов), так и какой-либо специализированный WYSIWYG (What You See Is What You Get) HTML-редактор. Однако среди их многообразия практически отсутствует такой, который поддерживает ОДНОВРЕМЕННО ВСЕ серверные языки сценариев, хотя поддержка клиентских языков, как правило, присутствует. Кроме того, зачастую эти редакторы преобразуют русские буквы в их коды, что существенно затрудняет последующее редактирование. Приведем небольшой перечень.<br />
Несомненно, самым мощным, хоть и громоздким средством программирования на ASP является Microsoft Visual InterDev, входящий в комплект Microsoft Visual Studio. Будучи интегрирован со справочной системой MSDN, он позволяет быстро получить справку по любому оператору, функции или объекту. Возможен также предварительный просмотр как в окне редактора, так и в браузере по умолчанию, а также пошаговая отладка.<br />
Для программирования на Perl, пожалуй, лучше всего подходит NetObject Fusion, обладающий обширной справкой по этому языку. Поддержкой PHP может похвастаться довольно большое количество редакторов: как небольшие EditPlus, HTML-Kit, PHPEd и UltraEdit, так и достаточно громоздкий HomeSite. Здесь не ставится цель делать их детальный обзор, желающие могут посетить раздел HTML-редакторов на http://tucows.com.<br />
Что касается технологий программирования, то все современные языки сценариев поддерживают как классическую процедурную, так и объектно-ориентированную, хотя и в различной степени. В любом из перечисленных языков вы можете использовать встроенные и внешние объекты, их методы и свойства, но создать полноценный собственный класс можно лишь на С-подобных языках: Perl и PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/programmirovanie-na-storone-servera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Из двух массивов выбрать одинаковые четные числа</title>
		<link>http://www.studcode.ru/archiv/575/</link>
		<comments>http://www.studcode.ru/archiv/575/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:50:22 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=575</guid>
		<description><![CDATA[Постановка задачи
Дано. Одномерные массивы. А и В,  каждый  из которых содержит не более 20 элементов целого типа.
Требуется. Разработать программу, которая должна выполнять следующие функции:
1.	Вводить с клавиатуры исходные данные(или формировать исходные массивы А  и  В  случайными числами).  Размерность массивов А  и  В  10 &#8211; 20 элементов
2.	Формировать одномерный [...]]]></description>
			<content:encoded><![CDATA[<p>Постановка задачи<br />
Дано. Одномерные массивы. А и В,  каждый  из которых содержит не более 20 элементов целого типа.<br />
Требуется. Разработать программу, которая должна выполнять следующие функции:<br />
1.	Вводить с клавиатуры исходные данные(или формировать исходные массивы А  и  В  случайными числами).  Размерность массивов А  и  В  10 &#8211; 20 элементов<br />
2.	Формировать одномерный массив С, содержащий те элементы исходных массивов А  и В, которые указаны   в задании. Элементы в массиве   С  не должны повторяться.<br />
3.	Выводить следующую информацию:<br />
число элементов в массиве A;<br />
значения элементов массива A;<br />
число элементов в массиве B;<br />
значения элементов массива B;<br />
результаты работы программы.<br />
Каждая функция программы должны быть оформлена как процедура с параметрами.<br />
Примечание. Дополнительный массив не использовать.</p>
<p><span id="more-575"></span></p>
<p>Алгоритм и текстовые примеры<br />
Основной функцией задачи является create_array_C которой в качестве параметра передаются 2 массива. Функция проверяет элементы массива А на четность (при помощи ф-ии fmod, которая возвращает остаток от деления на число). Следующее условие – проверка на совпадение элементов массива А и В. Если оба условия выполняются начинается цикл и условие проверки повторений элементов массива С. Если элементы совпадают происходит прерывание цикла (точнее двух циклов, $k и $i т.к. оператор break имеет параметр 2, который указывает на количество вложенных циклов которые нужно прервать.</p>
<pre><code>function create_array_C ($array_A, $array_B)
{
$n=0;
for ($i=0; $i&lt;=19; $i++)
 {
     for ($j=0; $j&lt;=19; $j++)
     {
          if  (fmod ($array_A[$i],2) == 0 &amp;&amp; $array_A[$i]==$array_B[$j]) // проверяем на четность и находим смежные елементы
          {
              for($k=0;$k&lt;=$n;$k++)
              {
                  if($array_A[$i]==$array_C[$k]) // проверяем совпадение елементов массива
                  break(2); // в Delphi и С++ такого нет (в C# есть). Параметр 2 означает количество вложенных циклов
              }
              $array_C[$n]=$array_A[$i]; // Заносим элементы в массив С
              echo "$array_C[$n]";
              $n++;
              break;
          }

     }
 }

}
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/575/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Трансляция списков PHP</title>
		<link>http://www.studcode.ru/archiv/translyaciya-spiskov-php/</link>
		<comments>http://www.studcode.ru/archiv/translyaciya-spiskov-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:47:42 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=488</guid>
		<description><![CDATA[Трансляция списков
Механизм трансляции полей формы в РНР работает приемлемо, когда среди  них нет полей с одинаковыми именами. Если же таковые встречаются, то в  переменную записываются только данные последнего встретившегося поля. Это довольно-таки неудобно при работе, н-р, со списком множественного выбора
:


First
Second
Third

 

В таком списке можем выбрать (подсветить) не одну, а сразу несколько строчек, используя [...]]]></description>
			<content:encoded><![CDATA[<p>Трансляция списков<br />
Механизм трансляции полей формы в РНР работает приемлемо, когда среди  них нет полей с одинаковыми именами. Если же таковые встречаются, то в  переменную записываются только данные последнего встретившегося поля. Это довольно-таки неудобно при работе, н-р, со списком множественного выбора<br />
<select multiple>:<br />
<code><br />
<select name=Sel multiple>
<option>First<br />
<option>Second<br />
<option>Third<br />
</select>
<p> </code><br />
<span id="more-488"></span><br />
В таком списке можем выбрать (подсветить) не одну, а сразу несколько строчек, используя клавишу <Ctrl> и щелкая по ним кнопкой мыши. Пусть выбрали First и Third. Тогда после отправки формы сценарию придет строка параметров Sel=First&#038;Sel=Third, и в переменной $Sel окажется,  конечно, только Third. Это не значит, что первый пункт потерялся и механизм трансляции в РНР работает некорректно. В РНР предусмотрена возможность давать имена полям формы в виде имени массива с индексами:<br />
<code><br />
<select name="Sel[]" multiple>
<option>First<br />
<option>Second<br />
<option>Third<br />
</select>
<p></code><br />
Теперь сценарию придет строка Sel[]=First&#038;Sel[]=Third, интерпретатор обнаружит, что надо создать &#8220;автомассив&#8221; (то есть массив, который не содержит пропусков, и у которого индексация начинается с нуля), и, действительно, создаст переменную $Sel типа массив, содержимое которого следующее: array(0=>&#8221;First&#8221;,l=>&#8221;Third&#8221;). В результате ничего не пропало — данные только слегка видоизменились. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/translyaciya-spiskov-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Трансляция переменных окружения и Cookies</title>
		<link>http://www.studcode.ru/archiv/translyaciya-peremennyx-okruzheniya-i-cookies/</link>
		<comments>http://www.studcode.ru/archiv/translyaciya-peremennyx-okruzheniya-i-cookies/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:45:26 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=483</guid>
		<description><![CDATA[Трансляция переменных окружения и Cookies
В переменные преобразуются не только все данные формы,   но  и   переменные  окружения   (включая  Query_String, Content_Length и многие другие), а также все Cookies.
Н-р, вот сценарий, который печатает IP-адрес пользователя, который его запустил, а также тип его браузера (эти данные хранятся в переменных окружения [...]]]></description>
			<content:encoded><![CDATA[<p>Трансляция переменных окружения и Cookies<br />
В переменные преобразуются не только все данные формы,   но  и   переменные  окружения   (включая  Query_String, Content_Length и многие другие), а также все Cookies.<br />
Н-р, вот сценарий, который печатает IP-адрес пользователя, который его запустил, а также тип его браузера (эти данные хранятся в переменных окружения REMOTE_USER и HTTP_USER_AGENT):<br />
<html><body><br />
Ваш IP-адрес: <?=$REMOTE_USER?><br />
Ваш браузер: <?=$HTTP_USER_AGENT?><br />
           </body></html><span id="more-483"></span><br />
Пo умолчанию трансляция выполняется в порядке ENVIRONMENT-01 POST-COOKIE, причем каждая следующая переменная как бы перекрыв предыдущее свое значение. Н-р, пусть есть переменная окружения A=10, параметр, поступивший из GET-формы А=20 и Cookie А= 30. В этом случае в переменную $A сценария будет записано 30, т.к. cookie перекрывает GET, a GET перекрывает переменные окружения. Так что, проверяя какую-либо переменную окружения VAR в сценарии (особенно если она касается вопросов, связанных с разграничением прав доступа — н-р, переменная содержит пароль), надо задуматься: а что, если злоумышленник запустит ваш сценарий вот так:<br />
http://www.somehost.com/foo.рhр?VAR=что_то_очень_нехорошее<br />
и старое значение переменной окружения VAR окажется стертым? К счастью, в таких ситуациях есть выход — достаточно воспользоваться функцией getenv(), чтобы прочитать значение переменной окружения с указанным именем, и только его — невзирая ни на какие другие данные. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/translyaciya-peremennyx-okruzheniya-i-cookies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Трансляция полей формы в переменные</title>
		<link>http://www.studcode.ru/archiv/translyaciya-polej-formy-v-peremennye/</link>
		<comments>http://www.studcode.ru/archiv/translyaciya-polej-formy-v-peremennye/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:43:01 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=478</guid>
		<description><![CDATA[Трансляция полей формы в переменные
Интерпретатор перед запуском сценария  сам занимается прямым разбором переменной окружения QUERY_STRING, в которой хранятся параметры сценария. Причем независимо от того, каким методом — GET или POST — воспользовался &#8220;браузер&#8221;. То есть, РНР сам определяет, какой метод был задействован (информация об этом доступна через переменную окружения REQUEST_METHOD), и получает данные либо [...]]]></description>
			<content:encoded><![CDATA[<p>Трансляция полей формы в переменные<br />
Интерпретатор перед запуском сценария  сам занимается прямым разбором переменной окружения QUERY_STRING, в которой хранятся параметры сценария. Причем независимо от того, каким методом — GET или POST — воспользовался &#8220;браузер&#8221;. То есть, РНР сам определяет, какой метод был задействован (информация об этом доступна через переменную окружения REQUEST_METHOD), и получает данные либо из QUERY_STRING, либо из стандартного входного потока. Это крайне удобно в любых CGI-сценариях.<br />
А именно, интерпретатор все данные из полей формы преобразует в глобальные одноименные переменные. В нашем случае значение поля name после начала работы программы будет храниться в переменной $name, а значе¬ние поля age — в переменной $аgе. То есть, не надо ничего ниоткуда &#8220;получать&#8221; — все уже установлено и распаковано из URL-кодировки.<br />
<span id="more-478"></span><br />
Окончательный сценарий hello.php сжался до таких размеров (окончательная версия):<br />
<html><body><br />
<? echo "Привет, $name!<br /> Я	знаю, Вам $аgе	лет!&#8221; ?>       </html></body><br />
Теперь его усовершенствуем — сделаем так, чтобы при запуске без параметров сценарий выдавал документ с формой, а при нажатии кнопки — выводил нужный текст. Самый простой способ определить, был ли сценарий запущен без параметров — проверить, существует ли переменная с именем, совпадающим с именем кнопки отправки. Если такая переменная существует, то, очевидно, что пользователь запустил программу, нажав на кнопку. Здесь применим инструкцию if, которая еще не рассматривалась (усовершенствованная версия):<br />
<code><html><body><br />
<?if(!@$doGo) {?></p>
<form action="<?=$SCRIPT_NAME?>"><br />
  Введите имя:<br />
<input type=text name="name">
  Введите возраст:<br />
<input type=text name="age"></p>
<input type=suhmit name="doGo" vа1ие="Нажмите кнопку!">
  </form>
<p><?} else {?><br />
  Привет, <?=$name?>!<br />
  Я знаю, Вам <?=$age?> лет!<br />
<?}?><br />
</html></body></code><br />
Из этого примера можем почерпнуть еще один удобный прием, который пока не рассматривался. Это конструкция <?=выражение?>. Она является ничем иным, как просто более коротким обозначением для <?echo(выражение)?>, и предназначена для того, чтобы вставлять величины прямо в HTML-страницу.<br />
В параметре action тэга<br />
<form> мы не задали явно имя файла сценария, а извлекли его из переменной SCRIPT_NAME (которая устанавливается автоматически перед запуском сценария). Это позволило не &#8220;привязываться&#8221; к имени файла, т. е. теперь можем его в любой момент переименовать без потери функциональности.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/translyaciya-polej-formy-v-peremennye/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Получение данных из форм PHP</title>
		<link>http://www.studcode.ru/archiv/poluchenie-dannyx-iz-form-php/</link>
		<comments>http://www.studcode.ru/archiv/poluchenie-dannyx-iz-form-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:42:09 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=476</guid>
		<description><![CDATA[Передача данных командной строки
Чтобы начать писать простейшие сценарии на РНР типа “Hello world, сейчас 10 часов утра” нашим сценариям будет недоставать одного— интерактивного взаимодействия с пользователем.
Надо написать сценарий, который принимает в параметрах имя и возраст пользователя и выводит: &#8220;Привет, ! Я знаю, вам  лет!&#8221;.
Cначала рассмотрим наиболее простой способ передачи имени и возраста cценарию — [...]]]></description>
			<content:encoded><![CDATA[<p>Передача данных командной строки<br />
Чтобы начать писать простейшие сценарии на РНР типа “Hello world, сейчас 10 часов утра” нашим сценариям будет недоставать одного— интерактивного взаимодействия с пользователем.<br />
Надо написать сценарий, который принимает в параметрах имя и возраст пользователя и выводит: &#8220;Привет, <имя>! Я знаю, вам <возраст> лет!&#8221;.<br />
Cначала рассмотрим наиболее простой способ передачи имени и возраста cценарию — непосредственный набор их в URL после знака ? — н-р, в формате name=имя&#038;аgе=возраст. Но довольно утомительно набирать эту строку вручную. Всякие там ?, &#038;, %&#8230; Существуют удобные возможности языка HTML, которые, конечно, поддерживаются всеми браузерами.<br />
Пусть у нас на сервере в корневом каталоге есть сценарий на РНР под названием hello.php. Наш сценарий распознает 2 параметра: name и аgе. Он должен отработать и вывести следующую HTML-страницу:<br />
<html> <body><br />
Привет, name! Я знаю, Вам аgе лет!<br />
</body> </html><br />
Только нужно name и аgе заменить на соответствующие значения. Таким образом, если задать в адресной строке браузера<br />
http://www.somehost.com/script.cgi?name=Vasya&#038;age=20<br />
должны получить страницу с требуемым результатом.<br />
<span id="more-476"></span><br />
Как только задача осознана, можно приступать к ее решению. Но прежде бывает полезно решить аналогичную, но более простую задачу.<br />
Нам в сценарии надо получить строку параметров, переданную после знака вопроса в URL при обращении к сценарию. Для этого можно проанализировать переменную окружения QUERY_STRING, которая в РНР доступна под именем $QUERY_STRING. Напишем небольшой п-р, чтобы это проиллюстрировать (вывод параметров командной строки):<br />
<html><body><br />
<?<br />
echo "Данные из командной строки: $QUERY_STRING";<br />
?><br />
</body></html><br />
Если теперь запустим этот сценарий из браузера (перед этим сохранив его в файле test.php в корневом каталоге сервера) примерно вот таким образом:<br />
http://www.myhoat.com/test.php?aaa+bbb+ccc+ddd<br />
 то получим документ следующего содержания:<br />
Данные из командной строки: aaa+bbb+ccc+ddd<br />
Заметим, что URL-декодирование символов не произошло: строка $QUERY_STRING, как и одноименная переменная окружения, всегда приходит в той же самой форме, в какой она была послана браузером.<br />
Так как РНР изначально создавался именно как язык для Web-программирования, то он дополнительно проводит некоторую работу с переменной $QUERY_STRING перед тем, как управление будет передано сценарию. Он разбивает ее по пробельным символам (в нашем примере пробелов нет, их заменяют символы +, но эти символы РНР также понимает правильно) и помещает полученные кусочки в массив-список $argv, который впоследствии может быть проанализирован в программе.<br />
Все же массив $argv используется при программировании на РНР крайне редко, что связано с гораздо большими возможностями интерпретатора по разбору данных, поступивших от пользователя. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/poluchenie-dannyx-iz-form-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сериализация PHP</title>
		<link>http://www.studcode.ru/archiv/serializaciya-php/</link>
		<comments>http://www.studcode.ru/archiv/serializaciya-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:39:26 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=468</guid>
		<description><![CDATA[Предположим, что нужно сохранить какой-то массив (причем неизвестно заранее, сколько у него измерений) в файле, чтобы потом, при следующем запуске сценария, его аккуратно загрузить и продолжить работу.
Функция Serialize () возвращает строку, являющуюся упакованным экви¬валентом некоего объекта $Obj, переданного во втором параметре.
string Serialize(mixed $0bj)
При этом совершенно не важно, что это за объект: массив, целое число.

Например:
$A=array("a"=>"aа", "b"=>"bb", [...]]]></description>
			<content:encoded><![CDATA[<p>Предположим, что нужно сохранить какой-то массив (причем неизвестно заранее, сколько у него измерений) в файле, чтобы потом, при следующем запуске сценария, его аккуратно загрузить и продолжить работу.<br />
Функция Serialize () возвращает строку, являющуюся упакованным экви¬валентом некоего объекта $Obj, переданного во втором параметре.<br />
string Serialize(mixed $0bj)<br />
При этом совершенно не важно, что это за объект: массив, целое число.<br />
<span id="more-468"></span><br />
Например:<br />
<code>$A=array("a"=>"aа", "b"=>"bb", "c"=>array("x"=>"xx"));<br />
$st=Serialize($A) ;<br />
echo $st;<br />
// выведется что-то типа нечто:<br />
//<br />
а:2:{s:l:"a";s:2:"aa";s:l:"b";s:2:"bb";s:l:"c";a:l:{s:1:"x";s:2:"xx";}}</code><br />
Функция Unserialize (), наоборот, принимает в лице своего параметра $st строку, ранее созданную при помощи Serialize (), и возвращает целиком объект, который был упакован.<br />
mixed Unserialize(string $st)<br />
Например:<br />
<!--more-->$a=array(1,2,3);<br />
$s=Serialize($a) ;<br />
$a=&#8221;bogus&#8221;;<br />
echo count($a);     // выводит 1<br />
$a=Unserialize($s) ;<br />
echo count($a);     // выводит 3<br />
Сериализовать можно не только массивы, но и вообще что угодно. Однако в большинстве случаев все-таки используются массивы. Ме¬ханизм сериализации часто применяется также и для того, чтобы сохранить какой-то объект в базе данных, и тогда без сериализации практически не обойтись.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/serializaciya-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Списки и строки PHP</title>
		<link>http://www.studcode.ru/archiv/spiski-i-stroki-php/</link>
		<comments>http://www.studcode.ru/archiv/spiski-i-stroki-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:38:13 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=464</guid>
		<description><![CDATA[Существуют функции для разбиения какой-либо строки на более мелкие части (н-р, эти части разделяются в строке каким-то специфическим символом типа &#124; ) &#8211; функция explode (), и, наоборот, слияния нескольких небольших строк в одну большую, причем не впритык, а вставляя между ни ми разделитель &#8211; implode ().
Функция explode () имеет следующий синтаксис:
list explode(string $token, string [...]]]></description>
			<content:encoded><![CDATA[<p>Существуют функции для разбиения какой-либо строки на более мелкие части (н-р, эти части разделяются в строке каким-то специфическим символом типа | ) &#8211; функция explode (), и, наоборот, слияния нескольких небольших строк в одну большую, причем не впритык, а вставляя между ни ми разделитель &#8211; implode ().<br />
Функция explode () имеет следующий синтаксис:<br />
<code>list explode(string $token, string $Str [, int $limit])</code><br />
Она получает строку, заданную в ее втором аргументе, и пытается найти в ней подстроки, равные первому аргументу. Затем по месту вхождения этих Подстрок строка &#8220;разрезается&#8221; на части, помещаемые в массив-список, кото¬рый и возвращается. Если задан параметр $limit, то учитываются только первые ( $limit – l ) участков &#8220;разреза&#8221;. Таким образом, возвращается список из не более чем $limit элементов. Это позволяет нам проигнорировать воз- можное наличие разделителя в тексте последнего поля, если мы знаем, что всего полей, скажем, 6 штук.<br />
Строкой разбиения может быть не только один символ, но и небольшая строка. Не надо путать только порядок следования аргументов при вызове функции.<br />
Функция implode () и ее синоним join() производят действие, в точности обратное вызову explode ().<br />
<code>string implode(string $glue, list $List) или<br />
string join(string $glue, list $List)</code><br />
Они берут ассоциативный массив (обычно это список) $List, заданный в ее первом параметре, и &#8220;склеивают&#8221; его значения при помощи &#8220;строки-клея&#8221; $g1ие во втором параметре. Вместо списка во втором аргументе можно передавать любой ассоциативный массив — в этом случае будут рассматриваться только его значения.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/spiski-i-stroki-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Функции и операции работы с ассоциативными массивами</title>
		<link>http://www.studcode.ru/archiv/funkcii-i-operacii-raboty-s-associativnymi-massivami/</link>
		<comments>http://www.studcode.ru/archiv/funkcii-i-operacii-raboty-s-associativnymi-massivami/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:34:07 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=456</guid>
		<description><![CDATA[Доступ по ключу
Ассоциативные массивы — объекты, которые наиболее приспособлены для выборки из них данных путем указания нужного ключа. В РНР и для всех массивов, и для списков (которые, также являются массивами) используется один и тот же синтаксис, что является очень большим достоинством. Вот как это выглядит:
echo $Arr["anykey"]; // выводит элемент массива $Аrr с ключом anykey
echo [...]]]></description>
			<content:encoded><![CDATA[<p>Доступ по ключу<br />
Ассоциативные массивы — объекты, которые наиболее приспособлены для выборки из них данных путем указания нужного ключа. В РНР и для всех массивов, и для списков (которые, также являются массивами) используется один и тот же синтаксис, что является очень большим достоинством. Вот как это выглядит:<br />
<code>echo $Arr["anykey"]; // выводит элемент массива $Аrr с ключом anykey<br />
echo $Arr["first"]["second"]; // так используются двумерные массивы</code><br />
 <span id="more-456"></span><br />
<code>$Аrr = SomeFuncThatReturnsArray();<br />
echo $Arr[5];</code><br />
Величина $Аrr[ключ] может стоять в левой части оператора присваивания, oт нее можно брать ссылку с помощью оператора &#038;, и т. д. Н-р:<br />
<code>$Аrr ["аnуkеу"]=аггау(100,200);   // присваиваем элементу массива 100<br />
$ref = &#038;$Arr ["first"] ["second"];    // $ref — синоним элемента массива<br />
$Arr [] = "for add";                         // добавляем новый элемент</code><br />
Функция count ( )<br />
Можно определить размер	(число элементов) и массиве при помощи стандартной функции count ():<br />
<code>$num = count ($Names) ;    // теперь в $num — число элементов в массиве</code><br />
Count () работает не только с массивами, но и с обьектами и даже с обычными переменными (для последних соunt() всегда равен 1, как будто переменная — это массив с одним элементом).<br />
Слияние     массивов<br />
Операция слияния массивов &#8211; создание массива, содержащего как элементы одного, так и другого массива. Реализу¬ется это при помощи оператора +. Н-р:<br />
<code>$a = аrrау ("а"=>"аа", "b"=>"bb");<br />
$b = array ("c"=>"cc", "d"=>"dd");<br />
$c = $a+$b; </code><br />
В результате в $с окажется ассоциативный массив, содержащий все 4 элемента,  а именно: array (&#8221;a&#8221;=>&#8221;aa&#8221;, &#8220;b&#8221;=>&#8221;bb&#8221;, &#8220;c&#8221;=>&#8221;cc&#8221;, &#8220;d&#8221;=>&#8221;dd&#8221;), причем именно в указанном порядке. Если бы мы написали $с=$b+$а, ре-дьтат бы был немного другой, а именно: array(&#8221;c&#8221;=>&#8221;cc&#8221;, &#8220;d&#8221;=>&#8221;dd&#8221;, &#8221;a&#8221;=>&#8221;аа&#8221;, &#8220;b&#8221;=>&#8221;bb&#8221;), т.е. элементы расположены в другом порядке.<br />
Слияние списков будет выглядеть так:<br />
<code>$a = array (10,20,30);<br />
$b = array (100,200);<br />
$c = $a + $b;</code><br />
В $с будет array(10,20,30). При конкатенации массивов с некоторыми одинаковыми элементами (т.е., элементами с одинаковыми ключами) в результирующем массиве останется только один элемент с таким же ключом — тот, который был в первом мас¬сиве, и на том же самом месте.<br />
П-р:<br />
<code>$а = аrrау ('а'=>10, 'b'=>20);<br />
$b = array ('bl=>'new?') ;<br />
$а += $b;</code><br />
В результате этих операций значение $а не изменится!<br />
Обновление элементов в массиве $а:<br />
foreach ($b as $k=>$v) $a[$k]=$v;<br />
Операции слияния массивов. Н-р, дана цепочка:<br />
$z=$a+$b+$c+ . . .  и т. д.;<br />
эквивалентна<br />
$z=$a; $z+=$b; $z+=$c;  . .  .  и  т. д.<br />
Оператор += для массивов делает примерно то же, что и оператор += для чисел, а именно — добавляет в свой левый операнд элементы, перечисленные в правом операнде-массиве, если они еще не содержатся в массиве слева.<br />
В массиве никогда не может быть двух элементов с одинаковыми ключами, потому что все операции, применимые к массивам, всегда контролируют, чтобы этого не произошло.<br />
Прямой     перебор    массива<br />
Идея метода заключается в том, чтобы сразу на каждом &#8220;витке&#8221; цикла одновременно получать и ключ, и значение текущего элемента.<br />
Перебор в стиле РНР4<br />
В четвертой версии языка добавлена специальная инструкция пере¬бора массива — foreach. С ее по¬мощью можно перебрать и распечатать наш массив людей:<br />
<code>foreach ($Names as $k=>$v)  echo "Возраст $k - $v\n";</code><br />
Классический     перебор<br />
Массив $Names хранит связь имен людей и их возрастов. Вот как можно перебрать этот массив при помощи прямого перебора:<br />
<code>for (Reset($Names);list($k,$v)=each($Names);/*пусто*/)<br />
    echo "Возраст $k—$v\n";</code><br />
Переменным $k и $v присваивается результат работы функции each (). Третье условие цикла  отсутствует.<br />
Функция each () возвращает небольшой массив (список), нулевой элемент которого хранит величину ключа текущего элемента массива $Names, а первый — значение текущего элемента; продвигает указатель текущего элемента к следующей позиции. Если следующего элемента в массиве нет, то функция возвращает не список, a false, поэтому она и размещена в условии цикла for. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/funkcii-i-operacii-raboty-s-associativnymi-massivami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Многомерные массивы PHP</title>
		<link>http://www.studcode.ru/archiv/mnogomernye-massivy-php/</link>
		<comments>http://www.studcode.ru/archiv/mnogomernye-massivy-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:29:37 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=451</guid>
		<description><![CDATA[Формирование двумерных (и вообще много¬мерных) массивов:  значениями переменных (и значениями элементов массива тоже, поскольку РНР не делает никаких различий между переменными и элементами масси¬ва) может быть все, что угодно, в частности — опять же массив. Можно создавать ассоциативные массивы .(а можно — списки) с любым числом из¬мерений. Н-р, если кроме имени о человеке известен [...]]]></description>
			<content:encoded><![CDATA[<p>Формирование двумерных (и вообще много¬мерных) массивов:  значениями переменных (и значениями элементов массива тоже, поскольку РНР не делает никаких различий между переменными и элементами масси¬ва) может быть все, что угодно, в частности — опять же массив. Можно создавать ассоциативные массивы .(а можно — списки) с любым числом из¬мерений. Н-р, если кроме имени о человеке известен также его возраст, то можно инициировать массив $Names так:<br />
<span id="more-451"></span><br />
<code>$Names["Ivanov"] = array("name"=>"Dinitry","aqe"=>25);<br />
$Names["Petrova"] = array("name"=>"Helen", "age"=>23);</code><br />
или  так:<br />
<code>$Names = array (<br />
"Ivanov" => array ("name"=>"Dmilry", "age"=>25) ,<br />
"Petrova"=> array ("name"=>"Helen", "age"=>23)<br />
 );</code><br />
Для того, чтобы добраться до нужного элемента в нашем массиве, будет:<br />
<code>echo $Names ["Ivanov"]["age"];    // напечатает "25"<br />
echo $Names ["Petrova"]["bad"];   // ошибка: нет такого элемента "bad"</code></p>
<p><code>$M=array();<br />
for($i=0;$i<10;$i++)<br />
  $M[$i]=array();</p>
<p>$M[0][0]=67;<br />
$M[1][0]=true;<br />
$M[0][2]=”Слово”;</code></p>
<p>Аccoциативные массивы в РНР удобно использовать как некие структуры, хранящие данные. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/mnogomernye-massivy-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

