Упатство:Први чекори во PHP: Разлика помеѓу преработките

Од Сподели wiki
Прејди на прегледникот Прејди на пребарувањето
с (84 ревизии: initial)
 
(Не се прикажани 47 меѓувремени преработки од 3 корисници)
Ред 1: Ред 1:
http://making-11.mapinews.com/bag-making-macchina/ bag making macchina http://conferencing-90.infolinediary.com/wordpress/conferencing-video/ conferencing video http://unghia-34.infolinediary.com/blog/entry/metodo-di-ricostruzione-unghia/ metodo di ricostruzione unghia http://ottenere-34.infolinediary.com/blog/entry/requisito-ottenere-residenza-comune/ requisito ottenere residenza comune http://medico-73.infolinediary.com/2008/07/lettino-medico/ lettino medico http://galante-pittore-92.indynewsblog.com galante http://ricevere-94.infolinediary.com/wordpress/arte-del-ricevere/ arte del ricevere http://presentazione-49.infoblogdirect.com/2008/07/31/modelli-lettera-di-presentazione/ modelli lettera di presentazione http://rinoas-diary-28.indynewsblog.com/2008/07/diary-of-dreams/ diary of dreams http://eleven-winning-19.indynewsblog.com/blog/entry/walkthrough-winning-eleven/ walkthrough winning eleven http://toshiba-connect-31.indynewsblog.com/2008/07/25/nn-connect/ nn connect http://credit-union-81.infoblogdirect.com/wordpress/immagine-prima-comunione/ immagine prima comunione http://checker-marathon-32.mapinews.com/2008/08/29/msn-checker/ msn checker http://esercizio-fisica-31.indynewsblog.com/2008/08/26/esercizio-abusivo-professione/ esercizio abusivo professione http://pignatelli-99.infolinediary.com/node/laboratorio-analisi-pignatelli/ laboratorio analisi pignatelli http://odore-fenolo-54.mapinews.com odore http://service-24.mapinews.com/2008/07/21/gurkha-service-limited/ gurkha service limited http://natal-brasil-77.indynewsblog.com/viaggi-natale-gruppo/ viaggi natale gruppo http://schema-uncinetto-2.infoblogdirect.com schema http://plasma-9.infolinediary.com/2008/07/13/vendita-televisore-al-plasma/ vendita televisore al plasma http://ennio-morlotti-61.indynewsblog.com/node/esercizio-di-matematica-biennio/ esercizio di matematica biennio http://natural-50.infolinediary.com/wordpress/freedownload-dragon-naturally/ freedownload dragon naturally http://audio-97.infoblogdirect.com/2008/08/06/convertitore-audio-coassiale-ottico/ convertitore audio coassiale ottico http://coppette-67.infolinediary.com/blog/entry/fornitore-coppette-gelato/ fornitore coppette gelato http://rinoas-diary-28.indynewsblog.com/2008/08/dll-diary-of-milf/ dll diary of milf http://elkann-10.infolinediary.com/blog/entry/yaki-elkann/ yaki elkann http://luise-61.infoblogdirect.com/dresda-luisenhof/ dresda luisenhof http://pairs-64.mapinews.com/2008/07/britney-pairs/ britney pairs http://processo-ossidoriduzione-39.indynewsblog.com/blog/entry/programma-processo-lasso/ programma processo lasso http://yahoo-48.mapinews.com/2008/08/22/yahoo-guadagnare-svolgendo-son/ yahoo guadagnare svolgendo son http://elenco-amministrazioni-61.indynewsblog.com/wordpress/elenco-stiliste-donna/ elenco stiliste donna http://impruneta-47.infolinediary.com impruneta http://funzionamento-integrati-49.indynewsblog.com/wordpress/funzionalita-lavagnalettore-cd-funzionamento/ funzionalita lavagnalettore cd funzionamento http://steven-6.infolinediary.com/2008/08/steven-erikson/ steven erikson http://sandra-perez-12.indynewsblog.com sandra http://liceo-severi-28.infoblogdirect.com/2008/07/istituto-liceo-scientifici-mantova/ istituto liceo scientifici mantova http://gabriella-jankov-63.infoblogdirect.com/2008/08/08/gabriella-baldi/ gabriella baldi http://aliquota-82.mapinews.com/2008/07/21/aliquota-iva-in-edilizia/ aliquota iva in edilizia http://quotes-66.infolinediary.com/2008/07/26/free-stock-quotes/ free stock quotes http://quattro-32.infoblogdirect.com/2008/07/15/firenze-quattro-amico/ firenze quattro amico http://rivista-30.indynewsblog.com/blog/entry/rivista-economiche/ rivista economiche http://spaak-63.mapinews.com/blog/entry/caterine-spaak/ caterine spaak http://sorrento-24.infolinediary.com/blog/entry/ricevimento-sorrento/ ricevimento sorrento http://punta-stilo-66.infoblogdirect.com punta http://posizioni-76.infolinediary.com/node/preposizioni-semplici/ preposizioni semplici http://calma-bimbo-36.indynewsblog.com/2008/08/alviero-martini-bimbo/ alviero martini bimbo http://erotic-tales-63.mapinews.com/wordpress/linea-erotica/ linea erotica http://animal-15.infoblogdirect.com animal http://ordine-avvocato-18.indynewsblog.com/circolo-coro-avvocato/ circolo coro avvocato http://evasione-94.infolinediary.com/wordpress/renault-evasione/ renault evasione
==Што е PHP?==
PHP доаѓа од HiperText Preprocessor и е програмски јазик на серверска страна. Ова значи дека посетителот отвара страна, серверот ги процесира/обработува РНР командите и го праќа резултатот до прелистувачот на клиентот. РНР е слободен програмски јазик, неговиот код е отворен и е мулти-платформски. РНР може да работи на UNIX, UNIX-like, GNU/Linux, Windows. Може да биде компајлиран со модул за Apache сервер и како бинарен за CGI.


http://obxyhqzr.greatnow.com/map.html, http://wicaueij.maddsites.com/free-mobile-sex-video-clips-sites.html Free mobile sex video clips sites, =-P, http://hcaralec.maddsites.com/free-teen-video-sex.html Free teen video sex,  qwk, http://mbalbhau.maddsites.com/free-sex-positions-with-video.html Free sex positions with video, 16691, http://wicaueij.maddsites.com/free-mobile-sex-video.html Free mobile sex video, %D, http://konuneto.maddsites.com/chyna-doll-sex-video-free.html Chyna doll sex video free,  >:-D, http://wicaueij.maddsites.com/male-gay-sex-free-video.html Male gay sex free video,  107, http://hcaralec.maddsites.com/free-homemade-sex-video-clips.html Free homemade sex video clips,  kpu, http://konuneto.maddsites.com Free forced sex video clips,  9698, http://mbalbhau.maddsites.com/free-sex-video-movie-clips.html Free sex video movie clips,  :-], http://hcaralec.maddsites.com/free-oral-sex-video.html Free oral sex video,  =-]], http://mbalbhau.maddsites.com/free-video-machine-sex.html Free video machine sex,  3691, http://konuneto.maddsites.com/free-sex-video-clip-downloads.html Free sex video clip downloads,  884082, http://mbalbhau.maddsites.com/better-sex-video-free-sample.html Better sex video free sample,  kqpxc, http://opaproly.maddsites.com/free-sex-video-blog.htm Free sex video blog,  22747,
Кога пишувате URL во полето за адреса во web прелистувачот, барате од web серверот на некој компјутер, да испрати датотека до прелистувачот на Вашиот компјутер. Ако таа датотека е HTML, тогаш таа изгледа исто и во прелистувачот и на серверот пред да ја испрати. По примањето, прелистувачот ги прикажува текстот, сликите и звуците. Во случајот со РНР страните, процесот е ист, само што има обработување пред серверот да го испрати документот. Тогаш серверот ги повикува скриптите кои се вклучени во страната.


http://aereoporto-84.infoblogdirect.com/node/aereoporto-malpensa-arrivi/ aereoporto malpensa arrivi http://phones-cellular-46.infoblogdirect.com/cell-phones-plans/ cell phones plans http://blacksonblondes-interracial-47.infoblogdirect.com/interracial-cock-cravers/ interracial cock cravers http://content-provider-22.indynewsblog.com/provider-usa/ provider usa http://senior-33.infoblogdirect.com/senior-sluts/ senior sluts http://carina-67.indynewsblog.com/node/carina-uomo-donna/ carina uomo donna http://melanie-hickman-47.indynewsblog.com/want-candy-melanie-c/ want candy melanie c http://ferien-rimini-97.infoblogdirect.com/hotel-rimini-annuali/ hotel rimini annuali http://claris-35.infolinediary.com/2008/07/walter-croce-clarissa-burt/ walter croce clarissa burt http://claudio-baldi-13.mapinews.com claudio http://procedura-qualita-56.infoblogdirect.com/procedura-valutazione-sicurezza-scuola/ procedura valutazione sicurezza scuola http://servo-motore-86.indynewsblog.com/wordpress/charter-motore-crociera/ charter motore crociera http://caricatori-16.indynewsblog.com/node/caricatori-frontali-angeloni/ caricatori frontali angeloni http://usare-utorrent-51.indynewsblog.com usare http://addetto-52.infolinediary.com/wordpress/formazione-addetto-vendita-elettronica/ formazione addetto vendita elettronica http://environmental-issues-15.infoblogdirect.com/wordpress/review-environmental-evaluation-techniques/ review environmental evaluation techniques http://olimpico-99.infoblogdirect.com/blog/entry/stadio-olimpico-torino-juventus/ stadio olimpico torino juventus http://union-80.mapinews.com/blog/entry/unione-chimica-belga-italia/ unione chimica belga italia http://brooks-55.infoblogdirect.com/wordpress/kirk-brooks/ kirk brooks http://marathon-brianza-51.infoblogdirect.com/wordpress/rifacimento-facciata-raso-brianza/ rifacimento facciata raso brianza http://fuoco-eterno-83.infoblogdirect.com/blog/entry/strage-fuoco-d-artificio/ strage fuoco d artificio http://titolo-dottore-65.infoblogdirect.com/dottore-commercialista-prato/ dottore commercialista prato http://colture-88.mapinews.com/tipo-colture/ tipo colture http://techna-71.mapinews.com techna http://ambrogio-grion-85.infoblogdirect.com/2008/07/14/vivai-ambrogio-giovanni/ vivai ambrogio giovanni http://scrivere-7.infolinediary.com/2008/07/mestiere-scrivere/ mestiere scrivere http://reseller-98.infoblogdirect.com/web-host-reseller/ web host reseller http://morando-mangime-89.infoblogdirect.com/2008/09/mangime-petrini/ mangime petrini http://kompressoren-slovakia-65.infoblogdirect.com/node/sex-in-slovakia/ sex in slovakia http://canessa-guendalina-16.mapinews.com/node/blog-canessa-guendalina/ blog canessa guendalina http://purple-6.infoblogdirect.com purple http://lavorazione-plexiglas-61.mapinews.com/2008/07/11/lavorazione-stucco-veneziano/ lavorazione stucco veneziano http://kristen-dalton-82.indynewsblog.com/2008/08/kristen-bell-sexy/ kristen bell sexy http://prostitutas-tunisino-32.indynewsblog.com/prostitutas-tunisino/ prostitutas tunisino http://direttore-commerciale-3.infoblogdirect.com/2008/08/25/cessione-esercizio-commerciale/ cessione esercizio commerciale http://lavorazione-corallo-63.mapinews.com lavorazione http://street-30.indynewsblog.com/wallstreetitalia-itwalt-disney/ wallstreetitalia itwalt disney http://hermitage-silvi-52.indynewsblog.com/node/video-tg-silvia-rocca/ video tg silvia rocca http://urbino-agriturismo-62.infoblogdirect.com urbino http://dialogo-37.infolinediary.com/2008/08/20/dialogo-assicurazione-it/ dialogo assicurazione it http://tiburtina-ciampino-86.indynewsblog.com tiburtina http://selezione-87.infolinediary.com/blog/entry/selezione-riso/ selezione riso http://index-mundi-24.infoblogdirect.com/2008/08/index-of-handjob-jpg/ index of handjob jpg http://kennedy-center-45.mapinews.com/wordpress/contact-center-lombardia/ contact center lombardia http://abbigliamento-forestale-91.mapinews.com/2008/08/21/abbigliamento-stock-firmato/ abbigliamento stock firmato http://adottare-mucca-66.infoblogdirect.com/node/chihuahua-da-adottare/ chihuahua da adottare http://inserzioni-personali-16.indynewsblog.com/node/test-personalita-lavoro/ test personalita lavoro http://uscire-salutare-60.mapinews.com/uscire-dalla-droga/ uscire dalla droga http://sicilia-61.infolinediary.com/volo-castronuovo-sicilia/ volo castronuovo sicilia http://acquatica-setting-19.mapinews.com/node/documents-and-setting-lilia/ documents and setting lilia
==PHP синтакса==
PHP синтаксата е слична како синтаксата во C и Perl. Не мора да се декларираат променливи пред тие да се искористат. Лесно е да се направат низи хаш-асоцијативни низи. PHP има и некои рудиментирани објектно-ориентирани карактеристики, овозможувајќи лесно организирање и енкапсулирање на Вашиот код. Покрај основната синтакса, PHP носи и интерфејси за комуникација со други web страни, датабази, вкучувајќи ODBC, mySQL и други програмски јазици како Java и COM. PHP кодот влегува директно во web страната, па затоа не се потребни специјални развојни околини (IDE). Почнувате блок со <?php и завршувате со ?>.
Што може PHP да направи за нас?
Има многу можности што може да ги искористиме од PHP. Можете да прикажувате дата и време и други податоци, да поставувате форми кои ќе ги пополнуваат посетителите, да пристапувате до 19 видови бази на податоци, да ги обработувате нивните податоци, да праќате е-mail, да работите со групи на новости (newsgroups) ...
Други можности што ги носи PHP:


http://celestia-starr-71.mapinews.com/2008/07/starr-milf/ starr milf http://slovenia-arrivare-96.indynewsblog.com/2008/08/07/produttore-film-estensibile-slovenia/ produttore film estensibile slovenia http://ingegneri-udine-40.infoblogdirect.com/blog/entry/emporio-ricambio-rosso-udine/ emporio ricambio rosso udine http://albergo-eolie-70.infoblogdirect.com/blog/entry/hotel-albergo-cologno-monzese/ hotel albergo cologno monzese http://fucked-65.infoblogdirect.com/2008/07/15/virgin-fucked/ virgin fucked http://milena-escort-74.mapinews.com/blog/entry/milena-tana/ milena tana http://maestro-8.indynewsblog.com/maestro-muten/ maestro muten http://arredamento-classico-95.mapinews.com/node/casamercato-arredamento/ casamercato arredamento http://luciano-cacciavillani-53.infoblogdirect.com/wordpress/delitto-circeo-izzo-luciano/ delitto circeo izzo luciano http://angeles-21.infolinediary.com/node/los-angeles-habana/ los angeles habana http://folies-1.infolinediary.com/2008/08/14/les-folies/ les folies http://chiamata-infermiera-12.mapinews.com/blog/entry/infermiera-esplorazione-spaziale/ infermiera esplorazione spaziale http://palavalentia-raggiungere-68.indynewsblog.com palavalentia http://vanilla-resident-56.infoblogdirect.com/presidente-legacoop/ presidente legacoop http://blood-dolls-86.infoblogdirect.com/wordpress/make-dolls/ make dolls http://lotteria-merano-91.mapinews.com/wordpress/citta-di-merano/ citta di merano http://musique-arabe-31.mapinews.com/tradizioni-arabe/ tradizioni arabe http://eclipse-50.indynewsblog.com/2008/09/03/bonnie-tyler-eclipse/ bonnie tyler eclipse http://camus-etranger-74.mapinews.com/2008/07/straniero-camus-riassunto/ straniero camus riassunto http://panne-galleggiante-13.infoblogdirect.com/blog/entry/pannello-di-controllo/ pannello di controllo http://magno-salvatore-24.indynewsblog.com/2008/07/pneumatica-emiliano-romagnola/ pneumatica emiliano romagnola http://eccesso-difesa-64.infoblogdirect.com/node/eccesso-velocitГЈ-sentenza/ eccesso velocitГЈ sentenza http://phentermine-worldwide-26.infoblogdirect.com phentermine http://dating-6.mapinews.com/2008/07/christian-dating-service/ christian dating service http://serata-romantica-39.mapinews.com/node/serata-palermo/ serata palermo http://contenitore-latta-26.mapinews.com/2008/07/contenitore-portarifiuti-differenziata/ contenitore portarifiuti differenziata http://attuale-62.mapinews.com/2008/08/catullo-attuale/ catullo attuale http://penis-21.mapinews.com/blog/entry/penis-erection/ penis erection http://farmaceutica-32.mapinews.com/node/lavorare-casa-farmaceutica/ lavorare casa farmaceutica http://hairy-erotica-44.mapinews.com/wordpress/hairy-men/ hairy men http://nicotera-29.infoblogdirect.com/2008/07/17/nicotera-marina/ nicotera marina http://mercato-americano-55.mapinews.com/blog/entry/ipermercato-panorama-via-tiburtina/ ipermercato panorama via tiburtina http://device-58.infoblogdirect.com/node/hyaluronic-acid-device-arthritis/ hyaluronic acid device arthritis http://grafico-55.infoblogdirect.com/node/concorso-fotografico-corigliano/ concorso fotografico corigliano http://pornostar-selen-38.indynewsblog.com/blog/entry/bellucci-pornostar/ bellucci pornostar http://pulire-seppia-46.mapinews.com/pulire-tappeto/ pulire tappeto http://packaging-personalizzato-30.indynewsblog.com/blog/entry/regalo-foto-personalizzato/ regalo foto personalizzato http://marco-pantano-65.mapinews.com/2008/08/09/carre-marco-torino/ carre marco torino http://minogue-86.infolinediary.com/2008/08/dannii-minogue-nude/ dannii minogue nude http://tavoletta-fruttosio-29.mapinews.com/2008/07/14/cecilio-giocondo-and-tavoletta/ cecilio giocondo and tavoletta http://francoforte-vacanza-7.mapinews.com/blog/entry/vacanza-invernali-parigi/ vacanza invernali parigi http://marlin-47.indynewsblog.com/blog/entry/mr-marlin/ mr marlin http://passi-carrabili-84.indynewsblog.com passi http://badge-milano-10.indynewsblog.com/2008/08/20/rimessaggio-camper-barca-milano/ rimessaggio camper barca milano http://stylist-26.infolinediary.com/stylist-sims/ stylist sims http://gazzettino-sampierdarenese-51.infoblogdirect.com/2008/08/02/gazzettino-vesuviano/ gazzettino vesuviano http://trovata-15.infolinediary.com/node/stele-trovata-napoleone/ stele trovata napoleone http://volare-aeromodellismo-27.indynewsblog.com/2008/07/volare-spagna/ volare spagna http://bigiotteria-componente-25.mapinews.com/wordpress/bigiotteria-grossista/ bigiotteria grossista http://european-61.indynewsblog.com/wordpress/european-screwing/ european screwing
1. PHP e соодветен кога сакате да креирате динамички страни кога прелистувачот ќе побара страна. Пр. да прикажувате дата и време, да листате податоци од база...
2. PHP нуди едноставно уредување на страната со можност да се направи покорисна за индивидуални корисници.
3. Со него може да се поставуваат web страните, да се контролира автентикацијата и да се пренасочуваат корисници
4. Една од најмоќните опции во PHP е пристапот до базите со податоци. Имате пристап до 19 видови бази и обработка на податоците
5. Креирајте листа на посетители, додајте thirt-party сервиси, сервиси кои нудат статистика за посетителите, колку пати Ве посетиле, од каде Ве посетиле. Со PHP вакви информации се тривијални.
6. PHP нуди едноставно праќање e-mail-и, работа со newsgroup-и, отварање конекција со други web страни и вадење податоци од нив.
7. PHP комуницира со други програмски јазици како Java и COM интерфејси.
8. PHP дозволува се! Од генерирање pdf до парсирање xml.


