Jump to content
php.lv forumi

Mr.Key

Reģistrētie lietotāji
  • Posts

    1,332
  • Joined

  • Last visited

Everything posted by Mr.Key

  1. Nopietnam iemeslam jābūt lai skaitļus neapstrādātu kā skaitļus ;)
  2. Var, bet idejiski tas ir nepareizi! mysql_real_escape_string lieto priekš SQL izteiksmēm. Bieži iesācēji nesaprot, kā apstrādāt stringus, manuprāt, ļoti vienkārši - postētos datus SQL ieliek apmēram šādi: "INSERT .... ..... '" . mysql_real_escape_string($_GET['teksts']) . "' ... "; ja tas ir int datu tips, tad (int) $_GET['teksts'] - tur var būt viss kas, bet nekorektā gadījumā vienmēr būs 0, pat ja tāds mainīgais vispār nav definēts. un izvada šādi: <?= htmlspecialchars($teksts) ?> Un viss, nav ne sql injekcijs, ne html garbage - ja kāds vadīs iekšā htmlu, tad viņš tā arī izvadīsies ārā. Viss, ko lietotājs ievadīs, tā arī saglabāsies datubāzē. Un Tādas lietas kā strip_tags un strip_quotes ir paredzētas citiem mērķiem, tad, kad daži tegi ir atļauti, bet parasti tomēr izmanto [ un ] šim nolūkam. Starp citu, Zend frameworks to visu izdara automātiski, un ja izmanto MVC, tad arī var izveidot automātisku funkciju, kas pie saglabāšanas pāriet pāri un saglabā, bet tas jau ir mazliet advancētāk.
  3. nu vispār jā, nezinu, kāpēc bija doma par to, ka tam jābūt beigās, kaut kāds iemesls bija, bet rakstot tā doma jau paspēja aizmaldīties bez pēdām. bet tā jau jā, last_time var saglabāt pirms ieraksta veikšanas, galvenais, lai viņš nav pirms SELECT veikšanas.
  4. tabulā vajag lauku, kurā glabā ieraksta pievienošanas laiku, pieņemsim, ka tas ir date_created, kurā glabā UNIX timestamp (bet var būt arī SQL natīvais DATE TIME tips) tad tev ir skripts, kura beigās ir rinda $_SESSION['last_visit'] = time(); bet pašā skripta sākumā ir tā // last_visit ne vienmēr var būt if ($_SESSION['last_visit']) { $sql = "SELECT COUNT(*) AS count_since_last_visit FROM tabula WHERE date_created > " . (int) $_SESSION['last_visit']; // izpilda query un skatās uz count_since_last_visit vērtību } ja datubāzē izmanto natīvo DATETIME tipu, tad attiecīgi pārveido.
  5. variants apspēlēšanai - katrai sesijai saglabā prev_visit timestamp un pie load taisa selektu, skatoties vai ieraksta timestamp nav jaunāks par last_visit.
  6. paspēlējos: <html> <body> <div style="width: 600px; height: 300px; overflow-y: scroll; scrollbar-arrow-color: blue; scrollbar- face-color: #e7e7e7; scrollbar-3dlight-color: #a0a0a0; scrollbar-darkshadow-color: #888888"> <img src="fun.jpg"> <div id="apaksa"></div> </div> <script type="text/javascript"> window.onload = function() { window.location.href = '#apaksa'; } </script> </body> </html>
  7. bet principā būtu jāiet: http://www.mk.id.lv/scroll.html#apaksa
  8. varbūt nomaini <div id="apaksa"></div> uz <a name="apaksa"></a>
  9. Mr.Key

    Background-image

    tev ar CSS ir jānoņem nost html image un jāuzliek background image ... varētu būt kaut kā šitā: <a id="abc" href="#"><span><img src="images/pic-0.PNG" alt="Jaunumi" /></span></a> a#abc img { display: none; } a#abc:link span { width: x; height: y; background-image: url('...'); } a#abc:hover span { background-image: url('...'); } vai arī iztiekot bez span, pa tiešo likt background image a elementam. Par google - risinājums ir img likt caur css: <h1 id="jaunumi"><span>Jaunumi</span></h1> Css: h1#jaunumi span { display: none; } h1 { height: 30px; background: transparent url('title-jaunumi.png') left top no-repeat; }
  10. Mr.Key

    Background-image

    Pareizi uzdots jautājums (saprotami aprakstīta problēma) ir puse no atbildes. Mēs neesam telepāti. Iespējams, tev liekas, ka mēs sapratīsim tavu domu no pāris teikumiem. Bet tā tas nav, tāpēc, lūdzu, izskaidro plašāk, kas tevi tieši interesē.
  11. izmanto <button>, bet disabled ir un paliek disabled...
  12. ar javascript. vai zem diva <div id="apaksa"></div> un ver lapu www.example.com/lapa.php#apaksa vai vēl kaut kā
  13. Domāju, ka Transitional ar ļoti korektu sintaksi. Un vēl - bieži praktisku iemeslu dēļ nav iespējams realizēt Strict. Virkne ne-valīdu lapu darbojas normāli uz browseru, virkne valīdu lapu ir ļoti valīdas, bet ne visai labi izskatās... webs ir joma, kur nav vienas taisnības un izskatās, ka arī nebūs...
  14. Tādā gadījumā izmanto "if ($tips === 0) {...}" Atkarīgs no koda lietojuma, noteikti nepaies garām situācija, kad jālieto empty() un kad tas vairs nederēs.
  15. Nēea!!!! $_GET vērtības ir paredzētas tam, lai nolasītu tās vērtības, kas ir URL GET parametros. Ir jābūt ļoti nopietnam iemeslam, lai $_GET vērtības sāktu modificēt... Sintaktiski tas ir pareizi, bet idejiski labs stils ir apmēram šāds: $mans_tips = $_GET['tips']; // ar variācijām, protams... $mans_tips = false; if (isset($_GET['tips'])) { $mans_tips = $_GET['tips']; } // vai $mans_tips = isset($_GET['tips']) ? (int) $_GET['tips'] : false; // vai $atlauti_tipi = array(1, 2, 3, 4); $default_tips = 1; if (isset($_GET['tips'])) { if (in_array($_GET['tips'], $atlauti_tipi)) { $mans_tips = $_GET['tips']; } else { die('Tavs IP nosūtīts policijai!'); } } else { $mans_tips = $default_tips; } utml. GET un POST datu tips sākotnēji vienmēr būs String, jēga to pārveidot ir tad, ja aplikācijā tas ir nepieciešams.
  16. Aleksejs, pilnībā piekrītu tavam citātam un tāpēc par kaut kādu drošību varam sākt runāt tad, kad ir skaidrs, kas ir notice, nevis tad, kad visi notice ir slikti. Piemēram, skaidrs, ka šajā gadījumā vispār nav vērts runāt par drošību, ja usera levelis tiek noteikts pēc GET parametra. Tāpat arī neko nedos perfekta mainīgā apstrāde, ja, piemēram, datu integritāte daļēji balstās uz formas hidden laukiem. Ir elementārs likums - uz production servera PHP Error messages ir OFF. Tas, ka tiek likvidētas notices, neliecina par drošu kodu, pat tieši otrādi - nepieredzējušam koderim var likties, ka viss ir kārtībā, jo nav notices. Kā šajā gadījumā - lielais sasniegums - nolikvidēt notici pie GET parametra apstrādes lietotāja autorizācijas pārbaudei.
  17. okei, kas ir domāts ar drošību? nerunājot par sql injekcijām un auto global variables? kas notiksies, ja es iztikšu bez type castinga vai variabļa esamības pārbaudes, piem., salīdzinot if ($mainigais == 4) ?
  18. notice ir notice, tā tak nav kļūda un arī ne warnings. principā visu var pārbaudīt arī kaut vai ar IFu, gan skaitli, gan stringu, gan array un ko vēl ne. if ($mainigais) { } atkarīgsn no kodēšanas stila un koda pārskatāmības. un kas liedz kodēt php brīvākā stilā un citas valodas ar rūpīgāku mainīgo apstrādi? array_key_exists() manuprāt ir izmantojams tiešām specifiskiem gadījumiem, kad ir svarīgi, ka tiešām tikai array_key_exists, bet tā pamatā izmanto isset ... var jau protams pie katra mainīgā taisīt 3 pārbaudes (isset, tad vai ir tips pareizais un tad vai ir vērtība), bet tas man liekas pa traku kaut kā.
  19. Neaizmirst padot 503 Service Temporarily Unavailable
  20. Tas noteikti neizmantos indeksus, ja vien tas nav funkcijas indekss. Ja pārsvarā darbosies ar SQL, labāk glabāt DATETIME. Es agrāk izmantoju INT lauku ar timestamp vērtību, bet tagad DATETIME kā natīvo formātu un, ja nepieciešams, timestampu izselektēju UNIX_TIMESTAMP (der izvadei ar PHP). Un tas WHERE ir nepareizs pēc būtības, jo ja MySQL datus glabā DATETIME formātā, tad SQL izteiksmē viņu apstrādā, izmantojot MySQL date funkcijas, nevis pārveidojot uz UNIX_TIMESTAMP. MySQL datumu lieliski saprot, ja tas ir dots kā string atbilstoši formātam 'YYYY-MM-DD HH:MM:SS' vai 'YYYYMMDDHHMMSS. (dokumentācija) Turklāt arī problēma ir aprakstīta neprecīzi - dots ir nevis datums, bet datums un laiks - tās ir divas dažādas lietas, nereti datumu un laiku pat glabā atsevišķos laukos. Šajā gadījumā es saprotu, ka bija domāts atlasīt vienu vērtību, kas ir pirmā periodā, kas sākas ar doto datumu un laiku: SELECT * WHERE datums < '2008-12-31 23:58' ORDER BY datums DESC LIMIT 1 ; datuma lauka tips DATETIME ar indeksu.
  21. Klez, tu nodarbojies ar demagoģiju! Liekas, ka problēma ir pietiekami skaidri izklāstīta, vispirms tu pasaki, lai tev konkrēti izskaidro pa punktiem, pēc tam saki, ka tev vienalga. Pašsaprotami, ka nesen piereģistrējies profs nav 'skriptu bērns', un tāds, kas taisa 1000 postus par triviālām tēmām, nav 'koda dievs'. p.s. http://www.youtube.com/watch?v=vnJnA_mt_UA
  22. Forums ir komunikācijas veids, ja cilvēks grib sevi izpaust ar profila bildi, kāpēc to liegt? Pēc avatāra bildes daudz vieglāk atrast autoru starp vairākām atbildēm. Piekrītu, ka pārmērīgs raibums novērš uzmanību, bet tāds klostera variants arī diez kas nav...
  23. Iztēlojos, kā šo iespundēja mūra kambarī, ar šauru lodziņu, no griestiem pilēja ūdens, klaviatūrai space un enter taustiņš nestrādā, jāvada ar Alt+.. :)))
×
×
  • Create New...