Det är ju en säkerhetsgrej. Du kan ju stänga av magic_quotes, men om det är rekommenderat är en annan sak.
Den lägger helt enkelt addslashes() på det som sparas till databasen. Du får då använda stripslashes() när du hämtar ut datan igen.
3 svar · 655 visningar · startad av tanten
Vilket är det bästa sättet att slippa få \ i databasen, om man har ett formulär som antingen hämtar befintlig rad i en tabell eller ska skapa en ny rad. Jag har fått tankesläpp på hur och när man ska få till det rätt nu när det börjat komma in hästar med accent i namnet. Typ Lindy's
Här en del av koden
if($horseID) {
$q = $conn->query("SELECT * FROM horses WHERE horseID=$horseID");
$horse = $q->fetch(PDO::FETCH_ASSOC);
$q->closeCursor();
$q = null;
}
.....
else {
if(@$horse['horseID']) {
$sql = "UPDATE horses SET horse_name=?, .....
}
else {
$sql = "INSERT INTO horses(horse_name....) VALUES(?,....
}
$stmt = $conn->prepare($sql);
try
{
$stmt->execute(array($_POST['horse_name'],...
och formuläret
<input type="text" name="horse_name"
value="<?=($_POST['horse_name'])?>">
Har testat med stripslashes och htmlspecialcharsi formuläret, men det blir ju inte rätt. Snälla tänk mig åt rätt håll :)
Det är ju en säkerhetsgrej. Du kan ju stänga av magic_quotes, men om det är rekommenderat är en annan sak.
Den lägger helt enkelt addslashes() på det som sparas till databasen. Du får då använda stripslashes() när du hämtar ut datan igen.
bassebhu skrev:
Det är ju en säkerhetsgrej. Du kan ju stänga av magic_quotes, men om det är rekommenderat är en annan sak.
Den lägger helt enkelt addslashes() på det som sparas till databasen. Du får då använda stripslashes() när du hämtar ut datan igen.
Nej, magic quotes är en idiotgrej och bör stängas av illa kvickt, att förlita sig på det är osäkert. Iom att tanten kör PDO så ska hon själv inte escapea datan.
Om du inte har tillgång till att ändra magic_quotes_gpc på servern är detta en bra lösning:
if (get_magic_quotes_gpc()) {
$in = array(&$_GET, &$_POST, &$_COOKIE);
while (list($k,$v) = each($in)) {
foreach ($v as $key => $val) {
if (!is_array($val)) {
$in[$k][$key] = stripslashes($val);
continue;
}
$in[] =& $in[$k][$key];
}
}
unset($in);
}
Lägg den i config eller en en include som alltid ikluderas vid databas-interaktion.
Ser ut att fungera perfekt Colione efter att ha provat. Tack så jättemycket!