Clever
#1
PHP va MySQL kodlarining qanday vazifalar bajarishi haqida to'liq yozib boramiz.

Bilganlarimizni qolganlar bilan baham ko'ramiz!
DjHuSo
#2
Savol: header() ning vazifasi
Javob:
Serverga header maʼlumotlarini yuboradi va klientga natija qaytariladi, masalan redirection yo 404 qilib qoʻyish mumkin, yana MIME tiplarni qoʻllash mumkin. Butun bir sahifani plain/text qilib qoʻyishi mumkin ?
Clever
#3
O'zgarmaslar va vazifalari

list()
list operatori bilan siz bir qancha o'zgarmasga malumot berishingiz mumkin. Mana quyidagi misolga qarang.
  1. list($name, $surnane, $company)=split("|", "Sandjar | Alimov | BAT");
  2. print "$name <br>";
  3. print "$surname <br>";
  4. print "$company <br>";

shunda ekraningizda har bir o'zgarmasning ma'lumotlari yani:
Sandjar
Alimov
BAT
degan yozuv chiqadi.


range()
Bu operatorimiz butun sonli o'zgarmaslarni yaratishda juda qulay va tezdir.
  1. $lottery=range(0, 9);

bu yerda biz lottery'ga 0 dan 9 gacha bo'lgan sonlarni tanitib beramiz.


in_array()
Bu funktsiya qandaydir o'zgaruvchanlar massivining ichida biz qidirayotgan ma'lumot bor yo'qligini tekshirib beradi.
misol:
  1. $languag e=array("English", "Gealic", "Spanish");
  2. $exist=in_array ("Spanish", $language); //bu yer da exist'ga TRUE ma'lumoti yoziladi.

array_keys()
Agarda sizda bir biriga ulangan qandaydir o'zgarmaslar to'plami bo'lsa, va uning asosiy nomlari yani kalitlarini ismini olish uchun array_keys() funktsiyasi ishlatiladi.
misol:
  1. $great_wines=array("Autstr alia"=> "Clar endon Hills 96", "France"=> "Comte George de Vogue 97", "Austria"=> "Feiler Artinger 97");
  2. $great_labels=array_keys($great_wines);

shunda
  1. $great_labels[0]=Australia
  2. $great_labels[1]=F rance
  3. $great_labels[2]=Austria

bo'ladi.


array_values()
array_keys kabi faqatgina uni ishini teskarisini bajaradi, yanikim kalitlarni emas, shu kalitlarga tegishli bo'lgan ma'lumotlarni chiqarib beradi.

array_push()
Bu operatorimiz, bizning o'zgarmaslarning ohiriga bitta yoki bir qancha belgi yoki so'z qoshadi.
Int array_push(array o'zgaruvchan, mixed so'zlar [, ...])
Misol:
  1. <?
  2. $languages=array("Uzbek", "Russian", "English");
  3. array_push($languages, "French", "German");
  4. foreach($languages as $item){
  5. print "$item <BR>";
  6. }
  7. ?>

Shunda ekraningizda Uzbek, Russian, English, French, German chiqadi.


array_pop()
array_push'ning tamoman teskarisidir, yani masivning eng ohirgi elementini o'chiradi va uni qaytaradi,
yani:
  1. $languages=array("Uzbek", "Russian", "English");
  2. $a_language=array_pop($languages); //a_language="English, languages="Uzbek", "Russian"



array_shift()
Aynan array_pop kabi ammo farqi shundaki masivni boshidan bitta elementni o'chirib keyin qolganlarini bitta oldinga suradi.
Huddi array_pop kabi u ham o'chirilgan elementni qaytaradi.


array_unshift()
array_shift ni tamoman teskarisin yani masivni boshiga bir element (so'z) qo'shadi.
Keling misolga qarang:
  1. $languages=array("French", "Russian", "German");
  2. $a_lang=array_shift($languages); //a_lang="French"
  3. array_unshift($languages, "Uzbek"); //languages="Uzbek", "Russian", "German"
array_pad()
Bu operator, masivni biz hohlagancha hajmini oshirib beradi, yani biz masiv (o'zgarmas) yaratganimizda uni hajmi kamroq bo'lgan bo'lishi mumkin, biz uni kattalashtirish uchun shu operatordan foydalanamiz.
Misolga qarang.
  1. $weight=array(1 , 2, 3, 1 5, 35);
  2. $weight=array_pad($weight, 8, 100);
  3. //bu y erda biz uni hajmini 8 gacha oshirib, yangi yaratilgan hujralarga 100 sonini y ozib chiqishini belgiladik.
  4. //$weight=1 , 2, 3, 1 5, 35, 100, 100, 100

agarda biz sonlarni boshiga qo'shmoqchi bo'lsakchi unda nima qilamiz?
Misolga qarang
  1. $weight=array(1 , 2, 3, 1 5, 35);
  2. $weight=array_pad($weight, 8, 100);
  3. //shu yerda biz $weight nin boshiga 100 raqamidan 3 donasini qo'shamiz, yanikim, weight'ning hajmini 8 oshiramiz, va faqat bosh jo ylarni weightning boshiga qoshib qo'yamiz.
MrShahzodbek
#4
1. Parolni md5da shifrlab, shuni faqat dastlabki 16 tasini bazaga yozish va undan ham dastlabki 16 tasini tekshirish kerak. Yechimlar?
2. Parolni md5 qilib, boshiga biror belgi qo'shish kerak. Masalan, uz+md5parol. Yechimlar?
Xudoyorbeck
#5
MrShahzodbek, # MrShahzodbek (05.08.2018 / 07:58)
1. Parolni md5da shifrlab, shuni faqat dastlabki 16 tasini bazaga yozish va undan ham dastlabki 16 tasini tekshirish kerak. Yechimlar?
2. Parolni md5 qilib, boshiga biror belgi qo'shish kerak. Masala
1) explode, implode qilib ko'rmadizmi?

2) if (isset($_POST['submit'])) {
$md5 = md5($_POST['text']);
$res = "uz" . $md5;
echo $res;
}
Clever
#6
O'zgarmaslar va vazifalari davomi

