Jump to content
php.lv forumi

2easy

Reģistrētie lietotāji
  • Posts

    1,980
  • Joined

  • Last visited

Everything posted by 2easy

  1. nu jā, ja cms nevajag, tad jau protams datus/kontentu var ņemt no tādām funkcijām (arī citos gadījumos, kad vajag paņemt vienu no vairākām hardcoded vērtībām). es gan tādā gadījumā pēdējo rindiņu rakstu ar isset(), nevis array_key_exists() (jo tad mazāk jāraksta :D:D:D) function getTitle($id) { $a['ievads'] = 'Ievada sadaļa'; $a['galerija'] = 'Foto galerija'; $a['kontakti'] = 'Sazinies ar mani'; return isset($a[$id]) ? $a[$id] : 'Noklusētais title'; }
  2. dati taču nāk no db. viena funkcija uzģenerē menu, otra uzģenerē kontentu. jāpadod ir tikai echoPage('title', '<body>' . menu() . content() . '</body>'); protams, ja rāda lielu apjomu (dažādības ziņā), tad jebkurā gadījumā ir daudz jāraksta...
  3. function echoPage($sTitle, $sBody) { echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . '<html xmlns="http://www.w3.org/1999/xhtml"><head><title>' . $sTitle . '</title>' . '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . '</head>' . $sBody . '</html>'; } echoPage('hello', '<body><h1>world</h1></body>'); protams, tā body daļa arī tiek uzģenerēta automātiski atkarībā no konteksta. šī vnk ir tā zemākā līmeņa output funkcija, pie tam vēl saīsināts variants. pilnajā ir arī visi css/js iekš <head> "klases" jeb oop kkā nesanāk lietot. vnk nav tik sarežģīti uzdevumi, kur oop varētu būt noderīgs. drīzāk gan ir izveidojies priekšstats, ka oop vairāk noder, lai atšķirtu iesācējus no tiem, kkas kko jau prot. praktiski 99% gadījumos oop webā lieto tur, kur bez tā labākajā gadījumā var iztikt, bet parasti jau tas nevajadzīgi palielina koda apjomu un pat sarežģī loģiku, kas apgrūtina uzturēšanu, pretēji tam kādēļ oop vsp sākotnēji tika radīts...
  4. vovo, to jau es arī viņam 2x prasīju ;) šis ir tāds kā piemērs tam faktam, ka ja nav pamata zināšanu, tad gatavs skripts noder tikai tik ilgi, kamēr tas nav jāmaina. bet ja ir zināšanas, tad pats var uzkodēt daudz labāku :P
  5. Ernij tev viss ir interesantas lietas :)) tas ir no sērijas "nedrīkst. bet ja ļoti gribās, tad tomēr drīkst" :D:D:D kr4 jāatceras bērnu valoda un domāšanas veids, lai saprastu, ko viņi saka... ;) ok, tehniski to dara tā: 1) folderī, no kura neko nedrīkst ielādēt (tas skan labāk nekā briesmīgi "nolādēt" vai smieklīgi gari "lejuplādēt") ieliek .htaccess failu ar vienu rindiņu: Order Allow,Deny 2) lai tomēr kko varētu ielādēt, kkur citur uztaisa failu download.php, ar kura palīdzību daži izredzētie varēs ielādēt tos failus. kr4 download.php menedžē, lai to varētu izdarīt tikai tie, kas to drīkst pats kods, kas inicializē download, ir apmēram šāds function udl($sP, $sMime = '') { // uri download - nosūta Content-Disposition headeri, lai izraisītu "save as" header('Content-Disposition: attachment; filename="' . basename($sP) . '"'); if ($sMime) header('Content-Type: ' . $sMime); readfile($sP); exit; } udl('nepieejamais-folderis/private.txt', 'text/plain'); // funkcijas izsaukšanas piemērs
  6. katrs pats sev uztaisa tādu slud. sistēmu, kādu vēlas. ss.lv un zip.lv ir tikai 2x piemēri uzkodēt vai kkur dabūt gatavu ir mazākais darbs. vēl ir jāiegulda pamatīgs darbs mārketingā un apmeklētāju piesaistīšanā, lai tāda sistēma kļūtu pietiekami populāra un dotu labus ienākumus
  7. tur ir tikai palīgfunkcijas. kur tad ir tas kods, kur tu lieto md5()? pie logina md5() vajag tikai, lai to uzliktu cookija parolei (un tā šurpu turpu pa http ceļotu šifrēta, nevis atvērta). bet kad useris staigā pa lapu, kā tu atšķir, vai tas ir ielogojies, vai nē? cik es sapratu, tad problēma ar pārbaudēm un md5() ir tieši tajā vietā EDIT: un datu bāzē glabājas plain text paroles, vai md5?
  8. neesmu mēģinājis ff 3.6 (ir 3.5.3), taču varbūt jaunajā versijā input lauki nemanto font parametrus? kr4 ir kkāds bugs. ja tā, tad vnk vajag uztaisīt mājienu ar mietu input {font: 11px Verdana, sans-serif} /* vai citas vērtības, kādas nu tev tur ir */ tad kursoram atkal vajadzētu būt mazākam, jo by default ir daudz lielāks font-size (kkur 16px)
  9. esi pamanījis, ka dr login laukiem ir relatīvi lieli padding-bottom? varbūt tieši šī iemesla dēļ ;) hmm, vsp viņi nelieto padding, bet gan pietiekami lielu height:23px kā arī apaļo stūrīšus ar pure css -moz-border-radius (bez nekādas background bildes)
  10. ofc rATRIJ, šī ir tikai go() funkcijas dev versija. production versija raksta log failā. bet te jau pagaidām runa iet par mācīšanos un debugošanu... ;)
  11. parādi kodu, kas nelaiž iekšā. iepriekšējie bija tikai login/logout, bet pašreizējā stāvokļa kontroli neparādīji
  12. if (isset($_GET['action']) && $_GET['action'] == 'logout') { $_SESSION = array(); // un useris ir out. pirms tam ielogošanās brīdī bija $_SESSION['user'] = '...'; pēc kura arī atšķir ielogojušos useri no parasta apmeklētāja header('Location: /index.php'); exit; } saglabājot db: md5($vertibaKasJasaglabaDb) pārbaudot login: if (md5($vertibaNoFormas) == $vertibaNoDb) {...}
  13. nevajag ņemt login skriptus no spāņu noobiem sesijas datus glabā iekš $_SESSION, nevis $_COOKIE
  14. ņemot vērā, ka šī kļūda parādās ar apbrīnojamu regularitāti un stabilitāti (katru nedēļu), man lūgums adminiem/moderatoriem nopinot šo topiku, nomainot nosaukumu uz "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource". pēc "Headers already sent" šis ir nākamais, uz kā visi (kas nelasa manuāli) krīt iekšā. pats jau kādas reizes 5x esmu atbildējis uz šo :D ok, tgd skaidrojums skaidrā latviešu valodā: izpildot kļūdainu sql $result = mysql_query('SELECT * FROM TabulaKurasNav'); nekādi php warningi/errori uzreiz neparādās. vienīgi $result ir false, nevis resurss ar mysql datiem. tālāk šo false padodot iekš while ($row = mysql_fetch_array($result)) {...} arī rodas slavenais errors, par ko tgd ir runa lai to laicīgi pamanītu un novērstu, dara tā: $result = mysql_query('SELECT * FROM TabulaKurasNav') or die(mysql_error()); ja rezultāts "or" kreisajā pusē ir pozitīvs (sql izpildījās veiksmīgi), tad viss ir kārtībā un php turpina izpildīt nākamo rindiņu. bet ja rezultāts ir false, tad tiek izpildīta "or" labā puse, kas vnk izdrukā error un pārtrauc tālāku skripta darbību tas arī viss. vēl tikai maza piebilde priekš tiem, kam patīk rakstīt mazāk un izdarīt vairāk. lai katram mysql_query() nevajadzētu galā kabināt or die(mysql_error());, sql var izpildīt ar funkciju, kas to izdara automātiski function go($sSql) { // izpilda mysql query $h = mysql_query($sSql) or exit('<b>mysql_query() error ' . mysql_errno() . ':</b> ' . mysql_error() . '<br /><b>query:</b> ' . substr($sSql, 0, 1000)); return $h; } $result = go('SELECT * FROM TabulaKurasNav');
  15. NOT NULL laukiem ir jābūt aizpildītiem INSERT brīdī. padod vnk tukšu vērtību '', un būs ok
  16. 2easy

    input parbaude

    es arī iedošu vienu tizlu linku http://php.net/manual/en/function.mysql-real-escape-string.php
  17. izklausās garlaicīgi, ja tas pašam jādara "tulkstots reizes" :D
  18. pat ja tavam serverim būtu 128GB RAM, un php to visu aizpildītu (bez swappošanas uz hdd - VRAM) ar kkādiem datiem, lai pēc tam tur kko meklētu, tas anyway nedotu nekādu būtisku ieguvumu, salīdzinot ar faila lasīšanu pa daļām un meklēšanu katrā daļā atsevišķi nez, vai ir tik daudz variantu, kā failā kko meklēt vsp man arī interesē, ko koda dievi varēs ieteikt ^^ hmm, kā izpaužas tā barošana caur url? ko tu dari?
  19. algoritms: 1) pirms sāc kko split, vispirms ar strpos() pārbaudi, vai tikko no faila nolasītajā stringā ir meklējamais teksts 2) ja ir, tad split un ej uz to rindu un dari, ko tev tur vajag izdarīt 3) ja nav, atrodi, kur beidzas pirmā rindiņa šajā stringā (arī ar strpos() meklē "\n"), lai nākamo file read taisītu, iekļaujot šo nepilno rindiņu (ja nu gadījumā tur ir meklējamais teksts) 4) read nākamo porciju un sāc no 1)
  20. ja interesē tikai faila beigas, tad arī no faila beigām var ielasīt blāķi ar datiem (kkādus MB) un tos apstrādāt atsevišķi no pārējā faila. vnk jānopizicionē faila lasīšana "netālu" no beigām function readLastBytes($sP, $iSize) { $h = fopen($sP, 'r'); fseek($h, -1 * $iSize, SEEK_END); $s = fread($h, filesize($sP)); fclose($h); return $s; } $s = readLastBytes('data.txt', 10000000); // nolasa apmēram ~10MB no faila beigām jebkurā gadījumā parasti lielus datu apjomus apstrādā pa daļām, nevis taisa mega apjomīgas string/array konstrukcijas iekš servera RAM
  21. es izmantotu fopen() un fgets() vai fscanf() jau sākot no kādiem 5MB (tīri dēļ performances), bet nju 100MB liekas way too much for string/array :D
  22. jā tur ir definēts $sql_query, taču lai citā klasē (kas manto šo mainīgo no mysql klases) tam varētu piekļūt, izmanto $this->sql_query vsp lai paņemtu datus no db un izdrukātu ar/bez padžinga, oop nafig nav nepieciešams. organizēt kodu loģiskos moduļos var arī vnk grupējot līdzīgas funkcijas. šeit vienīgā daudz maz iekš php izmantojamā oop fīča >> mantošana << tiek izmantota netēmā: extendod mysql, lai taisītu catalog. omg, var jau būt tas mūsdienās ir baigi labais oop stils tā darīt, taču db pieprasījumus var veikt ar parastu function call un rezultātus turpat uz vietas arī apstrādāt. kr4 kodu var organizēt ar pāris vnkāršām funkcijām, kas katra labi izdara savu darbu. bet tagad tu pati putrojies tajās klasēs... oop ir labs/kruts, taču to vajag lietot tad, kad tas kko atvieglo, nevis sarežģīt vnkāršas lietas
×
×
  • Create New...