http://pacco-danneggiato-95.mapinews.com/node/modulo-partecipazione-trasmissione-pacco/ modulo partecipazione trasmissione pacco http://network-elbalife-60.mapinews.com network http://formazione-prato-99.infoblogdirect.com formazione http://jonny-bravo-55.indynewsblog.com/blog/entry/gonfiatore-elettrico-scoprega-bravo/ gonfiatore elettrico scoprega bravo http://kriege-1.mapinews.com/vom-kriege/ vom kriege http://showgirl-54.indynewsblog.com/showgirl-movie-cast/ showgirl movie cast http://simulazione-55.mapinews.com/2008/08/simulazione-budget/ simulazione budget http://richiesta-63.infolinediary.com/2008/08/17/modulo-richiesta-amministratore-giudiziario/ modulo richiesta amministratore giudiziario http://sapone-chimica-18.infoblogdirect.com/blog/entry/unitГ -didattica-chimica-superiori/ unitГ  didattica chimica superiori http://borsa-milano-73.infoblogdirect.com borsa http://blaupunkt-14.infoblogdirect.com/navigatore-satellitario-gps-blaupunkt/ navigatore satellitario gps blaupunkt http://incidere-27.infolinediary.com/incidere-marmo/ incidere marmo http://leguizamo-pimps-48.mapinews.com/2008/07/united-pimps/ united pimps http://spiritosi-73.mapinews.com/augurio-spiritosi/ augurio spiritosi http://eletronica-34.infolinediary.com/blog/entry/eletronica-braum/ eletronica braum http://infoltimento-60.infolinediary.com/2008/08/infoltimento-capello-uomo-listino/ infoltimento capello uomo listino http://siani-tutti-17.indynewsblog.com/2008/08/salesiani-vomero/ salesiani vomero http://moskva-62.infolinediary.com/wordpress/mosca-univermag-moskva/ mosca univermag moskva http://candice-bradley-58.infoblogdirect.com/2008/07/11/candice-dela-cruz/ candice dela cruz http://curtain-manufacturers-77.indynewsblog.com/node/sporting-goods-manufacturers-association/ sporting goods manufacturers association http://video-umoristici-94.infoblogdirect.com/node/alessia-fabiani-video/ alessia fabiani video http://ground-speed-59.mapinews.com/blog/entry/omega-speedmaster-schumacher/ omega speedmaster schumacher http://hombres-40.indynewsblog.com/wordpress/foto-gay-gratis-hombres/ foto gay gratis hombres http://scommessa-betting-5.mapinews.com/node/bonus-gratis-scommessa/ bonus gratis scommessa http://torneo-95.infoblogdirect.com/blog/entry/torneo-calcio-benevento/ torneo calcio benevento http://roccaforte-17.infolinediary.com roccaforte http://legione-26.infolinediary.com legione http://lennon-84.mapinews.com/wordpress/imagine-spiegazione-john-lennon/ imagine spiegazione john lennon http://clinica-mediche-17.mapinews.com/blog/entry/clinical-biochemical-genetics/ clinical biochemical genetics http://jungle-brothers-51.indynewsblog.com/2008/08/28/tulfo-brothers/ tulfo brothers http://lancaster-italia-94.mapinews.com lancaster http://stitch-65.infolinediary.com/wordpress/provaci-ancora-stitch-locandina/ provaci ancora stitch locandina http://accommodation-chianti-29.infoblogdirect.com/chianti-classico-marketing/ chianti classico marketing http://marge-92.mapinews.com marge http://tuttocita-89.infolinediary.com/blog/entry/citta-tuttocita/ citta tuttocita http://raggiungere-caponord-14.infoblogdirect.com/wordpress/raggiungere-mantova/ raggiungere mantova http://europa-36.indynewsblog.com europa http://castiglione-86.infolinediary.com castiglione http://larry-david-73.indynewsblog.com/wordpress/harley-davidson-marche/ harley davidson marche http://bikini-23.infoblogdirect.com/blog/entry/bikini-see-through/ bikini see through http://patrizio-98.indynewsblog.com/patrizio-bau/ patrizio bau http://forum-43.indynewsblog.com/2008/09/02/forum-dove-fare-appelli/ forum dove fare appelli http://scuola-gregoriano-67.infoblogdirect.com/2008/07/scuola-tai-roma/ scuola tai roma http://sposare-51.infoblogdirect.com/node/sposare-carabiniere/ sposare carabiniere http://feltro-7.infoblogdirect.com/blog/entry/feltro-creare-borsa/ feltro creare borsa http://proroga-35.infolinediary.com/node/congedo-straordinario-proroga-dottorato/ congedo straordinario proroga dottorato http://robin-73.infoblogdirect.com/wordpress/robin-hood-theme/ robin hood theme http://bankash-symantec-40.indynewsblog.com/symantec-norton/ symantec norton http://xoomer-57.infolinediary.com/blog/entry/xoomer-it-arbitro/ xoomer it arbitro http://merlini-3.mapinews.com/pubblicazioni-umberto-merlinicase-umbria/ pubblicazioni umberto merlinicase umbria
==Вашата прва PHP скрипта==
Пред да почнеме со пишување, неколку едноставни правила. Секоја линија во PHP код, мора да завршува со точка-запирка. Ако парсерот на PHP јазикот не пронајде точка-запирка, ќе продолжи да го парсира кодот се додека не наиде на една. Тогаш се јавува грешка. Наредбите со повеќе редови како условните наредби, мора да содржат { и }. Дуплите коси црти значат дека после нив следува коментар до крајот на линијата
PHP страните, обично содржат HTML тагови и PHP код. PHP блок секогаш почнува со <?php и завршува со ?>. Блокот може да биде секаде низ документот. Овој код печати текст во web прелистувачот. Има две основни команди за печатење текст во прелистувачот: echo и print. Во овој пример е користена командатa echo.


http://gkgqidii.ibnsites.com, http://hcaralec.maddsites.com/great-sex-free-video.html Great sex free video,  %[[[, http://mbalbhau.maddsites.com/free-sex-video-satin-nipples.html Free sex video satin nipples,  spgjn, http://wicaueij.maddsites.com/adult-sex-video-free.html Adult sex video free,  39623, http://wicaueij.maddsites.com/free-sex-video-nadia-hilton.html Free sex video nadia hilton,  nwm, http://wicaueij.maddsites.com/free-video-archive-sex-amature-redhead.html Free video archive sex amature redhead,  :)), http://wicaueij.maddsites.com/free-sex-video-hosting.html Free sex video hosting,  qsfz, http://hcaralec.maddsites.com/free-sex-brazil-video.html Free sex brazil video,  zghoz, http://hcaralec.maddsites.com/cash-for-sex-free-video.html Cash for sex free video,  8-PPP, http://konuneto.maddsites.com/free-black-girl-sex-video.html Free black girl sex video, cxkrv, http://mbalbhau.maddsites.com/free-gay-sex-video-downloads.html Free gay sex video downloads,  =[[, http://konuneto.maddsites.com/free-granny-sex-video-links.html Free granny sex video links,  kkofb, http://opaproly.maddsites.com/free-sex-stories-and-video.htm Free sex stories and video,  034942, http://hcaralec.maddsites.com/free-sex-video-forum.html Free sex video forum,  nlzcw, http://mbalbhau.maddsites.com/free-download-movie-video-sex-girl.html Free download movie video sex girl,  699127,
    <?php
        echo "Everyone, smile!!!"; //ova e delot sto se pecati
    ?>


http://guarigione-psicosintesi-51.indynewsblog.com/2008/07/guarigione-ferita-seconda-intenzione/ guarigione ferita seconda intenzione http://imbarcazioni-80.infolinediary.com imbarcazioni http://francoforte-61.infoblogdirect.com/blog/entry/hotel-francoforte/ hotel francoforte http://sfera-pressione-45.infoblogdirect.com/abb-trasmettitori-pressione/ abb trasmettitori pressione http://naruto-mugen-29.mapinews.com/blog/entry/naruto-uzumaki-chronicles-soluzione/ naruto uzumaki chronicles soluzione http://vicious-17.infolinediary.com/2008/08/29/felix-vicious/ felix vicious http://melloni-99.infolinediary.com/wordpress/macedonio-melloni-ospedale/ macedonio melloni ospedale http://cracovia-metropolitan-69.indynewsblog.com cracovia http://tranny-69.mapinews.com/wordpress/tranny-action/ tranny action http://antonio-errico-5.indynewsblog.com/2008/08/antonio-villani/ antonio villani http://vecchia-18.infolinediary.com/sor-ugo-aia-vecchia/ sor ugo aia vecchia http://managment-72.infolinediary.com managment http://gilles-29.infolinediary.com/wordpress/gilles-perreal/ gilles perreal http://bassa-marea-93.mapinews.com/ristorante-bassano/ ristorante bassano http://testing-11.indynewsblog.com/dna-testing/ dna testing http://satellite-receiver-64.indynewsblog.com satellite http://sabbia-mobili-63.mapinews.com/2008/07/mobili-per-negozi/ mobili per negozi http://cantante-australiana-7.mapinews.com/2008/08/10/raffaello-cantante-napoletano-it/ raffaello cantante napoletano it http://prostate-surgery-45.mapinews.com/2008/08/conseguenza-prostatectomia/ conseguenza prostatectomia http://while-7.indynewsblog.com/wordpress/while-sleeps/ while sleeps http://laguna-bologna-43.indynewsblog.com laguna http://isola-formentera-13.mapinews.com/node/going-formentera/ going formentera http://poltrona-elena-20.indynewsblog.com/wordpress/elena-guarnieri/ elena guarnieri http://plugin-56.indynewsblog.com/azureus-plugins-download/ azureus plugins download http://cesare-98.infolinediary.com/cesare-brandi/ cesare brandi http://metasearch-engines-55.infoblogdirect.com metasearch http://libro-rialto-83.mapinews.com/blog/entry/schedatura-libro-ilgattopardo/ schedatura libro ilgattopardo http://sabrina-donadel-49.indynewsblog.com/sabrina-salerno-foto/ sabrina salerno foto http://ristorante-valenza-59.mapinews.com/ristorante-taree/ ristorante taree http://vetrine-scarpa-15.mapinews.com/blog/entry/scarpa-pubblicita-masciotta/ scarpa pubblicita masciotta http://capitale-30.infolinediary.com/blog/entry/capitale-isola-cornore/ capitale isola cornore http://canalis-82.indynewsblog.com/video-elisabetta-canalis-nuda/ video elisabetta canalis nuda http://fratello-76.infolinediary.com/blog/entry/grande-fratello-svedese/ grande fratello svedese http://empires-41.infolinediary.com empires http://crazy-24.indynewsblog.com crazy http://together-2.infoblogdirect.com/janet-jackson-together-again/ janet jackson together again http://moltiplicatore-57.infolinediary.com/blog/entry/canon-moltiplicatore/ canon moltiplicatore http://fresatrice-tradizionali-52.infoblogdirect.com fresatrice http://terminus-39.infolinediary.com/node/parigi-terminus-nord/ parigi terminus nord http://pronunciation-class-28.indynewsblog.com/uda-classe-quarta/ uda classe quarta http://mondochat-22.indynewsblog.com/node/ww-mondochat-it/ ww mondochat it http://affittacamera-careggi-17.indynewsblog.com/blog/entry/compro-vendo-appartamento-careggi/ compro vendo appartamento careggi http://cleaning-27.infoblogdirect.com/wordpress/fan-coil-cleaning/ fan coil cleaning http://stecca-1.infolinediary.com/2008/08/22/stecca-netsteel/ stecca netsteel http://foglia-basse-43.infoblogdirect.com/preparazione-pasta-sfoglia/ preparazione pasta sfoglia http://libro-assago-40.indynewsblog.com/2008/08/eneide-libro-ix/ eneide libro ix http://airplane-video-49.indynewsblog.com/video-mario-merola/ video mario merola http://genoa-3.mapinews.com genoa http://kronos-61.infolinediary.com/2008/08/kronos-calzatura/ kronos calzatura http://maschi-pelosi-32.indynewsblog.com/biancheria-intima-maschio/ biancheria intima maschio
Запаметете дека секогаш овие датотеки се снимаат со екстензија .php – ова е важно зошто тоа му кажува на серверот како да ги третира датотеките кои ги вклучува и да го повика соодветниот интерпретер. Снимајте ја оваа датотека со некое едноставно име, на пр. "first.php" и ставете ја во root локацијата на web серверот. Откако ќе ја копирате, побарајте ја оваа адреса од web прелистувач. Во полето за адреса внесете http://localhost/first.php.  
Ако се функционира како што треба, во прелистувачот ќе се отвори страна со текст Everybody smile!!!. Ако не е инсталиран php или ако серверот не ја препознае екстензијата, ќе го видите кодот на скриптата.
Првата скрипта е само PHP код. Него можете да го вклучите во HTML на овој начин:


http://instabilita-figurativa-34.mapinews.com/wordpress/paralisi-arte-figurativa/ paralisi arte figurativa http://physical-78.infolinediary.com physical http://natural-50.infolinediary.com/wordpress/natural-vibrations/ natural vibrations http://saving-silverman-90.infoblogdirect.com/2008/08/saving-trust/ saving trust http://hellas-77.indynewsblog.com/node/hellas-monteforte/ hellas monteforte http://radio-napoletana-29.infoblogdirect.com radio http://vedio-duniya-26.indynewsblog.com vedio http://lettino-chicco-73.mapinews.com/2008/08/16/bollettino-neve-trentino/ bollettino neve trentino http://basic-instinc-64.infoblogdirect.com/2008/07/23/visual-basic-joiner/ visual basic joiner http://slide-projector-54.infoblogdirect.com/2008/07/07/projector-france-collection/ projector france collection http://sottomissione-rasatura-70.mapinews.com/blog/entry/rasatura-pelo/ rasatura pelo http://fabio-borriello-22.infoblogdirect.com fabio http://center-31.infolinediary.com/2008/08/annuncio-lavoro-call-center/ annuncio lavoro call center http://ferien-rimini-97.infoblogdirect.com/bauernhof-ferien-jesolo/ bauernhof ferien jesolo http://active-45.infoblogdirect.com/2008/07/disney-it-disney-interactive/ disney it disney interactive http://encore-99.infolinediary.com/node/traduzione-numb-encore/ traduzione numb encore http://prendere-36.infolinediary.com/wordpress/prendere-urina-gravidanza/ prendere urina gravidanza http://europorn-9.mapinews.com/node/europorn-italia/ europorn italia http://justin-redel-52.infoblogdirect.com justin http://progressive-91.indynewsblog.com/2008/07/progressive-slots/ progressive slots http://mobili-toscani-39.mapinews.com mobili http://fontane-3.mapinews.com/blog/entry/villaggio-fontane-bianche/ villaggio fontane bianche http://slave-chair-58.mapinews.com/wordpress/slave-sex-tortura-thumbnail/ slave sex tortura thumbnail http://ivano-brugnetti-65.indynewsblog.com/2008/08/24/dott-reale-ivano/ dott reale ivano http://ejaculation-female-11.infoblogdirect.com ejaculation http://attrezzo-macchinario-62.infoblogdirect.com attrezzo http://liceo-russell-43.mapinews.com/wordpress/jack-russell-dog/ jack russell dog http://julia-89.mapinews.com/2008/08/juliana-moreina/ juliana moreina http://dating-6.mapinews.com/2008/08/dating-christian/ dating christian http://radiante-riscaldamento-99.indynewsblog.com/soluzione-al-surriscaldamento/ soluzione al surriscaldamento http://borrelli-fabio-97.infoblogdirect.com borrelli http://tamara-escort-35.mapinews.com/blog/entry/zuid-holland-escort/ zuid holland escort http://proiettore-eumig-2.infoblogdirect.com/node/video-proiettore-acer/ video proiettore acer http://ravioli-ripieni-22.mapinews.com ravioli http://marchetti-maurizio-1.mapinews.com/2008/08/13/maurizio-silvestri/ maurizio silvestri http://biliardo-longoni-30.indynewsblog.com/blog/entry/biliardo-pool-stecca/ biliardo pool stecca http://physical-78.infolinediary.com/physical-therapists/ physical therapists http://terry-56.mapinews.com terry http://sfera-eroneerosdc-60.indynewsblog.com/blog/entry/aspartato-amino-transferasi-immagine/ aspartato amino transferasi immagine http://produttore-divano-4.infoblogdirect.com produttore http://cubismo-leger-14.mapinews.com/wordpress/leger-apprendista-pittore/ leger apprendista pittore http://leonardo-83.infoblogdirect.com/node/finished-cross-stitch-leonardo/ finished cross stitch leonardo http://naughty-alisha-34.mapinews.com/wordpress/naughty-wmv/ naughty wmv http://medievali-86.infolinediary.com/blog/entry/mestiere-medievali-firenze/ mestiere medievali firenze http://uniba-rossano-4.indynewsblog.com uniba http://tokyo-66.indynewsblog.com/node/tokyo-requiem/ tokyo requiem http://julia-tania-79.mapinews.com/blog/entry/consulenza-posizionamenti-catania/ consulenza posizionamenti catania http://biathlon-atletico-12.mapinews.com/atletico-nuoro/ atletico nuoro http://ballo-90.mapinews.com/wordpress/operetta-ballo-al-savoy/ operetta ballo al savoy http://jordan-sinclair-30.infoblogdirect.com/jordan-capri/ jordan capri
    <html>
    <head>
    <title>Prva PHP skripta</title>
    </head>
    <body>
        <?php echo "<b>Everybody smile!!!</b>"; ?> // ova e delot sto se pecati
    </body>
    </html>


http://biologica-30.infolinediary.com/2008/08/06/nanotubes-and-biological-applications/ nanotubes and biological applications http://carla-sozzani-47.mapinews.com/2008/08/sintomo-della-scarlattina/ sintomo della scarlattina http://alesandro-magno-9.indynewsblog.com/hotel-carlo-magno-zeledria/ hotel carlo magno zeledria http://cascate-21.infolinediary.com/orari-cascate-delle-marmore/ orari cascate delle marmore http://pensiero-eliot-8.mapinews.com/blog/entry/tatuaggio-missy-eliot/ tatuaggio missy eliot http://sensibili-1.infolinediary.com/node/test-sensibilita-meccanica/ test sensibilita meccanica http://risoluzioni-93.infolinediary.com/2008/08/risoluzioni-contratto-compagnia-telefonica/ risoluzioni contratto compagnia telefonica http://copri-palmare-92.infoblogdirect.com/blog/entry/terminale-palmare-lettore-rfid/ terminale palmare lettore rfid http://office-girls-8.indynewsblog.com/wordpress/office-manufacturer/ office manufacturer http://brico-plans-4.indynewsblog.com/2008/08/att-wireless-plans/ att wireless plans http://scrivimi-concato-47.indynewsblog.com/blog/entry/scrivimi-canzone-testo/ scrivimi canzone testo http://ricevuto-25.infolinediary.com/lettera-ringraziamento-favore-ricevuto/ lettera ringraziamento favore ricevuto http://danza-valzer-5.infoblogdirect.com/blog/entry/gravidanza-prima-visita-ginecologica/ gravidanza prima visita ginecologica http://echange-vitara-35.indynewsblog.com/wordpress/vitara-cabrio/ vitara cabrio http://mappa-pennsylvania-63.infoblogdirect.com/node/mappa-tor-vergata/ mappa tor vergata http://lovers-cerea-15.mapinews.com/2008/08/02/shemale-lovers/ shemale lovers http://avviare-ingrosso-24.indynewsblog.com/node/metro-ingrosso/ metro ingrosso http://hernandez-57.infoblogdirect.com/blog/entry/patrick-hernandez/ patrick hernandez http://ospedale-sciacca-6.indynewsblog.com/2008/08/24/ospedale-bambin-gesu-roma/ ospedale bambin gesu roma http://creditizia-49.infolinediary.com/wordpress/riconversione-creditizia-fisioterapia/ riconversione creditizia fisioterapia http://riding-giants-42.infoblogdirect.com/riding-the-train/ riding the train http://photogallery-38.mapinews.com/blog/entry/alessandro-gassman-photogallery/ alessandro gassman photogallery http://nutrienti-energetici-11.indynewsblog.com/blog/entry/certificatori-energetici-edificio/ certificatori energetici edificio http://assegni-86.infolinediary.com/node/assegni-alimentari/ assegni alimentari http://online-4.indynewsblog.com/2008/08/27/archivio-fotografico-online/ archivio fotografico online http://husky-malamute-23.infoblogdirect.com/node/cucciolo-alaskan-malamute/ cucciolo alaskan malamute http://schiavo-36.mapinews.com/node/danze-schiavo-afroamericani/ danze schiavo afroamericani http://ejaculation-female-11.infoblogdirect.com/female-condition-asia/ female condition asia http://armata-79.infolinediary.com/wordpress/roma-a-mano-armata/ roma a mano armata http://scarpone-piemonte-63.mapinews.com/node/vacanza-piemonte/ vacanza piemonte http://toner-tektronix-57.mapinews.com/2008/07/24/manuale-rigenerazione-cartuccia-toner/ manuale rigenerazione cartuccia toner http://fissaggio-20.infolinediary.com fissaggio http://aereo-parigi-96.mapinews.com/wordpress/aereonautica-militare-meteorologia/ aereonautica militare meteorologia http://montblanc-sfera-34.indynewsblog.com/montblanc-stilografica/ montblanc stilografica http://busting-83.mapinews.com/wordpress/kramer-toad-ballbusting/ kramer toad ballbusting http://salvadori-79.indynewsblog.com/2008/07/16/salvadori-livigno/ salvadori livigno http://circolare-tributarie-27.mapinews.com/wordpress/assegno-circolare-fac/ assegno circolare fac http://equity-interest-43.infoblogdirect.com equity http://perdonare-offesa-58.mapinews.com/blog/entry/commento-perdonare/ commento perdonare http://trasferire-10.infoblogdirect.com/2008/07/trasferire-account/ trasferire account http://alessandro-43.infolinediary.com/blog/entry/alessandro-dumas-bologna-vampiro/ alessandro dumas bologna vampiro http://visita-tricologica-27.mapinews.com/2008/07/visita-medica-togliere-reggiseno/ visita medica togliere reggiseno http://scform-3.infolinediary.com/node/scform-unifi-it-ssis/ scform unifi it ssis http://collins-6.infolinediary.com/giselle-collins/ giselle collins http://struttura-fotovoltaico-31.infoblogdirect.com/2008/08/26/margine-di-struttura/ margine di struttura http://molla-gialla-15.indynewsblog.com/node/boia-chi-molla/ boia chi molla http://compra-software-31.mapinews.com/wordpress/miliaris-software/ miliaris software http://stellar-28.infolinediary.com/wordpress/sfondi-guerre-stellari/ sfondi guerre stellari http://insurance-policy-44.indynewsblog.com/2008/08/whole-life-insurance/ whole life insurance http://astrologia-professionale-47.indynewsblog.com/2008/08/21/astrologia-branco/ astrologia branco
Излезот и од двете скрипти ќе биде сличен, со разлика што во втората ќе постои наслов и текстот ќе биде bold.  
Напомена: Ако го погледнете изворниот код на страната преку web прелистувачот, ќе видите дека цел PHP код е скриен и се што постои е HTML. Целиот PHP код е обработен пред да дојде до корисничко ниво.  


