Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Php lomake ongelma

Sivun loppuun

pielinen [07.12.2007 12:25:02]

#

Eli olen tehnyt sivuilleni lomakkeen jolla voi lisätä sivuille tietoa. Tieto tallennetaan .txt tiedostoon. Ongelma on se, että kun yritän liittää kuvia tai linkkejä esim. <a href="https://www.ohjelmointiputka.net">Ohjelmointiputka</a>
niin kun menen .txt tiedostoon niin siellä kyseinen linkki on muodossa <a href=\"https://www.ohjelmointiputka.net\">Ohjelmointiputka</a>, mistä seuraa, että se ei toimi.
Miten on mahdollista poistaa nuo turhat kenoviivat?
Tiedostoon kirjoitetaan ihan normaalilla kirjoitus funktiolla.


<ot> tuli vähän sekavasti</ot>

Megant [07.12.2007 12:32:42]

#

stripslashes

ajv [07.12.2007 13:07:07]

#

Tai

ini_set('magic_quotes_gpc', 'off'),

niin pääsee kokonaan mokomasta ominaisuudesta.

pielinen [07.12.2007 14:24:34]

#

En oikeen tajunnut miten.

Pystyykö tuon asettaa pois päältä php lomakkeessa, ja mihin väliin se pitää kirjoittaa?

kayttaja-2791 [07.12.2007 15:05:48]

#

ajv, toimiiko se suoraan ihan noin? Kun magic quotet on kuitenkin ajettu jo ennen itse skriptin tulkkaamista, joten ini-asetuksen ylikirjoitus on jo myöhäistä...

Ongelmahan siis on PHP:n Magic Quotes-asetus, joka automaattisesti "escapettaa" lainausmerkkejä jotta huonosti ohjelmoidut sivut eivät sisältäisi tietokannan injektiomahdollisuutta, joka on varmastikin yksi yleisimpiä nettipuolen tietoturva-aukkoja.

Laitapa tallennusskriptin alkuun vaikka tälläinen:

<?php
if (get_magic_quotes_gpc() === 1) {
  foreach($_POST as $id => $value) {
    $_POST[$id] = stripslashes($value);
  }
  foreach($_GET as $id => $value) {
    $_GET[$id] = stripslashes($value);
  }
  unset($id, $value);
}
?>

Ei todellakaan elegantti ratkaisu, mutta pitäisi poistaa ne ylimääräiset kenoviivat niistä $_POST ja $_GET taulukoista. Paljon fiksumpi ratkaisu sitten taas on vaikka poistaa magic-quotesit .htaccess tiedostolla muuttamalla php:n asetuksia.

ajv [07.12.2007 15:11:48]

#

JTS kirjoitti:

ajv, toimiiko se suoraan ihan noin? Kun magic quotet on kuitenkin ajettu jo ennen itse skriptin tulkkaamista, joten ini-asetuksen ylikirjoitus on jo myöhäistä...

Totta turiset, en ajatellut noin pitkälle :)
https://www.php.net/manual/en/function.ini-set.php#22264

Eli .htaccesilla

php_flag magic_quotes_gpc off

Tai sitten joku oma viritys koodiin. JTS:n koodissa voisi vielä tarkistaa, että $_POST ja/tai $_GET -taulukot ovat olemassa, ettei tuu virhettä :)

kayttaja-2791 [07.12.2007 15:17:05]

#

ajv kirjoitti:

Tai sitten joku oma viritys koodiin. JTS:n koodissa voisi vielä tarkistaa, että $_POST ja/tai $_GET -taulukot ovat olemassa, ettei tuu virhettä :)

Njoo, mietinkin että oliko se niin että taulukot ovat aina olemassa, mutta ovat tyhjiä jos mitään ne eivät sisällä mutta en jaksanut kokeilla... Mutta eipä tuo muutenkaan kovin fiksu ratkaisu ole, kun esimerkiksi $_REQUEST-taulukkokin tuosta jäi pois... Mutta eiköhän siitä php:tä osaava idean saa selville.

ajv [07.12.2007 15:21:40]

#

Niinpäs onkin aina olemassa, ehkä parempi olla loppupäivä hiljaa... Meinasin tämänkin viestin moderoida JTS:n viestin päälle aluks :)

pielinen [07.12.2007 17:59:04]

#

Kiitos! Sain tällä koodilla toimimaan.

JTS kirjoitti:

Laitapa tallennusskriptin alkuun vaikka tälläinen:

<?php
if (get_magic_quotes_gpc() === 1) {
  foreach($_POST as $id => $value) {
    $_POST[$id] = stripslashes($value);
  }
  foreach($_GET as $id => $value) {
    $_GET[$id] = stripslashes($value);
  }
  unset($id, $value);
}
?>

Sivun alkuun

Vastaus

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

Tietoa sivustosta