Jump to content
php.lv forumi

Kaklz

Moderatori
  • Posts

    1,401
  • Joined

  • Last visited

Everything posted by Kaklz

  1. Kaklz

    php notices

    skripta sākumā ieliec error_reporting(E_ALL & ~E_NOTICE); Bet ir vērts ieklausīties arī bubu vārdos - izvairīsies no ļoti daudzām problēmām un kļūdām ;)
  2. Vai tad nu tiešām ir tik svarīgi savā maģiskajā izskatā ir tik liela nozīme tam, ka tur ir <div> nevis <table><tr><td></td></tr></table> ? Ir tāds jēdziens kā hybrid layouts (tabulas kopā ar CSS) un tas nu nemaz nav tas sliktākais piegājiens. Attēlā redzamo izkārtojumu diezgan triviāli var panākt ar vienas tabulas izmantošanu un attiecīgi nav jēgas taisīt 10 <div> elementus, pielietot n-desmit trikus, lai panāktu to pašu 1 tabulas saveidoto izskatu. Neviens ar bomi pa galvu nedos, ja tev būs viena tabula <table id="pageStructure"> <tr><td rowspan="3"></td><td></td><td></td><td rowspan="3"></td></tr> <tr><td></td></tr> <tr><td></td></tr> <tr><td colspan="3"></td></tr> </table> Tie, kas cīnās par CSS izkārtojumiem lielākoties vēlas tikt vaļā no <font> un citiem absolūti nestrukturālajiem elementiem un aprakstīt izskatu ar CSS līdzekļiem, tādā veidā gūstot ietaupījumu gan lapas apjoma ziņā (external stylesheets) gan arī vienkāršojot lapas izskata maiņu nākotnē, kā arī uzlabojot savu lapu pozīcijas meklētājserveros. Tie, kas noliedz jebkādu tabulu pielietojumu, vienkārši skrien ar galvu sienā.
  3. gzip ir HTML kompresijas paņēmiens, ar kuru var samazināt pārsūtāmo failu izmērus, bet ne jau slodzi uz serveri, pat otrādi, izmantojot gzip serverim vēl papildus lapas uzbūvēšanai būs viņa arī jāsspiež.
  4. viss ir atkarīgs no tā, cik statiski tev tie dati ir ;) Neviens neliedz ar PHP no administrācijas rīka uzreiz uzģenerēt statisku HTML lapu un padot viņu jau kā .html, nevis kā .php pašam pārlūkam.
  5. http://php.lv/f/index.php?showtopic=825&hl=summa
  6. visiem ul#treelevel[x] li a pietrūkst "display: block;" Starp citu, ieteiktu radināties vismaz pie XHTML 1.0 un likt klāt arī visiem elementiem aizverošās birkas ;)
  7. Kaklz

    cepumi

    Iesaku paskatīties MySQL manuālī INSERT teikuma sintaksi! :) Šitais jau nu 100 punkti nav pareizs :D bubu, šite nu tev ir 50%/50% taisnība. SQL-92 standartā tiešām nav šādas sintakses, taču paldies MySQL, kurš to neskatoties uz neesamību standartā ir ieviesis. Saki ko gribi, bet insertus šādi ir rakstīt daudz ērtāk, kaut vai gadījumos, kad viņi ir palieli. Tev ir iespējas insertu sarakstīt apmēram šādi: foreach ($insertArray as $key => $value){ $insertPairs[] = $key . ' = "' . mysql_escape_string($value) . '"'; } $qry = 'INSERT INTO tabula SET ' . join (', ', $insertPairs); Pamēģini šādu triku izveikt ar pierasto SQL-92 standartā rakstīto sintaksi ;) Protams, savā ziņa taisnība tev būs, ja teiksi, ka ir slikti pierast pie vienas DBPS, bet iespējas ir tāpēc, lai viņas izmantotu. Es arī pirmajā reizē tieši tāpat kā tu protestēju pret šādu sintaksi, bet palasot manuāli atradu, ka tas ir legāli un mazliet aplauzos :) Edit: Nobeigumā citāts no MySQL manuāļa: INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
  8. Kaklz

    cepumi

    Ar setCookie izceptie cepumi parādās tikai tad, kad tu attaisi krāsns durvis, jeb programmētāju valodā runājot pie nākamās lapas ielādes. Ja gribi šos cepumus dabūt neattaisot krāsns durvis, tad pašam ir jālien krāsnī, tas ir, manuāli jāuzstāda $_COOKIE['mainiigais'].
  9. Kaklz

    kursi

    Iespējams, ka pēc kāda laiciņa būs tajā pašā BDA, jo sākot ar 31. jūliju visā pasaulē tiek palaista Zend PHP sertifikācija un apmācības programma, pierastā prakse rāda, ka lokālajos sertifikācijas centros, kāds ir BDA, šādas apmācības programmas tiek piedāvātas. Attiecīgi vari mēģināt sīkāk painteresēties pie BDA pārstāvjiem.
  10. Klau, es tev ieteiktu iemācīties vismaz pašu pašu pašu minimālāko no SQL sintakses. Priekš kam ir domāts SQL WHERE nosacījums? Tu tagad iedomājies, ka tev datubāze ir skapītis, kurā dokumenti ir sakārtoti ~26 atvilknēs, kur katrā atvilknē ir e-pasti, kas sākas ar savu alfabēta burtu. Tu taču nevilksi ārā un neizkrāmēsi visas 26 atvilknes, lai atrastu e-pastu, kas sākas ar 'a'? Ņemot talkā analoģijas ar SQL, tad tev pietiek uzrakstīt $res = mysql_query('SELECT * FROM tabula WHERE email = "'.mysql_escape_string($_GET['email'].'"'); un lieta darīta. Ja tāds e-pasts būs datubāzē, tad tas tiks atgriezts, ja ne, tad tāda e-pasta nav. Vēlviena lieta, kas attiecas uz PHP ir tā, ka ar = piešķir, bet ar == salīdzina. Pievērs uzmanību savam "salīdzinājumam" if ($kaste = "") kaut kur ap 14. rindiņu
  11. Līdz skripta loģikai es netiku, iekopēju kodu Zendā, izlaboju sintakses kļūdas un neiedziļinoties pašā skriptā pateicu, ko man Zend aizrādīja ;)
  12. starp citu, tas, ka tev neko nerāda varētu būt arī tāpēc, ka tavā tabulā nav neviena ieraksta, jo viss izvads ir iekļauts while ($row = mysql_fetch_xx) blokā. Attiecīgi, ja tabulā nav ierakstu, tad arī nekas netiek izvadīts.
  13. Ok, tad turpinām: 24. rinda semikols aiz " 30. rinda else vietā elseif + tas, ko bubu teica par $line(0) - vari lietot vai nu $line[0] vai $line{0}, labais stils ir lietot {0}
  14. 15. rindiņa aiz index.php pietrūkst parastā pēdiņa (') Turpmāk ieteiktu lietot redaktoru, kas atbalsta sintakses iekrāsošanu, būs vieglāk ;) edit: Papildus vēl ir ieteicams skripta sākumā pievienot: error_reporting(E_ALL & ~E_NOTICE); ini_set('display_errors', 1); vai arī error_reporting(E_ALL); ini_set('display_errors', 1); ja gribi redzēt visas kļūdas un problēmas savā kodā.
  15. Kaklz

    PHP fopen

    Kļūdas apstrādāt diez vai varēs. Viņš pat neiepīkstēsies, ja kaut kas noies greizi. Tā arī ir tā atšķirība. Kļūdas var apstrādāt tad, ja nav @ priekšā un tu esi nodefinējis savu error hadling funkciju. Vai arī tad, ja tu izmanto PHP5 un viņa try..catch struktūru
  16. Ir tāda lieta, ka lai atbildētu uz šo jautājumu vajag tādu lietu, kā formulēt jautājumu, lai mums tāda lieta, kā tu domā būtu saprotama.
  17. Kaklz

    ip check

    nez vai tā būs Dažos senos RFC var redzēt tekstu: Multi-regional 192.0.0.0 - 193.255.255.255 Europe 194.0.0.0 - 195.255.255.255 Others 196.0.0.0 - 197.255.255.255 North America 198.0.0.0 - 199.255.255.255 Central/South America 200.0.0.0 - 201.255.255.255 Pacific Rim 202.0.0.0 - 203.255.255.255 Others 204.0.0.0 - 205.255.255.255 Others 206.0.0.0 - 207.255.255.255 Tad tagad jau noteikti viss ir mainījies ;) Viens no variantiem ir izmantot ripe.net datubāzi. Nedaudz parokoties pa viņu ftp, var atrast failu ar IP adresēm un to atrašanās vietām. Diemžēl kā viņi paši raksta, tad tas negarantē 100% precizitāti, taču šajā failā ir apkopota informācija par IP adresēm, kurās valstīs tās lietotas. Faila struktūra priekš apstrādes ir diezgan parocīga: ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-20040714 Nedaudz paskatoties šajā failā jau var redzēt zināmas nekonsekvences - vienā vietā Latvijas IP adrešu apgabals ir piekārtots ES, citā vietā vēl joprojām var redzēt LV kā valsts apzīmējumu. Vēl viena lieta, ko der zināt - šeit nav visas pasaules IP adreses, bet gan tikai Eiropas valstu, attiecīgi pārējām IP adresēm ir jāmeklē cits reģionālais atbildīgais serviss. Katrā ziņā šī lieta nav nemaz tik vienkārša ;) Ne velti attiecīgs softs maksā ~$350 http://www.ip2location.com/IP-COUNTRY-REGI...E-LONGITUDE.HTM
  18. Kaklz

    beediiga zinja

    Raksts ir datēts ar 2003 gada novembri. Tagad ir 2004. gada jūlijs. Situācija mainās ;) Palasi kaut vai: http://pods.lv/arhivs/2004/6/21/1860/ http://hackers.lv/?id=5149
  19. XML supports ir, taču 5. versijā tas ir 1) pārstrādāts no jauna pēc labākajām šībrīža metodēm (libxml2) 2) vienkāršots (SimpleXML ļauj ar XML darboties arī cilvēkiem, kam gar XML ir maza saprašana)
  20. pilnīga nesaprašana par sessiju mehānismu man vienmēr iekš php.ini session.use_cookies=0 kad tiek pastartēts php, kas pieprasa atvērt sesiju, tad _serveris_ noģenerē katram tādam lietotājam unikālu identifikātoru (balstoties uz IP, pilno pārlūka stringu, pārlūka programmas handle utml, vai nu arī atverot permanento socketu, kā nu kurais). Šis hashs tiek nosūtīts atpakaļ brauzerim, kurš var, bet var arī nenēsāt sev pats to līdzi (operatīvajā atmiņā, nododot to tikai ar slēpto HTTP headeri; vai arī caur $_GET; dažs arī cūkijā utml), bet ja pārlūks nenodod šo identifikātoru, tad serveris to ģenerē no jauna, pēc tā paša algoritma - un loģiski, ka arī tad viņam jāsakrīt ar iepriekšējo. Attiecīgi katram hasham tiek izveidots failiņš _uz servera_ (sk. temp direktoriju, vai kur viņš to veido jums - session~path), kurā tiek serializēts $_SESSION masīva saturs. Pieslēdzoties klientam ar kādu hashu, tiek pārbaudīts, vai tāds failiņš eksistē, un ja - jā - tad tiek unserializēts tā saturs php pieejamā $_SESSION masīvā (tātad, unikāli katram lietotājam). Ja tāda failiņa nav, tad tiek vērta vaļā jauna sesija (ar jaunu hashu). Paralēli iet arī cits process, kas nodzēš novecojušo sesiju failus. Jā, cilvēki dāžreiz session.use_cookies=1, _ja_ sessijās glabājas "nekonfidenciāla" informācija. Jā, kūkijos glabā sessijas identifikātoru, lai atsāktu to pašu sesiju, ja pārlūks tika aizvērts. Jo, ja pārlūks tika aizvērts, pie jaunas konekcijas "ienākošie" parametri hashu ģenerēšanas algoritmam būs citādi (cits ports, handle un hvz kas vēl). Cūkijos saglabāto identifikātoru pirms sessijas uzsākšanas ar session_start ekskluzīvi var iestatīt ar session_id funkciju, vai arī nodot kā PHPSID?=šurum-burum (PHPSID vietā jūsu sessiju mainīgā nosaukums). šim forumam vaidzētu pielikt fīču ar postu novērtēšanu, dodu savas 5 zvaigznītes šim postam ;)
  21. Kaklz

    OOP kā tāds

    gribu redzēt tavus maņu orgānus, ka tu to novēroji :P. Ir kāds reāls testu piemērs ar benchmarkiem? pats vienu redzēju, kurā OOP bija lēnāks, taču darbojās ar mazāk kļūdām. Ties gan tests tāds neizteiksmīgs .. :( http://3a3-interactive.net/simpleblog/post.php?pid=65
  22. Kaklz

    OOP kā tāds

    es to uztvēru kā pašsaprotamu lietu, jo tikko ir doma, ka projektam nāksies vēl kādu reizi kaut ko labot, par html miksēšanu ar PHP gandrīz automātiski jau aizmirstu. Manuprāt tas jūtami uzlabo koda lasāmību Kaut vai salīdzinot <?php $res = mysql_query('BLABLA'); ?><table><?php while ($row = mysql_fetch_row($res)){ ?><tr><td><?php echo $row[0]; ?></td><td><?php echo $row[1]; ?></td></tr><?php } ?></table> ar <?php $res = mysql_query('BLABLA'); $content = '<table>'; while ($row = mysql_fetch_row($res)){ $content .= '<tr><td>' . $row[0] .'</td><td>' . $row[1] .'</td></tr>'; } $content .= '</table>'; echo $content; Savācot visu HTML body vienā mainīgajā ir tīri labas iespējas izmantot templeitus, ko es arī aktīvi daru :)
  23. Kaklz

    OOP kā tāds

    IMHO metodēm xml, doctype nav nekādas jēgas ;) Ja tu varētu teiksim mainīt Doctype ar doctype funkciju, vai pārdefinēt xml versiju vai ko tādu, tad arī būtu reāla jēga - savādāk sanāk, ka tu vienkārši principa pēc, lai būtu vairāk funkcijas. Funkcijai, kas vienmēr atgriež statisku rezultātu patiesībā nav nekādas jēgas. Tam ir domātas konstantes.. bet tā, visā visumā nav ne vainas ;)
  24. nekas nekur nesamazinās, nefantazē :D Lieta tāda, ka ja tu izdzēsīsi savu rakstu, tad tie tavi komentāri tā arī paliks karājoties gaisā nevienam rakstam nepiesaistīti. Šādos gadījumos pie saprātīgākām datubāzu pārvaldības sistēmām ir tāda lieta kā cascaded delete vai kā to sauc, kad tiek automātiski dzēsti arī tie ieraksti, kuri ir piesaistīti tavam rakstam. Ar MySQL attiecīgi, ja ir vēlme attīrīt savu datubāzi no šī raksta pilnībā, tad ir vērts pie reizes izdzēst arī visus komentārus ar attiecīgo raksta_id.
  25. Ir vēl tāda lieta, kā lielāki uzņēmumi, kuriem ir viena pati ārējā IP adrese, un kuru maģiskais firewall/proxy nesaka, kāda ir iekšējā - attiecīgi tu riskē, ka kāda daļa no taviem unikālajiem apmeklētājiem nevarēs nobalsot ;)
×
×
  • Create New...