reset()
Bu operatorimiz, qandaydir masiv (o'zgarmaslarni) ichidagi ko'rsatgichni (kursor , cursor) masiv elementlarining eng birinchisiga olib borib qo'yadi, va birinchi element qiymatini qaytaradi.
Misol:
  1. $fruits=array("apple", "orange", "banana");
  2. $a_fruits=reset($fruits); //a_fruits=apple


each()
Each() operatori har gal ishlatilganda ikki ish qiladi, yani kursor turgan o'zgavchanni qaytaradi, va kursorni keyin masiv elementiga o'tkazadi. Va belgilangan o'zgarivchanga ikkita son yuboradi, yani Misolga qarang:
  1. $spices=array("parsley", "sage", "rosemary");
  2. $a_spice=each($spices);
  3. print "$a_spice[0] $a_spice[1] <br>";
  4. $a_spice=each($spices);
  5. print "$a_spice[0] $a_spice[1]";
shunda oynangizga "0 parsley 1 sage" yozuvi chiqadi, bu degani, avalambor birinchi elementni o'qib unga tegishli bo'lgan kalit va ma'lumotni a_spice'ga yozadi yani a_spice[0]'da kaliti, a_spice[1]'da esa uni qiymati yoziladi. Keyin esa ikkinchi element o'qilib (sage) u ham a_spice'ga yoziladi.


end()
Kursorni masivning eng oxiriga olib borib qo'yadi.
end(array masiv);

next()
Hudi each() operatori kabidir faqatgina farqi kursorni bitta oldinga surgandan keyin, yangi turgan yeridagi elementni qaytaradi.

prev()
Next()'ning tamoman teskarisi.

array_walk()
Juda ham qulay operator, ya`ni kim qiladigan ishi, qandaydir funktsiyaga, qandaydir o'zgarmaslarni yuborishi mumkindir. Keling bir masiv'da qaytarilib kelgan o'zgarmaslar bo'lsa ularni o`chirib tashlashini qiluvchi funktsiya, yoki bir kod yozaylik.
  1. function delete_dupes($element){
  2. static $last="";
  3. if ($element==$last) {
  4. unset($element);
  5. }
  6. $last=$element
  7. }$emails=array("bom@bom.ru", "test@test.ru", "bom@bom.ru");
  8. sort($emails);
  9. reset($emails);
  10. array_walk($emails, "delete_dupes");

shunda sizda emails="bom@bom.ru", "test@test.ru" qoladi, ko'rganingizdek ikta bir hil o'zgarmasni olib tashladi
1135
End
#7
Men uchun kerakli mavzu. Rahmat.
5 daqiqa 26 soniyadan keyin yozdi:
Noldan boshlamaysizlarmi
Clever
#8
MySQLda 3 xil guruhga ajratilgan ruxsatlar mavjud: axborotlar bilan bog‘liq ruxsatlar, struktura bilan bog‘liq ruxsatlar va ma`murlash(administrirovaniye) bilan bog‘liq ruxsatlar. Keling har biri bilan tanishib chiqamiz.

Axborotlar bilan bog`liq bo‘lgan ruxsatlar, bevosita ma`lumotlar bazasidagi axborotlar bilan ishlash uchun mo‘ljallangan, bu guruhga quyidagi ruxsatlar kiradi.
* SELECT - bu ruxsat, ma`lumotlar bazasidagi axborotlarni chiqarib olish uchun beriladigan ruxsatdir, ya`ni jadvallarga "select" orqali so‘rovni amalga oshirish mumkin.
* INSERT - jadvalga yangi ma`lumotlarni kiritishga ruxsat.
* UPDATE - jadvaldagi axborotlarni o‘zgartirish xuquqini beradigan ruxsat.
* DELETE - jadvaldagi axborotlarni o‘chirish xuquqini beradi.
* FILE - so‘rov asosida olingan axborotlarni faylga yozish va fayldan o‘qish xuquqini beradi.

Endi, ma`lumotlar bazasi va jadvallar strukturalarini o‘zgartirish xuquqini beradigan ruxsatlar bilan tanishib chiqamiz, bu guruhga quyidagilar kiradi:
* CREATE - yangi ma`lumotlar bazasi, shu bilan birga bazada yangi jadvallar yaratish xuquqini beradigan ruxsat.
* ALTER - jadvalni o‘zgartirish xuq
* SUPER - oqimlarni o‘chirish(kill) xuquqiga ega, oqimlar boshqa bir foydalanuvchining ma`lumotlar bazasiga ulanishi, ya`ni foydalanuvchi ulanishini uzish xuquqiga ega.
* PROCESS - processlist buyruhini berish xuquqiga ega, bu buyruq barcha ulanishlarni ko‘rish uchun beriladi.
* RELOAD - jurnal fayllarini ochish va yopish xuquqiga ega.
* SHUTDOWN - server ishini to‘xtatuvchi komanda(shutdown) berish xuquqiga ega.
* SHOW DATABASES - mavjud bo‘lgan barcha ma`lumotlar bazasini ko‘rish xuquqiga ega.
* LOCK TABLES - ko‘rsatilgan ulanishlar(oqim) uchun jadvallarni bloklash xuquqi.
* EXECUTE - har xil protseduralarni ishga tushirishga ruxsat.
* REPLICATION CLIENT, * REPLICATION CLIENT - server va kliyent joylashgan joyi va jurnallarini ko‘rish xuquqi.

Yuyuqoridagilardan tashqari, quyidagi maxsus resurslarga oid ruxsatlar ham bor:
* MAX QUERIES PER HOUR - bir soatdagi maksimal so‘rovlar sonini belgilash.
* MAX UPDATES PER - ma`lumotlar bazasi yoki jadvallarni o‘zgartrish mumkin bo‘lgan maksimal buyruqlar soni(soatda).
* MAX CONNECTIONS PER HOUR - bir soat mobaynida maksimal ulanishlar soni.
Agar yuqoridagi ruxsatlar qiymati"0" bo‘lsa, resurs cheksiz hisoblanadi.
Clever
#9
array_reverse()
Array_reverse operatori butun masivni teskarisiga qilib joylashtiradi, yani masivni ichidagi elementlarni teskarisiga qo'yib chiqadi.
Misolga qarang:
  1. $machines=array("DONG", "Mitsubishi", "BMW");
  2. $rev_machine=array_reverse($mac hine);
  3. //rev_machine="BMW", "Mitsubishi", "DONG" kabi qiymatlarni oladi.


array_flip()
Agarda kalit/qiymat kabi masiv, o'zgaruvchi yaratgan bo'lsangiz, va ularni o'rni bilan almashtirish niyatingiz bo'lsa unda shu operatordan foydalaning.
Misol:
  1. $til=array("France"=>"French", "Uzbekistan"=>"Uzbek", "England"=>"English");
  2. $tes_til=array_flip($til);
  3. //shunda tes_til'ning qiymati quyidagicha bo'ladi tes_til="French"=>"France", "Uzbek"=>"Uzbekistan", "English"=>"England"


Mana ko'rganingizdek bularni hammasi sizga kerakli bo'lgan operatorlar va funktsiyalardir.
Ammo bular bilan bir qatorda yana boshqa operatorlar ham bordir, ular masivlarni hajmini ko'rsatuvchi funktsiya va operatorlardir.


sizeof()
Bu operator, masivning ichinda qancha elementlari bo'lsa shularni ko'rsatadi, qaytaradi.
  1. $langs=array("English", "Russian", "Greec", "German");
  2. $lang_size=sizeof($langs);
  3. //lang_size=4


count()
sizeof() kabidir ammo bitta farqi qo'shimcha ma'lumot berishi mumkindir
1. Agarda masiv bo'lsa va unda qiymat bo'lsa, qancha elementi bo'lsa shuni sanab beradi
2. Agarda masiv emas bir dona o'zgarivchi bo'lsa unda 1 soni qaytadi
3. Agarda o'zgarvchi ham bo'lmasa unda 0 raqamini qaytaradi.

array_count_values()
Qandaydir masivimizning ichida agarda bir qancha o'zgarmaslar qaytarilib kelgan bo'lsa shularni nechtaligini ko'rsatadi.
  1. $params=array("PA", "MA", "CA", "PA", "MO", "CA", "PA", "MA", "CO");
  2. $params_c=array_count_values($params);
  3. //params_c="PA"=>3, "MA"=>2, "CA"=2, "MO"=>1 , "CO"=>1 kabi qiyamtlarni oladi.



Mana endi keling masivlarimizni ichidagi o'zgarmaslarni saralashni ko'rib chiqaylik.

sort()
Oddiy saralash, yani ketma ket qilib qo'yib chiqishdir.
  1. $alfa=array("A", "C", "E", "D", "B");
  2. sort($alfa);
  3. //alfa="A", "B", "C", "D", "E"


rsort()
sort() kabidir faqatgina teskarisiga saralab beradi.

asort()
Aynan yuqoridagilar kabi, ammo saralagandan so'ng hamma tegishli indexlar (kalitlar) o'rni saqlanib qoladi.
Misol:
  1. $cities=array("Tashkent", "Samarkand", "Andijan", "Qarshi");
  2. asort($cities);

shunda
  1. cities[2]=Andijan
  2. cities[1]=Samarkand
  3. cities[0]=Tashkent
  4. cities[4]=Qarshi

kabi bo'ladi, yani hamma kalitlar saqlanib qolgan holda saralab berdi.

arsort()
asort() kabi faqatgina teskari tomonga saralaydi.

ksort()
Masivdagi kaltilarni saralaydi, va shu bilan bir qatorda kalitlarga tegishli bo'lgan ma'lumotni saqlab qoladi.
Misol:
  1. $langs=array("France"=>"French", "England"=>"English", "Italy"=>"Spanish");
  2. ksort($langs);

shunda langs:
England=>English
France=>French
Itali=>Spanish

kabi qiymatlarni o'ziga qoladi.

krsort()
Aynan ksort() kabi, faqatgina shu ishni teskarsiga saralab chiqadi.
usort(), uksort, uasrot() bilan siz hohlagan sarlash funktsiyasi bilan ishlatishingiz mumkin. Siz hohlagan funktsiya, bu siz yozgan funktsiya ham bo'lishi mumkindir. Bu operatorlarni o'zingiz mustaqil ko'rib chiqing, chunki bu uncha ham qiyin operatorlar emasdir .

array_merge()
Bir qancha masivlarni birlashtirish.
Misol:
  1. $a1=array("a", "b", "c");
  2. $a2=array("d", "e", "f");
  3. $a3=array("g", "h", "i");
  4. $ar4=array_merge($a1, $a2, $a3);
  5. //ar4="a", "b", "c", ... "i" mana shu holga keladi, yani a1 , a2, a3 larni qo'shib qo'yadi.


array_slice()
Masivning, o'zgaruvchaning ichidan qandaydir qismini kesib olish, yani boshlangich va qancha kesish kerakligini ko'rsatsangiz yetarli, yani:
  1. array array_slice(array masiv, int boshlanish, [int uzunligi]);


array_splice()
Qandaydir masivni ichini qandaydir qismi o'zgartirish yoki o'chirish uchun ishlatiladi.
  1. array_splice(masiv, int boshlanish, [int uzunlik], [array o'zg artirish masivi]);


shuffle()
Masiv ichini tarqatib tashlash, yani ichini tasodifiy ravishda o'rnilarini belgilab beradi.
410
uDesign
#10
Clever, shuffle() o`rniga srand() yoki mt_srand() ishlatkan ma`tul chunki bu funksiyalar avtomatik chiqaradi
  1. $raqam = range(1, 20);
  2. srand((float)microtime() * 1000000);
  3. shuffle($raqam);
  4. while (list(, $chiqar) = each($raqam)) {
  5. echo "$chiqar ";
  6. }

4 daqiqa 45 soniyadan keyin yozdi:
array_splice() namuna:

  1. <?php
  2. $input = array("qizil", "yashil", "qora", "oq");
  3. array_splice($input, 2);
  4. // agarda $input 2 bo`lsa array("qizil", "yashil") chiqaradi
  5.  
  6. $input = array("qizil", "yashil", "qora", "oq");
  7. array_splice($input, 1, -1);
  8. // agarda $input 1, -1 bo`lsa array("qizil", "oq") chiqaradi
  9. ?>
MR_BaxtiyoR
#11
$str = htmlentities(trim($str), ENT_QUOTES, 'UTF-8');
$str = nl2br($str);
$str = mysql_real_escape_string($str);
Bu kodlarning vazifasini to`liqroq tushuntiringlar iltimos?
developer
#12
phpni hamma versiyasida ishlaydimi shu funksiya
Clever
#13
PHP'da fayllar bilan ishlashni batafsil tushuntirib, va bir qancha misollar bilan ko'rsatib o'taman.

file_exists()
Bu funktsiyamiz qandaydir fayl bor/yo'qligini tekshirish uchun kerakdir.
Bool file_exists(string fayl)
misol:
  1. if(! file_exists($filename)):
  2. print "File $filename does not exist!";
  3. endif;


is_file()
Funktsiya file_exists funktsiyasi kabidir, ammo farqi shundaki, u fayl bor yo'qliginigina emas balki faylga yozish yoki fayldan o'qish mumkin, mumkin emasligini ham tekshiradi.
Bool if_file(string fayl)
misol:
  1. $file = "test.txt";
  2. if (is_file($file)):
  3. print "The file $file is valid and exists!";
  4. else:
  5. print "The file $file does not exist or it is not a valid file!";
  6. endif;


Misolimizda test.txt nomli fayl borligi tekshiriladi va agarda bor bo'lsa va u bilan ishlash mumkin bo'lsa unda oynamizga "The file test.txt is valid and exists!" degan yozuv chiqaradi.

filesize()
Filesize() funktsiyasi faylni hajmini o'lchab beradi, agarda fayl yo'q bo'lsa unda FALSE qiymati qaytadi.
int filesize(string fayl)
misol:
  1. $fs = filesize("pastry.txt");
  2. print "Pastry.txt is $fs bytes.";


fopen()
Bu funktsiyamiz faylni ochib beradi, keyin esa shu faylning file handle yani shu faylning ochilish raqamini qaytaradi, shu raqam orqali keyin siz shu fayl bilan ishlashingiz mumkindir.
Int fopen(string fayl, string turi [, int joylashishini_yoqish])

Fayl ismi bir nechi turda yozilishi mumkindir:
1. oddiy fayl yo'lini ko'rsatish
2. php://stdin, php://stdout, php://stderr kabi agarda siz shunday bergan bo'lsangiz unda kirish/chiqish (standart input/output) bilan ishlash mumkindir.
3. http:// yoki ftp:// bo'lsa unda http serveridagi fayl bilan yoki ftp serveridagi fayl bilan ishlaydi

Ochish turlari:
Ochish turi - Nimaligi
r - Faqat o'qish uchun
r+ - O'qish va yozish
w - Faqat yozish
w+ - Yozish va o'qish
a - Faqat yozish, ammo yozish faylning ohiridan boshlanadi
a+ - O'qish yozish, ammo yozish va o'qish faylning ohiridan boshlanadi

Kichkina misolda ko'raylik
  1. $file = "userdata.txt";
  2. $fh = fopen($file, "a+") or die ("File ($file) does not exist!");

bu misolda userdata.txt fayli yozish va o'qishga, ochiladi va kursor faylning oxiriga qo'yiladi, agarda yo'q bo'lsa unda sizga "File userdata.txt does not exist!" deb ishini tugatadi.
Clever
#14
fclose()
Ochilgan faylni yopish uchun ishlatiladi, yopishda oldindan saqlab qo'yilgan file handle, yani ochish raqami ishlatiladi.
Int fclose(int raqam)
misol:
  1. $file = "userdata.txt";
  2. if (file_exists($file)):
  3. $fh = fopen($file);
  4. fclose($fh);
  5. else:
  6. print "File $file does not exist!";
  7. endif;


Bu misol avval fayl bor/yo'qligini tekshiradi, so'ngra esa bor bo'lsa ochadi, va keyin esa yopadi.
Agarda bunday fayl mavjud bo'lmasa unda ekranga bu fayl yo'q degan yozuv chiqib ishini tugatadi.

is_writeable()
Funktsiya fayl borligini tekshiradi, va unga yozish mumkin, mumkin emasligini tekshiradi.
Bool is_writeable(string fayl)

fwrite()
Funktsiyasi, faylga ma'lumot yozish uchun ishlatiladi.
Int fwrite(int fayl_raqami, string o'zgaruvchan [, int uzunligi])
Keling misolda ko'raylik.
  1. <?
  2. $data = "08:13:00 | 12:37:12 | 208.247.106.87 | win98";
  3. $filename = "test.txt";
  4. if (is_writable($filename)):
  5. $fh = fopen($filename, "a+");
  6. $success = fwrite($fh, $data);
  7. fclose($fh);
  8. else:
  9. print "Could not open $filename for writing";
  10. endif;
  11. ?>

Shunda file'ning ichiga $data'ning qiymati yoziladi. Ammo bu php kodini ishlatishdan oldin test.txt nomli fayl yaratib qo'yish esdan chiqmasin. Agarda yaratilmagan bo'lsa unda oynangizda "Could not open $filename for writing" degan yozuv chiqadi.

fputs()
Bu funktsiyamiz aynan fwrite kabidir, uni fwrite'dan farqi yo'q.

is_readable()
is_writeable kabi funktsiyadir, ammo farqi faylni o'qish mumkinligini tekshiradi.
Bool is_readable(string fayl)

fread()
fputs() kabidir, ammo farqi bu yozmaydi, qaytanga fayldan ma'lumot o'qiydi.
Int fread(int fayl_raqami, int uzunlik)
Kelin misolga qarang.
  1. $fh = fopen("pastry.txt", "r") or die ("Can't open file");
  2. $file = fread($fh, filesize($fh));
  3. print $file;
  4. fclose($fh);

Biz bu yerda butun fayldagi bor ma'lumotni $file ga yozdik, va print orqali oynamizga chiqardik.

fgetc()
Bittadan belgilarni fayldan o'qish uchundir.
String fgetc(int fayl_raqami)
Misolga qarang:
  1. $fh = fopen("pastry.txt", "r");
  2. while(!feof($fh)):
  3. $char = fgetc($fh);
  4. print $char;
  5. endwhile;
  6. fclose($fh);

Bu yerda butun faylni birma bir fayldan o'qib keyin oynaga chiqarib beradi (print funktsiyasi orqali) feoffunktsiyasi bu yerda faylning ohiriga yetib borgan bormaganligini bildiradi, biz while'da faylni ohiri
bo'lmasa unda o'qi va oynaga chiqar komandasini berdik.

fgets()
Qatorma qator o'qish uchundir.
Misol:
  1. $fh = fopen("pastry.txt", "r");
  2. while (!feof($fh)):
  3. $line = fgets($fh, 4096);
  4. print $line;
  5. endwhile;
  6. fclose($fh);

Mana bu yerda biz qatorma qator butun faylni o'qidik.
Clever
#15
fgetss()
Aynan fgets kabidir, ammo farqi agarda o'qilayotgan ma'lumot ichida HTML yoki PHP ko'dlari bo'lsa ularni olib tashlashga harakat qiladi.
String fgetss(int fayl_raqam, int uzunlik, [, string olib_tashlanmaydigan_ko'dlar])

file()
Bu funktsiya, faylning ichidagi hamma qatorlarni bitta o'zgarmasga (masivga) yozadi.
Array file(string fayl [, int yol_yoqish])
misol:
  1. <?
  2. file_array = file("pastry.txt");
  3. while (list($line_num, $line) = each($file_array)):
  4. print "$line_num: ", htmlspecialchars($line);
  5. endwhile;
  6. ?>

Bu yerda siz bilmaydigan yana bitta funktsiya ishlatildi:
htmlspecialchars bu funktsiya agarda ma'lumotlar ichida HTML ko'di bo'lsa unda uni qandoq bo'lsa shunday qoldiradi, ya'ni uni huddi oddiy tekst deb biladi va ularni bajarmaydi. Agarda olib tashlasak bu funktsiyani tekstimizda HTML ko'di uchrasa ularni hammasini bajarib o'tadi. Shu kichik ko'dimizda biz pastry.txt'ni file_arrayga yozdik va undan o'qib oynaga chiqardik.

readfile()
Funktsiyaning ishi shundan iboratki qandaydir faylni o'qib undagi ma'lumotni chiqish, yani Ineternet Browser'larga yuboradi.
Int readfile(string fayl [, int yol_yoqish])
Agarda sizda qandaydir faylingiz bo'lsa va uni ochib chiqishga yuborish uchun
  1. <?
  2. $file = "test.txt";
  3. readfile($file);
  4. ?>

shu ko'dning o'zi yetarlidir.

popen()
int popen(string buyruq, string turi)
Fayllarni oddiy ochishdan tashqari yana uni sistemada ochish mumkindir, yani siz uni ochish bilan bir qatorda yana u bilan har qanday sistemadagi programmalar bilan birga ish qildirtirishingiz mumkindir.
Keling misolda ko'raylik.
  1. <?
  2. $fh = fopen("test.txt", "w"); //test nomli fayl ochamiz
  3. fputs($fh, "Salom Toshkent \n");
  4. fputs($fh, "Bugun havo yaxshi \n");
  5. fputs($fh, "Hayot gozal \n"); //faylning ichiga bir qancha ma'lumot yozamiz
  6. fclose($fh); //faylni yopamiz
  7. $fh = popen("grep Toshkent < test.txt", "r"); //Biz bu yerda Unix sistemasidagi grep buyrugini ishlatib test.txt faylidan Toshkent so'zini qidiradi va uni topgan qatori ekranga chiqaradi
  8. fpassthru($fh); //ekranga chiqaramiz
  9. ?>


pclose()
popen bilan ochilgandan keyin pclose bilan yopasiz.

fsockopen()
Bu funktsiyamiz Internetdagi qandaydir Server bilan TCP yoki UDP protokollari orqali bog'lanadi.
Int fsockopen(string url, int port [, int hato_raqami [, string hato_teksti [, int time_out]]])
misol:
  1. <?
  2. $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
  3. if (!$fp){
  4. echo "$errstr ($errno)<br>\n";
  5. }
  6. ?>

Mana shu kabi ishlatishingiz mumkindir.

socket_set_blocking()
Bu funktsiya fsockopen bilan ochilgan sessiyani vaqtinchaga, ishimizni tugatgungacha yopish yoki ochish uchun ishlatiladi
socket_set_blocking(int ochilgan_raqam, boolean tur)

pfsockopen()
fsockopen() kabidir, faqat farqi ulanishingiz avotmat shakilda uzilmaydi.

exec()
Tashqi programmani ishlatish, ya'ni agaqda unix sistemasida ishlasangiz unda sizga gedit kabi programma avotmat shakilda ochilishi kerak bo'lishi mumkindir. Unda siz shu funktsiyadan foydalanasiz.
String exec (string buyruq [, string o'zgaruvchan [, int qaytish]])
misol:
  1. <?
  2. exec ("ping c 5 www.technoidea.boom.ru", $ping);
  3. for ($i = 0; $i < count($ping); $i++):
  4. print "<br>$ping[$i]";
  5. endfor;
  6. ?>

shunda sizga quyudagicha chiqadi
PING boom.ru (194.67.45.28) 56(84) bytes of data.
64 bytes from 194.67.45.28: icmp_seq=1 ttl=247 time=95.1 ms
64 bytes from 194.67.45.28: icmp_seq=2 ttl=247 time=93.8 ms
64 bytes from 194.67.45.28: icmp_seq=3 ttl=247 time=93.6 ms
64 bytes from 194.67.45.28: icmp_seq=4 ttl=247 time=93.7 ms
Clever
#16
Teskari apostrov ( ` )
Bu exec kabidir, yani shu belgini orasidagi hamma komanda exec kabi ishlab keyin chiqgan ma'lumot o'zgarmasga yoziladi
misol:
  1. $output = 'ls';
  2. print "<pre>$output</pre>";

bu kichik kodimiz, o'zi turgan katalog (direktorini) ichidagi hamma bor fayl va kataloglarni oynaga chiqaradi.

passthru()
Aynan exec kabidir, faqatgina bir farqi butun chiqgan ma'lumotni (qaytgan) oynaga, ya'ni Internet Browserga yuboradi.

escapeshellcmd()
string escapeshellcmd(string buyruq)
Bu funkstiyamiz hamma hafli belgilarni o'chirib keyin buyruqni ishlatadi.
Ya'ni agarda siz Unix sistemasida rm rf * desangiz ko'dingiz turgan yerdagi hamma katalog va fayllar o'chib ketadi, shuning uchun agar siz escapeshellcmd bilan ishlatsangiz * belgisi ishlatilmaydi, ya'ni hech narsa o'chirilmaydi.
Misol:
  1. $user_in = 'rm rf *';
  2. exec($user_in); //hafli hamma fayllar o'chib ketishi mumkindir.
  3. $user_in = 'rm rf *';
  4. exec(escapeshellcmd($user_in)); //hafli emas, sababi * belgisi olib tashlanadi


basename()
Bu funktsiyamiz faylga yo'ldan ya'ni misol uchun "c:\program files\mozilla\mozilla.exe" dan mozilla.exe, ya'ni faylni ismini ajratib olib beradi.
Misolga qarang:
  1. $path = "/usr/local/sbin/skip.test";
  2. $file = basename($path);

shunda $file = "skip.test" bo'ladi.

getlastmod()
Bu funktsiya, faylni eng oxirgi marotaba o'zgartirilgan sana va vaqtni qaytaradi.
Int getlastmod(void)
misol:
  1. echo "Last modified:", date("H:i:s a", getlastmod());


stat()
Bu fayl haqida jami ma'luimotlarni qaytaradi.
Array stat(string fayl)
Qaytaradigan ma'lumotlar soni 12'tadir ular
1. Device (qanday uskuna)
2. inode (indeks yo'li)
3. inode himoyasi
4. Yollanmalar soni
5. Fayl egasining raqami
6. Fayl egasining gruppasining raqami
7. inode uskunasini turi
8. Hajmi (byte)
9. Faylga oxirgi marotaba bo'lgan murojat vaqti
10. Faylni oxirgi marotaba o'zgartirilgan vaqti
11. Faylni sistemaga yozishdagi bloklari
12. Ajratilingan bloklar soni
Keling misolga qaraylik
  1. $file = "datafile.txt";
  2. list($dev, $inode, $inodep, $nlink$, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime,
  3. $bsize) = stat($file);
  4. print "$file is $size bytes. <br>";
  5. print "Last access time: $atime<br>";
  6. print "Last modification time: $mtime <br>";

shunda:
index.php is 285 bytes.
Last access time: Jule 15 2006 1200
Last modification time: Jule 15 2006 1100
Mana misoldan ko'rib turganingizdek biz o'zimizga kerakli bo'lgan ma'lumotlarni oynamizga chiqardik.

chgrp()
Faylning tegishli bo'lgan gruppasini o'zgartiradi.
Int chgrp(string fayl, mixed gruppa)

filegroup()
Faylning guppasining raqamini qaytaradi, ya'ni egasi bo'lgan gruppasining raqamini.
Int filegroup(string fayl)

chmod()
Faylga bo'lgan ruhsatlarni, ya'ni gruppa, yoki boshqalarni qanday huquqlari borligini aniqlash, ya'nikim yozish, o'qish yoki ishlatish huquqlarini o'zgartirishdir.
Int chmod(string fayl, int ruhsat)
Huquqlar sakizlik sanoq sistemasida beriladi. Ya'ni aynan Unix/Linux sistemalaridagi kabidir.
Misol:
[code=php]chmod ("datafile.txt", 0755) //egasiga hamma huqulqar ya'ni 7
//gruppaga o'qish va ishlatish yani 5
//boshqalarga ham o'qish va ishlatish 5[code]

fileperms()
chmod() funktsiyasi bilan berilgan ruhsatlarni ko'rsatadi. Yani faylga bo'lgan ruhsatlarni qaytaradi.
Int fileperms(string fayl)
Clever
#17
chown()
Faylning egasini o'zgartirish uchundir.
Int chown(string fayl, mixed egasi)

fileowner()
chown() funktsiyasi bilan belgilab berilgan fayl egasini qaytaradi.
int fileowner(string fayl)

copy()
Faylni nushasini olish.
Int copy(string qayerdan, string qayerga)
misol:
  1. $data_file = "data1.txt";
  2. copy($data_file, $data_file'.bak.') or die ("Could not copy $data_file");


rename()
Fayl ismini o'zgartirish.
Bool rename(string eski_ismi, string yangi_ismi)
misol:
  1. $data_file = "data1.txt";
  2. rename($data_file, $data_file'.old.') or die ("Could not rename $data_file");


unlink()
Faylni o'chirish.
Int unlink(string fayl)

dirname()
Qandaydir faylga yo'ldan, faqatgina katalogini olib ajratib beradi, ya'ni basename() funktsiyasi kabi ammo bu kataloglar uchundir.
string dirname (string yol)
misol:
  1. $path = "/usr/local/index.php";
  2. $dirs = dirname($path);

shunda dirs = "/usr/local" bo'ladi.

is_dir()
Katalogligini tekshiradi, agarda katalog bo'sa unda TRUE qaytaradi, agarda fayl bo'lsa unda FALSE qaytaradi.
bool is_dir(string ism)
  1. $file = "index.html";
  2. $dirs = "/usr/local";
  3. $isdir = is_dir($file); //isdir=FALSE
  4. $isdir = is_dir($dirs); //isdir=TRUE


mkdir()
Yangi katalog yaratadi.
Int mkdir(string yol, int turi)
Bu yerda turi, katalogga qanday huquqlar berilishini belgilaydi.

opendir()
fopen() kabidir, ammo farqi bu kataloglar uchundir.
Int opendir(string yol)

closedir()
opendir() bilan ochilgan katalogni yopish uchun ishlatiladi.
Void closedir(int ochiq_katalog_raqami)

readdir()
Katalogni ichidagi ichki katalog, yoki fayllarni birma bir o'qib ismini qaytaradi.
String readdir(int ochiq_katalog_raqami)
misolga qarang:
  1. $dh = opendir('.');
  2. while ($file = readdir($dh)):
  3. print "$file <br>"; endwhile;
  4. closedir($dh);

Bu yerda biz turgan katalogimizni ichidagi hamma fayllarni va kataloglarni o'qib oynamizga chiqaramiz.

chdir()
Bu turgan katalogimizni o'zgartirish uchun ishlatiladi, ya'ni DOS'dagi CD kabidir.
Int chdir (string katalog)
Clever
#18
rewinddir()
opedir() bilan ochilgan katalogni boshiga olib borib qo'yadi (agarda keyin o'zgartirilgan bo'lsa).

Keling endi biz sahifamiz uchun bir kichik hisoblagich yozlaylik, ya'ni har bir kirganni hisoblab boradi.
Bu siz uchun kichik bir o'rganish va oldindan o'tilgan funktsiyalar bilan yana ham yaqinroq tanishishga yordam beradi.
Men sizga hisoblagichni kodini beraman va siz uni o'rganib, o'zingizga keraklicha qilib olishingiz mumkindir.
  1. <?
  2. $access = "hits.txt";
  3. $visits = @file($access);
  4. $current_visitors = $visits[0];
  5. $all_me = (int)$current_visitors + 1;
  6. $fh = fopen($access, "w");
  7. $success = fwrite($fh, $all_me);
  8. fclose($fh);
  9. print "Visited: $all_me";
  10. ?>

Mana shu kichik koddir.

Fayllar bilan ishlashga qo'shimcha
Ko'rganingizdek bizni faylni server'ga yuklashda kichkina muammoyimiz bor edi, ya'nikim yuklangan fayl o'z ismini emas vaqtincha berilgan ismini qabul qila olardi. endi keling shuni yana boshqa yo'lini ko'raylik. Quyida keltirilgan misolni ko'rib chiqing

test.html fayli
  1. <title> File Upload </title>
  2. </head>
  3. <h2> <b> Faylni tanlab yuklani bos </b></h2>
  4. <form action="upload.php" method="post" enctype="multipart/formdata">
  5. <input type="file" name="filename"><br>
  6. <input type="submit" value="yukla"><br>
  7. </form>
  8. </body>
  9. </html>


upload.php fayli
  1. <html>
  2. <head>
  3. <title> Yuklandimi? </title>
  4. </head>
  5. <body>
  6. <?php
  7. if(copy($_FILES["filename"]["tmp_name"], "temp/".$_FILES["filename"]["name"])) {
  8. echo("Fayl yuklandi");
  9. } else {
  10. echo("Fayl yuklana olmadi");
  11. }
  12. ?>
  13. </body>
  14. </html>

Mana misollardan ko'rgan bo'sangiz kerak biz bu yerda GLOBAL $_FILES ni ishlatdik va faylni o'zini ismi bilan yukladik.
Yana qo'shimcha ma'lumot olish kerak bo'lsa unda quyidagi misolga qarang.

upload.php fayli
  1. <html>
  2. <head>
  3. <title> Fayl yuklandimi? </title>
  4. </head>
  5. <body>
  6. <?php
  7. if(copy($_FILES["filename"]["tmp_name"], "temp/".$_FILES["filename"]["name"])) {
  8. echo("yuklandi <br>");
  9. echo("Fayl bilan aloqali malumotlar: <br>");
  10. echo("Ismi: " ) ;
  11. echo($_FILES["filename"]["name"]) ;
  12. echo("<br>Hajmi: ") ;
  13. echo($_FILES["filename"]["size"]) ;
  14. echo("<br>Yuklangan yeri: " ) ;
  15. echo($_FILES["filename"]["tmp_name"]);
  16. echo("<br>Fayl turi: " ) ;
  17. echo($_FILES["filename"]["type"]);
  18. } else {
  19. echo("Yuklanmadi");
  20. }
  21. ?>
  22. </body>
  23. </html>
gi8ri7
#19
Tak, Hello degan bo'lim bor u bo'limda 5 ta maqola bor, u maqolalarda 4-5-7 dan fikrlar yozilgan.
O'sha bo'limdagi maqolalarga bildirilgan fikrlarni umumiy sonini qanday chiqaraman?
1 daqiqa 28 soniyadan keyin yozdi:
Agar javobni PDO de bersangizlar menga umuman ish qolmagan bo'lar edi, oddiy MySQL da yozsangiz ham bo'laveradi
33
Tayota
#20
gi8ri7, # gi8ri7 (26.04.2022 / 07:02)
Tak, Hello degan bo'lim bor u bo'limda 5 ta maqola bor, u maqolalarda 4-5-7 dan fikrlar yozilgan.
O'sha bo'limdagi maqolalarga bildirilgan fikrlarni umumiy sonini qanday chiqaraman?
1 daqiqa 28 so
Bolimustuni
Id
Nomi

Maqolaustuni
Id
Nomi
Bolim
Vaqt
Hk

Komentustuni
Id
Vaqt
Matn
Bolimidisi
Maqolaidsi
Hklar


Select count(id) from `komentustuni` where `bolim` = 'kereklibolim idsi'


Keraklisiga moslab olaveras (pdo, mysql(i), sqlite hk) algaritmga tushuntiraoldim deb óylayman. Tóğrisi kodni chiroyli qib yozib berishga etindim. Tóģri tushunasiz deb óylayman...


Komentni bazaga yozvotganda qaysi bolimdan i qaysi maqolaga yozilvotganini yozish esdan chiqmasin

Kunduzi: 11°C

26 Apr 2024 yil
Joylashuv aniqlanmadi