Slave
Rugpjūtis 27, 2007

PHP klausimai #3

Ar dažnai sergate pirmadienio tinginystės sindromu? O gal kaip tik atvirkščiai, jis jums daug produktyvesnis nei kitos savaitės dienos? Asmeniškai man pirmadieniai visad sunkūs, nes reikia prisiminti kas padaryta, o kas ne bei įsilieti į darbinį ritmą. Keistai aš čia pradėjau, turiu ir kitų klausimų. Mūsų tikslas - atsakyti į klausimus, kurie iškyla kuriant žiniatinklio sistemas. Tai tik teorija, tačiau norint praktikoje būti produktyviam reikia teorinių žinių. Beje, viena iš pasyvumo priežasčių yra žinių trūkumas.

Baigėsi paskutinis vasaros savaitgalis - laikas klausimams, kurių atsakymai pasirodys trečiadienį. Dėkui, kad praeitą savaitę buvote tokie aktyvūs ir sutaupėte man laiko rašant atsakymus. Sėkmės!

1. Kaip patikrinsite ar el.pašto adreso domenas egzistuoja?
2. Kas yra SPL ir kam tai reikalinga?
3. Kokiais būdais galime apdoroti gautą rezultatą iš MySQL duomenų bazės?
4. Koks skirtumas tarp funkcijų str_replace() ir str_ireplace()?
5. Kokiais būdais galime priskirti sesijai kintamąjį?
6. Kuo skiriasi mysql_connect nuo mysql_pconnect? Kada kurį naudosite?
7. Dažnai po formos duomenų atsiuntimo į scenarijų vartotojas paspaudžia refresh arba back mygtuką, kas gali iššaukti pakartotinį duomenų įrašymą (pvz., į duomenų bazę). Kokiais būdais to išvengsime?
8. Kas yra SQL injekcija ir kaip to išvengti?
9. Kaip žinoti kokioje eilutėje esame scenarijaus vykdymo metu?
10. Kas yra JSON?

P.S. 11. IT Crowd rules? :)

Panašūs straipsniai


“PHP klausimai #3” komentarų: 4

  1. asterisk

    1. Vienas iš būdų yra patikrinti ar egzistuoja ANAME ir MX DNS įrašai. Tai galima atlikti su exec:
    exec(”nslookup -type=MX $domain”, $result);

    2. SPL - Standard PHP Library. Jau iš pavadinimo galima spręsti, jog tai yra tiesiog biblioteka, rinkinukas klasių, interfeisų spręsti standartines užduotis/problemas.

    3. Čia turi omenyje mysql_fetch_* ? Yra dažniausiai naudojimi
    array — gauti masyvą asociatyviu formatu + skaitiniai indeksai, assoc — asociatyvus masyvas, object — grąžinti eilutę kaip objektą. Na ir dar field, lengths, row.

    4. Viena funkcija yra ‘Case-sensitive’, kita ‘Case-insensitive’.

    5. $_SESSION[’sesijoskintamasis’] = $value; arba session_register(”value”);

    6. mysql_pconnect skiriasi nuo mysql_connect tuo jog persistent jungtis pirmiausia patikrina ar anksčiau nebuvo mysql jungties su tais pačiais duomenimis, jeigu buvo - naudoja ją, jeigu nebuvo sukuria ir baigiant skriptą jos neuždaro, o palieka vėliasniam naudojimui. Mysql_pconnect reikėtų naudoti norint pagerinti skripto efektyvumą/produktyvumą. T.y. kuomet skriptas turi dideles apkrovas - dažnai naudojamas. Kadangi pconnect palaiko connectioną sesijai, tai kiekvieną kartą užkrautas skriptas tam pačiam vartotojui nesukurs naujo connectiono (o tai šiek tiek kainuoja), taip bus sutaupyta išteklių šiek tiek.

    7. Pirmas ir paprasčiausias būdas mano nuomne yra tiesiog įrašius duomenis, vartotoją redirektinti į kitą vietą. Antras būdas - pažymėti sesijoje jog žmogus jau įrašinėjo duomenis. Manau sprendimų galima surasti ir daugiau, bet čia du man artimiausi ir greičiausiai atėję į galvą :)

    8. SQL injekcija - vienas iš saugumo spragų tipų. Jis skirtas užklausoms į duomenų bazę klastoti (nelabai žinau kaip tiksliai ir vienu sakiniu apie tai pasakyti, nes realiai papasakoti čia galima daug). Platesni atsakymai čia.

    9. debug_backtrace();

    10. JavaScript Object Notation - duomenų keitimosi formatas (kažkas panašaus į xml paskirtį, tik jis yra tekstinis ir žmonėms įskaitomas). Dažniausiai naudojamas su Ajax.

    11. ++

  2. NeWorld

    1. Su funkcija checkdnsrr (Pastaba: ji veikia tik unix sistemose)
    2. nežinau
    3.1. mysql_fetch_row gauna eilutės duomenis į masyva, kurio indeksai yra skaičiai
    3.2. mysql_fetch_object eilutės duomenis sudeda į objektą
    3.3. mysql_fetch_lengths parodo eilutės duomenų ilgį
    3.4. mysql_fetch_assoc eilutės duomenis sudeda į masyvą, kurio indeksai yra atitinkamų stulpelių pavadinimai
    3.5 mysql_fetch_array į viena masyva sudeda
    mysql_fetch_row ir mysql_fetch_assoc
    3.6 mysql_num_rows parodo kiek eilučių yra išvesta
    4. str_raplace pakeičia eilutės dalis kitomis dalimis. str_ireplace tas pats ką pirmoji funkcija (str_replace), tačiau joje didžiosios ir mažosios raidės laikomos vienodomis (case-insensitive)
    5. Su funkcija session_register, arba tiesiog $_SESSION[’naujas_kintamasis’]=’Naujas’;
    6. mysql_connect yra prisijungimas prie DB. mysql_pconnect jungiasi tik tada, jeigu nebuo uždarytas ankstesnis prisijungimas. Naudojame gal dėlto, kad sutaupytume prisijungim skaičių
    7. redirektu kad ir į tą patį puslapį
    8. SQL_injection yra galimybė vartotojams į mysql įtepti tiesiogiai savo duomenis, o su mysql komanda UNION galima pridirbti. Kad išvengti, papirma reikia filtruoti visus ‘ ” \. Toliau reikia filtruoti visus vartotojų įvestus duomenis
    9. nežinau
    10. Tiksliai nepasakysiu, bet berods JSON yra javascript objektų saugojimas eilutėje.

  3. Bloody

    1. if(!checkdnsrr(”one.lt”)) { /* nėra */ }
    2. Standart PHP Library - “būrys” klasių, kurios supaprastina ir palengvina darbą ir naudojima PHP kodu
    3. …?
    4. str_ireplace yra “case-insensitive” - nejautri didžiosioms ir mažosioms raidėms…
    5. …?
    6. mysql_pconnect - nuolatinį MySQL ryšį, kai reiktų naudoti tik iš vienos bazės duomenis, o mysql_connect - kai viename scripte naudojama daugiau nei vienos bazės duomenys
    7. manau papraščiausias būdas tikrinti ar toks įrašas yra
    8. būdas “išlupti” iš duomenų bazės duomenis pažeidžiant užklausą (query); apdoroti laisvai vartotojui įvedamus duomenis kurie vėliau bus naudojami užklausoje
    9. …?
    10. JavaScript Object Notation
    11. Yeah :)

  4. Armandas

    9. __LINE__ ;)

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.