Hei,
Mistä johtuu, että tallentaessa " merkkejä tietokantaan, tulee niiden eteen satunnainen määrä \\\\\\\\\\\\\\\\\\\\\\\\\\\\\ merkkejä. ?
Teet varmaankin jotain väärin. Tarkista mm. addslashes- ja mysql_real_escape_string-funktioiden käyttö ja palvelimen magic_quotes-asetuksen tila ja aja syötteet tarvittaessa stripslashes-funktion läpi.
tai sitten voit käyttää stripslashes() funktiota ennen tietokantaan kirjotusta.
Eipä auta stripslashes, jos kenoviivoja on satunnainen määrä.
onkohan tossa tallennettu sama tieto koneen kertaan, jolloin joka kerta on kenojen määrä kasvanut...
Huomasin että aina ei edes tule "" merkkejä vaan satunnaisesti tai sitten en ymmärrä niiden tulon logiikkaa.
\\\"ehkä\\\"
\\\"paremmaks\\\"
\\\"kiristää\\\"
Olettaisin, että se johtuu nuista "" merkeistä, mutta en saa enää vikaa toistettua.
Pitäiskö se tehdä näin?
Sulla on magiq_quotes_gpc päällä ja ajat käyttäjän syötteen vielä addslashes() tmv. läpi ennen tallennusta? Tuokaan ei selitä "satunnnaisuutta", mutta veikkaan, että tuossa ei oikeasti olekaan satunnaisuutta. Jos tallennat saman rimpsun useaan kertaan kantaan peräkkäin, tuleeko eri määrä takakenoja?
Edit: lisäsitkin koodia. Parempi noin, mutta vielä parempi tapa on:
<?php if(get_magic_quotes_gpc == 1){ $data = mysql_real_escape_string(stripslashes($_REQUEST['data'])); } else{ $data = mysql_real_escape_string($_REQUEST['data']); } ?>
Ja kannattaa tehdä tuota varten oma funktio tai koko tietokantaa varten oma luokka, niin pysyy se koodi vähän mukavammin luettavana.
thanks.. Rupeampa kokeilemaan mitä tapahtuu.
Eikö funktioita yleensä pitäisi kutsua? Yllä siis get_magic_quotes_gpc(), huom sulut.
Itse lähtisin ennemmin siitä lähestymistavasta, että data haettaisiin erillisellä funktiolla, jolloin se olisi asetuksista riippumatta käsittelyvaiheessa samanlaista.
<?php function hae($taulu, $indeksi) { $x = isset($taulu[$indeksi]) ? $taulu[$indeksi] : ""; if (get_magic_quotes_gpc()) { return stripslashes($x); } else { return $x; } } $x = hae($_POST, "data"); $data = mysql_real_escape_string($x); ?>
Kaikkein paras olisi muuttaa ne asetukset järkeviksi eli poistaa taikalainausmerkit käytöstä, mutta tämä ei tietenkään aina ole mahdollista.
Itse lähtisin siitä, että magic quotes pois päältä. Voiko olla ärsyttävämpää ominaisuutta, kuin että ympäristö ronkkii dataa pyytämättä? Ylipäätään koko magic quotes on mielestäni täysin aivokuollut idea.
Grez kirjoitti:
Ylipäätään koko magic quotes on mielestäni täysin aivokuollut idea.
Siksihän se poistuukin PHP6:sta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.