Re: php ir mysql paieska

Na aš kažkaip nematau to ciklo bloko uždarymo }

Matau pirmo if'o, bet nematau to ciklo. Gal tu tiesiog ne visą kodą pateikei, bet gali būt, kad tavo uždaromasis skliaustas yra kažkur toliau kode ir todėl prie $num=0 pas tave tas visas sekantis kodas yra ignoruojamas, nes ciklas nevykdomas.

Re: php ir mysql paieska

pridėk:

ini_set('display_errors', 1);
error_reporting(E_ALL);
MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

23 (edited by Donatas 2011-01-31 13:06:53)

Re: php ir mysql paieska

patalpinau zygio duota koda stai taip

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

echo'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';
$mhost   = "localhost";
$muser   = "********";
$mpass   = "********"; 
$mdb     = "********";
$mdbced4 = "straipsniai";

        
            $db = mysql_connect("$mhost","$muser","$mpass") or die (mysql_error()); 
            mysql_query("SET NAMES 'utf8'") or die(mysql_error());
            mysql_select_db($mdb, $db) or die (mysql_error());


$srch="%rublis%";
$query = mysql_query("SELECT * FROM $mdbced4 WHERE sktipas LIKE '$srch' ") or die (mysql_error());
$num = mysql_num_rows($query) or die (mysql_error());
echo 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
?>

Cia sukurtas visiskai naujas failas jame yra tik tai kas cia atvaizduota. klaidos nerodo aaaaaaaaaaaaaaaaaaaaa raidziu irgi ne:)
$srch="%rublis%"; rublis zodi pakeiciu i egzistuojanti duomenu bazeja, iskart aaaaaaaaaa raides parodo

Re: php ir mysql paieska

Pas tave suveikia die() šioje eilutėje:

$num = mysql_num_rows($query) or die (mysql_error());

Kadangi klaidos nebuvo - tu nieko nematai. Realiai kai nėr rezultatų, $num = 0, tada suveikia OR šaka ir vyksta die();

Re: php ir mysql paieska

minde wrote:

Pas tave suveikia die() šioje eilutėje:

$num = mysql_num_rows($query) or die (mysql_error());

Kadangi klaidos nebuvo - tu nieko nematai. Realiai kai nėr rezultatų, $num = 0, tada suveikia OR šaka ir vyksta die();

tikrai taip dekui padejo, numeciau gala or die (mysql_error()); ir viskas pasitaise

26 (edited by Donatas 2011-01-31 17:22:37)

Re: php ir mysql paieska

dar norejau paklaust daleiskim ar galiu pakenkti kazkuom tinklalapiui jeigu ivesiu kazka netinkamo i paieskos lauka?
ir kokias apsaugas patarsit deti
strip_tags
htmlspecialchars
trim

a dar kokias? Jeigu ivesdamas texta i paieska, to ivesto teksto as neatvaizduoju tinklalapyja ar gali man ivestas textas kaip nors sutrigdyti tinklapio veikima? Arba jeigu texta atvaizduoju per

<input name="aprasymas" type="text" id="aprasymas" size="35" />

Re: php ir mysql paieska

Tavo atveju daug šansų, kad suprantantis žmogus galės tiek pasiimti visus duomenis iš duomenų bazės, tiek tą duomenų bazę ištrinti.

Retais atvejais galėtų ir prieiti prie tam tikrų failų, o gal net užvaldyti visą serverį. čia jau priklauso nuo retesnių aplinkybių.

Re: php ir mysql paieska

Tai kiek priskaiciau manualo idedu
strip_tags() - Strip HTML and PHP tags from a string
isima/nuima html php tagus is kintamojo tai man turetu uztekti sito pagal ideja

o tokiem dalykam kaip

<select name="select">
<option value="Vilnius">Vilnius</option>
</select>

reikia deti strip tags? ar kokia nors kitokia apsauga jeigu informacija siunciu per post

29 (edited by qutwala 2011-01-31 20:42:41)

Re: php ir mysql paieska

