Jag får inte till det med fnuttarna i en sträng som ska in i databasen. Så här ser du ut:
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
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.
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! :)
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
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).
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_gpcpå 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
Däremot tycker jag att Troxys förslag fortfarande ser skumma ut.
//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())";
256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2