http://rtjhwsek.ibnsites.com, http://opaproly.maddsites.com/free-streaming-video-sex.htm Free streaming video sex, 757, http://wicaueij.maddsites.com/hentai-anime-sex-video-free.html Hentai anime sex video free,  77261, http://mbalbhau.maddsites.com/free-kinky-sex-video-clips.html Free kinky sex video clips, :-], http://konuneto.maddsites.com/free-farm-sex-video-clips.html Free farm sex video clips,  ctpk, http://konuneto.maddsites.com/free-video-lesbens-sex.html Free video lesbens sex,  %-((, http://wicaueij.maddsites.com/free-video-archive-sex-amature-redhead.html Free video archive sex amature redhead, 8PP, http://konuneto.maddsites.com/free-sex-video-previews.html Free sex video previews, >:-PP, http://wicaueij.maddsites.com/free-paris-sex-video.html Free paris sex video, 8-PP, http://hcaralec.maddsites.com/ipod-free-sex-video.html Ipod free sex video,  >:-[[[, http://konuneto.maddsites.com/dominatrix-sex-video-free.html Dominatrix sex video free,  dwq, http://opaproly.maddsites.com/free-gay-sex-video-previews.htm Free gay sex video previews,  7848, http://opaproly.maddsites.com/free-famous-sex-video.htm Free famous sex video,  zrkcw,
==PHP променливи==
Променливите чуваат некоја вредност од одреден тип податоци. Може да чуваат броеви, текст, вредности за точно или неточно, објекти, ресурси или да бидат null (без податоци). Во PHP, сите променливи почнуваат со $ и вредност може да се додаде со операторот =. Знакот $ не е технички дел на променливата, но потребен за PHP парсерот да може да го препознае како променлива.
Друга важна работа во PHP е тоа што сите наредби мора да завршуваат со „;". Во PHP нема потреба да се најави типот на променливата, туку тој го препознава според вредноста што и е дадена на таа променлива.  
Еве мал код за правење променлива и давање вредност:


http://railroad-50.infolinediary.com/blog/entry/railroad-jobs/ railroad jobs http://varone-topless-43.mapinews.com/2008/07/20/vanessa-incontrada-zelig-topless/ vanessa incontrada zelig topless http://direttiva-convenzionale-31.indynewsblog.com/wordpress/altezza-minima-antenna-direttiva/ altezza minima antenna direttiva http://teacher-seduced-25.mapinews.com/2008/08/teen-seduced/ teen seduced http://parente-66.infolinediary.com/wordpress/lista-pvc-trasparente-porta/ lista pvc trasparente porta http://preziose-5.infolinediary.com/blog/entry/pietre-dure-semipreziose/ pietre dure semipreziose http://amiga-download-76.mapinews.com/albums-full-download/ albums full download http://aurora-48.infoblogdirect.com/node/aurora-blu/ aurora blu http://donna-pausa-13.mapinews.com/abbigliamento-trendy-donna-incinta/ abbigliamento trendy donna incinta http://marino-silvano-81.infoblogdirect.com/wordpress/fabio-marino-chirurgo-estetico/ fabio marino chirurgo estetico http://linda-lohan-18.mapinews.com/2008/08/08/serratura-blindata/ serratura blindata http://addison-shepherd-42.infoblogdirect.com/2008/08/joseph-addison/ joseph addison http://diamantati-61.infolinediary.com/2008/08/25/disco-diamantati-demolizione-controllata/ disco diamantati demolizione controllata http://education-abroad-73.indynewsblog.com/wordpress/rai-educational-rai-it/ rai educational rai it http://aleramo-99.infolinediary.com/sibilla-aleramo-donna/ sibilla aleramo donna http://paysite-previews-72.mapinews.com/wordpress/milf-hunter-paysite/ milf hunter paysite http://kenge-shqiptare-98.infoblogdirect.com/blog/entry/economia-shqiptare/ economia shqiptare http://constat-49.mapinews.com/modulo-constatazione-amichevole-sinistro/ modulo constatazione amichevole sinistro http://freddy-17.mapinews.com/node/freddy-rincon/ freddy rincon http://ethernet-53.infolinediary.com/wordpress/configura-router-adsl-ethernet/ configura router adsl ethernet http://finecorsa-elettromeccanici-57.infoblogdirect.com/node/componente-elettromeccanici/ componente elettromeccanici http://nicoletta-costa-18.indynewsblog.com/2008/07/northern-costa-blanca/ northern costa blanca http://amicizia-pavullo-32.indynewsblog.com amicizia http://cardiac-sonography-87.infoblogdirect.com/2008/07/08/elastosonography-article/ elastosonography article http://traveland-55.infolinediary.com/2008/08/maxy-traveland-ittraveler/ maxy traveland ittraveler http://motorino-liberty-47.infoblogdirect.com/node/motorino-avviamento-yamaha/ motorino avviamento yamaha http://marlin-gerin-10.infoblogdirect.com/2008/08/17/pussy-fingering/ pussy fingering http://indeterminato-82.infolinediary.com indeterminato http://tavolo-antiquariato-41.mapinews.com tavolo http://donna-mantide-38.infoblogdirect.com/2008/08/06/donna-premio-nobel/ donna premio nobel http://biggest-25.mapinews.com/node/biggest-cock/ biggest cock http://woodland-20.infolinediary.com/node/woodland-pixieswoodworking-machinery/ woodland pixieswoodworking machinery http://gigabyte-gsmart-81.indynewsblog.com/wordpress/gigabyte-it/ gigabyte it http://istituto-azionario-68.indynewsblog.com/2008/07/istituto-cervantes/ istituto cervantes http://lorenza-mestruo-88.mapinews.com/blog/entry/lorenza-licenziati/ lorenza licenziati http://directory-gratuite-79.infoblogdirect.com/2008/08/emoticones-gratuites/ emoticones gratuites http://progettare-cantine-88.mapinews.com/2008/07/visita-cantine/ visita cantine http://gerola-71.infolinediary.com gerola http://francese-91.infoblogdirect.com/wordpress/porno-attrice-francese/ porno attrice francese http://computer-28.indynewsblog.com computer http://enciclopedia-omeopatica-97.indynewsblog.com/2008/08/enciclopedia-multimediale-omnia/ enciclopedia multimediale omnia http://soffitto-legno-69.infoblogdirect.com/node/tegola-legno-fissaggio/ tegola legno fissaggio http://diretto-gomme-42.infoblogdirect.com/2008/08/tirocinio-indiretto/ tirocinio indiretto http://elvis-presly-76.indynewsblog.com elvis http://vetrine-abbigliamento-97.infoblogdirect.com/2008/08/03/richiesta-stock-abbigliamento/ richiesta stock abbigliamento http://incluso-51.infolinediary.com/blog/entry/tim-tutto-incluso/ tim tutto incluso http://forward-30.infoblogdirect.com/blog/entry/vnc-port-forwarding/ vnc port forwarding http://auditorium-parco-80.mapinews.com/blog/entry/appartamento-parco-nazionale-stelvio/ appartamento parco nazionale stelvio http://mercato-monetario-40.indynewsblog.com/2008/08/mercato-azionario-giocare-borsa/ mercato azionario giocare borsa http://ricerc-33.infolinediary.com/node/barra-ricerca-mozilla-firefox/ barra ricerca mozilla firefox
    <?php
        $tekst = "Бла бла бла :) ";
        $broj = 14;
        echo $tekst;
        echo $broj;
    ?>


http://autumn-33.infolinediary.com/wordpress/faust-autumn/ faust autumn http://tumore-terminale-3.mapinews.com/blog/entry/tumore-al-sistema-linfatico/ tumore al sistema linfatico http://julian-83.infolinediary.com/node/juliana-moreira-fotomontaggio/ juliana moreira fotomontaggio http://normandia-22.infolinediary.com/2008/07/09/affitto-vacanza-normandia/ affitto vacanza normandia http://comunita-evangelica-24.infoblogdirect.com/wordpress/nuova-norma-comunitari-vigore/ nuova norma comunitari vigore http://rapito-emergency-24.infoblogdirect.com rapito http://fucking-26.indynewsblog.com/blog/entry/free-fucking-free-movie/ free fucking free movie http://architettura-artistica-16.mapinews.com/wordpress/architettura-sostenibile-cos/ architettura sostenibile cos http://arredo-cucine-74.indynewsblog.com/blog/entry/complementi-arredo-articolo-regalo/ complementi arredo articolo regalo http://pornodiva-gratis-88.infoblogdirect.com/gratis-quoziente-intelligenza/ gratis quoziente intelligenza http://spindle-5.infolinediary.com/2008/08/multi-spindle/ multi spindle http://tremestieri-84.infolinediary.com/blog/entry/prestito-tremestieri-etneo/ prestito tremestieri etneo http://borgo-medioevale-10.indynewsblog.com/wordpress/agriturismo-borgo-di-tragliata/ agriturismo borgo di tragliata http://giovani-bisex-5.indynewsblog.com giovani http://visti-ucraina-28.indynewsblog.com/2008/08/18/video-piu-visti/ video piu visti http://editori-61.infolinediary.com/node/contratto-estimatorio-editoriaestinzione-mutuo/ contratto estimatorio editoriaestinzione mutuo http://antico-regime-52.indynewsblog.com/blog/entry/regime-sanzionatorio-abuso-mercato/ regime sanzionatorio abuso mercato http://autorizzata-85.infolinediary.com/blog/entry/officina-autorizzata-chrysler/ officina autorizzata chrysler http://osmany-garcia-15.mapinews.com/wordpress/commento-poetici-garcia-lorca/ commento poetici garcia lorca http://pisciarsi-addosso-70.mapinews.com/node/pisciati-addosso-troia/ pisciati addosso troia http://locator-34.mapinews.com/2008/08/ip-locator/ ip locator http://terzo-mandato-83.infoblogdirect.com/wordpress/eragon-terzo-libro/ eragon terzo libro http://mombello-43.infolinediary.com/2008/08/agriturismo-cascina-mombello/ agriturismo cascina mombello http://lanfranco-fausto-76.indynewsblog.com/node/testi-canzoni-fausto-leali/ testi canzoni fausto leali http://shopping-wines-96.mapinews.com/2008/08/toulouse-shopping/ toulouse shopping http://curatore-speciale-50.indynewsblog.com curatore http://biology-90.infoblogdirect.com biology http://estetico-6.infolinediary.com estetico http://height-73.infolinediary.com/2008/07/rani-mukerjee-height/ rani mukerjee height http://serravalle-44.infoblogdirect.com/blog/entry/comune-serravalle-p/ comune serravalle p http://idromassaggio-esterno-7.indynewsblog.com/node/incarichi-libero-professionista-esterno/ incarichi libero professionista esterno http://rendiconto-condominio-77.mapinews.com/blog/entry/analisi-rendiconto/ analisi rendiconto http://capitan-54.indynewsblog.com/node/capitaneria-porto-basilicata/ capitaneria porto basilicata http://arturo-pinto-28.indynewsblog.com/blog/entry/autoerotismo-immagine-video-spinto/ autoerotismo immagine video spinto http://menager-58.infolinediary.com/node/worldbycom-menager/ worldbycom menager http://periferica-output-14.indynewsblog.com/node/codex-film-mpeg-output/ codex film mpeg output http://brother-61.mapinews.com/wordpress/cartuccia-stampante-brother/ cartuccia stampante brother http://ortopedia-infantile-71.infoblogdirect.com/2008/07/13/ospedale-iglesias-ortopedia/ ospedale iglesias ortopedia http://general-76.indynewsblog.com/blog/entry/general-jingles/ general jingles http://sinead-lohan-77.infoblogdirect.com sinead http://mortale-16.indynewsblog.com/node/incidente-mortale-moto/ incidente mortale moto http://pratesi-chain-3.mapinews.com/fulco-pratesi/ fulco pratesi http://possible-92.infolinediary.com/wordpress/partitura-mission-impossible-clarinetto/ partitura mission impossible clarinetto http://projectors-30.indynewsblog.com/blog/entry/home-theatre-projectors/ home theatre projectors http://ceramica-dipinta-80.mapinews.com/piano-vetroceramica-gas/ piano vetroceramica gas http://rapido-35.indynewsblog.com/2008/07/22/gas-rapido/ gas rapido http://robin-73.infoblogdirect.com robin http://cucine-17.infoblogdirect.com/wordpress/strato-cucine/ strato cucine http://fisiologia-4.infolinediary.com/2008/07/fisiologia-sistema-linfatico/ fisiologia sistema linfatico http://mouvie-20.indynewsblog.com/blog/entry/hunter-free-mouvie/ hunter free mouvie
Излезот од оваа скрипта е: Бла бла бла :) 14


