Jump to content
php.lv forumi

bubu

Administratori
  • Posts

    8,897
  • Joined

  • Last visited

Everything posted by bubu

  1. Kādām vēl mysql_query aplamībām, ja viņam kverija rezultāts pārbaudās ar or die(mysql_error()) ?
  2. Tas, Robi, attiecas ne tikai uz aizsardzībām pret injekcijām, bet arī pret aizsardzībāi jebkādām lietotāja netīši/tīši ievadītajām/pieļautajām kļūdām, lai nesabojātu datu integritāti. Nedrīkst lietot pa tiešo no lietotāja saņemtus datus. Pofig vai GET, vai POST, vai no uploadota faila nolasīts strings. Lietotāja ievadītie dati ir vienmēr un rūpīgi jāvalidē. Ne tikai ar klasisko kādu escape_string fju, bet arī visi citi gadījumi - ja tiek gaidīs skaitlis, tad neko citu neatļaut, ja ir gaidāma vērtība no noteiktas kopas (piemēram, primārās atslēgas vērtība), tad pārbaudīt uz tādas eksistenci, utt.. Un tas attiecas ne tikai uz web'iskām aplikācijām, bet arī uz jebkādām citām - gan GUI'skām desktopa aplikācijām, gan komandrindas tūļiem.
  3. Kristāla zīlēšanas bumba saka, ka tev formā login input laukam name atribūts nesatur vērtību "logins". Kā arī tu programmē vai nu ar atslēgtiem kļūdu paziņojumiem display_errors=0 vai arī ne-E_ALL kļūdu paziņošanas režīmā. Un tas ir slikti.
  4. Principā vajag kautkādu funkciju F(x, y, z), kas ja x ir NULL tad atgriež y, citādā gadījumā atgriež z. Tieši to dara MySQL IF funkcija. 100 punkti, ka PostgreSQL'ā ir kautkas līdzīgs. Muļķības tu stāsti. Visu tur izvadīs. Jebkurā pasākumā tas izvadīs gan Jāni, gan Pēteri, gan arī Juri. Izskatās, ka tu nezini atšķirību starp JOIN un LEFT JOIN. Paskaties atšķirībut starp JOIN'iem. Noderēs. http://datubazes.wordpress.com/2008/02/11/sql-join-i/ http://datubazes.wordpress.com/2008/02/25/inner-join/ http://datubazes.wordpress.com/2008/03/04/outer-join/ Edit: Zandis uzdirsa, ka es tomēr melojot. Viņam izrādījās taisnība, es nokļūdījos. WHERE vietā kverijā vajag AND rakstīt.
  5. bubu

    Internet adrese!

    Sesijas id ir tāds kā unikāls identifikators pēc kura uz servera glabājas patvaļīgi dati (līdzīgi kā tabulas primārā atslēga). Tas parasti glabājas (tb padodas starp klienta browseri un serveri) kukijā, bet var arī katrā urlī kā GET parametru. Ja tu uzmini un serverim padod svešu (un aktīvu) sesijas id un tam nav uztaisīta nekāda aizsardzība pret to, tad tu principā esi apmānījis serveri ar savu identitāti. T.i. serveris tevi uzskatīs par citu personu, kas ir ielogojusies tajā. Šis uzbrukums saucās Session Fixation. Viens no veidiem kā pret to cīnīties ir papildus sesijas id glabāt arī citus lietotāja raksturojošus datus - IP adresi, pārlūkprogrammas nosaukumu/versiju (User-Agent) utml datus. Reku vēl viens links: http://laacz.lv/2005/02/16/php_session_fixation/
  6. SELECT L.vards, IF(PL.id_pasakums, "true", "false") FROM lietotaji AS L LEFT JOIN piedalijas AS PL ON L.id = PL.id_lietotajs WHERE PL.id_pasakums = $pasakuma_id P.S. Topika nosaukums sūkā.
  7. Ne vienmēr vajag insertot visas vērtības, citreiz defaultās ir jāatstāj. Daudz labāk ir uzrakstīt mazu wraperīti: function insert($table, $data) { return "INSERT INTO $table (" . implode(",", array_keys($data)) . ") VALUES (" . implode(",", array_values($data)) . ")"; } mysql_query(insert("tabula", array("lauks1" => "asdf", "lauks2" => "zumm"))); Šajā gadījumā itin viegli būs ielikt arī automātisku datu eskeipošanu - vajadzēs tik vienu funkciju pamainīt.
  8. Tu acīmredzot nesaproti kā tas SQL kverijs izpildās, kuru uzrakstīji. Vispirms izpilda šo daļu: (SELECT TOP 1 temp_izmeri.Tips FROM temp_izmeri WHERE temp_izmeri.Tips = "Figurala_f"). Tā tiešām atgriež tikai vienu ierakstu - konkrētās tabulas Tips lauka vērtību, kura saturs ir "Figurala_f" - tātad atgriež vienu stringu "Figurala_f". Vai saproti cik bezjēdzīgi ir selektēt ieraksta vērtību, kuru jau tu zini? Tagad tiek izpildīts tas UPDATE kverijs: UPDATE temp_izmeri SET temp_izmeri.img_url = "1" WHERE (((temp_izmeri.Tips)=xxxx)), kur xxxx vietā tiek ielikts iepriekš atrastais strings. Rezultātā sanāk, ka tiek izpildīts šāds kverijs: UPDATE temp_izmeri SET temp_izmeri.img_url = "1" WHERE (((temp_izmeri.Tips)="Figurala_f")); Tas ir tieši tas, ko es uzrakstīju. Ja jau tu gribi updeitu veikt vienam konkrētam ierakstam, tad tam ir jāizmanto primārās atslēgas, nevis maģiskis Tips lauks, kurš var atkārtoties: UPDATE temp_izmeri SET img_url = "1" WHERE id = 123
  9. bubu

    PHP Mailing

    Apaskati normāla e-pasta ar attačmentiem (tādu, kurš izskatās tā kā gribi) sourci - visus headerus un saturu. Salīdzini to ar to e-pasta sourci, kura nepatīk kā izskatās. Un pameklē atšķirības. gmail.com btw, ja attačā ir .txt fails, tad rāda visu .txt faila saturu vēstules tekstā nevis rāda .txt failu kā pielikumu (varbūt tagad kautkas mainījies, bet pirms dažiem mēnēšiem vēl bija šitā).
  10. marz: gadījumā nejauc tabulas ar laukiem?
  11. Kautkāds ārprātīgs tev tas kverijs... Iekavu arī dafiga. Tu tur esi uzrakstījis updeitot visus ierakstus, kuriem Tips lauka vērtība ir "Figurala_f". To var izdarīt daudz vienkāršāk: UPDATE temp_izmeri SET temp_izmeri.img_url = "1" WHERE temp_izmeri.Tips = "Figurala_f"
  12. Tev die("Neizdevas pievienot") vietā vajag rakstīt: die(mysql_error()). Tad arī redzēsi kļūdu. Un nekad, nekad, nekad neizmanto plikus GET/POST/COOKIE datus mysql kverijos kā stringus. Tavu lapu "uzlaisīs" ātri vien. Edit: phpjanis: tur ir norādītas divas, nevis trīs kolonnas ;)
  13. Tavām zināšānām - esot arī par iesācēju, tas neattaisno manuāļa nelasīšanu. Nezinu, ko nozīmē "import likt datubaze.rar", taču kļūdas paziņojumā "No database selected" ir ļoti skaidri uzrakstīta vaina. Neesi izvēlējies/norādījis datubāzi, kurā izpildīt dotos kverijus. MySQL konsolē to dara ar "USE datubāzes_nosaukums;" Vai arī php pusē ar mysql_select_db funkciju.
  14. Nu tak eskeipot html speciālos čarakterus vajag un nav nekādu problēmu kādos tagos saturu liek - pre, div, vai kautvai h1.
  15. Mysql kļūdu pārbaudīji? if (!$Sbb_query) { die(mysql_error()); } Gatavu kveriju pārbaudīji? echo $SQLqbb;
  16. Visdrīzāk tur, ka skripts, kurš satur to mysql_query, nav saglabāts utf-8 kodējumā.
  17. Debugo! Saliec kodā kautvai echo (kopā ar flush) un tad redzēsi, kurā vietā kods apstājas.
  18. Kārtējais RTFM jautājums... http://dev.mysql.com/doc/refman/5.0/en/alter-table.html
  19. Kāpēc neatšķir kādu SQL pamatu grāmatu/manuāli un nepalasi? UPDATE tabule SET lauks = lauks + 20 WHERE id = ...
  20. Tas jāsaprot tā, ka tajā sql dumpā ir redzamas paroles plaintekstā. Bet tās paroles nav jaunākās, tb kautkādas aizvēsturiskas. Vismaz tā parole, kuru pie sava usera atrodu, es jau neizmantoju kādus gadus 4-5. Imho tās ir paroles no vecā boot foruma, tad kad vēl nebija IPB, bet kaut kāds paštaisīts.
  21. bubu

    XML/DTD ?!

    Praktiska piemērs tavam praktiskajam jautājumam: http://www.w3schools.com/DTD/dtd_intro.asp
  22. Šeit stāv daudz jaunāka IPB versija nekā zābaku forumā. Kā arī - nav zināms vai sql dumps tika iegūts izmantojot kādu IPB ievainojamību, vai arī tur pastrādājis kāds "savējais" cilvēks no iekšienes. Un tev ļoti derētu piedomāt pie topiku nosaukumu veidošanas.
×
×
  • Create New...