Jump to content
php.lv forumi

Venom

Moderatori
  • Posts

    1,918
  • Joined

  • Last visited

Everything posted by Venom

  1. Venom

    PHP fopen

    arī šis te nostrādās: if (!($result = @mysql_query('select 1+1'))) { echo 'notikusi liela nelaime'; } pēc php "labās rokas" likuma tik novērtēts mysql_query('select 1+1') gabals. te var būt 2 rezultāti: a) atgriež false - nepareizs query B) atgriež "tukšu" vērtību - query izpildās, bet neatgriež resursa pointeri abos gadījumos @ nospiež kļūdas un $result tāpatās iegūst "tukšu" vērtību (NULL, vai tukšvirkni - '', fvz). Tukšvērtības iekš if pārtop par boolean false.
  2. Venom

    CSS center + padding

    ārejais divs: viņam nosaki text-align:center un line-height:xx vai text-vertical-align:middle, lai novietotu saturu centrēti pa horizontāli un vertikāli (line-height: automātiski ieslēdz block elementu satura centrēšanu pa vert.) iekšējais divs: divs, kā divs, iekš tā jau tie aligni. bet kas būs ar widthiem man gan nepras'
  3. offtopic> foršs ieraksta numurs man tur augšācsanācis (666)
  4. a) $mas['name']=$_POST['name']; man jautājums - kam tev liekais dublējošais mainīgais? B) iekš tā php ir divas noderīgas funkcijas - var_dump, kas pasaka visu par un ap mainīgo (tipu etc) un print_r (print recursive) - kas izvada visas masīva/objekta apakšvienības. Vienīgais, izvada to "DOS" formatējumā, kuru apēd HTML, tāpēc /me lieto šādu te salikumu: echo '<pre>'; print_r($_POST); echo '</pre>';
  5. Venom

    PHP fopen

    btw> par string variantu-> var nomainīt mainīgos arī pēc visas templāšu inklūdošanas; saglabāt templ. mainīgos iekš datubāzes utml. <?php ob_start(); inckļūdojam tempātes, visādi citādi izvadām info ar templāšu mainīgiem, e.g. echo '@CURRENT_DATE@'; pašās beigās: $out=ob_get_clean(); šeit norepleisojam ar visu ko vajag Te, starp citu var arī ar preg_match dabūt tikai to templāšu mainīgo nosaukumus, kuri tiešām ir nepieciešami un apstrādāt/iedabūt tikai tos. un beigās izvadām echo $out; ?> balstās ar uz to, ka php var noredirektēt visu html izvadu buferī (ob_start() == output buffering start) un pēc tam visu uzreiz no turienes iegūt mainīgajā (ouput buffering get buffer and clean it)
  6. Venom

    PHP fopen

    str_replace "atgriež" textu, resp. $out=str_replace(ko, ar ko, kur) $out=str_replace(ko, ar ko, $out) nb: cik saprotu, tev db kolonnas būs nosauktas tāpat kā templāšu mainīgie? padomā par šādu variantu: $art=mysql_fetch_assoc($art_query); foreach($art as $key=>$value) $out=str_replace('@'.$key.'@',$value,$out); droši vien, ka no while($art=mysql_fetch_assoc($art_query);) { ... str_replace() } nekāda labuma nebūs - jo jau pie while pirmās izpildes visi templāšu mainīgie tiks nomainīti Par manu variantu: mysql_fetch_assoc atgriež kolonnu vērtības associatīvajā masīvā, kur indeksi ir kolonnu nosaukumi (sk. print_r($art)), un, starp citu, vispārēji ātrāk strādā. + Nav jāpārdefinē mainīgie. Kolonnas nosaukums tiek iedzīts iekš $key un tas pataisīts par augšējo reģistru => mysql colonna `date` kļūst par @DATE@.
  7. Venom

    PHP fopen

    Kaut kad taisīju testus, file() tomēr bija ātrāks (turklāt + ir tāds, ka tu iegūsti masīvu ar rindām tālākai apstrādei). Kaut gan, jaunajās versijās varētu būt mainījies.
  8. Venom

    Mozilla un IE

    šis te variants mani it īpaši pārsteidza: .kreisais { border:''; margin '' iekš css? turklāt kā nonullējošā vērtība? DIViem ir tāda problēma, ka uz IE padding, border un margin "neatskaitās" nost automātiski. Tāpēc ja tev ir sautrs, kas pēc platības pārsniedz block elementa width-border-margin-padding, tad tev viņu pletīs plašumā/augstumā (jānosaka pareizs width). Resp. var būt, ka tev nav atstarpe no "body" (augšas uz leju), bet gan atstarpe no "elementa" (no tā uz augšu). Kamēr projektē div-layoutu, noder likt div {border:1px solid #cccccc}
  9. Ūja, ūja! Var tač' vieglāk: $action=array('Galerija'=>'gallery
  10. Ūja, ūja! Var tač' vieglāk, ar foreach konstrukciju: $action=array('Galerija'=>'gallery','Jaunumi'=>'news'); //var arī tā $action['buj']=>'faq'; foreach($action as $arr_key=>$arr_val) echo '<a href="'.$arr_val.'.php">'.$arr_key.'</a>'; see also: in_array(), array_keys(), array_values(), array_key_exists(), array_shift(), array_pop(), list(), each() att. uz 2 pēdējiem while(list($arr_key,$arr_val)=each($action)) analoģisks foreach(), bet strādā lēnāk
  11. Ņu, dažiem strādā tāda funkcija kā memory_get_usage(), ar to skaisti varēja paskatīties. /me lieto unset pārsvarā 3 gadījumos: Gadījums 1: type juggling Kaut kur kodā $tmp=array(); pēc tam gribu izmantot $tmp kā ordināro tipu (str,float,int,bool). Lai nebūtu kļūdu/notīšu, taisam unset($tmp); un bliežam savu $tmp='a,jh;fdsf'; Gadījums 2: lielu failu ielasīšana un bilžu ģenerēšana. pēc dafaulta php ir ierobežots oper. atmiņas daudzums (kā nu kuram, bet parasti 8mb) Teiksim, man jāapstrāda liels fails (6 mb) un vēl jāuztaisa kāda 1024x768 bildīte ar image* funkcijām kas arī ļoti labi havo RAMu, tad pēc faila apstrādes tā mainīgajam taisu unset. Ja jāapstrādā divi faili, tad vienkārši otro ielasu tai pašā mainīgajā, kas automātiski atmet pirmo vēŗtību un atbrivo RAMu. Bildēm obligāti taisu imagedestroy() (tas kā fclose() - varbūt nav vienmēr obligāts, bet labāk būtu ja iraid). Gadījums 3: mainīgo "at"iniciēšana $canWrite=1; $canDelete=2; if (!$isAdmin) unset($canWrite, $canDelete); .... if (!empty($canWrite)) switch($canWrite) { case 1: //level 1 break; case 2: //more options, level 2 break; } bet šo gan tā paretāk (un piemērs arī so-so)
  12. šāviens tumsā: LoadModule php4_module "ceļš līds *.dll vai *.so" arī pielikts?
  13. Venom

    PHP fopen

    a) $fails = file('fails.txt'); foreach($fails as $x){ echo $x; } ir slikti un lēni, labi un ātri ir $fails=file('fails.txt'); echo @implode('',$fails); B) par tēmu. iekš htmla tev mainīgie tomēr jāizvada, jo teksts tiek ielasīts kā teksts, un $var tajā tik un vienīgi kā dolārzīme un teksts "var". Var izmantot vairākus variantus. Universālākais no tiem tomēr ir un paliek <b><?php echo $abols;?></b> ja ir eneiblots short_open_tag, tad augstākminēto var rakstīt kā <b><?=$abols;?></b> vai pat <b><?=$abols?></b> variants ir labs, bet ne visur, jo ne īpaši pārskatāms būs tāds variants: <a href=mailto:<?=$auth_mail;?>>$author</a> + iekš dreamweavera vai citiem WYSIWG tev rādīsies <?php ikoniņa, bet nebūs saprašanas, kam tieši tur jābūt. Otra pieeja attālinās no php izvadīšanas un balstās uz unikāliem mainīgo nosaukumiem (lai nesakrīt ar kādu tekstu), piem tev ir teksts: <b>%abols%</b> to var nomainīt ar str_replace('%abols%',$abols,$teksts); piem., ja tev visi mainīgie glabājas masīvā, kā $repl['abols']='antonofka'; $repl['bumbieris']='saldais'; tad var laist foreach($repl as $var=>$value) $text=str_replace('%'.$var.'%',$value,$text); Tāpat ofcourse var mainīt arī $abols vai $abols$, pats izdomā kādu simbola un mainīgā nosaukuma salikumu, kas nevarētu sakrist ar kādu tekstu, un tev pašam būtu skaidrs, ka tur iraid templāta mainīgais. Vēlams "mainīgo nosaukums" rakstīt lieliem burtiem, lai tie uzreiz izceltos (tāpat kā to ir ieteicams darīt ar konstantēm) - %ABOLS%, <a href=mailto:%AUTH_MAIL%>%AUTHOR%</a>. Turklāt pēc šāda varianta iekš DreamWeavera tu uzreiz redzēs kam kur jābūt. un vari noformēt tekstu "vizuāli".
  14. un vēl ir search forumā visādi varianti apspriesti, arī šāds te http://php.lv/f/index.php?showtopic=1290 un uzreiz: ir google.lv, lv.php.net, un php manuālis chm formātā (ļoti ērts - ar searchu un visādu citādu indeksāciju) http://lv.php.net/download-docs.php . Manuāļos arī daudz piemēru apspriestai "problēmai".
  15. par to pirmo: Using the XML HTTP Request object kaut kad sen tika implementēts http://chess.no-ip.com/
  16. ar JavaScript kaut kā varēja caur XML/XHTTP funkcijām iegūt citas lapas saturu, bet tas būs pārāk sarežģīti un ne visur strādās. Droši vien, tev vajdazīgi parastie freimi.
  17. Venom

    Help!

    izvadam ar html vai tīri grafiski, sabīdīt tās vienu citai blakus? ja otrais, tad skatāmies Image Functions. Ideja - iegūt no visām bildēm maksimālo augstumu, summāro platumu. Uztaisīt "backgroundu" ar iegūtem parametriem un tad likt bildes ar imagecopy() vai tml. funkciju. Kā taisīt bildes ar php jau tika aprakstīts šajā forumā.
  18. session_id() - atgriež (ja tiek palaista bez parametriem) /uzstāda sessijas identifikātoru (ja tas tiek nodots kā parametrs) session_start() iesāk sessiju ar aktīvo identifikātoru es parasti izmantoju variantu: if (!session_id()) session_start(); gadījumā, ja fails tiek inklūdots citā, kur jau iesāknēta B) sessija.
  19. Venom

    ip check

    ip tur bija kaut kā zona.valsts.reģions.lietotājs, vismaz uz to pusi go google ko nozīmē bankas _pašas_ droši vien jau grāmatveži nesēž un neprogrammē. nolīgst kādu pamatīgu IT firmu, kas arī izstradā risinājumu un nodrošina suportu, pēc tam visus, kas programmēja, nošauj, lai neizpauztu algoritmu ;)
  20. btw: SSL realizēts līdzīgi - pie pirmā handshake serveris noģenerē atslēgu, ar kuru kodēs tāl
  21. Venom

    beediiga zinja

    2labikataa: niks tev tēmai neatbistošs Не сцы, Маруся, я - Павлик Морозов.
  22. 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).
  23. un vēlāk precizēts, ka ar CSS bija domāts CSS layouts
×
×
  • Create New...