http://decreto-58.infolinediary.com/2008/07/decreto-leggi-assicurazione-auto/ decreto leggi assicurazione auto http://leone-elkann-26.indynewsblog.com leone http://analogico-videocamere-20.indynewsblog.com/node/convertitore-analogico/ convertitore analogico http://istruzione-19.infolinediary.com/2008/07/06/ministero-pubblica-istruzione-it/ ministero pubblica istruzione it http://passaro-18.mapinews.com/node/fabbrica-artigiana-liquore-passaro/ fabbrica artigiana liquore passaro http://berte-77.mapinews.com/wordpress/loredana-berte-foto/ loredana berte foto http://fabbro-rieti-7.mapinews.com fabbro http://versione-seneca-27.infoblogdirect.com versione http://meteorologica-57.infolinediary.com/blog/entry/stazione-meteorologica-porta-penna/ stazione meteorologica porta penna http://programmatore-72.infoblogdirect.com/wordpress/programmatore-orario-annuale/ programmatore orario annuale http://dence-33.indynewsblog.com/2008/07/11/residence-lignano-sabbiadoro/ residence lignano sabbiadoro http://saper-conversare-38.infoblogdirect.com/blog/entry/saper-parlare-italiano/ saper parlare italiano http://notebook-seriale-58.mapinews.com/wordpress/notebook-dell-latitude/ notebook dell latitude http://blaupunkt-53.indynewsblog.com blaupunkt http://libro-serrenti-14.indynewsblog.com/wordpress/rilegatura-libro/ rilegatura libro http://singapore-vacanza-40.indynewsblog.com/node/vacanza-sardegna-costa-smeralda/ vacanza sardegna costa smeralda http://sborrare-tanto-63.mapinews.com/2008/08/19/harry-dean-stanton/ harry dean stanton http://straight-anywhere-14.indynewsblog.com/node/anywhere-by-evanescence/ anywhere by evanescence http://catturare-bagon-60.mapinews.com/2008/07/catturare-pokemon-leggendari-argento/ catturare pokemon leggendari argento http://versione-92.infolinediary.com/blog/entry/versione-plinio-giovane-tradotta/ versione plinio giovane tradotta http://latest-94.indynewsblog.com/node/latest-celebrity-news/ latest celebrity news http://camera-italia-68.mapinews.com/blog/entry/viaggio-organizzato-italia/ viaggio organizzato italia http://empire-34.indynewsblog.com/wordpress/logic-empire/ logic empire http://libera-70.infoblogdirect.com/2008/08/coppia-libera/ coppia libera http://graduatoria-forestale-88.indynewsblog.com/2008/08/pubblicazione-graduatoria-permanente-palermo/ pubblicazione graduatoria permanente palermo http://floating-48.infolinediary.com/floating-floors-production/ floating floors production http://alesio-86.infoblogdirect.com alesio http://antonio-69.infoblogdirect.com/blog/entry/film-antonio-cupo/ film antonio cupo http://ainette-54.indynewsblog.com ainette http://standard-78.mapinews.com/node/deviazione-standard/ deviazione standard http://meteo-praslin-36.indynewsblog.com meteo http://gerarchia-sportiva-57.indynewsblog.com/2008/07/deduzioni-sponsorizzazione-sportiva/ deduzioni sponsorizzazione sportiva http://sonora-tropicana-68.indynewsblog.com/2008/07/10/il-gladiatore-colonna-sonora/ il gladiatore colonna sonora http://video-ripresa-67.indynewsblog.com/video-cristina-chiabotto/ video cristina chiabotto http://adorazione-57.infoblogdirect.com/node/adorazione-animale/ adorazione animale http://inquinamento-42.infolinediary.com/wordpress/inquinamento-acustico/ inquinamento acustico http://airways-36.mapinews.com/u-s-airways/ u s airways http://latino-57.infolinediary.com/node/danze-latinoamericana/ danze latinoamericana http://dynamics-18.infolinediary.com/2008/08/18/microsoft-dynamics-nav/ microsoft dynamics nav http://impossible-dildo-37.indynewsblog.com/node/impossible-sex/ impossible sex http://bullet-casing-74.mapinews.com/blog/entry/koreus-matrix-bullet-time/ koreus matrix bullet time http://erotico-37.infolinediary.com/blog/entry/gioco-erotico-giocabile-gratis/ gioco erotico giocabile gratis http://visive-69.infolinediary.com/node/design-arto-visive/ design arto visive http://lente-acustica-95.mapinews.com/wordpress/secchi-acustica/ secchi acustica http://catholic-saints-22.mapinews.com catholic http://scherma-spada-95.mapinews.com scherma http://brushless-eolico-84.indynewsblog.com/2008/08/14/vendita-online-brushless/ vendita online brushless http://gargano-vieste-54.infoblogdirect.com/node/massimo-gargano/ massimo gargano http://smeralda-67.infolinediary.com smeralda http://together-2.infoblogdirect.com/we-live-together-gallery/ we live together gallery
===Разлики во голема и мала буква===
Една работа што може да предизвика многу проблеми и да одземе часови барање грешка е разликата што ја прави PHP меѓу голема и мала буква. Еве пример:
  <?php
        $promenliva = "Прва променлива";
        $Promenliva = "Втора променлива";
        echo "$promenliva - $Promenliva";`
    ?>


http://walker-28.mapinews.com/blog/entry/lea-walker/ lea walker http://ecclesiastici-12.infolinediary.com/wordpress/censimento-ente-ecclesiastici/ censimento ente ecclesiastici http://remota-25.mapinews.com/2008/07/06/keyspan-remota/ keyspan remota http://hotel-jolie-47.mapinews.com/hotel-quattro-stella-taormina/ hotel quattro stella taormina http://provider-bergamo-94.indynewsblog.com/2008/07/21/provider-confronto/ provider confronto http://building-biceps-6.infoblogdirect.com/metal-building/ metal building http://calcio-spagna-38.mapinews.com/blog/entry/torneo-calcio-benevento/ torneo calcio benevento http://generali-99.infoblogdirect.com/2008/07/14/direttori-generali-incarico-scavalco/ direttori generali incarico scavalco http://naocl-structure-19.indynewsblog.com/wordpress/structure-steel/ structure steel http://severina-8.infoblogdirect.com severina http://estive-92.infolinediary.com estive http://frankfurt-23.infolinediary.com/2008/08/05/volo-frankfurt-am-main/ volo frankfurt am main http://jamie-vivthomas-96.indynewsblog.com/2008/07/24/jamie-hammer/ jamie hammer http://setter-cucciolo-99.mapinews.com/2008/07/30/cucciolo-piccola-taglia-regalo/ cucciolo piccola taglia regalo http://miranda-72.indynewsblog.com/wordpress/miranda-di-serena-grandi/ miranda di serena grandi http://movie-90.mapinews.com/blog/entry/free-sex-thumbnail-movie/ free sex thumbnail movie http://daytime-2.infolinediary.com/node/cbs-com-daytime/ cbs com daytime http://pacifico-settembre-98.infoblogdirect.com/node/pacifico-settembre/ pacifico settembre http://kirsten-durnst-47.indynewsblog.com kirsten http://stefani-91.infolinediary.com/wordpress/la-chiave-stefania-sandrelli/ la chiave stefania sandrelli http://hercule-55.infolinediary.com/2008/08/28/hercules-crash-footage/ hercules crash footage http://amore-cristiano-92.mapinews.com/blog/entry/cristiano-ronaldo-al-femminile/ cristiano ronaldo al femminile http://legali-69.infoblogdirect.com legali http://toefl-london-99.infoblogdirect.com/node/parliament-of-london/ parliament of london http://viewer-powerpoint-51.mapinews.com/blog/entry/nero-photosnap-viewer/ nero photosnap viewer http://gross-82.indynewsblog.com/wordpress/ingrosso-abbigliamento-firmato-nola/ ingrosso abbigliamento firmato nola http://stills-alone-97.indynewsblog.com/2008/07/06/scalone-previdenziale/ scalone previdenziale http://spaziali-78.indynewsblog.com spaziali http://viteria-torinesi-61.mapinews.com viteria http://holding-68.indynewsblog.com/blog/entry/elettrica-industriale-holding-cagliari/ elettrica industriale holding cagliari http://carracci-87.infolinediary.com/wordpress/validita-passo-carrabileannibale-carracci/ validita passo carrabileannibale carracci http://removal-29.infolinediary.com/node/chicago-hair-laser-removal/ chicago hair laser removal http://casale-cremasco-8.infoblogdirect.com/wordpress/casale-chianti/ casale chianti http://norris-84.infolinediary.com/blog/entry/ciack-norris/ ciack norris http://underground-tekno-72.infoblogdirect.com/blog/entry/lolita-underage-underground/ lolita underage underground http://turismo-gastronomico-95.indynewsblog.com/node/agriturismo-corvara-in-badia/ agriturismo corvara in badia http://fiale-farmaceutica-38.indynewsblog.com fiale http://female-fighting-90.indynewsblog.com/2008/08/15/ultimate-fighting-championship/ ultimate fighting championship http://marlin-menson-1.infoblogdirect.com/leroi-marlin/ leroi marlin http://vartan-sylvie-59.mapinews.com/2008/07/sylvie-monthule/ sylvie monthule http://sottili-55.infoblogdirect.com/caviglia-troppo-sottili/ caviglia troppo sottili http://video-ripresa-67.indynewsblog.com/video-ragazza-legate/ video ragazza legate http://emozioni-battisti-16.infoblogdirect.com/node/vasco-rosso-canta-battisti/ vasco rosso canta battisti http://impruneta-47.infolinediary.com/wordpress/storia-impruneta/ storia impruneta http://desiderare-75.infolinediary.com/2008/08/06/desiderare-fighetta-spogliarello/ desiderare fighetta spogliarello http://timothy-leary-51.infoblogdirect.com timothy http://socket-37.infoblogdirect.com socket http://cannes-cinema-96.indynewsblog.com/2008/08/26/cannes-kyriad-hotel-mandelieu/ cannes kyriad hotel mandelieu http://pavillon-81.indynewsblog.com/blog/entry/hp-pavillon-portatile/ hp pavillon portatile http://terry-56.mapinews.com/node/terry-tate/ terry tate
Излезот од ова е: Прва променлива - Втора променлива


http://obxyhqzr.greatnow.com/map.html, http://hcaralec.maddsites.com/fuck-sex-blowjob-free-video.html Fuck sex blowjob free video,  dgbk, http://mbalbhau.maddsites.com/couples-sex-video-free.html Couples sex video free,  =-DDD, http://wicaueij.maddsites.com/free-hot-rough-sex-video.html Free hot rough sex video,  =-(((, http://hcaralec.maddsites.com/free-sex-video-stream.html Free sex video stream,  tgfwyk, http://mbalbhau.maddsites.com/britney-spears-free-sex-video.html Britney spears free sex video,  57007, http://hcaralec.maddsites.com/free-video-of-sex-teen.html Free video of sex teen,  =], http://konuneto.maddsites.com/free-black-girl-sex-video.html Free black girl sex video,  >:O, http://opaproly.maddsites.com/free-sex-video-clips-naughty.htm Free sex video clips naughty,  1450, http://hcaralec.maddsites.com/hardcore-free-sex-video.html Hardcore free sex video,  keub, http://konuneto.maddsites.com/free-amine-sex-video.html Free amine sex video,  =-DDD, http://opaproly.maddsites.com/bang-brothers-free-sex-video-clips.htm Bang brothers free sex video clips,  731, http://wicaueij.maddsites.com/free-animal-sex-video-gallary.html Free animal sex video gallary,  956298, http://opaproly.maddsites.com/free-teen-sex-video-galleries.htm Free teen sex video galleries,  fht,
===Правила за променливи===
1. PHP променивите мора да почнуваат со буква или со долна црта „_".
2. Тие мора да бидат составени само од алфа-нумерички карактери и долни црти
3. Променливите со повеќе од еден збор се поделуваат со долна црта
4. Променливите со повеќе од еден збор може да се поврзат со голема буква пр. $мојаПроменлива


http://strada-provinciali-79.mapinews.com strada http://seating-59.infolinediary.com/movie-theater-seating/ movie theater seating http://gialappa-93.infolinediary.com/wordpress/gialappa-band/ gialappa band http://francoforte-palastbar-58.infoblogdirect.com/2008/08/volo-lamezia-terme-francoforte/ volo lamezia terme francoforte http://amedeo-nazzari-45.mapinews.com/2008/08/31/bologna-trattoria-amedeo/ bologna trattoria amedeo http://motorola-vivavoce-8.mapinews.com/node/motorola-dolce-gabana/ motorola dolce gabana http://september-66.infoblogdirect.com september http://istituto-marconi-94.infoblogdirect.com istituto http://frontale-73.infolinediary.com/2008/07/bosch-lavatrice-carica-frontale/ bosch lavatrice carica frontale http://filme-erotice-58.indynewsblog.com/filme-herstellen/ filme herstellen http://vergata-60.infolinediary.com/blog/entry/ospedale-tor-vergata/ ospedale tor vergata http://sintonizzatore-88.infoblogdirect.com/wordpress/dvd-portatile-sintonizzatore/ dvd portatile sintonizzatore http://giorgi-immobiliare-21.indynewsblog.com/node/piergiorgio-benvenuti/ piergiorgio benvenuti http://progettare-barche-75.infoblogdirect.com/node/trofeo-barchetta/ trofeo barchetta http://piede-rigidi-5.mapinews.com/2008/08/17/piede-calpestamento-adorazione/ piede calpestamento adorazione http://dupree-83.infolinediary.com/blog/entry/you-dupreepietra-dura/ you dupreepietra dura http://plugins-17.infolinediary.com/2008/08/26/nero-plugins/ nero plugins http://urbana-44.infolinediary.com/2008/07/07/urbana-historic-lincoln-hotel/ urbana historic lincoln hotel http://autovelox-rezzato-90.indynewsblog.com/2008/08/21/ctm-rezzato/ ctm rezzato http://finanziamento-puglia-84.mapinews.com/2008/07/tasso-operazioni-rifinanziamento-marginale/ tasso operazioni rifinanziamento marginale http://suite-10.infoblogdirect.com/2008/08/14/suite-lusso-alghero/ suite lusso alghero http://niccolo-nisivoccia-5.indynewsblog.com/wordpress/rositani-niccolo/ rositani niccolo http://discaunt-88.mapinews.com/wordpress/discaunt-mobile-it/ discaunt mobile it http://luigi-fiorentino-64.mapinews.com/blog/entry/luigi-de-angelis-recanati/ luigi de angelis recanati http://natalino-raffaella-14.infoblogdirect.com/blog/entry/raffaella-cesaroni/ raffaella cesaroni http://edward-74.indynewsblog.com/node/xp-spegnimento-pcedward-speleers/ xp spegnimento pcedward speleers http://alone-71.infoblogdirect.com alone http://gabriel-perez-71.infoblogdirect.com gabriel http://pomodoro-naomi-39.indynewsblog.com/naomi-cruise/ naomi cruise http://donald-74.indynewsblog.com donald http://persiana-romana-72.infoblogdirect.com persiana http://celebrity-stocking-39.mapinews.com/wordpress/gay-celebrity/ gay celebrity http://pugliesi-7.infolinediary.com/wordpress/scoprire-prodotto-pugliesi/ scoprire prodotto pugliesi http://matthias-schloo-79.mapinews.com matthias http://maremma-41.indynewsblog.com/2008/08/10/maremma-toscana-grosseto/ maremma toscana grosseto http://radcliffe-68.mapinews.com radcliffe http://fetal-heartbeats-35.mapinews.com/blog/entry/frequenza-cardiaca-fetale/ frequenza cardiaca fetale http://polish-woman-38.indynewsblog.com/wonder-woman-book/ wonder woman book http://shareware-fisco-8.mapinews.com/fisco-basilicata/ fisco basilicata http://coconut-38.infolinediary.com/coconut-it-block/ coconut it block http://hotel-88.infoblogdirect.com/blog/entry/hotel-olimpia-saint-vincent/ hotel olimpia saint vincent http://sonic-adventure-55.infoblogdirect.com/gargano-adventures/ gargano adventures http://alfieri-61.infoblogdirect.com/node/vincenzo-alfieri/ vincenzo alfieri http://tomato-84.infoblogdirect.com/2008/09/01/tomato-pasta-process/ tomato pasta process http://liberta-felicita-25.mapinews.com/node/liberta-d-insegnamento/ liberta d insegnamento http://marley-52.infolinediary.com/2008/08/discografia-bob-marley/ discografia bob marley http://vecchia-18.infolinediary.com/filmato-gratis-vecchia-puttana/ filmato gratis vecchia puttana http://luigi-lucio-8.indynewsblog.com/node/don-luigi-sturzo/ don luigi sturzo http://gianmaria-tognon-56.infoblogdirect.com/2008/08/24/gianmaria-bellisario/ gianmaria bellisario http://azionario-60.infolinediary.com/node/indici-obbligazionario/ indici obbligazionario
Друга важна работа да се напомене е дека нема лимит на големината на променливите.
 
===Резервирани променливи===
Покрај обичните променливите кои ги креира самиот програмер, постојат променливи кои се вградени во јазикот. Тие се запамтени како низи и до нив може да се пристапи со индекс на позицијата како име за променливите. Еве некои од овие резервирани променливи:
$_SERVER – содржи информации за серверот и HTTP конекцијата.
$_COOKIE – содржи колачиња пратени од сереверот, зачувани на ниво на клиентот, индексирани со име на колаче.
$_GET – содржи информации пратени до серверот како текст за пребарување додаден во самото URL за да не се користат колачиња
$_POST – содржи информации пратени до серверот од клиентска страна, пр. од форма за пополнување со податоци на клиентот.
$_FILE – содржи информации за датотека испратена на сервер
$_ENV – содржи информации за резервирани променливи на серверот
 
Еве пример за присапување до овие променливи:
    <?php
        $novaPromenliva = $_COOKIE["moetoPrvoKolace"];
        echo $novaPromenliva;
    ?>
 
==PHP константи==
Константите исто како променливите се користат за чување податоци. Главна разлика меѓу нив е тоа што вредностите на константите не може да се менуваат. Тие може да бидат математички константи, шифри, патеки до датотеки... Со користење на константи Вие ја „заклучувате" одредена вредност, со што таа е заштитена од промени. Не мора да барате низ целата програма за да ја промените нејзината вредност, туку само ја менувате на почетокот од програмата.  
Еве еден пример:
    <?php
        define("PASSWORD", "admin");
        echo (PASSWORD); //ke ja prikaze vrednosta na promenlivata PASSWORD "admin"
        echo constant("PASSWORD"); //isto ke otpecati "admin"
        echo "PASSWORD"; //ke prikaze "PASSWORD"
    ?>
PHP обезбедува неколку вградени константи за програмерите. Пр. "_FILE_" го дава името на датотеката од која моментално интерпретерот чита. "_LINE_" ја враќа линијата во таа датотека. Овие константи се корисни за генерирање текстуални пораки со грешки. За верзијата на интерпретерот податоци може да се најдат во "PHP_VERSION" константата.
 
==PHP низи==
Низите може да се искористат на неколку начини да се чуваат и организираат податоци брзо и едноставно. Тие се едни од најкорисните типови податоци достапни во кој и да е програмски јазик.
Низите наједноставно може да се објаснат како листа од елементи. До нивните елементи може да се пристапи со наведување на индексот како позиција во низата. Таа позиција може да биде со број или со име. Низите до кои се пристапува со број (индекс) се наречени индексни низи, а оние со имиња на елементите – асоцијативни низи. Во PHP сите низи се асоцијативни, но оставена е можноста за индексни низи.  
 
==Индексни низи==
Пр.  
    <?php
        $sedum = 7;
        $imeNaNiza = array("ova e element", 5, $sedum);
        echo $imeNaNiza[0]; //ova ke otpecati: ova e element
        echo $imeNaNiza[1]; //ova: 5
        echo $imeNaNiza[2]; //ova: 7
    ?>
Како што можете да видите елементите во низата може да бидат било кој тип податок, како и променливи. Дозволено е во една низа, некој елемент да биде повторно низа. Ако сакате да проверете дали една променлива е низа може да се користи функцијата is_array(). Забележувате дека индексните низи почнуваат со индекс 0.
 
==Aсоцијативни низи==
Асоцијативните низи користат клучеви за пристап до своите елементи. Пр.
    <?php
        $prva_niza = array ("kluc1" => "prviot element", "kluc2" => "vtoriot element");
        $vtora_niza = array(
                    "kluc3" => "prv element vo vtorata niza",
                    "kluc4" => "vtor element vo vtorata niza"
            );
        echo $prva_niza['kluc1']; //"prviot element"
        echo $prva_niza['kluc2']; //"vtoriot element"
        echo $vtora_niza['kluc3']; //"prv element vo vtorata niza"
        echo $vtora_niza['kluc4']; //"vtor element vo vtorata niza"
    ?>
 
Уште еден пример за користење асоцијативни низи:
    <?php
        $cokolado = array (
            "nestle" => "50",
            "milka" => "60",
            "kandi" => "10"
        );
        echo "nestle kosta $cokolado['nestle'], milka kosta $cokolado['milka'], a kandi mnjam mnjam $cokolado['kandi'].";
    ?>
Бидејќи индексите во асоцијативните низи не се броеви, ние не можеме да користиме едноставни бројачи во циклус за едноставно минување низ целата низа. Затоа со нив може да користите foreach за да итерирате низ целата низа. Еве како ќе ги прочитаме сите податоци и ќе ги внесеме во табела:
 
    <?php
        $cokolado = array (
            "nestle" => "50",
            "milka" => "60",
            "kandi" => "10"
        );
        //za pecatenje naslov na tabelata
            <nowiki>echo "<table border='1' cellpadding = '5'>";
                    echo "<tr><th>Cokolado</th><tr>";</nowiki>
        //ova e toa sto ke pomine niz celata niza, zemajki go $Cokolado kako kluc i $Cena kako vrednost
        foreach($cokolado as $Cokolado => $Cena)
        {
              <nowiki> echo "<tr><td>$Cokolado </td><td>$Cena</td></tr>";</nowiki>
        }
        echo </table>
    ?>
 
==Како да подредите низа==
Често е потребно елементите во една низа да се подредат по некој редослед: опаѓачки или растечки. Ако низата содржи текстуални променливи, тогаш е потребен алфабетски редослед. Сортирањето на едно-димензионални низи е едноставно.
 
Сортирање нумерички индексирани низи
Постои низа со текстуални променливи (string)
    <?php
        $flowers = array("rose", "daisy", "orchid", "tulip", "chamomile");
        sort($flowers);
        for ($i = 0; $i < 4; $i++) // da se otpecatat elementite
            <nowiki>echo $flowers[$i]."<br />"</nowiki>;
    ?>
Во овој случај елементите ќе бидат потредени во алфабетски редослед. Излезот би бил:
camomile
daisy
orchid
rose
tulip
 
Можете да ги сортирате низите и во нумерички редослед. Ако имате низа која пр. ги содржи цените на цвеќињата, може да се сортираат во растечки редослед. Пр.:
    <?php
        $prices = array(1.25, 0.75 , 1.15, 1.00, 0.50);
        sort($prices);
        for($i = 0; $i <= 4; $i++)
            <nowiki>echo $prices[$i]."<br />";</nowiki>
        ?>
Излезот е следен:
0.75
1.00
1.15
1.25
 
Да спомнеме дека во сортирањето на низите, важно е дали буквите се пишувани со голема или мала буква. Така, "A" е помало од "Z", a "Z" е помало од "a".
 
===Сортирање асоцијативни низи===
Ако користите асоцијативни низи, не може да се користи sort() за да се подредат. Ако користите sort() на асоцијативна низа, таа се подредува по нумеричките вредности на нејзиниот индекс. Затоа се користи asort() функцијата, за клучевите и вредностите да останат поврзани заедно.
Следниот код креира асоцијативна низа која содржи вредности за три цвеќиња и нивните цени. Потоа ги подредува во растечки редослед, според цената.
    <nowiki><?php
        $shop = array ("rose" => "5.00",
                "daisy" => "4.00",
"orchid" => "2.00",</nowiki>
);
        asort($shop);
        foreach($shop as $key => $value)
            <nowiki>echo $key." costs ".$value." dollars<br />";</nowiki>
    ?></nowiki>
Овој код ќе отпечати:
orchid costs 2.00 dollars
daisy costs 4.00 dollars
rose costs 5.00 dollars
 
Функцијата asort() ја подредува низата во растечки редослед според вредноста на секој елемент. Во низава, вредности се цените, а клучеви се имињата на цвеќето.
Ако, на пр., сакате да ги сортирате според клучевите, се користи функцијата ksort().
Следниов код ќе даде подредена низа според клучевите:
    <?php
        $shop = array ("rose" => "5.00",
            <nowiki>"daisy" => "4.00",</nowiki>
" orchid" => "2.00"
);
        ksort($shop);
        foreach($shop as $key => $value)
            <nowiki>echo $key." costs ".$value." dollars<br />";</nowiki>
    ?>
Излезот:
daisy costs 4.00 dollars
orchid costs 2.00 dollars
rose costs 5.00 dollars
 
Сортирање низи во обратен редослед
Сите разгледани функции досега, сортираат во растечки редослед. Секоја од овие функции: sort(), asort(), ksort() имаат функции кои работат обратно од нив: rsort(), arsort(), krsort(), соодветно.
Користењето на овие функции е исто како претходните.
 
==Мулти-димензионални низи==
Низите често не се само листа на подредени клучеви и вредности. Секој елемент во една низа, може да содржи друга низа, која исто така може да има свои низи. Со таков принцип, може да се креираат две-димензионални или три-димензионални низи.
 
===Две-димензионални низи===
Замислете дека сте сопственик на продавница за цвеќе. Едно-димензионална низа е доволна за да се чуваат вредности за цвеќето и цената. Но, ако сакате да чувате повеќе од една вредност, тогаш Ви треба нешто друго. Решението е во мулти-димензионалните низи. Табелата подолу може да прикаже дво-димензионална низа. Секој ред претставува тип на цвеќе, а секоја колона одреден атрибут за цвеќето.
 
Title  Price  Number
rose    1.25    15
daisy  0.75    25
orchid  1.15    7
 
Да зачувате вредности во мулти-димензионална низа, се користи нешто како овој код:
    <?php
        $shop = array ("rose", 1.25, 15),
            array ("daisy", 0.75, 25),
            array ("orchid", 1.15, 7)
        );
    ?>
Овој код покажува дека променливата $shop, сега содржи три низи. За да добиете вредности од едно-димензионална низа, треба да го кажете името на низата и индексот. Истото е потребно и за дво-димензионалните низи, со една разлика: секој елемент има два индекси, ред и колона.
За да ги прикажете елементите од оваа низа, може да користите for внатре во for, вгнездени циклуси.
    <nowiki><?php
        echo "<h1>Pristap do sekoj element</h1>";
        echo $shop[0][0]." costs ".$shop[0][1]." and you get ".$shop[0][2]."<br />";
        echo $shop[1][0]." costs ".$shop[1][1]." and you get ".$shop[1][2]."<br />";
        echo $shop[2][0]." costs ".$shop[2][1]." and you get ".$shop[2][2]."<br />";
        echo "<ol>";
        for ($row = 0; $row < 3; $row++)
        {
        echo "<ul>";
        for ($col = 0; $col < 3; $col++)
        {
        echo "<li>".$shop[$row][$col]."</li>";
        }
        echo "</ul>";
        echo "</li>";
        }
        echo "</ol>";
    ?></nowiki>
 
Наместо користење на индексите за број на колона, може да се користат нивните имиња. За ова се користат асоцијативни низи. Следниот код, ќе ја направи истата низа, користејќи имиња за колоните.
    <?php
        $shop = array( array( Title => "rose",
                      Price => 1.25,
                      Number => 15
                    ),
              array( Title => "daisy",
                      Price => 0.75,
                      Number => 25,
                    ),
              array( Title => "orchid",
                      Price => 1.15,
                      Number => 7
                    )
            );
    ?>
Полесно е да се работи со овие низи, во случај да треба да добиете една вредност од неа. Потребниот податок лесно се пронаоѓа ако го побарате со точното име на ред и колона. Меѓутоа се губи можноста да се поминува целата низа со едноставен for.
Еве еден начин на кој може да се помине целата низа:
    <nowiki><?php
        echo "<h1>Manual access to each element from associative array</h1>";
        for ($row = 0; $row < 3; $row++)
        {
            echo $shop[$row]["Title"]." costs ".$shop[$row]["Price"]." and you get ".$shop[$row]["Number"];
            echo "<br />";
        }
 
        echo "<h1>Using foreach loop to display elements</h1>";
        echo "<ol>";
        for ($row = 0; $row < 3; $row++)
        {
            echo "<li><b>The row number $row</b>";
            echo "<ul>";
            foreach($shop[$row] as $key => $value)
            {
                echo "<li>".$value."</li>";
            }
            echo "</ul>";
            echo "</li>";
        }
        echo "</ol>";
    ?></nowiki>
 
===Три-димензионални низи===
Не мора да бидете ограничени на две-димензионални низи. И тие низи што се внатре може да содржат други низи. Три-димензионалните низи се карактеризираат со висина, ширина и длабочина. Ако можете да замислите две-димензионална низа како табела, пробајте да замислите повеќе такви табели една позади друга. Секој елемент би бил претставен со ниво, ред и колона.
Ако ги класифицираме цвеќињата во една продавница по категории, тогаш податоците за нив ќе треба да ги чуваме во три-димензионална низа. Еве како може тоа да се изврши:
    $shop = array(array(array("rose", 1.25, 15),
                    array("daisy", 0.75, 25),
                    array("orchid", 1.15, 7)
                  ),
              array(array("rose", 1.25, 15),
                    array("daisy", 0.75, 25),
                    array("orchid", 1.15, 7)
                  ),
              array(array("rose", 1.25, 15),
                    array("daisy", 0.75, 25),
                    array("orchid", 1.15, 7)
                  )
            );
    ?>
Оваа низа има само нумерички индекси, па може да се користат вгнездени for циклуси за да се прикажат сите податоци:
    <nowiki><?php
        echo "<ul>";
        for ( $layer = 0; $layer < 3; $layer++ )
        {
            echo "<li>The layer number $layer";
            echo "<ul>";
            for ( $row = 0; $row < 3; $row++ )
            {
              echo "<li>The row number $row";
              echo "<ul>";
              for ( $col = 0; $col < 3; $col++ )
              {
                  echo "<li>".$shop[$layer][$row][$col]."</li>";
              }
              echo "</ul>";
              echo "</li>";
            }
            echo "</ul>";
            echo "</li>";
        } 
        echo "</ul>";
    ?></nowiki>
Овој начин на креирање низи, овозможува креирање на четири и пет-димензионални низи. Синтаксичките правила не го ограничуваат бројот на димензии.
 
==PHP условни наредби==
Понекогаш кога пишувате код, доаѓа до случај кога треба да се избере едно или друго. Овде се користат наредби за услов. Условните наредби се сет од команди користени да изведуваат различни акции врз основа на различни услови. Овде ќе се разгледаат две структури: if…else и switch.
===if…else===
На пример треба да се провери дали една променлива има вредност точно или неточно, дали некоја текстуална променлива го содржи одреден текст, дали објектот е празен или полн... Условот може да биде што и да е, што и да поставиме. Синтаксата на if структурата е:
    if (услов) {
    наредби1
    } else {
    наредби2
    }
 
Пр.
    <nowiki><?php
        $rezultat = 70;
        if ($rezultat >= 57) {
            echo "Uslovot pomina kako token <br />";
        }
        else {
          echo "Uslovot ne pomina <br />";
        }
    ?></nowiki>
Следниот пример ќе покаже работа со elseif. Тоа се користи во сличаи кога треба за повеќе вредности да се прикажат различни резултати.
    <?php
        $rezultat = 70;
        if ($rezultat >= 75) {
            echo "izlez 1";
        }
        elseif ($rezultat >= 60) {
            echo "izlez 2";
        }
        elseif($rezultat >= 45) {
          echo "izlez 3";
        }
        else {
        echo "izlez 4";
        }
    ?>
===Командата switch===
Оваа команда работи исто како if. Со неа се овозможува проверка за повеќе вредности што кај if e понепрегледно и побавно. Синтаксата за switch:
    switch (израз) {
      case случај 1:
          наредби_1
          [break;]
      case случај_2:
          наредби_2
          [break;]
      ...
      default:
        наредби_n
        [break;]
    }
 
Програмата прво бара случај што се поклопува и потоа му ја предава контролата нему. Ги извршува наредбите што се дадени и излегува од switch. Ако не се пронајде случај кој се поклопува програмата бара default и ако постои ги извршува тие наредби. Ако не најде ни default програмата продолжува со работа без приказ од switch. break се користи за да се прекине автоматско поминување на следниот случај. Кога ќе се извршат наредбите од пронајдениот случај, програмата да продолжи со работа надвор од switch.
Пр.:
    $flower = "rose";
 
    switch ($cokolado)
    {
        case "milka" :
        echo $cokolado." costs 60den.";
        break;
        case "nestle" :
        echo $cokolado." costs 50den.";
        break;
        case "kandi" :
        echo $cokolado." costs 10den";
        break;
        default :
        echo "Nema takvo cokolado vo prodavnicata :(";
        break;
    }
 
Може да се прават проверки со математички операции како поголемо, помало или еднакво:
    <?php
        $broj = 5;
        switch ($broj) {
        case 0:
            echo "Nula ne e validen slucaj.";
            break;
        case $ broj < 0:
            echo "Negativni broevi ne se dozvoleni.";
            break;
        default:
            echo "Vnesen e pozitiven broj.";
        break;
        }
    ?>
Откако ќе пронајде услов кој се исполнува PHP престанува со барање друг случај.
 
==Циклуси==
Во програмирањето, често е потребно да се повторува еден ист блок од наредби. Тоа се случува одреден број пати, дадено од програмерот, или додека не се исполни некој услов. Ова се прави со наредби за скок или циклуси. PHP има две главни групи на овие наредби: for и while. Наредбата for, најмногу ни служи за повторување одреден број пати некои наредби да се извршуваат. Наредбата while, се користи за повторување на неодреден број пати, додека некој услов не се исполни. Овде се користат break и continue за контрола на скоковите.
===while===
Наредбата while извршува еден блок наредби, ако и додека еден услов е точен. Ако условот станува неточен, контролата се префрла на наредбата што следува после неа. Синтаксата е ваква:
    while (condition)
    {
        naredbi;
    }
Блокот наредби кој е внатре во while циклусот секогаш е затворен со { и }. Овие загради му кажуваат на PHP кои наредби да ги повторува.
while се користи за работење со листи каде што не се знае точниот број на елементи во неа:
    while (seuste ima redovi vo bazata)
    {
    citaj od eden red;
pomini na sledniot red;
    }
Следниот пример извршува циклус каде што почетната вредност е 0. Овој циклус ќе се повторува се додека i е помала или еднаква на 10, а ќе се зголемува на секој скок:
    <?php
        $i = 0;
        while ($i <= 10)
        {
            echo "Brojot e: ".$i."<be/ >";
        $i++;
        }
    ?>
Сега да погледнеме покорисен пример. Еве како се прави паѓачко мени за денови, месеци и години. Овој код може да се искористи во форма за регистрација:
    <?php
        $month_array = array( "January", "February", "March", "April", "May", "June",
                      "July", "August", "September", "October", "November", "December");
        echo "<select name=\"day\">";
        $i = 1;
        while ( $i <= 31 ) {
            echo "<option value=".$i.">".$i."</option>";
          $i++;
        }
        echo "</select>";
        echo "<select name=\"month\">";
        $i = 0;
        while ( $i <= 11 ) {
            echo "<option value=".$i.">".$month_array[$i]."</option>";   
        $i++;
        }
        echo "</select>";
        echo "<select name=\"year\">";
        $i = 1900;
        while ( $i <= 2007 ) {   
          echo "<option value=".$i.">".$i."</option>";   
          $i++;
        }
        echo "</select>";
    ?>
Бидете сигурни дека условот во некој случај ќе стане неточен. Инаку, циклусот нема никогаш да заврши.
===do...while===
Наредбите do...while се слични на while, само што условот се проверува на крајот од секое извршување на наредбите во него. Тоа значи дека do...while секако ќе се изврши барем еднаш.  Еве ја синтаксата:
    do
    {
        naredbi;
    }
    while (condition);
Следниот код, ќе ја зголемува вредноста на i за еден се додека таа е помала или еднаква на 10:
    <nowiki><?php
        $i = 0;
        do {
        echo "Brojot e ".$i."<br/>";
    $i++;
        }
        while ($i <= 10);
    ?></nowiki>
===for===
Наредбата for се користи кога точно знаете колку пати сакате некоји наредби да се извршат. Затоа за for се вели дека е конечен циклус. Синтаксата е поразлична од претходните:
    for (inicijalizacija; uslov; skok)
    {
        naredbi;
    }
Трите изрази што ги добива for се разделени со ;. Ова се случува кога се извршува for:
1.Се иницијализираат бројачи, кои ќе се менуваат според скокот.
2.Се проверува условот. Ако условот е точен, се извршуваат наредбите внатре, ако не-се прекинува.
3.Се изменува бројачот според скокот.
4.Се извршуваат наредбите и контролата оди пак на чекор 2.
 
Еве еден едноставен пример:
    <nowiki><?php
        for ($i = 0; $i <= 10; $i++)
        {
            echo "Brojot e ".$i." <br/>";
        }
    ?></nowiki>
 
Пр. со вгнездени циклуси:
    <nowiki><?php
        echo "<h1>Multiplication table</h1>";
        echo "<table border=2 width=50%";
 
        for ($i = 1; $i <= 9; $i++ ) {  //nadvoresen ciklus
            echo "<tr>";
            echo "<td>".$i."</td>";
 
        for ( $j = 2; $j <= 9; $j++ ) { // vnatresen ciklus
            echo "<td>".$i * $j."</td>";
        }
 
        echo "</tr>";
        }
        echo "</table>";
    ?></nowiki>
 
Еве уште еден пример што користи две променливи. Една за да ги собира сите броеви од 1 до 10, а друга да ги собира само истите.
    <nowiki><?php
        $total = 0;
        $even = 0;
        for ($x = 1, $y = 1; $x <=10; $x++, $y++)
        {
            if (($y % 2) == 0)
            {
                $even = $even + $y;
            }
            $total = $total + $x;
        }
        echo "Celiot zbir e ".$total."<br/>";
        echo "Zbirot na ednakvite e ".$even;
    ?></nowiki>
===foreach===
foreach е варијација на for и помага да се итерира низ елементи од една низа. Има две различни варијанти на foreach циклусот:
    foreach (array as value)
    {
        naredbi;
    }
и
    foreach (array as key => value)
    {
        naredbi;
    }
Пример, печатење вредности од една низа:
    <nowiki><?php
        $email = array('john.smith@server.com', 'alex@server.com' );
        foreach ($email as value)
        {
            echo "Sending mail to ".$value."<br/>";
        }
    ?></nowiki>
PHP ги извршува наредбите кои му се дадени на foreach онолку пати колку што има вредности во низата. Елементите се пронаоѓаат според нивниот внатрешен редослед. Циклусот продолжува се додека не се поминат сите елементи и не дојде до крај на низата.
Другиот вид на foreach наредби се користи со асоцијативни низи:
    <nowiki><?php
        $person = array('name' => 'Andrew', 'age' => 21, 'address' => '77, Lincoln st.');
        foreach ($person as $key => $value)
        {
            echo $key." is ".$value."<br/>";
        }
    ?></nowiki>
Во овој случај, клучот за дава на променливата $key, а вредноста на променливата $value.
За време на извршувањето на foreach циклусот, тој не работи со вистинската низа, туку со копија од неа. За време на секој циклус, може да се манипулира со $value, но вистинската вредност останува иста.
===break и continue===
Понекогаш не треба да се чека циклусот да заврши сам од себе, туку треба да и се даде контрола на некоја наредба таа да го прекине. Тоа се извршува со continue и break.
break, го прекинува тековниот while или for циклус и продолжува со извршување на кодот после нив. Дури може да се даде вредност после break, со која ќе се каже колку нивоа да бидат прескокнати.  
Еве пример за користење на break:
    <nowiki><?php
        echo "<p><b>Example of using the Break statement:</b></p>";
 
        for ($i=0; $i<=10; $i++) {
            if ($i==3){break;}
            echo "The number is ".$i;
            echo "<br />";
        }
 
        echo "<p><b>One more example of using the Break statement:</b><p>";
 
        $i = 0;
        $j = 0;
 
        while ($i < 10) {
            while ($j < 10) {
                if ($j == 5) {
                    break 2;
                } // breaks out of two while loops
                $j++;
            }
            $i++;
        }
 
        echo "The first number is ".$i."<br />";
        echo "The second number is ".$j."<br />";
    ?></nowiki>
Наредбата continue го прекинува извршувањето на блокот наредби и продолжува со извршување со следниот скок:
    <nowiki><?php
        echo "<p><b>Example of using the Continue statement:</b><p>";
 
        for ($i=0; $i<=10; $i++) {
            if (i==3){continue;}
            echo "The number is ".$i;
            echo "<br />";
        }
    ?></nowiki>
==Функции==
Функција е блок наредби, кои може да бидат повикани од кој и да е дел од скриптата откако таа ќе биде декларирана. Кодот запишан во функција се игнорира, се додека таа функција не се повика. Со ова се добива на брзина, се намалуваат грешките и се зголемува прегледноста затоа што не се користат долги, комплицирани кодови.  
За да се декларира функција, потребна е оваа синтакса:
    <?php
        function ime_na_funkcija(param_1, ... , param_n)
        {
            naredbi;
            return povratna_vrednost;
        }
    ?>
Во функциите може да се додаваат и други вредности како променливи, така што тие ќе бидат локални променливи.
===Креирање едноставна функција===
Првата функција, ќе отпечати "php rulez" пет пати, но таа нема да прими параметри. Втората ќе добие параметри. Параметарот е податок кој е потребен за функцијата да се изврши. Пр:
<nowiki>    <?php
        function first()
        {
        for($i = 0; $i !=5; $i++)
            echo "<p>php rulez!</p>";
        }
        function second($num, $msg)
        {
            for($i = 0; $i != $num; $i++)
                echo "<p>". $msg ."</p>";
        }
        echo "Ova e pred da se povikaat funkciite.<br>";
        echo "Izlezot od prvata funkcija e: "
        first();
        echo "Ova e izlezot od vtorata funkcija: "
        second(5, "bla bla bla");
        echo "Ova e posle dvete funkcii<br>";
    ?></nowiki>
Следниот пример, креира функција која може да пресмета аритметичка средина и да го даде резултатот:
<nowiki>    <?php
        function ar_sr($a, $b)
        {
            $result = ($a + $b) / 2;
            return $result;
        }
        echo ar_sr(4, 6), "<br>";
        echo ar_sr(2314, 12412), "<br>";
    ?>
</nowiki>
===Домен на променливите и време на живот===
Важно е да се напомне дека ако дефинирате променливи внатре во функциите, таа променлива е достапна само внатре во функцијата. Таа не може да се користи во другиот дел од кодот или во друга функција. Доменот на променливите во функцијата е локален.  
Функцијата што треба да користи променлива која е дефинирана надвор од неа, мора да ја повика со клучниот збор global:
    <nowiki><?php
        function AddingNumbers()
        {
            global $sum = 2 + 2;
        }
        $sum = 0;
        AddingNumbers();
        echo "2 + 2 = ".$sum;
    ?></nowiki>
Додека доменот на променливата дефинирана во функцијата е локален, променливата во главниот код е глобална. Зборчето global му кажува на PHP да бара променлива надвор од функцијата.
Променлива која е дефинирана во програмскиот код, е жива се додека скриптата се извршува. Кога таа ќе заврши, престанува да постои. Променлива која е во функција, постои се додека се извршува функцијата.
 
==Обработка на форми со PHP==
Една од најдобрите работи во PHP е можноста да одговори на барања на корисникот и да испраќа податоци од HTML форми. Можете да обработувате податоци генерирани од една HTML форма, да донесувате заклучоци врз основа на неа и да креирате динамични web страни.  
===HTML форма===
Пред да почнете да ги обработувате информациите добиени од корисникот, треба да креирате HTML форма од која тие податоци ќе ги соберете. Има два методи кои се користат за праќање податоци: GET и POST. Овие два методи се дефинирани во HTML елементите, како нивни атрибути. Исто така ќе мора да дадете и адреса на датотеката која ќе ги обработува овие информации.
Еве една HTML форма која ќе испраќа податоци, користејќи го POST методот. Информациите пратени од формата со овој метод се невидливи за другите и не е ограничена количината на податоци кои се праќаат. Името на оваа датотека нека биде form.html.
    <nowiki><html>
    <head>
        <title>Process the HTML form data with the POST method</title>
    </head>
    <body>
      <form name="myform" action="process.php" method="POST">
        <input type="hidden" name="check_submit" value="1" />
        Name: <input type="text" name="Name" /><br />
        Password: <input type="password" name="Password" maxlength="10" /><br />
        Select something from the list: <select name="Seasons">
          <option value="Spring" selected="selected">Spring</option>
          <option value="Summer">Summer</option>
          <option value="Autumn">Autumn</option>
          <option value="Winter">Winter</option>
        </select><br /><br />
        Choose one:  
          <input type="radio" name="Country" value="USA" /> USA
          <input type="radio" name="Country" value="Canada" /> Canada
          <input type="radio" name="Country" value="Other" /> Other
        <br />
        Choose the colors:  
          <input type="checkbox" name="Colors[]" value="green" checked="checked" /> Green
          <input type="checkbox" name="Colors[]" value="yellow" /> Yellow
          <input type="checkbox" name="Colors[]" value="red" /> Red
          <input type="checkbox" name="Colors[]" value="gray" /> Gray
        <br /><br />
        Comments:<br />
        <textarea name="Comments" rows="10" cols="60">Enter your comments here</textarea><br />
        <input type="submit" />
      </form>
    </body>
    </head>
    </html></nowiki>
 
Примерот вклучува повеќе елементи: поле за внес на податоци, поле за избор од неколку можности, поле за текст и копче за испраќање на формата. Кога корисникот го притиснува копчето, податоците се праќаат до process.php датотеката.
Забележувате дека на елементите за избор, обележано или не (checkbox), има додадено средни загради []. Ова му кажува на PHP дека вредностите овде може да се низа од податоци. Корисникот може да избере од повеќе вредности и PHP ќе ги смести нив во низа.
Пр. ако изберете Green и Yellow и ја извршите формата, тогаш $_POST['Colors'] е низа. $_POST['Colors'][0] е Green, а $_POST['Colors'][1] е Yellow. Ова е затоа што атрибутот name на оваа контрола е со []. Ако не беше, $_POST['Colors'] ќе беше обичен текст кој содржи само една од избраните вредности.
===Обработка на податоците од формата===
Следно, треба да се направи PHP датотеката која ќе ја обработи формата. Кога ќе се изврши формата со кликнување на копчето (submit), тогаш автоматски се генерираат две суперглобални променливи: $_GET и $_POST, со сите податоци пратени co GET и POST соодветно. Така, контролата наречена Name, која беше пратена со POST, ќе биде зачувана како $_POST['Name'].
Снимете го овој код во датотека process.php во истиот директориум како и form.html:
    <nowiki><?php
    //Check whether the form has been submitted
    if (array_key_exists('check_submit', $_POST)) {
      //Converts the new line characters (\n) in the text area into HTML line breaks (the <br /> tag)
      $_POST['Comments'] = nl2br($_POST['Comments']);
      //Check whether a $_GET['Languages'] is set
      if ( isset($_POST['Colors']) ) {
        $_POST['Colors'] = implode(', ', $_POST['Colors']); //Converts an array into a single string
      }   
   
      //Let's now print out the received values in the browser
      echo "Your name: {$_POST['Name']}<br />";
      echo "Your password: {$_POST['Password']}<br />";
      echo "Your favourite season: {$_POST['Seasons']}<br /><br />";
      echo "Your comments:<br />{$_POST['Comments']}<br /><br />";
      echo "You are from: {$_POST['Country']}<br />";
      echo "Colors you chose: {$_POST['Colors']}<br />";
    } else {
        echo "You can't see this page without submitting the form.";
    }
    ?></nowiki>
Во првиот ред, се проверува дали е страната со податоци испратена и оваа скрипта да не се изврши сама. Следно, се конвертираат новите редови во HTML <br/>. Потоа се проверува дали низата полна, а ако е се користи функцијата implode() да се конвертира $_POST['Colors'] низата во една текстуална променлива. Последно, се печатат податоците во прелистувачот.
===GET и POST===
Кога дефинираме метод да испраќа податоци до PHP скрипта, користиме или GET или POST методи. И двата праќаат променливи до скриптата, но тоа го прават на различен начин.
GET методот ги праќа своите променливи во адресата на web прелистувачот, во URL. Така пратените податоци, може лесно да се видат од од други корисници, а може и да се изменуваат. Затоа, овој метод не треба да се користи кога се праќаат шифри или други приватни податоци. Исто така, не треба да се користат кога се прават некои акции и измени на серверот, како менување и снимање податоци во бази. Меѓутоа, се користи поради тоа што кога податоците се прикажани во URL-то, таа страна може да се сними во омилени и да се запамти (bookmarks).
Методот GET има лимит за пратените податоци. Така, како резултат на ова, ако испраќате голем број податоци има можност да изгубите голем дел од нив.
Методот POST, ги праќа своите променливи во позадина и нема лимит на големината на испратените податоци. Бидејќи податоците не се пратени преку URL, не може оваа страна да се стави во омилени.
==PHP колачиња==
Колаче, е име кое се користи за порака која е пратена од web серверот до клиентскиот web прелистувач. Прелистувачот ги памти овие пораки во мали текстуални датотеки локално, на компјутерот на корисникот. Секој пат, кога истиот компјутер ќе побара страна, колачето се праќа назад до серверот.
Има многу работи кои може да се прават користејќи колачиња. Тие се користат за чување податоци за корисникот, посетени страни, резултати од гласања итн. Главна намена на колачињата е да идентификуваат корисници и (ако е можно) да ги припремат страните за прикажување.
Обично колачињата се користат за чување мала количина  податоци. Web страните можат да ги читаат податоците од колачињата и да ги користат по потреба. Иако колачињата не можат да наштетат, некои корисници забрануваат пристап до нивните компјутери со помош на колачиња, бидејќи се загрижени за приватноста. Во овој случај мора да користите сесии (Sessions).
===Како да се креира колаче?===
PHP колачињата може да се креираат користејќи ја функцијата setcookie(). Синтаксата е следна:
setcookie(name[, value[, expire[, path[, domain[, security]]]]])
 
[name] – Името на колачето. Имињата на сите пратени колачиња се снимани како суперглобална низа $_COOKIE.
[value] – Вредноста на колачето. Таа е врзана со името.
[expire] – Времето за кое колачето веќе нема да биде валидно (во секунди).
[path] – Ја дава точната адреса на домејнот кој може да го користи тоа колаче.
[domain] – Домејнот за кој колачето е валидно. Ако не е специфицирано, тогаш оваа вредност е домејнот на оној кој што го креирал колачето.
[security] – Кажува дали колачето ќе биде пратено преку HTTPS. Вредноста 1 кажува дека ќе биде пратено преку сигурна врска, но дека може да не е сигурно. Колачето е обична текстуална датотека, па не е секогаш сигурно. Вредноста 0 значи дека ќе биде пратено низ стандарда HTTP постапка.
Во овој пример, ќе се креира колаче со име "MyCookie" и ќе му се даде вредност "PHP tutorial". Исто така, се даваат информации дека колачето ќе престане да важи после 1 час и дека тоа важи за сите страни во директориумот tutorials.
    <nowiki><?php
        setcookie("myCookie", "PHP Tutorial", time()+3600, "/tutorials");
    ?></nowiki>
Поради начинот на кој работат колачињата со HTTP, важно е да се праќаат сите колачиња пред било каков излез на екран. Ова значи дека ќе се повикаат сите функции пред да се отпечатат или прикажат резултати. Ако не, тогаш PHP ќе соопшти и колачињата нема да бидат испратени.
===Како да се добијат податоци од колаче?===
Откако е направено колачето, податоците од него треба да се извлечат. Како што е претходно кажано, имињата на колачињата се снимени во суперглобалната низа $_COOKIE. Во овој случај, ќе се повика претходното колаче кое го креиравте:
    <nowiki><?php
        echo "The cookie value is ".$_COOKIE['myCookie'];
    ?></nowiki>
Излезот од ова е: "The cookie value is PHP Tutorial".
===Како да се избрише колаче?===
По правило, колачињата се бришат кога ќе се затвори прелистувачот. Тоа може да се измени со тоа што ќе се даде вредност, време, за колку тоа колаче да се избрише. За да се осигурате дека тоа време, не е поминато време (време во минатото), се користи функцијата time() која ќе го даде моменталното време.
 
==Динамично генерирање слики==
Динамичното генерирање слики може да биде многу корисна вештина. PHP има неколку вградени функции за генерирање слики, пр., да се генерираат, да се менуваат постоечки... За да се користат овие, треба да биде инсталирана GD библиотеката. Во овој туторијал, ќе биде покажано како да се добијат интересни и корисни ефекти користејќи функции за работа со слики. Ќе се разгледаат две практични операции: креирање сигурносни слики (captcha) и график користејќи нумерички вредности добиени од MySQL база на податоци.
===Креирање сигурносни слики===
Еве ја функцијата која креира сигурносна слика (captcha). Следно ќе биде детално разгледан секој чекор во генерирањето слика.
    <nowiki><?php
        create_image();
        exit;
 
        function create_image()
        {
            $md5 = md5(rand(0,999));
            $pass = substr($md5, 10, 5);
            $width = 100;
            $height = 20;
            $image = ImageCreate($width, $height);
            $white = ImageColorAllocate($image, 255, 255, 255);
            $black = ImageColorAllocate($image, 0, 0, 0);
            $grey = ImageColorAllocate($image, 204, 204, 204);
            ImageFill($image, 0, 0, $black);
            ImageString($image, 3, 30, 3, $pass, $white);
            ImageRectangle($image, 0, 0, $width-1, $height – 1, $grey);
            imageline($image, 0, $height/2, $width, $height/2, $grey);
            imageline($image, $width/2, 0, $width/2, $height, $grey);
            header("Content-Type: image/jpeg");
            ImageJpeg($image);
            ImageDestroy($image);
        }
    ?></nowiki>
За да се креира нова слика или да се измени постоечка, треба да се направи идентификатор за неа. Во претходниот пример, креиравме празен простор со повикување на функцијата ImageCreate() и со давање на параметрите $width и $height. Друг начин ова да се направи е со повикување слика од постоечка датотека. Во зависност од форматот на сликата, може да се користат следниве функции: ImageCreateFromPNG(), ImageCreateFromGIF(), ImageCreateFromJPEG(). Параметарот на секоја од овие функции е името на датотеката.
Потоа треба да ги изберете боите кои ќе се користат при цртањето. За ова се користи функцијата ImageColorAllocate() и идентификатори за црвена, зелена и сина боја.
Во следниот чекор, се генерира сликата. Прво користејќи ја функцијата ImageFill() креирате црна позадина. Параметри овде се идентификаторот за сликата, координати и боја. Тогаш користите ImageString() за да се додаде текст на сликата. Нејзини параметри се идентификатор за сликата, фонт, координати за текстот и боја на текстот. На крај, се цртаат две линии и правоаголник за да се заштити сликата. Правоаголникот е со димензии помали од целата слика, за да не се поклопи со рамката на сликата.
Кога сликата е направена, може да ја користите како посебна слика и во прелистувач. Во овој пример е покажано како таа се користи директно во прелистувачот. Прелистувачот треба да се информира за тоа каква датотеката доаѓа кај него, па затоа се користи функцијата header() која кажува од кој MIME тип е датотеката. Откако ќе се заврши со работа со сликата, треба да се исчисти просторот кој таа го зафатила во меморија. За тоа се користи ImageDestroy().
===Креирање график===
Во следиот пример, ќе биде направен график користејќи податоци од MySQL база на податоци. Прво ќе биде дадено како да се направи базата и податоците во неа, а потоа пристапот до нив со PHP.
    <nowiki>CREATE DATABASE `poll`;
    USE poll;
   
    CREATE TABLE `results` (
      book_type VARCHAR(50),
      num_votes INT
    );
   
    INSERT INTO `results` values 
        ('Classic', 15),
        ('Fantasy', 7),
        ('Humor', 32),
        ('Mystery', 12),
        ('Poetry', 25);</nowiki>
Скриптата за правење график е прилично долга, па ќе биде поделена на два дела и дискутирана поединечно. Првата скрипта се врзува за базата и ги зема податоците кои ќе бидат прикажани.
    <nowiki><?php
        $dbhandle = mysql_connect("localhost", "root", "")
            or die("Unable to connect to mysql");
        $selected = mysql_select_db("poll", $dbhandle)
            or die("Cannot select examples");
        $result = mysql_query("SELECT * FROM results");
        $num_poller = mysql_num_rows($result);
        $total_votes = 0;
        while($row = mysql_fetch_array($result)){
            $total_votes += $row{'num_votes'};
        }
        mysql_data_seek($result, 0);
        mysql_close($dbhandle);</nowiki>
Во вториот дел на скриптата ќе биде пресметано се што е потребно за графикот. Тогаш ќе се спреми примарната слика и излезот со податоците. Резултатите од секој тип се добиени од базата, процентите се пресметани и столбовите и текстот под нив се прикажани.
Во оваа скрипта ќе се користат TrueType фонтови. Прво треба да се даде адресата на која се наоѓаат фонтовите. За ова постои системска променива GDFONTPATH. Потоа се кажува името на фонтот. TrueType фонтовите се обработуваат со ImageTTFText().  
Еве ја и скриптата. Таа користи функции кои веќе се објаснети во цртањето сигурносна слика:
    <nowiki>putenv('GDFONTPATH='pateka_do_font');
    $font = 'arial';
    $y = 50;
    $width = 700; //Image width in pixels
    $bar_height = 20; //Bars height
    $height = $num_poller * $bar_height * 1.5 + 70; //Calculating image height
    $bar_unit = ($width - 400) / 100; //Distance on the bar chart standing for 1 unit
   
    //Create the image resource
    $image = ImageCreate($width, $height);
   
    //We are making four colors, white, black, blue and red
    $white = ImageColorAllocate($image, 255, 255, 255);
    $black = ImageColorAllocate($image, 0, 0, 0);
    $red = ImageColorAllocate($image, 255, 0, 0);
    $blue = imagecolorallocate($image,0,0,255);
   
    //Create image background
    ImageFill($image,$width,$height,$white);
    //Draw background shape
    ImageRectangle($image, 0, 0, $width-1, $height-1, $black);
    //Output header
    ImageTTFText($image, 16, 0, $width/3 + 50, $y - 20, $black, $font, 'Poll Results');
   
    while ($row = mysql_fetch_object($result)) {
        if ($total_votes > 0)
            $percent = intval(round(($row->num_votes/$total_votes)*100));
        else
        $percent = 0;
   
        //Output header for a particular value
        ImageTTFText($image,12,0,10, $y+($bar_height/2), $black, $font, $row->book_type);
        //Output percentage for a particular value
        ImageTTFText($image, 12, 0, 170, $y + ($bar_height/2),$red,$font,$percent.'%');
   
        $bar_length = $percent * $bar_unit;
   
        //Draw a shape that corresponds to 100%
        ImageRectangle($image, $bar_length+221, $y-2, (220+(100*$bar_unit)), $y+$bar_height, $black);
        //Output a bar for a particular value
        ImageFilledRectangle($image,220,$y-2,220+$bar_length, $y+$bar_height, $blue);
        //Output the number of votes
        ImageTTFText($image, 12, 0, 250+100*$bar_unit, $y+($bar_height/2), $black, $font, $row->num_votes.' votes cast.');
   
        //Going down to the next bar
        $y = $y + ($bar_height * 1.5);
       
    }
 
    //Tell the browser what kind of file is come in
    header("Content-Type: image/jpeg");
   
    //Output the newly created image in jpeg format
    ImageJpeg($image);
   
    //Free up resources
    ImageDestroy($image);
    ?></nowiki>
===Користење динамички генерирани слики на други страници===
Бидејќи заглавјето (header), се испраќа само еднаш до серверот и тоа е единствениот начин да му се каже на прелистувачот што да очекува, не е лесно да се стават автоматски генерирани слики. Има три начини да се направи тоа:
1.Целата страна да зависи од сликата
2.Ќе ја снимите сликата како некоја датотека ќе се обраќате кон неа со <img>
3.Ќе ставите скрипта која сама ќе генерира слика во <img>
    <nowiki><img height="120" alt="Dynamically generated image" src="generate_image.php" width="200"></nowiki>
 
==Безбедно качување датотеки на сервер==
PHP го прави качувањето датотеки на сервер едноставно. Можете да качите каква и да е датотека на web серверот. Но со едноставноста доаѓа и опасноста, па мора да бидете внимателни кога дозволувате качување.
Во овој туторијал ќе биде разгледано како да качите датотеки во одреден директориум на web серверот, а притоа да не настанат проблеми и ќе бидат разгледани безбедносните проблеми кои може да се јават.
===HTML форма===
Пред да го користите PHP за управување со датотеките, треба да се направи HTML формата која ќе даде интерфејс за корисникот, да ја пронајде и качи својата датотека.
    <nowiki><html>
    <body>
      <form enctype="multipart/form-data" action="upload.php" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
        Choose a file to upload: <input name="uploaded_file" type="file" />
        <input type="submit" value="Upload" />
      </form>
    </body>
    </html>
    </nowiki>
Има неколку правила што треба да ги знаете за кога правите HTML форма. Прво, бидете сигурни дека го користите POST методот. Второ, на формата и е потребен enctype="multipart/form-data" атрибутот. Без ова качувањето на датотеки нема да работи.
Друго нешто што треба да се спомне е скриеното поле во формата, наречено MAX_FILE_SIZE. Некои прелистувачи ја гледаат оваа променлива и нема да дозволат качување на датотеки поголеми од овој број (во бајти). За оваа променлива треба да внесете број ист како што е внесено во php.ini датотеката, за најголемо качување на датотеки. Во php.ini е внесено upload_max_filesize = 2MB. Но, сепак не можете да бидете сигурни дека скриптата нема да биде нападната со поголем број податоци. На пр., напаѓач може да внесе во скриптата повеќе датотеки со максимална големина, со цел да се сруши серверот. Затоа, наместете го post_max_size во php.ini на максималната големина што сакате да ја добие Вашиот web сервер (мора да биде поголема од upload_max_filesize). Основната вредност е 10МВ. Ова ја контролира максималната големина на сите POST податоци, во еден обид. Исто така осигурајте се дека file_uploads во php.ini е наместен на On.
Погледнете го делот со type="file". Тоа е наместено така, за да овозможи наоѓање датотеки на системот. Овозможува внесување адреса до датотеката и копче Browse.
Кога корисникот внесува патека до датотеката, кликнува на копчето Submit и датотеката ќе биде пратена до upload.php. PHP скриптата ја превзема контролата.
===Обработување на податоците од формата===
Кога датотеката е качена, PHP креира привремена копија од неа и гради суперглобална низа $_FILES која содржи податоци за датотеката. За секоја датотека се запишуваат пет податоци:
$_FILES["uploaded_file"]["name"] – Оригиналното име на датотеката од корисничката машина
$_FILES["uploaded_file"]["type"] – MIME типот на качената датотека
$_FILES["uploaded_file"]["size"] – големината на качената датотека
$_FILES["uploaded_file"]["tmp_name"] – локацијата на која е снимена датотеката привремено
$_FILES["uploaded_file"]["error"] – код со грешка која се јавила за време на качувањето
Следниот пример покажува прифаќање на датотека и нејзино снимање во директориум upload. Скриптата дозволува качување само на JPEG слики помали од 350КВ:
    <nowiki><?php
    if ((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
        $filename = basename($_FILES['uploaded_file']['name']);
        $ext = substr($filename, strpos($filename, '.') + 1);
        if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && ($_FILES["uploaded_file"]["size"] < 350000)) {
            $newname = dirname(__FILE__).'/upload/'.$filename;
            if (!file_exists($newname)) {
                if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $newname))){
                    echo "It's done! The file is saved as: ".$newname;
                } else {
                    echo "Error: a problem occurred during file upload";
                }
            } else {
                echo "Error: File ".$_FILES["uploaded_file"]["name"]." already exists";
            }
        } else {
            echo "Error: Only .jpg images under 350Kb are accepted for upload";
        }
    } else {
        echo "Error: No file uploaded";
    }
    ?></nowiki>
Пред што и да правите со качените датотеки, треба да проверите дали тие се вистински качени. Потоа проверувате дали датотеката е JPEG и нејзината големина помала од 350KB. Следно, се проверува дали постои патеката на која треба да се качи датотеката и дали постои веќе некоја со исто име. Откако ќе се завршат овие проверки, се копира датотеката од локалниот компјутер на серверот. Ако е качувањето успешно, ќе биде објавена позитивна порака. Бидете сигурни дека датотеката на која сакате да запишувате на web серверот има дозвола за запишување и читање.


==Праќање e-mail (Текст/HTML/Датотеки)==
==Праќање e-mail (Текст/HTML/Датотеки)==

Последна преработка од 17:41, 29 јануари 2011

Што е PHP?

PHP доаѓа од HiperText Preprocessor и е програмски јазик на серверска страна. Ова значи дека посетителот отвара страна, серверот ги процесира/обработува РНР командите и го праќа резултатот до прелистувачот на клиентот. РНР е слободен програмски јазик, неговиот код е отворен и е мулти-платформски. РНР може да работи на UNIX, UNIX-like, GNU/Linux, Windows. Може да биде компајлиран со модул за Apache сервер и како бинарен за CGI.

Кога пишувате URL во полето за адреса во web прелистувачот, барате од web серверот на некој компјутер, да испрати датотека до прелистувачот на Вашиот компјутер. Ако таа датотека е HTML, тогаш таа изгледа исто и во прелистувачот и на серверот пред да ја испрати. По примањето, прелистувачот ги прикажува текстот, сликите и звуците. Во случајот со РНР страните, процесот е ист, само што има обработување пред серверот да го испрати документот. Тогаш серверот ги повикува скриптите кои се вклучени во страната.

PHP синтакса

PHP синтаксата е слична како синтаксата во C и Perl. Не мора да се декларираат променливи пред тие да се искористат. Лесно е да се направат низи хаш-асоцијативни низи. PHP има и некои рудиментирани објектно-ориентирани карактеристики, овозможувајќи лесно организирање и енкапсулирање на Вашиот код. Покрај основната синтакса, PHP носи и интерфејси за комуникација со други web страни, датабази, вкучувајќи ODBC, mySQL и други програмски јазици како Java и COM. PHP кодот влегува директно во web страната, па затоа не се потребни специјални развојни околини (IDE). Почнувате блок со <?php и завршувате со ?>. Што може PHP да направи за нас? Има многу можности што може да ги искористиме од PHP. Можете да прикажувате дата и време и други податоци, да поставувате форми кои ќе ги пополнуваат посетителите, да пристапувате до 19 видови бази на податоци, да ги обработувате нивните податоци, да праќате е-mail, да работите со групи на новости (newsgroups) ... Други можности што ги носи PHP:

1. PHP e соодветен кога сакате да креирате динамички страни кога прелистувачот ќе побара страна. Пр. да прикажувате дата и време, да листате податоци од база... 2. PHP нуди едноставно уредување на страната со можност да се направи покорисна за индивидуални корисници. 3. Со него може да се поставуваат web страните, да се контролира автентикацијата и да се пренасочуваат корисници 4. Една од најмоќните опции во PHP е пристапот до базите со податоци. Имате пристап до 19 видови бази и обработка на податоците 5. Креирајте листа на посетители, додајте thirt-party сервиси, сервиси кои нудат статистика за посетителите, колку пати Ве посетиле, од каде Ве посетиле. Со PHP вакви информации се тривијални. 6. PHP нуди едноставно праќање e-mail-и, работа со newsgroup-и, отварање конекција со други web страни и вадење податоци од нив. 7. PHP комуницира со други програмски јазици како Java и COM интерфејси. 8. PHP дозволува се! Од генерирање pdf до парсирање xml.

Вашата прва PHP скрипта

Пред да почнеме со пишување, неколку едноставни правила. Секоја линија во PHP код, мора да завршува со точка-запирка. Ако парсерот на PHP јазикот не пронајде точка-запирка, ќе продолжи да го парсира кодот се додека не наиде на една. Тогаш се јавува грешка. Наредбите со повеќе редови како условните наредби, мора да содржат { и }. Дуплите коси црти значат дека после нив следува коментар до крајот на линијата PHP страните, обично содржат HTML тагови и PHP код. PHP блок секогаш почнува со <?php и завршува со ?>. Блокот може да биде секаде низ документот. Овој код печати текст во web прелистувачот. Има две основни команди за печатење текст во прелистувачот: echo и print. Во овој пример е користена командатa echo.

   <?php
       echo "Everyone, smile!!!"; //ova e delot sto se pecati
   ?>

Запаметете дека секогаш овие датотеки се снимаат со екстензија .php – ова е важно зошто тоа му кажува на серверот како да ги третира датотеките кои ги вклучува и да го повика соодветниот интерпретер. Снимајте ја оваа датотека со некое едноставно име, на пр. "first.php" и ставете ја во root локацијата на web серверот. Откако ќе ја копирате, побарајте ја оваа адреса од web прелистувач. Во полето за адреса внесете http://localhost/first.php. Ако се функционира како што треба, во прелистувачот ќе се отвори страна со текст Everybody smile!!!. Ако не е инсталиран php или ако серверот не ја препознае екстензијата, ќе го видите кодот на скриптата. Првата скрипта е само PHP код. Него можете да го вклучите во HTML на овој начин:

   <html>
   <head>
   <title>Prva PHP skripta</title>
   </head>
   <body>
       <?php echo "Everybody smile!!!"; ?> // ova e delot sto se pecati
   </body>
   </html>

Излезот и од двете скрипти ќе биде сличен, со разлика што во втората ќе постои наслов и текстот ќе биде bold. Напомена: Ако го погледнете изворниот код на страната преку web прелистувачот, ќе видите дека цел PHP код е скриен и се што постои е HTML. Целиот PHP код е обработен пред да дојде до корисничко ниво.

PHP променливи

Променливите чуваат некоја вредност од одреден тип податоци. Може да чуваат броеви, текст, вредности за точно или неточно, објекти, ресурси или да бидат null (без податоци). Во PHP, сите променливи почнуваат со $ и вредност може да се додаде со операторот =. Знакот $ не е технички дел на променливата, но потребен за PHP парсерот да може да го препознае како променлива. Друга важна работа во PHP е тоа што сите наредби мора да завршуваат со „;". Во PHP нема потреба да се најави типот на променливата, туку тој го препознава според вредноста што и е дадена на таа променлива. Еве мал код за правење променлива и давање вредност:

   <?php
       $tekst = "Бла бла бла :) ";
       $broj = 14;
       echo $tekst;
       echo $broj;
   ?>

Излезот од оваа скрипта е: Бла бла бла :) 14

Разлики во голема и мала буква

Една работа што може да предизвика многу проблеми и да одземе часови барање грешка е разликата што ја прави PHP меѓу голема и мала буква. Еве пример:

  <?php
       $promenliva = "Прва променлива";
       $Promenliva = "Втора променлива";
       echo "$promenliva - $Promenliva";`
   ?>

