Jump to content
php.lv forumi

Aleksejs

Moderatori
  • Posts

    4,584
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Aleksejs

  1. Un kādas ir Tavas prasības Free hostingam, lai to sauktu par normālu?
  2. Aleksejs

    Sesija

    Nu, itkā ir ok, taču tā nav laba prakse, pieļaut neinicializētus mainīgos.
  3. Aleksejs

    Sesija

    Parādi pilnu kodu.
  4. Visprātīgāk šim mērķim būtu izmantot crontab vai "task scheduler" skriptu, kas reizi n minūtēs izdzēš visus failus, kas vecāki par noteikto laiku.
  5. Pārvietoju uz Darba sadaļu.
  6. Aleksejs

    Sesija

    Glabā sesijas mainīgajā: $_SESSION['valid'] laiku, līdz kuram sesija ir derīga. Kad lietotājs vēršas pie lapas, ja ir derīga sesija un ja laiks nav pārsniegts, nomaini $_SESSION['valid'] uz now()+3stundas, savukārt, ja šī brīža laiks ir lielāks, nekā $_SESSION['valid'], tad iznīcini sesiju un liec lietotājam logoties vēlreiz.
  7. Tikko uzgāju šādu FireBug alternatīvu: https://addons.mozilla.org/en-US/firefox/addon/216 Kāds lieto? Atsauksmes izskatās ļoti labas:
  8. Raksti nevis šitā: fwrite($f,'Daudzums:'.$r[8].'\n'); Bet šitā: fwrite($f,'Daudzums:'.$r[8]."\n"); Tā ir "vienpēdiņu" īpašība tāda :)
  9. Šitas nav labi: 156 | Using where; Using temporary; Using filesort un arī šitas nav labi: 156 | Using where Pirmais ir īpaši nelabi :)
  10. Nu, Pentiūūūūm! :D Nevis paša SQLa rezultāts mani interesē, bet gan - vaicājuma izpildes plāns - tas izskatīsies kaut kā šitā: mysql> EXPLAIN -> SELECT attach_id as total_attachment FROM phpbb_attachments -> WHERE post_id IN (163246, 164224, 164894, 165146, 167931); +-------------------+-------+---------------+-------------------+---------+------+-------+--------------------------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | +-------------------+-------+---------------+-------------------+---------+------+-------+--------------------------+ | phpbb_attachments | index | NULL | attach_id_post_id | 6 | NULL | 61834 | Using where; Using index | +-------------------+-------+---------------+-------------------+---------+------+-------+--------------------------+ Tikai, protams, savu Selectu aiz EXPLAIN ieraksti :)
  11. Jā, arī to var lietot kā papildus elementu, taču jāņem vērā, ka: Līdz ar to jānoskaņojas uz to, ka šī lieta drīz vairs nebūs pieejama.
  12. Pentium - vai Tu zini, ko dara EXPLAIN? ;) Ja nezini, tad ātri izlasi :) http://dev.mysql.com/doc/refman/5.0/en/explain.html http://hackmysql.com/case1
  13. Nē, biju domājis: EXPLAIN SELECT DISTINCT (komentari.tid), komentari.datums as datumz, raksti.id as raksta_id, raksti.virsraksts as raksta_nosaukums, lietotaji.lietotajs niks FROM komentari LEFT JOIN raksti ON raksti.id=komentari.tid LEFT JOIN lietotaji ON lietotaji.id=komentari.uid WHERE komentari.tips='raksts' AND komentari.id IN ( SELECT k2.id FROM komentari AS k2 WHERE k2.komentari.tid=raksti.id AND k2.datums IN ( SELECT MAX(k3.datums) FROM komentari AS k3 WHERE k3.tid=raksti.id ) ) GROUP BY komentari.tid ORDER BY komentari.id DESC LIMIT 5[/sql]
  14. No izstrādātāju mājas lapas. http://www.ubercart.org/
  15. Lūdzu, :) Man gan šķiet, ka tur vēl var optimizēt un optimizēt... un, iespējams, ka pavisam savādāk to uzrakstīt. Pagaidi vēl, ko Gints pateiks :) Intereses pēc iemet, kāds izskatās execution plāns. EXPLAIN viss tas garais vaicājums
  16. SELECT DISTINCT (komentari.tid), komentari.datums as datumz, raksti.id as raksta_id, raksti.virsraksts as raksta_nosaukums, lietotaji.lietotajs niks FROM komentari LEFT JOIN raksti ON raksti.id=komentari.tid LEFT JOIN lietotaji ON lietotaji.id=komentari.uid WHERE komentari.tips='raksts' AND komentari.id IN ( SELECT k2.id FROM komentari AS k2 WHERE k2.komentari.tid=raksti.id AND k2.datums IN ( SELECT MAX(k3.datums) FROM komentari AS k3 WHERE k3.tid=raksti.id ) ) GROUP BY komentari.tid ORDER BY komentari.id DESC LIMIT 5 Kaut kā šadi, tad varbūt.
  17. Mēģini pielikt MAX(komentari.datums) SELECT DISTINCT (komentari.tid), MAX(komentari.datums) as datumz, raksti.id as raksta_id, raksti.virsraksts as raksta_nosaukums, lietotaji.lietotajs niks FROM komentari LEFT JOIN raksti ON raksti.id=komentari.tid LEFT JOIN lietotaji ON lietotaji.id=komentari.uid WHERE komentari.tips='raksts' GROUP BY komentari.tid ORDER BY komentari.id DESC LIMIT 5
  18. ecoc, tieši tādēļ, ka viss ir sarakstīts vienā rindiņā arī ir problēma. // nozīmē, ka komentārs turpinās līdz rindiņas beigām. Tā ka pamēģini šo: http://paste.php.lv/1a4700962ffa1d3e6ae0ae...35a3b9?lang=php
  19. Sveiks! Eksistē vairāki izolēšanas varianti. Tas, kuri no tiem ir derīgi Tavā gadījumā... ir atkarīgs no Tava gadījuma :) Visvienkāršāk realizēt izolēšanu ir fiziski izolējot šīs lapas - katru uz sava servera. Nākošais variants - izmantot katrai lapai savu virtuālo mašīnu (xen, vmware utt). Vēl nākošais variants - katru lietotāju turēt savā "jailā". Vēl variants - izmantot katram lietotājam savu web servisu - viens vebserviss darbojas kā "reverse proxy" uz 80 porta un pārsūta attiecīgajām lapām adresēto uz nepriviliģētajiem portiem - lapai A 10001, lapai B 10002 utt, uz kuriem "klausās" serveri, kas palaisti ar konkrētā lietotāja tiesībām un kam līdz ar to ir tiesības piekļūt tikai šim lietotājam atļautajiem failiem. Vēl variants - izmantot suPHP - tas ļauj pašus PHP skriptus izpildīt ar lietotāja kontu - līdz ar to situācija ir līdzīga iepriekšējam variantam. Iepriekšminētos variantus var kombinēt. Visbeidzot, nedrīkst aizmirst, ka jānosaka pareizas piekļuves tiesības failiem, citādi daudzi papildus drošības līdzekļi izrādīsies veltīgi. Ja ir iespēja, tad jāizmanto failu sistēmas ACL atbalsts, īpaši paranoidālā gadījumā tādi kodola papildinājumi kā ArmorLinux, SeLinux. Nevajag aizmirst stingri iedalīt kvotas lietotājiem pieejamo resursu izmantošanā: http://www.linux.org/docs/ldp/howto/Secure...WTO/quotas.html Īsumā. Ja, vēlas "garumā", tad tas ir diezgan darbietilpīgi :)
  20. Sajaucu vietām: preg_match('/[^.]+\.[^.]+$/', $_SERVER['SERVER_NAME'], $rez); Bet nu... Lieto dokumentāciju un atradīsi ;)
  21. Pamēģini bez new: $rez = array();
  22. Kaut kā šādi, ja pareizi sapratu: $rez = new array(); preg_match($_SERVER['SERVER_NAME'],'/[^.]+\.[^.]+$/', $rez); switch($rez[0]){ case 'adrese1.lv': echo 'Tā ir adrese 1'; break; case 'adrese2.lv': echo 'Bet šī ir adrese 2'; break; //utt } Ceru, ka pareizi uzrakstīju. Edit: izlaboju pāris neuzmanības kļūdas:
  23. Jā, var! Tas glabājas: $_SERVER['SERVER_NAME']; Apraksts un piemēri te: http://lv.php.net/manual/en/reserved.variables.server.php
  24. Web Developer, teksts nepavisam nav par programmēšanu. Teksts ir par hostingu. Problēma ir tāda, ka Tu ar savu ziņojumu (vai nu netīši vai tīši) aizskar citus foruma dalībniekus. Šis nav forums, kurā tiek apspriests, vai es Aleksejs, vai Tu Web Developer esam pilnvērtīgi cilvēki - tam ir domātas citas vietas. Šobrīd faktiski Tu apgalvo, ka 1) codez nerunā patiesību - "ko tu te plāties"; 2) viņš ar saviem apgalvojumiem ir pelnījis izsmieklu "nesmīdini tautu". Varbūt esmu pārpratis sacīto, tādā gadījumā atvainojos visām iesaistītajām pusēm. Kas attiecas uz žurnālistiem - vai Tu tiešām gribi līdzināties viņiem un ja tirgū pārdevēji lamājas vienā laidā, vai tādēļ lamāšanās arī šeit būtu pieņemama? P.S. Latviešu valodā vokatīvs vēl nav atcelts. (~;
×
×
  • Create New...