Jump to content
php.lv forumi

Venom

Moderatori
  • Posts

    1,918
  • Joined

  • Last visited

Everything posted by Venom

  1. žel ka preg, ar str_ būtu ātrāk, unless tika bīdīti att. simbolu biti
  2. Venom

    templates

    /me atkal te ar output bufferingu, resp. lai tik ir tas bet ā) ne iekš mainīgā bē) case-sensitive index.php jāizskatās šādi: <?php ob_start(); ?> <html> <title>{title}</title> <body> {teksts} <?php include('cits.template'); ?> </body> </html> <?php $htmls=ob_get_clean(); foreach($template_mainīgais as $indekss=>$vertiba) $htmls=str_replace('{'.$indekss.'}',$vertiba,$htmls); echo $htmls; flush(); ?> bet vispā man tās templātsistēmas ne visai NB: tēma tika plaši apspriesta, tāpēc vēlams apskatīt vismaz http://php.lv/f/index.php?showtopic=59 topiku (tur tālāk pa tēmu)
  3. Venom

    encoding

    šeit ir tas gadījums, kad kods jāatdala ne tikai no satura, un dizaina, bet arī dizaina saskarnes teksts no koda /me lieto tā: visur lapā augšā meta encoding=utf-8, iekš koda "interfeisa" teksts tiek ierakstītsangliski, caur funkciju (e.g. if (!isAuth) tr('Welcome, Guest!'); - tas atbrīvo mani no koda rakstīšanas nepierastā tekstredeaktorā (rakstu joprojām pierastajā VenPadā). Līdz ar valodas pārslēgšanu pārslēdzu ulkošanas failus - un jau tie ir UTF-8 attiecīgā valodā (taisu ar SCiTe). Resp variants tāds: ja tulkojuma faila nav, izvadīsies "welcome" teksts angliski, kā tas ir ierakstīts iekš *.php faila, ja ir attiecīgs tr_*.php fails - tad skatās, ja tur ir attiecīgs tulkojums vārdam "welcome", tad to izvada, ja nav - bliež ik to pašu angļu. Neticu tam, ka ja iekš drīmwīvera uzliekutf-8 encodingu viš latviešu raksts normālā utf, bet krievu or whatever taisīs par &XXXX;. Tu laikam mēģini pie ievada lapai uzlikt attiecīgo windows-xxxx, bet pie izvada liec utf-8 un ceri, ka viss atrādīsies jo "utf-8 iekšā taču visi encodingi". Arī ievadam jānotiek iekš utf-8 - utfā _ir_ vairākas valodas iekšā - bet tām atkal katram simbolam citāds atbilstumsimbols. Kad taisa ievadu iekš windows-xxx encodingiem, tad jānodrošina arī lai ) intersa teksts būtu tājā pašā B) visādi inputi kaut ārī pieļaus iedīt dažādas valodas, vienu paņems pretī kā iestatīto windows-xxx, bet otru nokodēs pēc sava prāta. Ja tas viss notiks iekš utf-8, tad viss ievads tiks nokodēts pēc utf-8, neatkarīgi no valodas.
  4. tā viš i, laikam /me joprojām varāk uzticās php 4x un apache 1.3.x versijām, nero 5x (kaut gan šķiet, ka drīz arī 6tā engīnis būs ok) un vēl dažu softu "vecākām" versijām
  5. $split=explode(' ',$text); $words=array(); while($word=array_pop($split)) $words[]=rtrim($word,"\n\t\r,.?!:&()@'`%-+="); t.i. sadalām pēc atstarpēm un ņoņemam punktuācijas zīmes no "vārda" beigām (+ pārbaude vai vispār paliek kautkas)
  6. up close & personal jautājiens ;) no redzētā: if(@$_SESSION['user'] && @$_SESSION['pass']){ echo "<a href=\"?id=logout\">Logout</a><hr>ok! ".$user." ".$pass; $user un $pass iepriekš nav definēti arī tālāk: $_SESSION["name"] = $name; ... neredzu no kurienes tie rodas (!in_array($_SERVER['QUERY_STRING'],@$_SESSION['user'] && @$_SESSION['pass']) ko atrgiež (array() && array()), manuprāt false vai true, ja abos masīvos kaut kas bijis, bet nu nekādīgi ne kopmasīvu, ar + vēl varbūt, tomēr tik un tā - no kurienes tur query_stringam rasties? NB: you are logged out @$mainigais vietā vēlams izmantot !empty($mainigais)
  7. Mans priekšlikums - darīt pretēji - postē tehniskos uzdevumus, droši vein kādam būs kaut kas līdzīgs, būs vieglāk orientēties.
  8. es panākt ātri ;) <?php $bildes=10; echo '<img alt="" src="bilde_'.rand(0,$bildes).'.jpg" />'; ?> bildes nosaukt kā bilde_1.jpg, bilde_2.jpg...
  9. move tiek taisīts uz servera! klienta pārlūks pārsūta failu uz serveri, kur tas tiek noglabāts kādā upload (temporālā) direktorijā, tālāk move_ no tās aizbliež kur pastāvīgā (uz servera) no move_ vislielākā jēga ir uz vienu un to pašu servera direktoriju uploado vairāki lietotāji vai tas ir temp folderis, kur pati OS laiku pa laikam izdzēš failus. Jo pastāv, kaut arī maza iespēja, iespēja, ka var notikt tā, ka ar dažu milisekunžu atsarpi tiek uploadoti faili ar vienādu tmp nosaukum, vai piem. tiek uploadots fails, kuru OS tieši tai laikā izdzēš no tmp direktorijas un cits uzaplodojas ar to pašu nosaukumu. Manuprāt, tur tajā funkcijā tiek izmantots kaut kas līdzīgs failu hashoshanai - tiek salīdzināti ienākošā faila izmērs, tips etc ar tā, kas it kā ir noglabāts uz cietņa. iespējami, ka pat tiek izrēķināts kāds CRC/md5, lai pārliecinātos, ka arī saturs atbilst pilnībā.
  10. nav žēl dažu nesaprašanu dēļ stundu dzīves tērēt?
  11. papildus move_uploaded_file pārbauda, vai faila saturs ir nācis kādā no $_FILES apakšmasīviem
  12. nez', nez', mēs mākam labāk. ir procesu optimizēšana un ir koda optimizēšana arī redzot kodu ar echo "<i>"; rodas nepārvēlama vēlme aizvērt un vairs to neskatīties, jo tam jābūt vismaz echo "<i>$x"; lai tas būtu attaisnojams, kaut arī ātrāk būtu echo "<i>".$x, vai, kā arī pierāda testi augstāk (krieviskā lapā), jāraksta echo '<i>'; f-ja getmicrotime? array_sum(explode(' ',microtime()));
  13. nav obligāti dati jānodod caur sesiju, tos var nopostēt uz citu (arī jaunu) logu
  14. nē CREATE privilēģijas tiek izdotas tieši caur MySQL, nevis phpMyAdmin, bet, domājams, ka tās tev iraid, jo it kā jau sāk rakstīt (erorā teikts error writing, nevis not allowed to write vai tml). Jautājums - vai pareizi nokonfigurēts MySQL data-dirs, vai arī, ja viss stāv uz Linux - uz kurieni mapojas './datubaze/'. Neesi mēģinājis starp normāliem programmrīkiem? E.g. MySQL Front (http://www.mysql-front.com/), MySQL CC, EMS MySQL Manager?
  15. resp. līdzīgi nesenajam postam ar IP: $onl=180;//seconds 2 be considered online session_start(); id=session_id()."\n"; $period='/tmp/'.floor(time()/$onl).'.onl'; $tmp=@file($period); if (!$tmp) $tmp=array(); if (!in_array($id,$tmp)) { $fh=fopen($period,'a'); flock($fh,LOCK_EX); fwrite($tmpfile,$ip); flock($fp,LOCK_UN); fclose($fh); $tmp[]=$ip; } echo count($tmp).' apmekletajs lapa pedejas '.$onl.' sekundes';
  16. config.inc? kur ta tu to tabulu taisi? cik saprotu mysqlā takš un ar ko? jābūt CREATE privilēģēm
  17. un ko tad nesaproti - nevar uztaisīt jaunu failu. nav beigusies vieta diskā? vai nav tas fails no vecās db palicis (ar tādu pašu nosaukumu) ir tiesības rakstīt tajā diskā?
  18. un paņemt manuālī ievadīt ksort (no koda augstāk) un apskatītes saistītās funkcijas? NB: skaisti, parādījies tūlis ūseru reitingošanai
  19. Venom

    cik ir ONLINE

    $onl=180;//seconds 2 be considered online $period='/tmp/'.floor(time()/$onl).'.onl'; $tmp=@file($period); if (!$tmp) $tmp=array(); $ip=(isset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:''). (isset($_SERVER['HTTP_X_FORWARDED_FOR'])?';'.$_SERVER['HTTP_X_FORWARDED_FOR']:''). (isset($_SERVER['HTTP_CLIENT_IP'])?';'.$_SERVER['HTTP_CLIENT_IP']:'')."\n"; if (!in_array($ip,$tmp)) { $fh=fopen($period,'a'); flock($fh,LOCK_EX); fwrite($tmpfile,$ip); flock($fp,LOCK_UN); fclose($fh); $tmp[]=$ip; } echo count($tmp).' apmekletajs lapa pedejas '.$onl.' sekundes';
  20. es jau laikam šo atbildēju - pirms visas šīs padarīšanas (pēc inkclūdiem) izvadi print '<pre>'.print_r($_SESSION,1).'</pre>'; ja tev tur nav 'name' elementa, tad nedrīkst vienkārši bliezt echo $_SESSION['name'], tāpatās kā nedrīkst uzreiz likt echo $variable, ja pirms tam mainīgam netika piešķirta nekāda vērtība tavā gadījumā pēc noklusējuma 'name' var būt teksts, resp. ja vārds netika ievadīts, tur jābūt tukšam stringam: if (!isset($_SESSION['name'])) $_SESSION['name']; //else jau IR sessijā, bijis iepriekš ievadīts, resp. mainīgais ir definēts echo $_SESSION['name'];
  21. varēja arī uzreiz kaučkā tā (<=4.0.x compatible): INSERT INTO tabula (serija,numurs) SELECT 'AA',MAX(numurs)+1 FROM tabula
  22. programmatoriski: if (isset($_REQUEST["g"])==$i) CSSsiski: a:active {font-weight:bold}
  23. Venom

    ???

    pats saprati, ko prasi? + mums te php, nevis flash forums un ko tur tur flashā meistaro nekādas saprašanas date, savukārt, ir f-ja kas var izvadīt laiku dažādā veidā, tur ir uzrakstīts - kā mēnesis/datums/gads četriem cipariem Stunda 24-formātā:minūtes ar 0 priekšā:sekundes ja gribi pamainīt - skaties php date() funkcijas parametrus
  24. ā) echo "$ref"; ir muļķība, jo pietiek ar echo $ref; bē) getenv atšifrējas kā get envinronment variable, t.i. datus saņem no $_ENV masīva, kas pieetams tikai uz paša server (lokāli), vai izņēmumgadījumos php kā command-line interface (CLI) pie tam referers ne vienmēr IR. T.i. tas parādās tikai kad uz labu atnāk otro reizi/nonāk caur linku. beigu beigās: $ref=''; if (!empty($_SERVER['HTTP_REFERER'])) $ref=$_SERVER['HTTP_REFERER']; echo $ref;
×
×
  • Create New...