Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedon tallennus (PHP)

Sivun loppuun

Vasta_alkaja [12.08.2008 13:49:18]

#

Hei,

Mistä johtuu, että tallentaessa " merkkejä tietokantaan, tulee niiden eteen satunnainen määrä \\\\\\\\\\\\\\\\\\\\\\\\\\\\\ merkkejä. ?

Metabolix [12.08.2008 13:51:57]

#

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.

eMZii [13.08.2008 11:19:31]

#

tai sitten voit käyttää stripslashes() funktiota ennen tietokantaan kirjotusta.

Grez [13.08.2008 12:50:54]

#

Eipä auta stripslashes, jos kenoviivoja on satunnainen määrä.

Lebe80 [13.08.2008 14:09:18]

#

onkohan tossa tallennettu sama tieto koneen kertaan, jolloin joka kerta on kenojen määrä kasvanut...

Vasta_alkaja [14.08.2008 11:20:29]

#

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?

if(get_magic_quotes_gpc == 1){
  $data = $_REQUEST['data'];
}
else{
  $data = mysql_real_escape_string($_REQUEST['data']);
}

ajv [14.08.2008 11:31:13]

#

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.

Vasta_alkaja [14.08.2008 11:48:31]

#

thanks.. Rupeampa kokeilemaan mitä tapahtuu.

Metabolix [14.08.2008 12:00:43]

#

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.

Grez [14.08.2008 12:32:10]

#

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.

Blaze [14.08.2008 12:57:03]

#

Grez kirjoitti:

Ylipäätään koko magic quotes on mielestäni täysin aivokuollut idea.

Siksihän se poistuukin PHP6:sta.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta