Jump to content
php.lv forumi

Jackal

Reģistrētie lietotāji
  • Posts

    215
  • Joined

  • Last visited

Everything posted by Jackal

  1. Jackal

    bitmaskas

    Gribu taisīt lietotāju tiesības izmantojot bitmaskas. Piemēram, ir kods: class permissions { const ADD_CONTENT = 0x1; const ADD_OWN_CONTENT = 0x2; const EDIT_CONTENT = 0x4; const EDIT_OWN_CONTENT = 0x8; const DELETE_CONTENT = 0x10; const DELETE_OWN_CONTENT = 0x20; const ADD_COMMENT = 0x40; const VIEW_COMMENT = 0x80; } $myPermissions = permissions::ADD_CONTENT | permissions::ADD_OWN_CONTENT | permissions::EDIT_CONTENT | permissions::EDIT_OWN_CONTENT | permissions::DELETE_CONTENT | permissions::DELETE_OWN_CONTENT | permissions::ADD_COMMENT; if(hasPermission(permissions::ADD_CONTENT, $myPermissions)){ echo 'User can add contnet'; } else { echo 'User cannot add content'; } function hasPermission($permissionToCheck, $userPermissions){ return $permissionToCheck & $userPermissions; } Nav skaidrs par & un | . Daudzās vietās esmu lasījis, ka izmantojot šos operātorus jāuzmanās, lai nepārsniegtu 32 bitus (atkarībā no procesora 32 vai 64). Nav skaidrs kurā vietā tur var rasties 32 biti? vai definējot konstantes jāuzmanās, lai konstantei piešķirtais skaitlis nepārsniedz 32 bitus? Varbūt stulbs jautājums, bet man par bitu operācijām vispār ir diezgan liela neskaidrība.
  2. Problēma ir ar web pusi. realpath(dirname(__FILE__)) bija tikai piemērs kā šī problēma tiek risināta ar php direktorijām.
  3. Par virtual hosts ir zināms, bet vai tas ir vienīgais veids kā to panākt? Vai to nevar panākt tīri ar php kā to var izdarīt ar direktoriju servera pusē - realpath(dirname(__FILE__)) ? Izdomāju risinājumu echo 'http://' . $_SERVER['SERVER_NAME'] . str_replace($_SERVER['QUERY_STRING'], '', $_SERVER['REQUEST_URI']);
  4. Ir saite: http://localhost/project/test/1234 project ir reāla mape kurā atrodas visi projekta faili. test un 1234 ir parametri. Tā kā projekts pagaidām atrodas uz testa servera, tad visi projekta faili neatrodas uz http://localhost, bet gan apakšmapē Pārceļot uz īsto serveri, faili vairs neatradīsies apakšmapē. Problēma tāda, ka nezinu kā dinamiski atgriezt pilno saiti. Vajadzētu, kaut kā dinamiski atgriezt http://localhost/project, lai pārceļot uz īstā servera nebūtu jāmaina kods. Nav jau daudz jāmaina, bet tomēr gribētu, lai tas nebūtu jādara. Vai ir kāda iespēja to izdarīt?
  5. Jackal

    Chaining

    Jā šāds variants strādā, bet gribēju šo izveidot ar objektu un __get() metodi. Ar __get metodi ir problēma, ka tai jāatgriež $this, bet tai pat laikā man ir jāatgriež masīva elements.
  6. Jackal

    Chaining

    Vēlos uztaisīt, lai konfigurācijas parametrus varētu dabūt ar chaining paņēmienu. Piemēram ir masīvs $config = array(); $config['db']['user'] = 'aaa'; $config['db']['password'] = '12345'; Gribētu, lai password varētu paņemt ar $config = new config() $config->db->password; Pagaidām nav ideju, kā to varētu panākt. Pašlaik liekas, ka to vispār nevar izdarīt. Varbūt kāds zin kā šādu lietu varētu panākt?
  7. Tev tak kodā ir norādīts ceļš uz bildi, kas norāda tikai uz tavu serveri!
  8. Šo lietu taisu, lai klasēs būtu pieejami globālie objekti. Pašlaik meklēju labāko variantu kā varētu nodrošināt globālos objektus visā aplikācijā. Esmu sapratis, ka singleton objekti nav labi, jo, ja vajadzīgas vairākas objekta instances (piemēram, vairākas db konekcijas), tad singletons nekam neder. Pēc tam uzgāju singleton registry. It kā registry patterns būtu tas, kas vajadzīgs, bet sanāk baigi gari rakstīt. Piemēram, ja vajadzīga db objekta metode, tad jāraksta $this->registry->db->vajadzīgā metode. Manuprāt, tas ir drusku pa garu, ideāli būtu $this->db->vajadzīgā metode. Un tagad esmu nonācis līdz dependency injection container (sīkāk varat palasīt šeit - http://r.je/wrong.html ). Dēļ kā arī gribēju automatizēt funkcijas argumentu saņemšanu. Ilgāk papētot dependency injection container liekas, ka tas ir vēl sliktāks par iepriekšējiem diviem. Varbūt kādam ir citas idejas, protams, izņemot global?
  9. Ir šāda funkcija public static function setDefaults(dic $dic, config $config, data $data){ $size = func_num_args(); for($i = 0; $i < $size; $i++){ $arg = func_get_arg($i); //self::$defaults[$name] = $arg; } } Problēma ir tāda, ka man ir nepieciešams dabūt funkcijas argumenta nosaukumu. func_get_arg($i) atgriež pašu argumentu, bet man vajadzētu mainīgā nosaukumu (dic, config, utt.) Vai ir iespēja ko tādu izdarīt?
  10. mysql datubāzes tabulā ir kolonna num, kur katram ierakstam glabājas vērtība - 3.1., 3.2., utt. Šī kolonna norāda secību, kadā dati tiks izvadīti. Problēma sākas, kad šī vērtība ir lielāka par 3.9. Izmantojot order by num ASC dati izvadās šādā secībā: 3.1. 3.10. 3.11. 3.2. 3.3. bet vajadzētu būt šādi: 3.1. 3.2. 3.3. 3.10. 3.11. Ir kāds veids kā šo problēmu novērst?
  11. Ir divas lapas, vienā lapā ir forma, kura padod post datus. Šie post dati būtu jāsaņem otrai lapai, kura atrodas uz citas servera, taču caur ifreimu tiek iekļauta lapā no kuras tiek padoti post dati. Vai tas vispār ir iespējams un kā to varētu realizēt?
  12. Nesaku, ka tas vispār nav labi. Ar konstantēm ir tāda problēma, ka tās ir pieejamas pilnīgi visur. It kā tā jau vajadzētu būt ar konfigurāciju, bet man nepatīk tas, ka tās ir pieejamas templeitos. Man konstantes templeitos galīgi nav vajadzīgas.
  13. Par .htaccess failu ar jau biju iedomājies, bet man ir aizdomas, ka tas nav sevišķi droši. Bet es gan nezinu. Varbūt kāds paskaidros vai htaccess failu var apiet? Vēl iekš php.net atradu, ka var ini failam sākumā pielikt: ;<?php exit(' you won\'t see my ini file'); ?> vai arī šādi: first line: ;<?/* last line: ;*/?>
  14. Lieta tāda, ka meklēju jaunu veidu kā varētu veidot lapas konfigurāciju. Pašlaik to daru izmantojot konstantes, bet tas vairs neliekas labs veids kā to darīt. Atradu šādu lapu - http://www.ibm.com/developerworks/opensource/library/os-php-config/ , kur ir parādīts, ka konfigurāciju var veidot arī ar ini failiem tāpat kā tas ir ar php konfigurāciju. Ar ini failiem arī ir problēmas, jo kaut kā ir jāpaslēpj, lai būtu pieejami tikai web serverim. Kā labāk padarīt nepieejamus ini failus lapas apmeklētājiem?
  15. Jackal

    SET NAMES

    Paldies par atbildēm, mēģināšu tikt galā
  16. Jackal

    SET NAMES

    Array ( [0] => big5 [Charset] => big5 [1] => Big5 Traditional Chinese [Description] => Big5 Traditional Chinese [2] => big5_chinese_ci [Default collation] => big5_chinese_ci [3] => 2 [Maxlen] => 2 ) Pieliku zemāk esošo kodu, bet vienalga rādās ķeburi. mysql_query("SET NAMES 'big5'"); Pieliekot: mysql_query("SET NAMES 'latin1'"); viens ieraksts parādās pareizi, bet pārējie rādās greizi
  17. Jackal

    SET NAMES

    Manās rokās ir nonākusi viena datubāzes tabula, kurai baigi ir sačakarēts encodings. Daudziem ierakstiem ir atšķirīgi encodingi. Varbūt kādz zin, kur var attrast tabulu ar visiem encodingu nosaukumiem, kurus var padot mysql SET NAMES? Vai arī ir kāds labs veids kā noteikt encodingu?
  18. Jackal

    mod rewrite

    htacess fails izskatās šādi: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?$1 [L,QSA] Iekš php, tad paņemu query string un pārvēršu masīvā. $array = explode("/", $_SERVER['QUERY_STRING']); Tālāk, tad varu izmantot $array[0] kā pirmo parametru, $array[1] kā otro Problēma tāda, ka daudzi no gaidāmajiem parametriem var arī netikt padoti, piemēram: www.lapa.lv/a/b/c/ www.lapa.lv/b/c/ otrajā saitē netiek padots "a" un uzreiz pārējo masīva elementu numerācija mainās Var jau kaut ko samuhļīt ar if'iem vai preg_match, bet tas nav diez ko dinamisks variants, tad tik pat labi varu rakstīt htacess failā neskaitāmus rewrite rule. Gribētos atrast kādu dinamiskāku variantu. Varbūt kāds ir saskāries ar šādu problēmu un ir attradis labu risinājumu?
  19. Negribējās taisīt jaunu tēmu, tāpēc jautašu tepat. Tagad mans vaicajums izskatas šadi: SELECT a.id, a.title, a.description, COUNT(b.id) AS topics, b.title AS topic, COUNT(c.id) AS replays, c.date AS date, c.user AS user FROM forum_category AS a LEFT JOIN (forum_topic AS b) ON (a.id = b.category AND b.status = '1') LEFT JOIN (forum_replay AS c) ON (b.id = c.topic AND b.status = '1') GROUP BY b.category Kļūdas neparāda, bet ir vajadzība no forum_topic un forum_replay izvilkt ierakstu ar lielāko datumu. Mēģināju darīt šādi: SELECT a.id, a.title, a.description, COUNT(b.id) AS topics, b.title AS topic, COUNT(c.id) AS replays, c.date AS date, c.user AS user FROM forum_category AS a LEFT JOIN (forum_topic AS b) ON (a.id = b.category AND b.status = '1' ORDER BY b.date DESC) LEFT JOIN (forum_replay AS c) ON (b.id = c.topic AND b.status = '1' ORDER BY c.date DESC) GROUP BY b.category bet tad parādās sintakses kļūda
  20. Nop. forum_category tabulā ir divi ieraksti un forum_topic tabulā arī ir divi ieraksti (katrai kategorijai pa vienam). Tavs dotais piemērs izvada tikai vienu kategoriju un saskaita visus forum_topic tabulas ierakstus neatkarīgi no tā kurai kategorijai ieraksts piesaistīts.
  21. Šāds variants neder, tagad tiek izvadīts tikai viens ieraksts no forum_category tabulas. Ir divas tabulas forum_category (id, title), form_topic (id, category_id, title). Mana doma bija ar vienu vaicājumu izvilkt visus forum_category tabulas ierakstus, katrai kategorijai saskaitīt topikus no forum_topic tabulas.
×
×
  • Create New...