Излезот од ова е: Прва променлива - Втора променлива

Правила за променливи

1. PHP променивите мора да почнуваат со буква или со долна црта „_". 2. Тие мора да бидат составени само од алфа-нумерички карактери и долни црти 3. Променливите со повеќе од еден збор се поделуваат со долна црта 4. Променливите со повеќе од еден збор може да се поврзат со голема буква пр. $мојаПроменлива

Друга важна работа да се напомене е дека нема лимит на големината на променливите.

Резервирани променливи

Покрај обичните променливите кои ги креира самиот програмер, постојат променливи кои се вградени во јазикот. Тие се запамтени како низи и до нив може да се пристапи со индекс на позицијата како име за променливите. Еве некои од овие резервирани променливи: $_SERVER – содржи информации за серверот и HTTP конекцијата. $_COOKIE – содржи колачиња пратени од сереверот, зачувани на ниво на клиентот, индексирани со име на колаче. $_GET – содржи информации пратени до серверот како текст за пребарување додаден во самото URL за да не се користат колачиња $_POST – содржи информации пратени до серверот од клиентска страна, пр. од форма за пополнување со податоци на клиентот. $_FILE – содржи информации за датотека испратена на сервер $_ENV – содржи информации за резервирани променливи на серверот

Еве пример за присапување до овие променливи:

   <?php
        $novaPromenliva = $_COOKIE["moetoPrvoKolace"];
        echo $novaPromenliva;
   ?>

