---
title: "Behöver hjälp med \"fnuttarna\""
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/147427-behöver-hjälp-med-fnuttarna"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "lillebror"
published: "2006-05-28T21:53:51.000Z"
updated: "2006-05-28T22:31:57.000Z"
replies: 6
views: 486
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/147427-behöver-hjälp-med-fnuttarna"
---

# Behöver hjälp med "fnuttarna"

## #1 — lillebror, 2006-05-28T21:53Z

Hej,

Jag får inte till det med fnuttarna i en sträng som ska in i databasen. Så här ser du ut:

```php
if(trim($_POST['sendsurvey']) == 'Skicka enkät') {
	
	$RSobjPolls = getPolls(1);
	
	while($poll = mysql_fetch_array($RSobjPolls)) {
		
		while($pollMatch = mysql_fetch_array(getPollMatch($poll['pollID']))) { 
			
			$pollAlternative = getAlternative($pollMatch['alternativeID']);
			
			if(!empty($pollAlternative['alternativeText'])) {
				$pollTemp = $poll['pollID'];
				
				[B]RAD22[/B] $sqlInsert = "INSERT INTO tblpollanswer (pollMatchID, memberID, date_time) VALUES ('$_POST['$pollTemp']', '$_SESSION["uid"]', now())";
				$RSobj = mysql_query($sqlInsert) or die (mysql_error());
			} else if (!empty($pollAlternative['alternativeNum'])) {
				$pollTemp = $poll['pollID'];
				
				$sqlInsert = "INSERT INTO tblpollanswer (pollMatchID, memberID, date_time) VALUES ('$_POST['$pollTemp']', '$_SESSION["uid"]', now())";
				$RSobj = mysql_query($sqlInsert) or die (mysql_error());
			} else if (!empty($pollAlternative['alternativeFreetext'])) {
				$pollTemp = $poll['pollID'];
				
				$sqlInsert = "INSERT INTO tblpollanswer (pollMatchID, memberID, freetext, date_time) VALUES ('$poll['pollID']', '$_SESSION["uid"]', '$_POST['$pollTemp']', now())";
				$RSobj = mysql_query($sqlInsert) or die (mysql_error());
			}
		}
	}
}
?>
```

Någon som ser vad som är fel?

Får följande felmeddelande: 
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /xxx/poll.php on line 22

Permalänk: https://www.webforum.nu/p/147427

## #2 — Troxy, 2006-05-28T22:05Z

Vilken rad är 22?

Jag gissar på att *'$\_POST\['$pollTemp'\]'* måste bytas ut mot *{'$\_POST\['$pollTemp'\]'}* men jag är inte säker.

En sak som jag är säker på dock är att din kod är helt öppen för så kallade SQL-injections eftersom du använder indata från POST-variablerna direkt i en SQL-fråga. Sök mer om detta i forumet så hittar du säkert info om hur du ska skydda dig.

Permalänk: https://www.webforum.nu/p/1821278

## #3 — lillebror, 2006-05-28T22:08Z

Jag försökte skriva rad med en kommentar med då tog php-parsern bort det. RAD 22 står rätt högt upp i koden inom FET-klammrar framför ett $sqlInsert-statement! :)

Permalänk: https://www.webforum.nu/p/1821279

## #4 — Troxy, 2006-05-28T22:09Z

lillebror, aha titta nu såg jag det! Läs mitt tidigare svar. :)

Permalänk: https://www.webforum.nu/p/1821280

## #5 — lillebror, 2006-05-28T22:12Z

> **Troxy skrev:**
>
> En sak som jag är säker på dock är att din kod är helt öppen för så kallade SQL-injections eftersom du använder indata från POST-variablerna direkt i en SQL-fråga.

Räcker det med att mellanlagra POST-värdena i en lämplig variabel som jag därefter stoppar in i SQL-satsen? Är jag av med problemet då? Jag brukar inte ha POST-variablerna direkt så men nu höll jag på och testade och var lite lat   :e

Permalänk: https://www.webforum.nu/p/1821281

## #6 — Troxy, 2006-05-28T22:16Z

lillebror, du måste köra variablerna genom en funktion som escape:ar alla farliga tecken, exempelvis funktionen *mysql_real_escape_string()* (som för övrigt är ett hemskt namn på en funktion enligt mig).

Permalänk: https://www.webforum.nu/p/1821282

## #7 — aasah, 2006-05-28T22:31Z

> **Troxy skrev:**
>
> lillebror, du måste köra variablerna genom en funktion som escape:ar alla farliga tecken, exempelvis funktionen *mysql_real_escape_string()* (som för övrigt är ett hemskt namn på en funktion enligt mig).

Nja, troligen är väl **magic_quotes_gpc** **på** och då är det *inte* öppet för SQL Injections.

Om den är **av**, däremot måste du för hand se till att inget otrevligt händer. Det måste du i så fall göra med samtliga get, post och cookies värden. Även sådana som används i SELECT-satser. Brukar så vitt jag förstår kunna lösas med add_slashes resp strip_slashes. Om du byter namn på variabeln gör det ingen nytta, för innehållet ändras inte. Om du inte vet kan du kolla mha [get_magic_quotes_gpc](http://se2.php.net/manual/sv/function.get-magic-quotes-gpc.php) 

Däremot tycker jag att Troxys förslag fortfarande ser skumma ut.

```php
//Byt istället
"INSERT INTO tblpollanswer (pollMatchID, memberID, date_time) 
VALUES ('$_POST['$pollTemp']', '$_SESSION["uid"]', now())"; 

//mot
"INSERT INTO tblpollanswer (pollMatchID, memberID, date_time) 
VALUES ('".$_POST["$pollTemp"]."', '".$_SESSION["uid"]."', now())"; 

//och om du inte har magic_quotes_gpc på:
"INSERT INTO tblpollanswer (pollMatchID, memberID, date_time) 
VALUES ('".add_slashes($_POST["$pollTemp"])."', '".$_SESSION["uid"]."', now())";
```

Permalänk: https://www.webforum.nu/p/1821284

---

Tråden på webben: https://www.webforum.nu/amne/php/147427-behöver-hjälp-med-fnuttarna
