Kemito Posted March 31, 2010 Report Share Posted March 31, 2010 Sveiki visiem, es aiz gara laika vienkārši uzcepu tā uz domāšanu komentāru sistēmu / viesu grāmatu tādu parastu vienkāršu neko tur nedaiļoju, nekādus BB kodus utml.! Vēlējos saņemt vērtējumu tādu, kā pielabot, kas man darīts nepareizi ir utml.! Vēlos vienk. dzirdēt ko teiks vismaz 3 cilvēki - Briedis, 2easy, rATRIJS par šito darbiņu! Zinu jau ka nav nekā liela, be tomēr, kā 2easy teica, ka jāsāk ar mazumiņiem, kautvai sāc ar prastu string izvadīšanu kamēr sanāk pareizi, nevis čakarē laiku čurājot uz pirkstiem! Kods ir šeit: http://paste.php.lv/c1d5cbf7d8f34558c60c776b2b9383db?lang=php Datubāze ir šeit: http://paste.php.lv/64bda711649a904a2109737374b9c744?lang=mysql Paldies jau iepriekš! Protams, vēl kāda gudra persona var novērtēt! Doma ir - Saprast kļūdas, un izvērtēt tās. Quote Link to comment Share on other sites More sharing options...
emsy Posted March 31, 2010 Report Share Posted March 31, 2010 (edited) Atceries, ka uz PHP6 vairs nav tāda funkcijā kā get_magic_quotes_gpc()! htmlspecialchars() varēji likt pie ievades nevis izvades. Izskatās daudzsološi, tā turēt ;)! Gandrīz nobijos ieraugot šo: mysql_select_db($database) or die(mysql_error()." MYSQL ERROR");; Augstāk minētajā es ievēroju 1 kļūdu :)!! Es ceru, ka tu arī to ievēroji, jo hostinga serveru PHP versijas ir ļoti strikti noskaņotas pret kļūdām kuras neparāda lokālajā serverī. Edited March 31, 2010 by emsy Quote Link to comment Share on other sites More sharing options...
anonīms Posted March 31, 2010 Report Share Posted March 31, 2010 (edited) Komentārā un vārdā iemetam pa space. Ko tālāk? :] Edited March 31, 2010 by anonīms Quote Link to comment Share on other sites More sharing options...
emsy Posted March 31, 2010 Report Share Posted March 31, 2010 Atradu vēl vienu nepilnību, kuru tu varētu pielabot! ;) if($vaards=='' || $komentaars==''){ Eksistē funkcija empyt(), bet tavs variants arī nav slikts :). Quote Link to comment Share on other sites More sharing options...
Kemito Posted March 31, 2010 Author Report Share Posted March 31, 2010 (edited) Ko tad darīt ar datu filtrēšanu? Runājot par to - get_magic_quotes_gpc() ? Pielabosiet kāds kā ievadīt '$vaards', iekš kverija, lai varu lietot htmlspecialchars? Kā aizsargāties pret to ko anonīms teica? Kādi ieteikumi? Tas kā pieslēdzas/-os datubāzei nebūtu šajā skatījumā tas svarīgākais! Reāli taisot mājaslapu taisa jau mazliet tāka savādāk :) - Man mācīja taisīt ar globālajiem mainīgajiem un tur vēl izmantot define() ! Edited March 31, 2010 by Kemito Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted March 31, 2010 Report Share Posted March 31, 2010 (edited) Nu ja jau mans niks ir pieminēts, tad būtu grēks neatbildēt :) Ko es labotu: - visu sadalītu pa moduļiem (db, ieraksts, skati, helperi, ...). Vienalga ko izmantojot - klases/funkcijas. Tas pie viena nodalītu HTML no PHP - obligāti aizpildāmos laukus nočekotu pašā sākumā (empty, strlen), jo savādāk tiks uzģenerēts E_NOTICE līmeņa warnings - date vietā izmantotu time un noformētu to pareizi pie izvades. Datubāzē to var glabāt kā int - mysql_fetch_array vietā izmantotu mysql_fetch_assoc, jo cipariskie indeksi tāpat netiek izmantoti - htmlspecialchars izmantotu pie datu insertošanas datu bāzē nevis pirms izvades (pie tam IP un laiks tāpat neko sliktu nevar saturēt) - SELECT * vietā es rakstītu ko tieši man vajag, īpaši ja visu neizmanto - vai tiešām vards vajag būt 255 simbolus garam? (laiks arīdzan - bet kā jau teicu es to pārvestu uz int un lietotu time) Kaut kā tā ^_^ Bet prieks ka kāds kaut ko dara ne tikai forumos prasa kā izveidot php mainīgo... EDIT: ā un par to ka var iemest space - vajag lietot trim. Un par magic quotes. PHP6 vēl tāpat tik drīz nebūs pieejams. (vispār un kur nu vēl uz šārētajiem hostingiem). Bet nu var jau skatīties vai attiecīgā funkcija eksistē. Ā un HTMLam nepievērsu uzmanību, vet font tags un tables lietošani ir SLIKTI!!! Edited March 31, 2010 by rATRIJS Quote Link to comment Share on other sites More sharing options...
briedis Posted March 31, 2010 Report Share Posted March 31, 2010 Ko es ieteiktu, iemest arī pie komentāra izvades wordwrap funkciju, lai kāds ļaundaris nesačakarē dizainu (vai vienkārši netaisa nesmukumus). Vēl var provēt izmantot nl2br() funkciju, lai komentāros var rakstīt rindkopās, nevis vienā strīpā :) Kā jau rATRIJS teica par moduļos dalīšanu. Sākumā vismaz ieteiktu provēt nodaīt php no html kaut vai tādā veidā, ka visi aprēķini, darbības notiek pašā augšā, bet htmls vadās ārā apakšā (jo tavā gadījumā html jau sāc izvadīt pašā sākumā, tādējādi turpmāt aizliedzot lietot header(), session_start(), setcookie() funkcijas, kuras var izpildīt, kad vēl nav nosūtīt headeri) Kā jau minēja, samazināt vārda garumu db, laiku turēt kā int (glabāt kā unix timestampu, pie izvades formatēt). Quote Link to comment Share on other sites More sharing options...
2easy Posted March 31, 2010 Report Share Posted March 31, 2010 (edited) pāris lietas... 1) lai nu ko, bet htmlspecialchars() Kemito tagad prot pareizi pielietot :)) tb izvadot datus. tur viss pareizi. hmm, bet tā kā šie dati ir paredzēti tikai kā plain text, tad šajā gadījumā, to varētu izdarīt jau uzreiz pie inserta. ehh, gaumes lieta... galvenais, jau ka tas htmlspecialchars() vsp tiek lietots 2) secureString() funkciju var droši dzēst ārā. pirms kko liec kverijā, pietiek ar mysql_real_escape_string($_POST['...']) priekš teksta, un (float) $_POST['...'] priekš skaitliskas vērtības 3) savukārt, ja uz servera ir ieslēgts magic_quotes_gpc (piemēram, uz nano tā ir), tad skripta sākumā (kkur pat pirms db konekcijas izveidošanas) var ielikt kaut vai šādu kodu if (get_magic_quotes_gpc()) { $f = create_function('$v', 'return is_array($v) ? $v : stripslashes($v);'); $_GET = array_map($f, $_GET); $_POST = array_map($f, $_POST); $_COOKIE = array_map($f, $_COOKIE); } 4) tabulā laiku es definēju kā datetime, bet ip kā varbinary(15) protams, ka abos gadījumos var izmantot int (atnāks vilks un tā arī pateiks :D), taču man labāk patīk naturālas vērtības, tb tādas, kuras uzreiz bez apstrādes dod cilvēkam viegli saprotamu info 5) un htmlā rakstīt font tagu sen jau vairs nav stilīgi ;) aa un jā ir vērts ieklausīties gan rATRIJā, gan briedī par to, ka html ir ieteicams izvadīt tikai pašās beigās. vispirms izdari visas darbības ar datu bāzi (inserto, selektē, ko vien vajag), tad saformē datus/stringu ar lapas saturu, un beigās to izvadi lapā kaut vai ar <?= $content ?> (pa vidu statiskajam html, kuru šajā gadījumā varētu saukt arī par template) Edited March 31, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
Kemito Posted April 1, 2010 Author Report Share Posted April 1, 2010 (edited) Paldies liels par ieteikumiem, protams centos kā varēju tā lūk arī top otrais mēģinājums! Zinu, ka neesmu izpildījis visu, jo neesmu sapratis sekojošas lietas! 1. Par to SPACE izvadi, ja ieliek vienkārši tukšumus! 2. Par to kā izvadīt masīvu pēc tam iekš HTML, kā tur 2easy teica ar shortagiem! Jēga ir jeb var atstāt šādi pat? 3. Kā noformēt tad kautko skaitu teiksim, ja man vaig tikai tekstu sarkanā krāsā? - Neizmantot <font> tagu? 4. Par čekošanu sākumā - Mazliet apjuku par to kā to darīt! 4.1 - Taisu pārbaudi ( Jā ), ko darīt ja pārbaudam un lauks ir tukšs?, bet ja lauks ir aizpildīts? 4.2 - Ja lauks man nav sākumā aizpildīts, tad visu laiku stāv kautkāds manis likts paziņojums! 5. Ar laiku liku šādi, kā teica 2easy, vai labot arī katuko pie ievades? Vai šeit arī date vietā izmantot time("gads, mēnesis, diena") utml. ? Izmantoju gan pie ievades, gan pie izvades htmlspecialchars, kā jau redzams jaunajā kodā! Atteicos no secureString() funkcijas, kā izmantoju defaulto funkciju! Jaunā DB struktūra: http://paste.php.lv/7a38f27f0c2a250c8f683cc1d35a5924?lang=mysql Pēc briedis teiktā http://paste.php.lv/6b4ca9976b10658cf49abbc8778e31a3?lang=php Jaunais kods: http://paste.php.lv/2b9d8cae84e748dc1e3353481ab96a67?lang=php Turpinam tematu :D Vismaz šādi ir intresantāk! :) Edited April 1, 2010 by Kemito Quote Link to comment Share on other sites More sharing options...
briedis Posted April 1, 2010 Report Share Posted April 1, 2010 (edited) 1) $vards = ..htmlspecial..(trim($_POST['vards'))..; if(!empty($vards) && !empty($komentars)){ //pievienojam }else{ //norājam, ka nav kāds no laukiem nav aizpildīts } 3) <span style="color:red;">sarkanais</span> - šā formatē in-line teksta izskatu.. Vēl labāk piešķir klasi un glabā css failā... Ja izmanto pie ievades specialchars, tad pie izvades vairs nevajag lietot, jo tad tur sanāks šmuces :)) Apskatot kodu ieteikums - mysql_real_esc... funkciju izmantot tikai pašās beigās, pirms liek datubāzē, tas ir, visas citas apstrādes funkcijas izmantot pirms mysql_real_esc... Edited April 1, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
codez Posted April 1, 2010 Report Share Posted April 1, 2010 3) savukārt, ja uz servera ir ieslēgts magic_quotes_gpc (piemēram, uz nano tā ir), tad skripta sākumā (kkur pat pirms db konekcijas izveidošanas) var ielikt kaut vai šādu kodu Vai tad nevar vienkārši .htaccess failā ielikt: php_flag magic_quotes_gpc Off ? Quote Link to comment Share on other sites More sharing options...
2easy Posted April 1, 2010 Report Share Posted April 1, 2010 dažreiz nevar... Quote Link to comment Share on other sites More sharing options...
Kemito Posted April 1, 2010 Author Report Share Posted April 1, 2010 codez domāju, ja tu neizmanto .htaccess ko tad? Nākas darīt šādi :) Quote Link to comment Share on other sites More sharing options...
codez Posted April 1, 2010 Report Share Posted April 1, 2010 Neizmanto .htaccess, tas ir kā? Reliģiska pārliecība? Quote Link to comment Share on other sites More sharing options...
2easy Posted April 1, 2010 Report Share Posted April 1, 2010 (edited) uz nano apache server api ir "CGI", nevis "Apache 2.0 Handler" līdz ar to .htaccess php_flag php_value izraisa smuku: Error 500 — Internal server error taču uz nano var nolikt savu mazu php.ini failu (direktoriju augstāk virs www roota), kurā var būt kaut vai 1x rindiņa: magic_quotes_gpc = Off vnk es ieliktu to kodu ar stripslashes() kā galējo variantu, jo ir arī tādi hosti, kur iespējas kko mainīt ir ļoti ierobežotas anyway, protams, ka labāk ir noregulēt konfigurāciju, nevis izmantot kkādus koda workaroundus Edited April 1, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.