PHP константи

Константите исто како променливите се користат за чување податоци. Главна разлика меѓу нив е тоа што вредностите на константите не може да се менуваат. Тие може да бидат математички константи, шифри, патеки до датотеки... Со користење на константи Вие ја „заклучувате" одредена вредност, со што таа е заштитена од промени. Не мора да барате низ целата програма за да ја промените нејзината вредност, туку само ја менувате на почетокот од програмата. Еве еден пример:

   <?php
       define("PASSWORD", "admin");
       echo (PASSWORD);		//ke ja prikaze vrednosta na promenlivata PASSWORD "admin"
       echo constant("PASSWORD");	//isto ke otpecati "admin"
       echo "PASSWORD";			//ke prikaze "PASSWORD"
   ?>

PHP обезбедува неколку вградени константи за програмерите. Пр. "_FILE_" го дава името на датотеката од која моментално интерпретерот чита. "_LINE_" ја враќа линијата во таа датотека. Овие константи се корисни за генерирање текстуални пораки со грешки. За верзијата на интерпретерот податоци може да се најдат во "PHP_VERSION" константата.

PHP низи

Низите може да се искористат на неколку начини да се чуваат и организираат податоци брзо и едноставно. Тие се едни од најкорисните типови податоци достапни во кој и да е програмски јазик. Низите наједноставно може да се објаснат како листа од елементи. До нивните елементи може да се пристапи со наведување на индексот како позиција во низата. Таа позиција може да биде со број или со име. Низите до кои се пристапува со број (индекс) се наречени индексни низи, а оние со имиња на елементите – асоцијативни низи. Во PHP сите низи се асоцијативни, но оставена е можноста за индексни низи.

Индексни низи

Пр.

   <?php
       $sedum = 7;
       $imeNaNiza = array("ova e element", 5, $sedum);
       echo $imeNaNiza[0];		//ova ke otpecati: ova e element
       echo $imeNaNiza[1];		//ova: 5
       echo $imeNaNiza[2];		//ova: 7
   ?>

Како што можете да видите елементите во низата може да бидат било кој тип податок, како и променливи. Дозволено е во една низа, некој елемент да биде повторно низа. Ако сакате да проверете дали една променлива е низа може да се користи функцијата is_array(). Забележувате дека индексните низи почнуваат со индекс 0.

Aсоцијативни низи

Асоцијативните низи користат клучеви за пристап до своите елементи. Пр.

   <?php
       $prva_niza = array ("kluc1" => "prviot element", "kluc2" => "vtoriot element");
       $vtora_niza = array(
                   "kluc3" => "prv element vo vtorata niza",
                   "kluc4" => "vtor element vo vtorata niza"
           );
       echo $prva_niza['kluc1'];		//"prviot element"
       echo $prva_niza['kluc2'];		//"vtoriot element"
       echo $vtora_niza['kluc3'];		//"prv element vo vtorata niza"
       echo $vtora_niza['kluc4'];		//"vtor element vo vtorata niza"
   ?>

