Devils666 Posted November 28, 2008 Author Report Share Posted November 28, 2008 vins teica "Meklē kur to izmest." Link to comment Share on other sites More sharing options...
bubu Posted November 28, 2008 Report Share Posted November 28, 2008 Bah.. jāsāk atkārtoties. Ja tev datubāzē uzrāda \n simbolu (vienu čarakteru), tad tev teksta izvadīšanai html'ā jālieto nl2br fja. Izvadīšanai textareā nav nekas jālieto - viss izvadīsies pareizi. \n kā viens čaraketers nozīmē endlainu (enteru). Ja tev datubāzē glabājas divi simboli - \ un n pēc kārtas, tad tu esi: 1) vai nu ielicis tur divus simbolus \ un n (nevis enteru), 2) vai arī tev skriptā, kas atbild par teksta ievietošanu datubāzē, kautkur ir manis augstāk uzrakstītais str_replace (varbūt ereg_replace vai preg_replace). Izmet to ārā un tad lasi iepriekšējo rindkopu. Var protams mudīties un manuāli pie outputa konvertēt "\\n" uz "\n", bet nu tas ir pilnīgi garām. Link to comment Share on other sites More sharing options...
Devils666 Posted November 28, 2008 Author Report Share Posted November 28, 2008 (edited) Paldies laikam sapratu, iekš pieveinošanas datubāze laikam dēļ ši, negāja kad nomainiju no $teksts = mysql_escape_string($_POST['teskts']); uz $teksts = $_POST['teskts']; un viss iet ka vaig Edited November 28, 2008 by Devils666 Link to comment Share on other sites More sharing options...
Aleksejs Posted November 28, 2008 Report Share Posted November 28, 2008 Cerams, ka saproti, ka tagad tava datubāze potenciāli ir pakļauta SQL injekcijām? Link to comment Share on other sites More sharing options...
Devils666 Posted November 28, 2008 Author Report Share Posted November 28, 2008 (edited) Lūdzu nevajag taisīt bezjēdzīgas QUOTES Jā to es sapratu pēc dažām sekundem, kad nedaudz padomaju, bet ka tad lai to es savādak nomainu? Edited November 28, 2008 by bubu Link to comment Share on other sites More sharing options...
bubu Posted November 28, 2008 Report Share Posted November 28, 2008 hm.. mysql_escape_string nevajadzētu to ietekmēt. Jā, tas pārvērš enteru par \n, bet to tas dara tāpēc, lai tu ievietojamo stringu varētu likt pēdiņās, kad to liec kverijā. Reāli datubāzē saglabāsies enters. Esi pārliecināts, ka neizsaci divreiz escape_string? Varbūt pēc tam vēl izsauci addslashes? mysql_escape_string nevajadzētu ņem nost vispār. Tas padarīs tavus kverijus ievainojamus, un zinošs cilvēks varēs izčakarēt tavu datubāzi. Link to comment Share on other sites More sharing options...
Aleksejs Posted November 28, 2008 Report Share Posted November 28, 2008 Man šķiet, ka funkcijas mysql_real_escape() aprakstā vajadzētu tam būt: http://lv.php.net/manual/en/function.mysql...cape-string.php Link to comment Share on other sites More sharing options...
Devils666 Posted November 28, 2008 Author Report Share Posted November 28, 2008 Nu viss kods izkatas šāds if(isset($_POST['submit'])) { $teksts = mysql_escape_string($_POST['teksts']); if(!$teksts){ echo "Kļuda: Lai pievienotu ir nepieciešams azpildīt visus laucinus. Lūdzu aizpildi tos."; exit(); } $result = mysql_query("INSERT INTO datubaze (teksts) VALUES ('$teksts')",$savienoties); echo "<b>Paldies! Teksts veiksmigi pievienots!<br>Pēc (3) sekundēm tev atvērsies sākuma lapa"; echo "<meta http-equiv=Refresh content=3;url=lessons.php>"; } else { es itka ķļūdu neredzu, bet varbūt tomer kautkur ir Link to comment Share on other sites More sharing options...
Aleksejs Posted November 28, 2008 Report Share Posted November 28, 2008 Man šķiet, ka pie vainas būs servera uzstādījumi, kas saistīti ar http://lv.php.net/manual/en/security.magicquotes.php Link to comment Share on other sites More sharing options...
Devils666 Posted November 28, 2008 Author Report Share Posted November 28, 2008 (edited) Norestartēju datoru, un nekas nemainijās. Ta ka tas laikam nav pie vainas un tur kaut kas bija rasktits par SQL Injection, tapec labak atstasu. Kāds kodā nevar paskatites kļūdas? Edited November 28, 2008 by Devils666 Link to comment Share on other sites More sharing options...
bubu Posted November 28, 2008 Report Share Posted November 28, 2008 Aleksej: magic quotes jau enterus neaiztiek, ne? Devils666: padebugo kodu - ieliec vairākās vietās (pirms/pēc eskeipošanas) echo/print_r/var_dump un paskaties mainīgā vērtību. Link to comment Share on other sites More sharing options...
Devils666 Posted November 28, 2008 Author Report Share Posted November 28, 2008 (edited) **** tik vienkārs kods, bet tāds čakars Pamēģinaju, tikvaita neiet, vienigais bez mysql_escape_string, bet bez tā labak nemēģināšu, drošiba tomer svarigaka Jaatrod kāds veids kā ielikt datubāzē bez \r un \n vai jauzliek, lai savādāk nolasītu no datubāzes......jo tikko apskatijos, rakstot caur phpmyadmin neparadas \r \n un viss iir kartiba Edited November 28, 2008 by Devils666 Link to comment Share on other sites More sharing options...
Aleksejs Posted November 28, 2008 Report Share Posted November 28, 2008 nu tad es vienkārši iesaku Tev pirms rādīšanas izlaist vērtību caur: str_replace('\n',"\n",$str); str_replace('\r',"\n",$str); Link to comment Share on other sites More sharing options...
Recommended Posts