Jump to content
php.lv forumi

Kaklz

Moderatori
  • Posts

    1,401
  • Joined

  • Last visited

Posts posted by Kaklz

  1. 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ā.

  2. arī php izmantojot gzip vai ko tur var veikt kešošanu.

    un pašā apache arī ir k kas iebūvēts.

     

    gaumes jautājums.

    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ž.

  3. mysql_query("INSERT INTO guest SET vards='$vards', teksts='$teksts', pievienots=NOW( )");

    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, ... ]

  4. 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'].

  5. Sveicinaati!

     

    Man ir taads jautaajiens, vai Latvijaa ir kaadi kursi, kur maaciitu PHP? Cena shajaa gadiijumaa nespeelee lielu noziimi, jo to apmaksaas darbs. Skatiijos BDA, bet vinji taadus kursus nepiedaavaa. Nezinu, varbuut vinjiem veel uzzvaniishu un paarjautaashu. Ar PHP veel neesmu saskaaries, taapeec luudzu juusu padomu- kaadas graamatas labaak izmantot, labi manuaalji..., bet luudzu, tikai ne no seerijas "Spiezham Save, lai saglabaatu projektu..." Protams, saprotu, ka iemaaciities nevar pa 1 dienu vai nedeelju, bet pacietiiba un veelme ir (:

     

    Pats esmu datorzinaatnes students ieksh RTU, tur, kaa zinaams, PHP maaca 3. kursaa Prokofjeva... Kas vinju zin, saprot par ko iet runa- driizaak jau pats vairaak iemaaciities var, nekaa pie vinjas!

     

    Jau ieprieksh, paldies!

    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.

  6. 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

  7. 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ā.

  8. Cik man zināms @ netaisa ciklu. @ lieto, lai lietotājs neredzētu kļūdas. Piemēram:

    Ja raksta mysql_connect, bet nevar piekonektēt, tad lietotājs redzēs kļūdas paziņojumu (pie attiecīgiem error_reporting), a bet, ja raksta @mysql_connect, tad pie jebkādiem erorr_repoerting vērtībām, lietotājs neko redzēs, un kļūdas varēs apstrādāt programātiski un attiecīgi rīkoties.

    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

  9. ip tur bija kaut kā

    zona.valsts.reģions.lietotājs, vismaz uz to pusi

    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

  10. Sveicinaati mani un css draugi. Diemzeel man jaatklaaj jums patiesiiba. Mees esam dirsaa. Css ir kruts un zupaa, bet visi, kam nav slinkums renderee to nepareizi, uzkakaa uz standartiem un kas pats ljaunaakais, esam iespruudushi ar Internet Explorer veel uz 6 gadiem. Te ir garsh raksts, no kura beigu dalja buutu taa informatiivaakaa. Luudzu izmantojiet iespeeju posteet te atbldes un jaukas zinjas un optimisma pilnas calas un nomierinaat mani, jo es neredzu te nekaadu risinaajumu :unsure:

    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

  11. Un vaitad 4 versijā XML supprots nav? Es vismaz visu laiku izmantoju XML Parser funkcijas, un tās vienmēr ir strādājušas.

    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)

  12. A ja kukiji ir atslēgit, tad nekā ar sesijām ...

    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 ;)

  13. Kaklz:

    Tas, ka tajā piemērā tās funkcijas īsti neizskatās pēc funkcijām, tas ir skaidrs un tāds arī nebija mans jautājums.

    Mans jautājums bij, kādas ir jūsu domas par sistēmu, ka principā viss saits tiek sadzīts vienā mainīgā un tikai pašās beigās tiek izvadīts laukā.

    Parasti tā nedara, ļoti bieži php tiek rakstīts pa jaucot kopā ar html.

    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 :)

  14. Bet tie ir tikai sapņi.

     

    Es ļoti gribētu uzzināt cilvēku domas par sistēmu ko lietoju:

    http://paste.php.lv/1095

     

    Galvenā pamatdoma ir visu sadzīt objektā $out mainīgajā un beigās ar out() funkciju to izdabūt laukā.

    Šajā piemērā out() funkcija taisa echo bet parasti ir return.

    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 ;)

  15. 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.

  16. 2) Ip reģistrācija, manuprāt, ir daudz drošāka, uz patstāvīgo ip viss ok!!!

    mīnusi šim - dial-up, Mdsl, kā arī vieta uz MySQL, kaut gan par MySQL neko nezinu :(

    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 ;)

  17. Cookies meklēt un dzēst nav nepieciešams. pietiek vienkārši aizliegt viņus un visas lietas - lielākajā vairumā pollu tādā veidā var balsot cik tik tīk.

     

    A ja nopietni, tad pollu, kurā nebūtu iespējams krāpties uztaisīt ir pietiekoši sarežģīti un lielākajā daļā gadījumu tas nav nepieciešams.

     

    Var izmantot vai nu tikai cookies, vai arī pielikt kaut kādu max_votes_per_ip uz 10 un gatavs. Tā teikt, nevajag pārāk iespringt;)

×
×
  • Create New...