Уште еден пример за користење асоцијативни низи:

   <?php
       $cokolado = array (
           "nestle" => "50",
           "milka" => "60",
           "kandi" => "10"
       );
       echo "nestle kosta $cokolado['nestle'], milka kosta $cokolado['milka'], a kandi mnjam mnjam $cokolado['kandi'].";
   ?>

Бидејќи индексите во асоцијативните низи не се броеви, ние не можеме да користиме едноставни бројачи во циклус за едноставно минување низ целата низа. Затоа со нив може да користите foreach за да итерирате низ целата низа. Еве како ќе ги прочитаме сите податоци и ќе ги внесеме во табела:

   <?php
       $cokolado = array (
           "nestle" => "50",
           "milka" => "60",
           "kandi" => "10"
       );
       //za pecatenje naslov na tabelata
           echo "<table border='1' cellpadding = '5'>";
                    echo "<tr><th>Cokolado</th><tr>";
       //ova e toa sto ke pomine niz celata niza, zemajki go $Cokolado kako kluc i $Cena kako vrednost
       foreach($cokolado as $Cokolado => $Cena)
       {	
               echo "<tr><td>$Cokolado </td><td>$Cena</td></tr>";
       }

echo

   ?>

Како да подредите низа

Често е потребно елементите во една низа да се подредат по некој редослед: опаѓачки или растечки. Ако низата содржи текстуални променливи, тогаш е потребен алфабетски редослед. Сортирањето на едно-димензионални низи е едноставно.

Сортирање нумерички индексирани низи Постои низа со текстуални променливи (string)

   <?php
       $flowers = array("rose", "daisy", "orchid", "tulip", "chamomile");
       sort($flowers);
       for ($i = 0; $i < 4; $i++) // da se otpecatat elementite
           echo $flowers[$i]."<br />";
   ?>

Во овој случај елементите ќе бидат потредени во алфабетски редослед. Излезот би бил: camomile daisy orchid rose tulip

Можете да ги сортирате низите и во нумерички редослед. Ако имате низа која пр. ги содржи цените на цвеќињата, може да се сортираат во растечки редослед. Пр.:

   <?php
       $prices = array(1.25, 0.75 , 1.15, 1.00, 0.50);
       sort($prices);
       for($i = 0; $i <= 4; $i++)
           echo $prices[$i]."<br />";
       ?>

Излезот е следен: 0.75 1.00 1.15 1.25

Да спомнеме дека во сортирањето на низите, важно е дали буквите се пишувани со голема или мала буква. Така, "A" е помало од "Z", a "Z" е помало од "a".

Сортирање асоцијативни низи

Ако користите асоцијативни низи, не може да се користи sort() за да се подредат. Ако користите sort() на асоцијативна низа, таа се подредува по нумеричките вредности на нејзиниот индекс. Затоа се користи asort() функцијата, за клучевите и вредностите да останат поврзани заедно. Следниот код креира асоцијативна низа која содржи вредности за три цвеќиња и нивните цени. Потоа ги подредува во растечки редослед, според цената.

   <?php
        $shop = array ("rose" => "5.00",
                "daisy" => "4.00",
		"orchid" => "2.00",

);

       asort($shop);
       foreach($shop as $key => $value)
           echo $key." costs ".$value." dollars<br />";
   ?></nowiki>

Овој код ќе отпечати: orchid costs 2.00 dollars daisy costs 4.00 dollars rose costs 5.00 dollars

Функцијата asort() ја подредува низата во растечки редослед според вредноста на секој елемент. Во низава, вредности се цените, а клучеви се имињата на цвеќето. Ако, на пр., сакате да ги сортирате според клучевите, се користи функцијата ksort(). Следниов код ќе даде подредена низа според клучевите:

   <?php
       $shop = array ("rose" => "5.00",
           "daisy" => "4.00",

" orchid" => "2.00" );

       ksort($shop);
       foreach($shop as $key => $value)
           echo $key." costs ".$value." dollars<br />";
   ?>

Излезот: daisy costs 4.00 dollars orchid costs 2.00 dollars rose costs 5.00 dollars

Сортирање низи во обратен редослед Сите разгледани функции досега, сортираат во растечки редослед. Секоја од овие функции: sort(), asort(), ksort() имаат функции кои работат обратно од нив: rsort(), arsort(), krsort(), соодветно. Користењето на овие функции е исто како претходните.

Мулти-димензионални низи

Низите често не се само листа на подредени клучеви и вредности. Секој елемент во една низа, може да содржи друга низа, која исто така може да има свои низи. Со таков принцип, може да се креираат две-димензионални или три-димензионални низи.

Две-димензионални низи

Замислете дека сте сопственик на продавница за цвеќе. Едно-димензионална низа е доволна за да се чуваат вредности за цвеќето и цената. Но, ако сакате да чувате повеќе од една вредност, тогаш Ви треба нешто друго. Решението е во мулти-димензионалните низи. Табелата подолу може да прикаже дво-димензионална низа. Секој ред претставува тип на цвеќе, а секоја колона одреден атрибут за цвеќето.

Title Price Number rose 1.25 15 daisy 0.75 25 orchid 1.15 7

Да зачувате вредности во мулти-димензионална низа, се користи нешто како овој код:

   <?php
       $shop = array ("rose", 1.25, 15),
           array ("daisy", 0.75, 25),
           array ("orchid", 1.15, 7)
       );
   ?>

Овој код покажува дека променливата $shop, сега содржи три низи. За да добиете вредности од едно-димензионална низа, треба да го кажете името на низата и индексот. Истото е потребно и за дво-димензионалните низи, со една разлика: секој елемент има два индекси, ред и колона. За да ги прикажете елементите од оваа низа, може да користите for внатре во for, вгнездени циклуси.

   <?php
        echo "<h1>Pristap do sekoj element</h1>";
        echo $shop[0][0]." costs ".$shop[0][1]." and you get ".$shop[0][2]."<br />";
        echo $shop[1][0]." costs ".$shop[1][1]." and you get ".$shop[1][2]."<br />";
        echo $shop[2][0]." costs ".$shop[2][1]." and you get ".$shop[2][2]."<br />";
        echo "<ol>";
        for ($row = 0; $row < 3; $row++)
        {
        	echo "<ul>";
        	for ($col = 0; $col < 3; $col++)
        	{
        		echo "<li>".$shop[$row][$col]."</li>";
        	}
        	echo "</ul>";
        	echo "</li>";
        }
        echo "</ol>";
    ?>

Наместо користење на индексите за број на колона, може да се користат нивните имиња. За ова се користат асоцијативни низи. Следниот код, ќе ја направи истата низа, користејќи имиња за колоните.

   <?php 
       $shop = array( array( Title => "rose",
                     Price => 1.25,
                     Number => 15 
                   ),
              array( Title => "daisy", 
                     Price => 0.75,
                     Number => 25,
                   ),
              array( Title => "orchid", 
                     Price => 1.15,
                     Number => 7 
                   )
            );
   ?>

Полесно е да се работи со овие низи, во случај да треба да добиете една вредност од неа. Потребниот податок лесно се пронаоѓа ако го побарате со точното име на ред и колона. Меѓутоа се губи можноста да се поминува целата низа со едноставен for. Еве еден начин на кој може да се помине целата низа:

   <?php 
        echo "<h1>Manual access to each element from associative array</h1>";
        for ($row = 0; $row < 3; $row++)
        {
            echo $shop[$row]["Title"]." costs ".$shop[$row]["Price"]." and you get ".$shop[$row]["Number"];
            echo "<br />";
        }

        echo "<h1>Using foreach loop to display elements</h1>";
        echo "<ol>";
        for ($row = 0; $row < 3; $row++)
        {
            echo "<li><b>The row number $row</b>";
            echo "<ul>";
            foreach($shop[$row] as $key => $value)
            {
                echo "<li>".$value."</li>";
            }
            echo "</ul>";
            echo "</li>";
        }
        echo "</ol>";
    ?>

Три-димензионални низи

Не мора да бидете ограничени на две-димензионални низи. И тие низи што се внатре може да содржат други низи. Три-димензионалните низи се карактеризираат со висина, ширина и длабочина. Ако можете да замислите две-димензионална низа како табела, пробајте да замислите повеќе такви табели една позади друга. Секој елемент би бил претставен со ниво, ред и колона. Ако ги класифицираме цвеќињата во една продавница по категории, тогаш податоците за нив ќе треба да ги чуваме во три-димензионална низа. Еве како може тоа да се изврши:

   $shop = array(array(array("rose", 1.25, 15),
                   array("daisy", 0.75, 25),
                   array("orchid", 1.15, 7) 
                  ),
             array(array("rose", 1.25, 15),
                   array("daisy", 0.75, 25),
                   array("orchid", 1.15, 7) 
                  ),
             array(array("rose", 1.25, 15),
                   array("daisy", 0.75, 25),
                   array("orchid", 1.15, 7) 
                  )
            );
   ?>

Оваа низа има само нумерички индекси, па може да се користат вгнездени for циклуси за да се прикажат сите податоци:

   <?php
        echo "<ul>";
        for ( $layer = 0; $layer < 3; $layer++ )
        {
            echo "<li>The layer number $layer";
            echo "<ul>";
            for ( $row = 0; $row < 3; $row++ ) 
            {
               echo "<li>The row number $row";
               echo "<ul>";
               for ( $col = 0; $col < 3; $col++ )
               {
                   echo "<li>".$shop[$layer][$row][$col]."</li>";
               } 
               echo "</ul>";
               echo "</li>";
            }
            echo "</ul>";
            echo "</li>";
        }   
        echo "</ul>";
    ?>

Овој начин на креирање низи, овозможува креирање на четири и пет-димензионални низи. Синтаксичките правила не го ограничуваат бројот на димензии.

PHP условни наредби

Понекогаш кога пишувате код, доаѓа до случај кога треба да се избере едно или друго. Овде се користат наредби за услов. Условните наредби се сет од команди користени да изведуваат различни акции врз основа на различни услови. Овде ќе се разгледаат две структури: if…else и switch.

if…else

На пример треба да се провери дали една променлива има вредност точно или неточно, дали некоја текстуална променлива го содржи одреден текст, дали објектот е празен или полн... Условот може да биде што и да е, што и да поставиме. Синтаксата на if структурата е:

   if (услов) {
   	наредби1
   } else {
   	наредби2
   }

Пр.

   <?php
        $rezultat = 70;
        if ($rezultat >= 57) {
            echo "Uslovot pomina kako token <br />";
        }
        else {
       	    echo "Uslovot ne pomina <br />";
        }
    ?>

Следниот пример ќе покаже работа со elseif. Тоа се користи во сличаи кога треба за повеќе вредности да се прикажат различни резултати.

   <?php
       $rezultat = 70;
       if ($rezultat >= 75) {
           echo "izlez 1";
       }
       elseif ($rezultat >= 60) {
           echo "izlez 2";
       }
       elseif($rezultat >= 45) {
      	    echo "izlez 3";
       }
       else {
   	    echo "izlez 4";
       }
   ?>

Командата switch

Оваа команда работи исто како if. Со неа се овозможува проверка за повеќе вредности што кај if e понепрегледно и побавно. Синтаксата за switch:

   switch (израз) {
      case случај 1:
         наредби_1
         [break;]
      case случај_2:
         наредби_2
         [break;]
      ...
      default:
        наредби_n
        [break;]
   }

Програмата прво бара случај што се поклопува и потоа му ја предава контролата нему. Ги извршува наредбите што се дадени и излегува од switch. Ако не се пронајде случај кој се поклопува програмата бара default и ако постои ги извршува тие наредби. Ако не најде ни default програмата продолжува со работа без приказ од switch. break се користи за да се прекине автоматско поминување на следниот случај. Кога ќе се извршат наредбите од пронајдениот случај, програмата да продолжи со работа надвор од switch. Пр.:

   $flower = "rose";
   switch ($cokolado)
   {
       case "milka" : 
       echo $cokolado." costs 60den.";
       break;
       case "nestle" : 
       echo $cokolado." costs 50den.";
       break;
       case "kandi" : 
       echo $cokolado." costs 10den";
       break;
       default : 
       echo "Nema takvo cokolado vo prodavnicata :(";
       break;
   }

Може да се прават проверки со математички операции како поголемо, помало или еднакво:

   <?php
       $broj = 5;
       switch ($broj) {
       case 0:
           echo "Nula ne e validen slucaj.";
           break;
       case $ broj < 0:
           echo "Negativni broevi ne se dozvoleni.";
           break;
       default:
           echo "Vnesen e pozitiven broj.";
       break;
       }
   ?>

Откако ќе пронајде услов кој се исполнува PHP престанува со барање друг случај.

Циклуси

Во програмирањето, често е потребно да се повторува еден ист блок од наредби. Тоа се случува одреден број пати, дадено од програмерот, или додека не се исполни некој услов. Ова се прави со наредби за скок или циклуси. PHP има две главни групи на овие наредби: for и while. Наредбата for, најмногу ни служи за повторување одреден број пати некои наредби да се извршуваат. Наредбата while, се користи за повторување на неодреден број пати, додека некој услов не се исполни. Овде се користат break и continue за контрола на скоковите.

while

Наредбата while извршува еден блок наредби, ако и додека еден услов е точен. Ако условот станува неточен, контролата се префрла на наредбата што следува после неа. Синтаксата е ваква:

   while (condition) 
   {
       naredbi;
   }

Блокот наредби кој е внатре во while циклусот секогаш е затворен со { и }. Овие загради му кажуваат на PHP кои наредби да ги повторува. while се користи за работење со листи каде што не се знае точниот број на елементи во неа:

   while (seuste ima redovi vo bazata)
   {
   	citaj od eden red;

pomini na sledniot red;

   }

Следниот пример извршува циклус каде што почетната вредност е 0. Овој циклус ќе се повторува се додека i е помала или еднаква на 10, а ќе се зголемува на секој скок:

   <?php
       $i = 0;
       while ($i <= 10)
       {
           echo "Brojot e: ".$i."<be/ >";
   	    $i++;
       }
   ?>

Сега да погледнеме покорисен пример. Еве како се прави паѓачко мени за денови, месеци и години. Овој код може да се искористи во форма за регистрација:

   <?php
       $month_array = array( "January", "February", "March", "April", "May", "June",
                     "July", "August", "September", "October", "November", "December");
       echo "<select name=\"day\">";
       $i = 1;
       while ( $i <= 31 ) {
           echo "<option value=".$i.">".$i."</option>";
          $i++;
       }
       echo "</select>";
       echo "<select name=\"month\">";
       $i = 0;
       while ( $i <= 11 ) {
           echo "<option value=".$i.">".$month_array[$i]."</option>";    
       $i++;
       }
       echo "</select>";
       echo "<select name=\"year\">";
       $i = 1900;
       while ( $i <= 2007 ) {    
          echo "<option value=".$i.">".$i."</option>";    
          $i++;
       }
       echo "</select>";
   ?>

Бидете сигурни дека условот во некој случај ќе стане неточен. Инаку, циклусот нема никогаш да заврши.

do...while

Наредбите do...while се слични на while, само што условот се проверува на крајот од секое извршување на наредбите во него. Тоа значи дека do...while секако ќе се изврши барем еднаш. Еве ја синтаксата:

   do
   {
       naredbi;
   }
   while (condition);

Следниот код, ќе ја зголемува вредноста на i за еден се додека таа е помала или еднаква на 10:

   <?php
        $i = 0;
        do {
    	    echo "Brojot e ".$i."<br/>";
	    $i++;
        }
        while ($i <= 10);
    ?>

for

Наредбата for се користи кога точно знаете колку пати сакате некоји наредби да се извршат. Затоа за for се вели дека е конечен циклус. Синтаксата е поразлична од претходните:

   for (inicijalizacija; uslov; skok)
   {
   	    naredbi;
   }

Трите изрази што ги добива for се разделени со ;. Ова се случува кога се извршува for: 1.Се иницијализираат бројачи, кои ќе се менуваат според скокот. 2.Се проверува условот. Ако условот е точен, се извршуваат наредбите внатре, ако не-се прекинува. 3.Се изменува бројачот според скокот. 4.Се извршуваат наредбите и контролата оди пак на чекор 2.

Еве еден едноставен пример:

   <?php 
        for ($i = 0; $i <= 10; $i++)
        {
            echo "Brojot e ".$i." <br/>";
        }
    ?>

Пр. со вгнездени циклуси:

   <?php
        echo "<h1>Multiplication table</h1>";
        echo "<table border=2 width=50%"; 

        for ($i = 1; $i <= 9; $i++ ) {   //nadvoresen ciklus
            echo "<tr>";
            echo "<td>".$i."</td>";
  
        for ( $j = 2; $j <= 9; $j++ ) { // vnatresen ciklus
            echo "<td>".$i * $j."</td>";
        }

        echo "</tr>";
        } 
        echo "</table>"; 
    ?>

Еве уште еден пример што користи две променливи. Една за да ги собира сите броеви од 1 до 10, а друга да ги собира само истите.

   <?php
        $total = 0;
        $even = 0;
        for ($x = 1, $y = 1; $x <=10; $x++, $y++)
        {
            if (($y % 2) == 0)
            {
                $even = $even + $y;
            }
            $total = $total + $x;
        }
        echo "Celiot zbir e ".$total."<br/>";
        echo "Zbirot na ednakvite e ".$even;
    ?>

foreach

foreach е варијација на for и помага да се итерира низ елементи од една низа. Има две различни варијанти на foreach циклусот:

   foreach (array as value)
   {
       naredbi;
   }

и

   foreach (array as key => value)
   {
       naredbi;
   }

Пример, печатење вредности од една низа:

   <?php
        $email = array('john.smith@server.com', 'alex@server.com' );
        foreach ($email as value)
        {
            echo "Sending mail to ".$value."<br/>";
        }
    ?>

PHP ги извршува наредбите кои му се дадени на foreach онолку пати колку што има вредности во низата. Елементите се пронаоѓаат според нивниот внатрешен редослед. Циклусот продолжува се додека не се поминат сите елементи и не дојде до крај на низата. Другиот вид на foreach наредби се користи со асоцијативни низи:

   <?php
        $person = array('name' => 'Andrew', 'age' => 21, 'address' => '77, Lincoln st.');
        foreach ($person as $key => $value)
        {
            echo $key." is ".$value."<br/>";
        }
    ?>

Во овој случај, клучот за дава на променливата $key, а вредноста на променливата $value. За време на извршувањето на foreach циклусот, тој не работи со вистинската низа, туку со копија од неа. За време на секој циклус, може да се манипулира со $value, но вистинската вредност останува иста.

break и continue

Понекогаш не треба да се чека циклусот да заврши сам од себе, туку треба да и се даде контрола на некоја наредба таа да го прекине. Тоа се извршува со continue и break. break, го прекинува тековниот while или for циклус и продолжува со извршување на кодот после нив. Дури може да се даде вредност после break, со која ќе се каже колку нивоа да бидат прескокнати. Еве пример за користење на break:

   <?php
        echo "<p><b>Example of using the Break statement:</b></p>";

        for ($i=0; $i<=10; $i++) { 
            if ($i==3){break;} 
            echo "The number is ".$i;
            echo "<br />"; 
        }

        echo "<p><b>One more example of using the Break statement:</b><p>";

        $i = 0;
        $j = 0;

        while ($i < 10) {
            while ($j < 10) {
                if ($j == 5) {
                    break 2;
                } // breaks out of two while loops
                $j++;
            }
            $i++;
        }

        echo "The first number is ".$i."<br />";
        echo "The second number is ".$j."<br />";
    ?>

Наредбата continue го прекинува извршувањето на блокот наредби и продолжува со извршување со следниот скок:

   <?php
        echo "<p><b>Example of using the Continue statement:</b><p>";

        for ($i=0; $i<=10; $i++) { 
            if (i==3){continue;} 
            echo "The number is ".$i; 
            echo "<br />"; 
        } 
    ?>

Функции

Функција е блок наредби, кои може да бидат повикани од кој и да е дел од скриптата откако таа ќе биде декларирана. Кодот запишан во функција се игнорира, се додека таа функција не се повика. Со ова се добива на брзина, се намалуваат грешките и се зголемува прегледноста затоа што не се користат долги, комплицирани кодови. За да се декларира функција, потребна е оваа синтакса:

   <?php
       function ime_na_funkcija(param_1, ... , param_n)
       {
           naredbi;
           return povratna_vrednost;
       }
   ?>

Во функциите може да се додаваат и други вредности како променливи, така што тие ќе бидат локални променливи.

Креирање едноставна функција

Првата функција, ќе отпечати "php rulez" пет пати, но таа нема да прими параметри. Втората ќе добие параметри. Параметарот е податок кој е потребен за функцијата да се изврши. Пр: <?php function first() { for($i = 0; $i !=5; $i++) echo "<p>php rulez!</p>"; } function second($num, $msg) { for($i = 0; $i != $num; $i++) echo "<p>". $msg ."</p>"; } echo "Ova e pred da se povikaat funkciite.<br>"; echo "Izlezot od prvata funkcija e: " first(); echo "Ova e izlezot od vtorata funkcija: " second(5, "bla bla bla"); echo "Ova e posle dvete funkcii<br>";  ?> Следниот пример, креира функција која може да пресмета аритметичка средина и да го даде резултатот: <?php function ar_sr($a, $b) { $result = ($a + $b) / 2; return $result; } echo ar_sr(4, 6), "<br>"; echo ar_sr(2314, 12412), "<br>";  ?>

Домен на променливите и време на живот

Важно е да се напомне дека ако дефинирате променливи внатре во функциите, таа променлива е достапна само внатре во функцијата. Таа не може да се користи во другиот дел од кодот или во друга функција. Доменот на променливите во функцијата е локален. Функцијата што треба да користи променлива која е дефинирана надвор од неа, мора да ја повика со клучниот збор global:

   <?php
        function AddingNumbers()
        {
            global $sum = 2 + 2;
        }
        $sum = 0;
        AddingNumbers();
        echo "2 + 2 = ".$sum;
    ?>

Додека доменот на променливата дефинирана во функцијата е локален, променливата во главниот код е глобална. Зборчето global му кажува на PHP да бара променлива надвор од функцијата. Променлива која е дефинирана во програмскиот код, е жива се додека скриптата се извршува. Кога таа ќе заврши, престанува да постои. Променлива која е во функција, постои се додека се извршува функцијата.

