Patiko? Prenumeruok el. paštu

Straipsniai pagal gairę

SVN dalinis eksportavimas

Ne paslaptis, kad bet kokia svetainė yra kuriama pradžioje darbiniame kompiuteryje, o tik po to perkeliama. Daugiau patyrę programuotojai tikrai džiaugiasi versijų kontrolėmis (cvs / svn / git ), kurios padeda atlikti didelius darbus tam tikrose situacijos.
Vienas iš (mažų/didelių) galvos skausmų yra svetainės atnaujinimas. Problema yra ta, kad ne visada prisimeni kokie failai keitėsi nuo paskutinio atnaujinimo. O kopijuoti viską iš naujo yra tiesiog laiko švaistymas.

Šiandien atradau (suradau) būdą kaip realizuoti dalinį eksportavimą svn, kuris leidžia gauti atnaujinimus nuo jūsų pasirinkto revisono. Deja to builtin nėra.

Šiektiek pagooglines atradau, kad tai galima realizuoti per konsolę su gatavu scriptuku (unix/macosx),  python pagalba ar java. Taip bus galima daug greičiau atnaujinti svetaines ir nerekės siųsti viso didžiulio katalogo ar žaisti po vieną failą.

MySQL 5

Pas mus firmoje upgreidinome servą, vienas pakeitimų MySQL 5 versija. Kolkas visų navarotų nespėjau išnaudoti, vis atlieku pritaikymus prie mysql 5 darbus. Vien upgreidinti neužtenka, reikia ir žinoti ne vieną niuansą. Keletą jų parašysiu.

Duomenų importavimas ir mysql naudojimas

Jei jūs naudojate tokią pačią koduotę kokia nustatyta pa default, problemų mažiau turėsite, bet jei prasideda vienu windows-1257 kodavimas, kitur UTF-8 prasideda niuansai.

  • Jei importuojate, nepamirškite pirma pasirinkti db kuotuotę
  • Rekomenduočiau pirmiau importuoti struktūra o po to duomenis. Duomenis galima importuoti po to kai matote kad stuktūra yra teisinga (su teisingais collcatais)
  • Prisiminkte su nauja versija, naujom savybėms atsiranda naujų rezervuotų “žodžių”, tad visur stengitės naudoti teisingą sintaksę užklausuose. Bus saugiau :)

Select `id`, `name`, `repeat` from `tablename`

  • Kai programiškai db inicijuojate nepamirškite nurodyti ir šios junties koduotės:

$db->query(‘SET NAMES UTF8’);
$db->query(‘SET CHARSET UTF8’);

Logikos pasikeitimai

Pasikeitė ir logikos užklausose. tarkim užklausa nebus teisiga, ją reiktų pakeisti su 2 joinais :).

Select d.vardas, d.pavarde, pr.pavadinimas, pad.pavadinimas as padalinys from darbuotojai as d, pareigos as pr LEFT join padalinys as pad on pad.id=d.padalinys_id where d.pareigos_id=pr.id and d.id=12

PHP upload galimas bugas tavo kode ir backupu import/export idėja

Daugelis pradeda programuoti ir saugumo savo “programėlių” mažai rūpinasi, vien iš nežinojimo. Kuo daugiau patirties tuo paprastesni uždaviniai sprendžiami turėtų kuo sudėtingiau. Bent taip esu susidaręs nuomone, kur seniau problemos nematydavau, dabar atorodo uch… problematiška.

Štai keletas pavyzdžių, ką gali padaryti su jūsų paliktom “klaidelėm” ir pan.

Kartais padaro programėlė, kuri leidžia bilekam uploadinti failus. Tarkim nuotraukas ir kitus failus. Ir neduok dieve palikta galimybė uploadinti bile kokio tipo failą, tuo galima pasinauti ir dar kaip.
Tuo pasinaudojau ir aš, bet jau uždaroje zonoje, buvau pamiršęs FTP slaptažodį, o reikėjo iš tos svetainės atsinaujinti failus, ir pasiimti naujausią SQL dumpą. Na ką? Jei galima uploud oadaryti bilekokį failą, tai vadinasi galima įkelti ir PHP skriptą, tarkim pavadinkim job.php. Ką galima su juo padaryti? Ogi labai daug! Ypač nusimanantiems. Taigi pasinaudojas ta upload galimybę susizipavau visą direktoriją, ir parsitempiau į kompiuterį. Kitas dalykas reikėjo SQL dumpo, tai irgi pasirodo paprasta, suzinojus kur mėtosi mysqldump, ir žinant mysql slaptažodį laisvai galima pasidaryti dump, ir gal net taip patogiau.

Kaip tai veikia?

Ogi gan paprastai, pasinaudojus php komanda system

system() is just like the C version of the function in that it executes the given command and outputs the result.

The system() call also tries to automatically flush the web server’s output buffer after each line of output if PHP is running as a server module.

Taig bandom;

galima panagrinėti failų struktūra, kaip pavyzdys ls -la komanda, ir t.t. Žiūrint ko jums reikia. Tos komandos jums veiks tarkim *nix serveryje net jei nėra galimybės prisijungti prie shh.

Taigi elementarios eilutės:

<?
set_time_limit(0);
$str = “ls -la”; // pasirinkta komanda
echo system($str);
?>

Taigi keletas kitų naudingų komandų. Taigi galima suzipuoti direktoriją, gauti mysql dumpus ikelti mysql dumpą ir pan, ko tik prireiks.

Keletas svarbių komandų. Daugelis naudoja phpmyadmin’ą kuriuo įkelia lentelę, didelė problema būna kad upload failas limituotas. Standartiškai būna 2MB, o dažnai dideli projektai saugo daugiau nei 2MB duomenų, tad koks backup.sql failas gali būti didelis ir juo neįkelsi per phpmyadminą. Patogiausia naudotis per ssh mysqldump ir mysql komandomis. O kai neturi galimybės ssh turėti gali ir pats greitai pasirašyti simple komandas. Tai gali būti naudojama ir backupų darymui (import/export);


Įkelti sql dump failą 
/path/to/mysql -u USER -pPASSWORD DBNAME < /path/to/dir/dumpas.sql

Eksportuojam dump failą
/path/to/mysqldump -u USERNAME -pPASSWORD DATEABAE > /path/to/dir/dumpas.sql

 taigi pasinaudojus system(), laisvai importuosim/eksportuosim failus. o jei jau palikai spragą upload skripte kenkėjas ne tik gali parsisiųsti visus failus tavo direktorijoje, bet ir užvaldyti serveriuką. Dėl to turėtų pasirūpinti serverio administratoriai bei programuotojai, kad tokios klaidos nevelti.

> home
  • Apie mane
  • Apklausos
  • Blogas
  • Lietblogs Search
  • Nuorodos
  • Reklama mano bloge
  • Search
  • Tags
  • Testas
  • Projektai
  • Kontaktuok
  • Archyvas