Jump to content
php.lv forumi

usver

Reģistrētie lietotāji
  • Posts

    51
  • Joined

  • Last visited

Everything posted by usver

  1. kukijos glabāt apskatītos topikus kā masīvu. datubāzi piegānīt tikai tad, ja ļoti vajag. jap - tieši tā: apskati šī foruma kukijos topicsread, forum_read. tur ir paraugs.
  2. Risinājums uz IE: vienkāršs, izrādās. var izmantot ADODB.Stream, un tas strādā :)
  3. marcis: ar PHP protu nosūtīt - vienalga, ar curl, fsockopen() vai kaut vai wget izmantojot. tikpat labi varu sūtīt arī no Javas, to pastarpināti saucot ar PHP. Bet e-me visu sviež atpakaļ, ja vien HTTPS nav nodibināts ar derīgu Latvijas Pasta izdotu e-paraksta autentifikācijas sertifikātu. kuri glabājas tikai uz kartiņām un tikai klienta pusē. normāli LP serveris un parastais klients apmainās ar publiskajām atslēgām + lietotājs paraksta datus ar savu privāto atslēgu. ja kaut kas no tā iztrūkst, tad LP serveris sūta dillēs. Ja nebūtu šitās ņemtnes ar PIN aizsargātām atslēgām un HTTPS un viss ietu pa taisno no PHP, būtu kruta ;> bet viss ir sekjūri sataisīts, tik no Javaskripta tas ierobežojums, ka binārus datus no tā sūtīt kā stringu nav paredzēts :> skaic - tātad turpinu mēģināties ar VBscript izvirtībām.
  4. būs jāmēģina caur VBScript noteikt garumu stringam, jo piem alert( params ) izvada vienkārši īsu stringu, nevis garu 50burtīgu - apraujas javascript,domājot, ka pie pirmā \x00 jābeidzas saturam un uzskata, ka tālāk nekā nav. JS pusē laikam problēma līdz ar to. Par parakstu - e-me vienkārši ir izdomājuši, ka pie viņiem drīkst vērsties tikai, autentificējoties ar e-paraksta smārtkarti un tikai tas cilvēks, kas grib kaut ko parakstīt. es nezinu iespēju, kā var piemānīt serveri, autentificējoties 3. personas vārdā, ja jāizmanto ar paroli aizsargāta privātā atslēga. līdz ar to PHP serveri, ko tādu mēģinot, sūta dillēs - "vai nu rādi šurp reālu e-parakstu, un mēs tevi atpazīsim, vai arī tinies!". vot, tāda jocīga sistēma tur - tikai baitus gan varēja netaupīt un base64_encoded datu pieņemšanu uztaisīt - lai arī papildus mazliet slodze atkodējot, tomēr vismaz no visurienes tas pakalpojums izmantojams un datu zudumi novēršas.
  5. Kā no klienta puses skripta var nosūtīt binārus datus uz serveri, izmantojot xmlhttprequest.send() vai analogu metodi? Mēģinu nosūtīt binārus datus uz serveri, un tas daļēji arī sanāk - sūtīšana uzsākas ļoti veiksmīgi. Tikai sūtījums apraujas pie pirmā "\x00" simbola un ~50 baitu vietā tiek nosūtīti 17 baiti. valīdam pieprasījumam būtu jāizskatās aptuveni šādi: http://217.199.116.182/bin.png Tā kā serveris (https://tsa.e-me.lv/responder.eme) pieņem tikai un vienīgi bināru tekstu, tad diemžēl atkrīt tādi varianti kā base64_encode(), multipart/form-data un, iespējams, arī JSon, kas datus pa vidu pārveido. Tad nu meklēju metodi/bibliotēku, kas klienta pusē darbināmu Javascript/VBscript/JScript vai ActiveX kontrolu, lai varētu sūtīt binārus datus bez zudumiem. Iesakiet, lūdzu, risinājumu - tas var būt arī IE-only, pagaidām ar to pietiktu. :) kods ir aptuveni šāds: var url = "get_data.php"; var params = base64_decode(encoded); // te rodas bināri dati, kas tiešām arī ir bināri un nelasāmi http.open("POST", url, true); http.setRequestHeader("Content-type", "application/timestamp-query"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "Keep-alive"); http.onreadystatechange = function() {//Call a function when the state changes. if(http.readyState == 4 && http.status == 200) { alert(http.responseText); } } http.send(params);
  6. Saskaņā ar labo stilu, atzīmējos arī par atrisinājumu - jo izdevās šo te piedabūt darboties (hip-hip-urrā ;)) tātad - bija kods: <script type="text/javascript" language="javascript"> function sign_contents(txt_to_sign){ .. var Signer = new ActiveXObject("Capicom.Signer"); var Utilities = new ActiveXObject("Capicom.Utilities"); var SignedData = new ActiveXObject("Capicom.SignedData"); SignedData.Content = txt_to_sign; // Shis visu vardarbīgi konvertē uz 2baitu simboliem :( Signer.Certificate = MyCertificate; var signature = SignedData.Sign(Signer, false, 0); .. .. } </script> Visa lielā problēma - liec, ko vien gribi iekš SignedData.Content, viņš vienalga pēc ielikšanas visu konvertēs uz Unicode. Mēģinot iebarot viņam datus ar Capicom.Utilities funkcijām BinaryStringToByteArray vai ByteArrayToBinaryString, arī neizdodas - nav gaidītā efekta vai pat seko sūtījums dillēs "incorrect parameter" un iexplore nokāriens. Risinājums: uztaisīt kokteili no valodām, iesaistot arī VBScript, kurš, kā jau M$ brīnums, natīvi sadarbojas ar Capicom. Tieši aiz <body> sākuma (savādāk IE bļaustās) ielikt šādu funkciju: <script language="vbscript" type="text/vbscript"> <!-- Function Unicode2Ansi(unicodestring) Dim lngLoop Dim strChar Ustr2Bstr = "" For lngLoop = 1 to Len(unicodestring) strChar = Mid(unicodestring, lngLoop, 1) Unicode2ANSI = Unicode2ANSI & ChrB(AscB(strChar)) Next End function --> </SCRIPT> .. un pēc tam parakstīšanas vietā to saukt ar SignedData.Content = Unicode2Ansi( txt_to_sign ); // VB f-ju pasaucam no Javascript eventuālās problēmas: varbūt vajadzēs savādāku konvertāciju, un nevis uz ANSI, bet gan UTF-8, taču to noskaidrosim testēšanas gaitā ;)
  7. Grey_Wolf: uzskatu, ka arī programmētājiem būtu jāzin sava dzimtā valoda, tāpēc ierosināju kļūdainu tekstu "Nēsi" labot uz korektu "Neesi". lai pasūtītājam nav jāsarkst kodera vietā, kad šo sistēmu rādīs apmeklētājiem :>
  8. offtopic: Nēsi vēl biedrs? => Neesi vēl biedrs?
  9. Ar javascript un ActiveXObject() tiek taisīts Capicom.SignedData un pēc tam tas veiksmīgi tiek arī parakstīts. Viss ir smuki, pēc tam validējas un tā, bet - Capicom, neprasot piekrišanu, visu pārtaisa par unikodu. Līdz ar to parakstītie dati kļūst gandrīz 2x garāki, nekā to oriģināls. Meklējot atradu norādes, ka kādreiz esot eksistējis http://discuss.microsoft.com/archives/capicom.html - arhīvs ar šāda tipa jautājumiem, taču tagad tas nav pieejams. Izmantojot to pašu uz VBScript un .NET, būtu piemērojams šāds risinājums - http://www.codeproject.com/KB/security/CapicomUTF8.aspx , taču nezinu, kā iekš Javascript aizstāt funkciju "System.Text.Encoding.UTF8.GetBytes". Vai kādam ir zināms, kā iedot tekstu Capicom.SignedData klase tā, lai pēc tam nenotiktu pārveidojumi?
  10. Kādus variantus esat lietojuši bināru failu (dokumentu, izklājlapu piem) diff`u veidošanai? Pašlaik izmantojam utilītu xdelta, taču pie lielām slodzēm apache mēdz atteikt tā izpildi - nepilda un viss, līdz pat restartam. Vai kāds zina variantu, kas ir platformneatkarīgs un stabils arī pie lielām slodzēm?
  11. ar Zend encoder, ja sapratīsi, kā viņš darbojas un kā apacim iestāstīt, lai viņš to saprot.
  12. šķiet, ka atradu problēmu - Vista, pirms vērt vaļā kādu dokumentu http://www.server.com/userfiles/dokuments/123.doc , pļāpā ar webserveri: Vista: a es drīkstēšu rakstīt parent direktorijā /userfiles ? Apache: /userfiles? tas uz tevi neattiecas. tev ir tiesības rakstīt /userfiles/dokuments/ - ej un raksti uz veselību, XP, redz, raksta un nesūdzas Vista: bet es gribu! nerakstīšu tad nekur - ejiet jūs nafik, ja nedodat man pieeju visam-visam serverim! .. un atver read-only režīmā ;> vārdu sakot - Vistai ir mēreni piekārnīta WebDAV pārlūkošanas sistēma - tur ir lieki, nevienam nevajadzīgi pieprasījumi uztaisīti, kam ne visur ir implementētas atbildes. Risinājums: - absolūti visiem parent folderiem uztaisīt pieprasījumu atbildes - lai Vista ir apmierināta.
  13. Ir weblapā Javascript, kas ar labi zināmo new ActiveX("Word.Application") ver vaļā remūtus Word dokumentus, kas hostēti uz WebDAV (parasta PHP implementācija webdavam). Uz Internet Explorer un XP viss strādā perfekti - dokumentus atver, var rediģēt un ar Ctrl+S tie saglabājas uz WebDAV. Problēma - uz Vistas tie atveras read-only režīmā un neprot saglabāt, lai gan XP viss iet svilpodams. izmantotais kods: // document_fn == "http://www.server.com/userfiles/documents/123.doc"; doc = GetObject("","Word.Application"); doc = new ActiveXObject("Word.Application"); // creates the word object doc.Visible=true; doc.Documents.Open(document_fn); vai kāds izstrādes gaitā ir saskāries ar līdzīgu problēmu un vai zina risinājumu tam? // derētu jebkāds risinājums,ka tikai strādā
  14. Vai kādam ir zināms labs native Win32 softs, kas veido HTML dokumentāciju PHP failiem? nepieciešamās lietas: ne-OO PHP kodā uzrādīt esošās php funkcijas, komentārus klāt, ja tie ir.
  15. tev neizpildās nekas, jo cikla nosacījums ir aplams. šitā sanāks: for ($i = 0; $i < 40; $i++){ echo $i.' '; if ( $i and !(($i + 1) % 10)){ echo '<br>'; } }
  16. google - 'php mysql tutorial' komplektā ar Roze minēto tutoriāli un, ideālā gadījumā, citas programmēšanas valodas zināšanām aizies pavisam ātri.
  17. Pievienojot jaunu komentāru ir norāde uz http://php.lv/f/index.php?showtopic=2935. Ctrl+F redakt. Btw, lietoju UltraEdit.
  18. iesaku: 1) atrast iespēju izmantot nevis .txt failus, bet gan datubāzi. Pat eclub solījās dot db pieeju katram, kas lieto paša veidotu sistēmu (kā pretstatu nevienam nevajadzīgam tipveida forumam). 2) uzmest tabulu shēmu - piem tabula 'grupas' ( nr, nosauk, stila_nr, descript, linki(TEXT)-labojams ar FCKEditor vai tml), 'stili' (nr, nosauk .. ) 3) uztaisīt darbojošas formas, kurās var pievienot, labot datus 4) uztaisīt/palūgt kādam dizainu (pie dizaina trūkuma visbiežāk aplaužas webdizainā nepieredzējušie, bet kodēt protošie koderi ) 5) dizainam piesiet konkrētās output tabulas - kā varētu izskatīties gala rezultāta dati darbībā 6) lapai uztaisīt PHP dzinēju staigāšanai pa sadaļām un labošanai - kas kur būs atrodams 7) integrēt formas ar visu strādājošo kodu iekš dzinēja 8) pievienot autorizācijas sistēmu 9) mest saitu uz gala servera un ziņot, ka idejas autori var iet vērtēt rezultātu .. tā, lūk. ir tikai jādara, un saits izaugs :)
  19. sapratu bubu jautājumu - nafig tur php vajadzīgs. patiešām - var pilnībā iztikt bez tā: <script lang="js"> if (screen.width <= 800) document.write ("<img src="mazs.gif") else document.write("<img src="liels.gif") </script> <noscript> <img src="defaultais..mazinsh droshivien,ja reiz shito redzoshie cilveki pat js uzskata par bremzejoshu un atsleedz.GIF"> </noscript>
  20. ieteicu variantu, kā ar javasript klientam parādīt vajadzīgo bildi: ideja (для особо заснувших :)): <script language="javascript"> if ( screen.height <= 600) { document.write ('kods, kas no PHP paprasa maziņu bildīti') } else { document.write ('kods, kas no PHP paprasa lielu un smuku bildi') } </script> .. un beigās pieliku piemēru, kā iekš PHP padot dažādas bildes. cerams, ka tas, ka ar PHP tik vienkārši nevar dabūt $mainīgo bez lapas pārlādes un $_GET, ir skaidrs.
  21. izmantojamajā failā: <script language="javascript"> document.write('<img src="http://127.0.0.1/request_src.php?first">'); </script> failā request_src.php, kas vāks satatistiku: <?php if (isset($_GET['first'])){ header("Content-type: image/jpeg"); header("filename: visible.jpg"); readfile('80.jpg'); // datu piefiksēšana statistikai,ka tips ir 1. } else if (isset($_GET['second'])) { header("Content-type: image/gif"); header("filename: visible.jpg"); readfile('apache_pb.gif'); // datu piefiksēšana statistikai, ka izvēlēts 2. } ?> atliek pēc javascript izšķirtspējas noskaidrošanas ar document.write izvadīt ko nu vajag :)
  22. konekcijai pie db normāli iekš plaintext paroli kautkur vajadzēs glabāt - include failā, piemēram. Ja nu ļoti vajag - 1 lietotāja sistēmām var $db_pass = substr(md5($login), 0,5).substr(md5($pass),0,5); etc izvirtības. Ar šifrējamajām vairāk domāju CMS etc web sistēmu paroles, kas parasti ir daudzas un atšķirīgas .. gan no db lietotājvārda paroles, gan arī savā starpā :)
  23. jebkurā gadījumā - paroles ieteicams NEGLABĀT iekš plaintext - labāk tās šifrēt: function cyph($parole){ return md5(md5($parole).'saltsaltsalt'); }, piemēram. Tad pievienojot jaunu lietotāju viņa paroli failā/datubāzē ielikt šādi šifrētu, un pie katra ielogošanās mēģinājuma salīdzināt to ar šifrētu paroles lauciņā ievadīto paroli. Pirms kāda laika tika drūmi 'hakots' eclub.lv - cilvēki brouzēja kaimiņu direktorijas un lasīja un tālāk izmantoja login/pass citu administrācijas sistēmām no failiem. Jebkādā pietiekami sarežģitā veidā tās kriptējot varētu tādus gadījumus novērst.
  24. Skriptus veidojot, tos var pārbaudīt ar kādu debugeri - piem Zend studio ir iekļauts ļoti labs kukaiņu ķērājs.
  25. usver

    phpbb

    Ja pareizi saprotu, tad vnk ir jāpārveido vaicājums uz $result = mysql_query("SELECT * FROM `phpbb_topics` order by 'topic_last_post_id' DESC LIMIT 0 , 10") 'topic_last_post_id' ir topika pēdējā komentāra absolūtais numurs. un - limit 1, 10 tevis dotajā piemērā izlaistu pašu aktuālāko topiku .. no 0 jāsāk. šitā vajadzētu darboties .. ja darbojās iepriekšējais, kas sākotnēji dots piemēram.
×
×
  • Create New...