| PHP Ръководство | ||
|---|---|---|
| Предишна страница | Глава 12. Променливи | Следваща страница |
Когато се предаде формуляр към PHP скрипт, информацията от този формуляр става автоматично налична в скрипта. Има много начини за достъпване на тази информация, например:
В зависимост от специфичния ви setup и лични предпочитания, има много начини да достъпвате данните от вашите HTML формуляри. Някои примери са:
Изполването на GET формуляр е подобно, с изключение на това, че ще
използвате подходящата GET предефинирана променлива. GET също се отразява
и в QUERY_STRING (информацията след '?' в URL). Така че, например
http://www.example.com/test.php?id=3
съдържа GET данни, които са достъпни посредством$_GET['id'].
Вж. също $_REQUEST и
import_request_variables().
Забележка: Суперглобални масиви, като
$_POSTи$_GET, станаха налични в PHP 4.1.0
Както показахме, преди PHP 4.2.0 стойността по подразбиране на register_globals беше on. А в PHP 3 беше винаги on (включена). PHP общността насърчава всички да не разчитат на тази директива, тъй като е за предпочитане да се приеме, че тя е off и да кодират по съответния начин.
Забележка: Конфигурационната директива magic_quotes_gpc влияе върху Get, Post и Cookie стойностите. Ако е включена, стойността (It's "PHP!") автоматично ще се преобразува в (It\'s \"PHP!\"). Необходимо е избягване при вкарване в база данни. Вж. също addslashes(), stripslashes() и magic_quotes_sybase.
PHP също приема и масиви в контекста на променливи от формуляр. (вж. faq в тази връзка). Например, можете да групирате свързаните променливи заедно, или да използвате това свойство, за да получите стойности, въведени чрез множествен (multiple) select. Нека, например, да изпратим формуляр към него си и при предаването му да извеждаме данните:
Пример 12-10. По-сложни формулярни променливи
|
В PHP 3, изполването на масиви за формулярни променливи е ограничено до едномерни масиви. От PHP 4, не е в сила такова ограничение.
Когато предавате формуляр, можете да използвате изображение вместо предаващ бутон, посредством таг от типа:
Когато потребителят щракне някъде по изображението, придружаващият формуляр ще бъде предаден на сървъра с две допълнителни променливи, sub_x и sub_y. Те съдържат координатите на потребителското щракване върху изображението. По-опитните от вас може би са забелязали, че действителните имена на променливите, изпратени от браузъра, съдържат точки, а не подчертавки, но PHP автоматично превръща точката в подчертавка.
PHP изцяло поддържа HTTP бисквитки, както са дефинирани в Спецификацията на Netscape. Бисквитките
представляват механизъм за записване на данни в отдалечения браузър,
като по този начин се проследяват или идентифицират завръщащите се
потребители. Можете да задавате бисквитки, използвайки функцията
setcookie(). Бисквитките са част от HTTP заглавието,
така че функцията SetCookie трябва да бъде извикана преди да бъде изпратен
какъвто и да е изход към браузъра. Това е същото ограничение както при
функцията header(). Тогава данните от бисквитките
стават налични в съответните бисквитъчни масиви, като $_COOKIE,
$HTTP_COOKIE_VARS както и в $_REQUEST.
Вж. страницата от ръководството setcookie() за повече
подробности и примери.
Ако искате да присвоите множество стойности на една бисквитъчна променлива, можете да я присвоите като масив. Например:
<?php
setcookie("MyCookie[foo]", 'Testing 1', time()+3600);
setcookie("MyCookie[bar]", 'Testing 2', time()+3600);
?> |
Това ще създаде две отделни бисквитки, въпреки че във вашия скрипт MyCookie ще бъде един единствен масив. Ако искате да зададете точно една бисквитка с множество стойности, разгледайте възможността да използвате serialize() или explode() върху стойността преди това.
Забележете, че бисквитката ще замени предишна бисквитка със същото име в браузъра ви, освен ако пътят или областта не са различни. Така че, за приложение с количка за пазаруване може би бихте искали да пазите брояч и да го предавате нататък. Т.е.
В повечето случаи, PHP не променя имената на променливите, когато биват предадени на скрипт. Трябва да бъде отбелязано обаче, че точката не е валиден знак за име на променлива в PHP. Поради тази причина, прегледайте:
<?php $varname.ext; /* невалидно име на променлива */ ?> |
$varname,
последвана от оператора за съединяване на низове, последван от голия низ
(низ извън кавички, който не съвпада с никой известен ключ или запазена дума) 'ext'.
Очевидно, това няма да даде желания резултат.
Поради тази причина е важно да се отбележи, че PHP автоматично ще замести всички точки в постъпващите променливи с подчертавки.
Понеже PHP установява типовете на променливите и ги преобразува (обикновено) според необходимото, не винаги е очевидно от какъв тип е дадена променлива във всеки един момент. PHP включва няколко функции, които откриват от какъв тип е променливата, като: gettype(), is_array(), is_float(), is_int(), is_object() и is_string(). Вж. също глава Типове.
| Предишна страница | Начало | Следваща страница |
| Променливи променливи | Начало на раздела | Константи |