Обработка на форми со PHP

Една од најдобрите работи во PHP е можноста да одговори на барања на корисникот и да испраќа податоци од HTML форми. Можете да обработувате податоци генерирани од една HTML форма, да донесувате заклучоци врз основа на неа и да креирате динамични web страни.

HTML форма

Пред да почнете да ги обработувате информациите добиени од корисникот, треба да креирате HTML форма од која тие податоци ќе ги соберете. Има два методи кои се користат за праќање податоци: GET и POST. Овие два методи се дефинирани во HTML елементите, како нивни атрибути. Исто така ќе мора да дадете и адреса на датотеката која ќе ги обработува овие информации. Еве една HTML форма која ќе испраќа податоци, користејќи го POST методот. Информациите пратени од формата со овој метод се невидливи за другите и не е ограничена количината на податоци кои се праќаат. Името на оваа датотека нека биде form.html.

   <html> 
    <head> 
        <title>Process the HTML form data with the POST method</title> 
    </head> 
    <body> 
      <form name="myform" action="process.php" method="POST">
        <input type="hidden" name="check_submit" value="1" />
        Name: <input type="text" name="Name" /><br />
        Password: <input type="password" name="Password" maxlength="10" /><br />
        Select something from the list: <select name="Seasons">
          <option value="Spring" selected="selected">Spring</option>
          <option value="Summer">Summer</option>
          <option value="Autumn">Autumn</option>
          <option value="Winter">Winter</option>
        </select><br /><br />
        Choose one: 
          <input type="radio" name="Country" value="USA" /> USA
          <input type="radio" name="Country" value="Canada" /> Canada
          <input type="radio" name="Country" value="Other" /> Other
        <br />
        Choose the colors: 
          <input type="checkbox" name="Colors[]" value="green" checked="checked" /> Green
          <input type="checkbox" name="Colors[]" value="yellow" /> Yellow
          <input type="checkbox" name="Colors[]" value="red" /> Red
          <input type="checkbox" name="Colors[]" value="gray" /> Gray
        <br /><br />
        Comments:<br /> 
        <textarea name="Comments" rows="10" cols="60">Enter your comments here</textarea><br />
        <input type="submit" />
      </form>
    </body>
    </head>
    </html>

Примерот вклучува повеќе елементи: поле за внес на податоци, поле за избор од неколку можности, поле за текст и копче за испраќање на формата. Кога корисникот го притиснува копчето, податоците се праќаат до process.php датотеката. Забележувате дека на елементите за избор, обележано или не (checkbox), има додадено средни загради []. Ова му кажува на PHP дека вредностите овде може да се низа од податоци. Корисникот може да избере од повеќе вредности и PHP ќе ги смести нив во низа. Пр. ако изберете Green и Yellow и ја извршите формата, тогаш $_POST['Colors'] е низа. $_POST['Colors'][0] е Green, а $_POST['Colors'][1] е Yellow. Ова е затоа што атрибутот name на оваа контрола е со []. Ако не беше, $_POST['Colors'] ќе беше обичен текст кој содржи само една од избраните вредности.

Обработка на податоците од формата

Следно, треба да се направи PHP датотеката која ќе ја обработи формата. Кога ќе се изврши формата со кликнување на копчето (submit), тогаш автоматски се генерираат две суперглобални променливи: $_GET и $_POST, со сите податоци пратени co GET и POST соодветно. Така, контролата наречена Name, која беше пратена со POST, ќе биде зачувана како $_POST['Name']. Снимете го овој код во датотека process.php во истиот директориум како и form.html:

   <?php
    //Check whether the form has been submitted
    if (array_key_exists('check_submit', $_POST)) {
       //Converts the new line characters (\n) in the text area into HTML line breaks (the <br /> tag)
       $_POST['Comments'] = nl2br($_POST['Comments']); 
       //Check whether a $_GET['Languages'] is set
       if ( isset($_POST['Colors']) ) { 
         $_POST['Colors'] = implode(', ', $_POST['Colors']); //Converts an array into a single string
       }    
    
       //Let's now print out the received values in the browser
       echo "Your name: {$_POST['Name']}<br />";
       echo "Your password: {$_POST['Password']}<br />";
       echo "Your favourite season: {$_POST['Seasons']}<br /><br />";
       echo "Your comments:<br />{$_POST['Comments']}<br /><br />";
       echo "You are from: {$_POST['Country']}<br />";
       echo "Colors you chose: {$_POST['Colors']}<br />";
    } else {
        echo "You can't see this page without submitting the form.";
    }
    ?>

Во првиот ред, се проверува дали е страната со податоци испратена и оваа скрипта да не се изврши сама. Следно, се конвертираат новите редови во HTML
. Потоа се проверува дали низата полна, а ако е се користи функцијата implode() да се конвертира $_POST['Colors'] низата во една текстуална променлива. Последно, се печатат податоците во прелистувачот.

GET и POST

Кога дефинираме метод да испраќа податоци до PHP скрипта, користиме или GET или POST методи. И двата праќаат променливи до скриптата, но тоа го прават на различен начин. GET методот ги праќа своите променливи во адресата на web прелистувачот, во URL. Така пратените податоци, може лесно да се видат од од други корисници, а може и да се изменуваат. Затоа, овој метод не треба да се користи кога се праќаат шифри или други приватни податоци. Исто така, не треба да се користат кога се прават некои акции и измени на серверот, како менување и снимање податоци во бази. Меѓутоа, се користи поради тоа што кога податоците се прикажани во URL-то, таа страна може да се сними во омилени и да се запамти (bookmarks). Методот GET има лимит за пратените податоци. Така, како резултат на ова, ако испраќате голем број податоци има можност да изгубите голем дел од нив. Методот POST, ги праќа своите променливи во позадина и нема лимит на големината на испратените податоци. Бидејќи податоците не се пратени преку URL, не може оваа страна да се стави во омилени.

PHP колачиња

Колаче, е име кое се користи за порака која е пратена од web серверот до клиентскиот web прелистувач. Прелистувачот ги памти овие пораки во мали текстуални датотеки локално, на компјутерот на корисникот. Секој пат, кога истиот компјутер ќе побара страна, колачето се праќа назад до серверот. Има многу работи кои може да се прават користејќи колачиња. Тие се користат за чување податоци за корисникот, посетени страни, резултати од гласања итн. Главна намена на колачињата е да идентификуваат корисници и (ако е можно) да ги припремат страните за прикажување. Обично колачињата се користат за чување мала количина податоци. Web страните можат да ги читаат податоците од колачињата и да ги користат по потреба. Иако колачињата не можат да наштетат, некои корисници забрануваат пристап до нивните компјутери со помош на колачиња, бидејќи се загрижени за приватноста. Во овој случај мора да користите сесии (Sessions).

Како да се креира колаче?

PHP колачињата може да се креираат користејќи ја функцијата setcookie(). Синтаксата е следна: setcookie(name[, value[, expire[, path[, domain[, security]]]]])

[name] – Името на колачето. Имињата на сите пратени колачиња се снимани како суперглобална низа $_COOKIE. [value] – Вредноста на колачето. Таа е врзана со името. [expire] – Времето за кое колачето веќе нема да биде валидно (во секунди). [path] – Ја дава точната адреса на домејнот кој може да го користи тоа колаче. [domain] – Домејнот за кој колачето е валидно. Ако не е специфицирано, тогаш оваа вредност е домејнот на оној кој што го креирал колачето. [security] – Кажува дали колачето ќе биде пратено преку HTTPS. Вредноста 1 кажува дека ќе биде пратено преку сигурна врска, но дека може да не е сигурно. Колачето е обична текстуална датотека, па не е секогаш сигурно. Вредноста 0 значи дека ќе биде пратено низ стандарда HTTP постапка. Во овој пример, ќе се креира колаче со име "MyCookie" и ќе му се даде вредност "PHP tutorial". Исто така, се даваат информации дека колачето ќе престане да важи после 1 час и дека тоа важи за сите страни во директориумот tutorials.

   <?php
        setcookie("myCookie", "PHP Tutorial", time()+3600, "/tutorials");
    ?>

Поради начинот на кој работат колачињата со HTTP, важно е да се праќаат сите колачиња пред било каков излез на екран. Ова значи дека ќе се повикаат сите функции пред да се отпечатат или прикажат резултати. Ако не, тогаш PHP ќе соопшти и колачињата нема да бидат испратени.

Како да се добијат податоци од колаче?

Откако е направено колачето, податоците од него треба да се извлечат. Како што е претходно кажано, имињата на колачињата се снимени во суперглобалната низа $_COOKIE. Во овој случај, ќе се повика претходното колаче кое го креиравте:

   <?php
        echo "The cookie value is ".$_COOKIE['myCookie'];
    ?>

Излезот од ова е: "The cookie value is PHP Tutorial".

Како да се избрише колаче?

По правило, колачињата се бришат кога ќе се затвори прелистувачот. Тоа може да се измени со тоа што ќе се даде вредност, време, за колку тоа колаче да се избрише. За да се осигурате дека тоа време, не е поминато време (време во минатото), се користи функцијата time() која ќе го даде моменталното време.

Динамично генерирање слики

Динамичното генерирање слики може да биде многу корисна вештина. PHP има неколку вградени функции за генерирање слики, пр., да се генерираат, да се менуваат постоечки... За да се користат овие, треба да биде инсталирана GD библиотеката. Во овој туторијал, ќе биде покажано како да се добијат интересни и корисни ефекти користејќи функции за работа со слики. Ќе се разгледаат две практични операции: креирање сигурносни слики (captcha) и график користејќи нумерички вредности добиени од MySQL база на податоци.

Креирање сигурносни слики

Еве ја функцијата која креира сигурносна слика (captcha). Следно ќе биде детално разгледан секој чекор во генерирањето слика.

   <?php
        create_image();
        exit;

        function create_image()
        {
            $md5 = md5(rand(0,999));
            $pass = substr($md5, 10, 5);
            $width = 100;
            $height = 20;
            $image = ImageCreate($width, $height);
            $white = ImageColorAllocate($image, 255, 255, 255);
            $black = ImageColorAllocate($image, 0, 0, 0);
            $grey = ImageColorAllocate($image, 204, 204, 204);
            ImageFill($image, 0, 0, $black);
            ImageString($image, 3, 30, 3, $pass, $white);
            ImageRectangle($image, 0, 0, $width-1, $height – 1, $grey);
            imageline($image, 0, $height/2, $width, $height/2, $grey);
            imageline($image, $width/2, 0, $width/2, $height, $grey);
            header("Content-Type: image/jpeg");
            ImageJpeg($image);
            ImageDestroy($image);
        }
    ?>

За да се креира нова слика или да се измени постоечка, треба да се направи идентификатор за неа. Во претходниот пример, креиравме празен простор со повикување на функцијата ImageCreate() и со давање на параметрите $width и $height. Друг начин ова да се направи е со повикување слика од постоечка датотека. Во зависност од форматот на сликата, може да се користат следниве функции: ImageCreateFromPNG(), ImageCreateFromGIF(), ImageCreateFromJPEG(). Параметарот на секоја од овие функции е името на датотеката. Потоа треба да ги изберете боите кои ќе се користат при цртањето. За ова се користи функцијата ImageColorAllocate() и идентификатори за црвена, зелена и сина боја. Во следниот чекор, се генерира сликата. Прво користејќи ја функцијата ImageFill() креирате црна позадина. Параметри овде се идентификаторот за сликата, координати и боја. Тогаш користите ImageString() за да се додаде текст на сликата. Нејзини параметри се идентификатор за сликата, фонт, координати за текстот и боја на текстот. На крај, се цртаат две линии и правоаголник за да се заштити сликата. Правоаголникот е со димензии помали од целата слика, за да не се поклопи со рамката на сликата. Кога сликата е направена, може да ја користите како посебна слика и во прелистувач. Во овој пример е покажано како таа се користи директно во прелистувачот. Прелистувачот треба да се информира за тоа каква датотеката доаѓа кај него, па затоа се користи функцијата header() која кажува од кој MIME тип е датотеката. Откако ќе се заврши со работа со сликата, треба да се исчисти просторот кој таа го зафатила во меморија. За тоа се користи ImageDestroy().

Креирање график

Во следиот пример, ќе биде направен график користејќи податоци од MySQL база на податоци. Прво ќе биде дадено како да се направи базата и податоците во неа, а потоа пристапот до нив со PHP.

   CREATE DATABASE `poll`;
    USE poll;
    
    CREATE TABLE `results` ( 
       book_type VARCHAR(50), 
       num_votes INT
    );
    
    INSERT INTO `results` values  
        ('Classic', 15), 
        ('Fantasy', 7), 
        ('Humor', 32), 
        ('Mystery', 12), 
        ('Poetry', 25);

Скриптата за правење график е прилично долга, па ќе биде поделена на два дела и дискутирана поединечно. Првата скрипта се врзува за базата и ги зема податоците кои ќе бидат прикажани.

   <?php
        $dbhandle = mysql_connect("localhost", "root", "")
            or die("Unable to connect to mysql");
        $selected = mysql_select_db("poll", $dbhandle)
            or die("Cannot select examples");
        $result = mysql_query("SELECT * FROM results");
        $num_poller = mysql_num_rows($result);
        $total_votes = 0;
        while($row = mysql_fetch_array($result)){
            $total_votes += $row{'num_votes'};
        }
        mysql_data_seek($result, 0);
        mysql_close($dbhandle);

Во вториот дел на скриптата ќе биде пресметано се што е потребно за графикот. Тогаш ќе се спреми примарната слика и излезот со податоците. Резултатите од секој тип се добиени од базата, процентите се пресметани и столбовите и текстот под нив се прикажани. Во оваа скрипта ќе се користат TrueType фонтови. Прво треба да се даде адресата на која се наоѓаат фонтовите. За ова постои системска променива GDFONTPATH. Потоа се кажува името на фонтот. TrueType фонтовите се обработуваат со ImageTTFText(). Еве ја и скриптата. Таа користи функции кои веќе се објаснети во цртањето сигурносна слика:

   putenv('GDFONTPATH='pateka_do_font');
    $font = 'arial';
    $y = 50;
    $width = 700; //Image width in pixels
    $bar_height = 20; //Bars height
    $height = $num_poller * $bar_height * 1.5 + 70; //Calculating image height 
    $bar_unit = ($width - 400) / 100; //Distance on the bar chart standing for 1 unit
    
    //Create the image resource 
    $image = ImageCreate($width, $height); 
    
    //We are making four colors, white, black, blue and red 
    $white = ImageColorAllocate($image, 255, 255, 255); 
    $black = ImageColorAllocate($image, 0, 0, 0); 
    $red = ImageColorAllocate($image, 255, 0, 0); 
    $blue = imagecolorallocate($image,0,0,255); 
    
    //Create image background 
    ImageFill($image,$width,$height,$white); 
    //Draw background shape 
    ImageRectangle($image, 0, 0, $width-1, $height-1, $black); 
    //Output header 
    ImageTTFText($image, 16, 0, $width/3 + 50, $y - 20, $black, $font, 'Poll Results'); 
    
    while ($row = mysql_fetch_object($result)) { 
        if ($total_votes > 0) 
            $percent = intval(round(($row->num_votes/$total_votes)*100)); 
        else 
        $percent = 0; 
    
        //Output header for a particular value 
        ImageTTFText($image,12,0,10, $y+($bar_height/2), $black, $font, $row->book_type); 
        //Output percentage for a particular value 
        ImageTTFText($image, 12, 0, 170, $y + ($bar_height/2),$red,$font,$percent.'%'); 
    
        $bar_length = $percent * $bar_unit; 
    
        //Draw a shape that corresponds to 100% 
        ImageRectangle($image, $bar_length+221, $y-2, (220+(100*$bar_unit)), $y+$bar_height, $black); 
        //Output a bar for a particular value 
        ImageFilledRectangle($image,220,$y-2,220+$bar_length, $y+$bar_height, $blue); 
        //Output the number of votes 
        ImageTTFText($image, 12, 0, 250+100*$bar_unit, $y+($bar_height/2), $black, $font, $row->num_votes.' votes cast.'); 
    
        //Going down to the next bar 
        $y = $y + ($bar_height * 1.5); 
        
    } 

    //Tell the browser what kind of file is come in 
    header("Content-Type: image/jpeg"); 
    
    //Output the newly created image in jpeg format 
    ImageJpeg($image); 
    
    //Free up resources 
    ImageDestroy($image); 
    ?>

Користење динамички генерирани слики на други страници

Бидејќи заглавјето (header), се испраќа само еднаш до серверот и тоа е единствениот начин да му се каже на прелистувачот што да очекува, не е лесно да се стават автоматски генерирани слики. Има три начини да се направи тоа: 1.Целата страна да зависи од сликата 2.Ќе ја снимите сликата како некоја датотека ќе се обраќате кон неа со <img> 3.Ќе ставите скрипта која сама ќе генерира слика во <img>

   <img height="120" alt="Dynamically generated image" src="generate_image.php" width="200">

Безбедно качување датотеки на сервер

PHP го прави качувањето датотеки на сервер едноставно. Можете да качите каква и да е датотека на web серверот. Но со едноставноста доаѓа и опасноста, па мора да бидете внимателни кога дозволувате качување. Во овој туторијал ќе биде разгледано како да качите датотеки во одреден директориум на web серверот, а притоа да не настанат проблеми и ќе бидат разгледани безбедносните проблеми кои може да се јават.

HTML форма

Пред да го користите PHP за управување со датотеките, треба да се направи HTML формата која ќе даде интерфејс за корисникот, да ја пронајде и качи својата датотека.

   <html> 
    <body>
      <form enctype="multipart/form-data" action="upload.php" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
        Choose a file to upload: <input name="uploaded_file" type="file" />
        <input type="submit" value="Upload" />
      </form> 
    </body> 
    </html>
    

Има неколку правила што треба да ги знаете за кога правите HTML форма. Прво, бидете сигурни дека го користите POST методот. Второ, на формата и е потребен enctype="multipart/form-data" атрибутот. Без ова качувањето на датотеки нема да работи. Друго нешто што треба да се спомне е скриеното поле во формата, наречено MAX_FILE_SIZE. Некои прелистувачи ја гледаат оваа променлива и нема да дозволат качување на датотеки поголеми од овој број (во бајти). За оваа променлива треба да внесете број ист како што е внесено во php.ini датотеката, за најголемо качување на датотеки. Во php.ini е внесено upload_max_filesize = 2MB. Но, сепак не можете да бидете сигурни дека скриптата нема да биде нападната со поголем број податоци. На пр., напаѓач може да внесе во скриптата повеќе датотеки со максимална големина, со цел да се сруши серверот. Затоа, наместете го post_max_size во php.ini на максималната големина што сакате да ја добие Вашиот web сервер (мора да биде поголема од upload_max_filesize). Основната вредност е 10МВ. Ова ја контролира максималната големина на сите POST податоци, во еден обид. Исто така осигурајте се дека file_uploads во php.ini е наместен на On. Погледнете го делот со type="file". Тоа е наместено така, за да овозможи наоѓање датотеки на системот. Овозможува внесување адреса до датотеката и копче Browse. Кога корисникот внесува патека до датотеката, кликнува на копчето Submit и датотеката ќе биде пратена до upload.php. PHP скриптата ја превзема контролата.

Обработување на податоците од формата

Кога датотеката е качена, PHP креира привремена копија од неа и гради суперглобална низа $_FILES која содржи податоци за датотеката. За секоја датотека се запишуваат пет податоци: $_FILES["uploaded_file"]["name"] – Оригиналното име на датотеката од корисничката машина $_FILES["uploaded_file"]["type"] – MIME типот на качената датотека $_FILES["uploaded_file"]["size"] – големината на качената датотека $_FILES["uploaded_file"]["tmp_name"] – локацијата на која е снимена датотеката привремено $_FILES["uploaded_file"]["error"] – код со грешка која се јавила за време на качувањето Следниот пример покажува прифаќање на датотека и нејзино снимање во директориум upload. Скриптата дозволува качување само на JPEG слики помали од 350КВ:

   <?php
    if ((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
        $filename = basename($_FILES['uploaded_file']['name']);
        $ext = substr($filename, strpos($filename, '.') + 1);
        if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && ($_FILES["uploaded_file"]["size"] < 350000)) {
            $newname = dirname(__FILE__).'/upload/'.$filename;
            if (!file_exists($newname)) {
                if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $newname))){
                    echo "It's done! The file is saved as: ".$newname;
                } else {
                    echo "Error: a problem occurred during file upload";
                }
            } else {
                echo "Error: File ".$_FILES["uploaded_file"]["name"]." already exists";
            }
        } else {
            echo "Error: Only .jpg images under 350Kb are accepted for upload";
        }
    } else {
        echo "Error: No file uploaded";
    }
    ?>

Пред што и да правите со качените датотеки, треба да проверите дали тие се вистински качени. Потоа проверувате дали датотеката е JPEG и нејзината големина помала од 350KB. Следно, се проверува дали постои патеката на која треба да се качи датотеката и дали постои веќе некоја со исто име. Откако ќе се завршат овие проверки, се копира датотеката од локалниот компјутер на серверот. Ако е качувањето успешно, ќе биде објавена позитивна порака. Бидете сигурни дека датотеката на која сакате да запишувате на web серверот има дозвола за запишување и читање.

Праќање e-mail (Текст/HTML/Датотеки)

Email е најпознатиот сервис на Интернет денес. Целта на овој туторијал е да покаже како да генерирате и праќате email со PHP. Email може да се праќа од апликацијата со директно барање на корисникот или пак на одредено време, пр. месечен весник. Понекогаш email-от содржи датотеки кои се прикачени на него. Тие можат да бидат чист текст, HTML делови и др. За да се разбере како функционира праќањето email ќе почнеме од поедноставни примери. Забелешка: За да праќате email со PHP Ви треба функционален email сервер на кој имате дозвола да работите: за UNIX често е Sendmail, за Windows мора да се намести SMTP наредбата во php.ini да покажува на email серверот.