Asmeniškai tiesiog apsirašau galimus variantus į masyvą, pvz:
$array = ("Vilnius", "Kaunas");
Ir tikrinu:
(in_array($_POST['miestas'], $array);
Jeigu TRUE keliauja viskas toliau, jeigu ne programa stabdoma..
Vistiek 'Vilnius != Vilnius, ar ne?

Re: php ir mysql paieska

Donatas wrote:

Tai kiek priskaiciau manualo idedu
strip_tags() - Strip HTML and PHP tags from a string
isima/nuima html php tagus is kintamojo tai man turetu uztekti sito pagal ideja

Kažkiek apsaugo nuo XSS ir pan., bet SQL injekcijai neužkerta kelio.

Donatas wrote:

o tokiem dalykam kaip

<select name="select">
<option value="Vilnius">Vilnius</option>
</select>

reikia deti strip tags? ar kokia nors kitokia apsauga jeigu informacija siunciu per post

Jokio skirtumo ar POST ar GET, ar <select> ar <input type="text".., viskas, kas ateina iš kliento pusės, turi būti tikrinama/valoma prieš naudojant vienoje ar kitoje vietoje.

Re: php ir mysql paieska

qutwala wrote:

Asmeniškai tiesiog apsirašau galimus variantus į masyvą, pvz:
$array = ("Vilnius", "Kaunas");
Ir tikrinu:
(in_array($_POST['miestas'], $array);
Jeigu TRUE keliauja viskas toliau, jeigu ne programa stabdoma..
Vistiek 'Vilnius != Vilnius, ar ne?

Klasifikatoriaus turėjimas masyvė yra gerai, bet deja ne visada tai įmanoma (-;

Re: php ir mysql paieska

Bendru atveju:

// STRING tipas
$query = "SELECT ... FROM ... WHERE string = '" . mysql_real_escape_string($_POST["text_input"]) . "'";

// INT tipas
$query = "SELECT ... FROM ... WHERE id = " . (int)$_POST["expected_int_input"];

O atvaizduojant STRING tipo vartotojui (nesvarbu kokios rolės) tikriausiai HTML'o tagus reikia ne-strip'inti, o pakeisti į nekenksmingus simbolius. Tą daro funkcijos htmlspecialchars() ir htmlentities() (pagal poreikius). Nebent tikrai supranti ką darai ir leidi savo naršyklei gauti HTML'ą su JS... ir visom iš to išplaukiančiom pasekmėm.

Re: php ir mysql paieska

Paieškos atveju - ką daryti su specialiais simboliais saugomais duomenų bazės TEXT tipo laukuose?

Na tai čia priklausomai kokiame formate jie saugomi - jeigu tie simboliai nebuvo sukonvertuoti, tai nieko papildomai ir nereikia daryti - naudoti standatinę procedūrą. Jeigu turime DB, kur visos kabutės ir pan. yra sukonvertuota į kažką (pvz. HTML entities), na tai prieš paiešką duomenų bazėje reikia ir vartotojo įvedamus duomenis pasikonvertuoti į tą pati formatą... Logiška?

Re: php ir mysql paieska

vaje cia su tais programavimais beda :) tik nezinok ko nors tuoj atsiras gudruciu kurie patvarkys reikalus....

Dekui uz atsakymus dar daugiau manualo skaitymo pamoku uzdavet kol viska tvarkingai pasidarysiu :D

Re: php ir mysql paieska

Ne lengviau naudoti pvz ženklų white listo - t.y. su kokiu preg_replace pašalinti viską kas nėra [a-žA-ž0-9 \-]

Bandant sudaryti blackistus (kad ir su strip tags, htmlspecialchars etc) visada galima kokią nors nišinę situaciją pramiegoti

Re: php ir mysql paieska

Daug daugiau šansų, kad kažkas nelabai suprantantis, padaręs savo "apsaugas" kažką pramiegos (-;

ženklų tikrinimą gali daryti, jeigu tiksliai žinai, kad, tarkim, turi ateiti 8 simbolių (raides + skaičiai) slaptaždodis. O ką daryti, jeigu tai yra, tarkim, forumo žinutė, kurioje galimi visi simboliai? Vistiek prieisi prie to pačio tam tikrų simbolių nukenksminimo, ką būtent ir padaro htmlspecialchars() ar htmlentities().

37 (edited by Donatas 2011-02-01 22:30:13)

Re: php ir mysql paieska

minde wrote:

Bendru atveju:
Tą daro funkcijos htmlspecialchars() ir htmlentities() (pagal poreikius).

Tai kuom skiresi tos dvi funkcijos koki pavyzdi kada naudot viena kada kita galit pateikt nes kiek supratau jos daro beveik ta pati o kuom skiresi tikslei pritruko anglu kalbos ziniu. Net zodynas nepadeda...
supratau tik tiek kad f-cija  htmlentities() perkoduota texta as galiu atkoduot naudodamas  html_entity_decode()

bet ir htmlspecialchars() galima atkoduot htmlspecialchars_decode()

Re: php ir mysql paieska

Na anglų kalba yra būtina.

Apie htmlentities():

This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.

"ši funkcija yra identiška htmlspecialchars(), tik papildomai sukonvertuoja tuos simbolius, kurie turi HTML esybių atitikmenis".

Bendru atveju turi užtekti htmlspecialchars(), kuri konvertuoja tik kelis (pagrindnius) simbolius: kabutes ir daugiau-mažiau ženklus ir ampersand simbolį (&), bet neliečia kitų simbolių.

Tuo tarpu htmlentities() papildomai sukonvertuoja tuos simbolius, kurie turi HTML atitikmenis. šiuo atveju, pavyzdžiui - gali būti pakeičiamas tekstas su liet (ar kitų kalbų spec.) raidėm ir pan. Bet tai ne vienintelis atvejis!

čia yra tokia lentelė, kur surašyti visi tie simboliai su jų reikšmėm, kaip jie koduojami ir kaip jie atrodo: http://www.mysql.lt/wiki/HTML_Codes_ASC … Characters

Gali paeksperimentuoti, kad būtų aiškiau.

39 (edited by Donatas 2011-02-01 23:19:48)

Re: php ir mysql paieska

nu gerai nenaudosiu

<? 
$kintamasis = htmlspecialchars($kintamasis);
$kintamasis =  htmlentities($kintamasis);
?>

net idomu pasidare kas gausis :) kose kosiuota pertepta su sviest sviestuotu panasei i tai... :)

<html>
<? echo $kintamasis ?>
</html>

<html>
Prideges blynas
</html>

Dabar aiskiau ka kas daro :)

Re: php ir mysql paieska

Na gerai jei teisingai supratau htmlentities() naudot saugiau bet visos lietuviskos ir ne tik lietuviskos raides iskyrus angliskas htmlentities() vers i koda ir jei as tinklalapyja atvaizduodamas texta nekeisiu koduotes (utf-8) tai problemu neturetu kilti kaip ir. O jei noresiu keist koduote kad isvengti problemu reiks tik atkoduot viska naudojant funkcija html_entity_decode()... nu vienu zodziu sem vakarui uzteks kolkas supratau tik tiek :)