Kom ihåg mig?
Home Menu

Menu


php loop formulär variabler problem

 
Ämnesverktyg Visningsalternativ
Oläst 2009-10-05, 16:30 #11
Reager Reager är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 151
Reager Reager är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 151
Om inte SQL när man använder PHP skiljer sig från vanlig SQL så kan det vara värt att påpeka att det är felaktig SQL oxå.

$sql = "INSERT INTO tblIngrediens SET ingrediens='$xingrediens'";

Ser ut som en blandning mellan INSERT och UPDATE. Den korrekta bör väl vara

$sql = "INSERT INTO tblIngrediens VALUES('" . $xingrediens ."')";

Såg inte att någon påpekat detta tidigare och det kan ju vara bra att veta
Reager är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-05, 16:43 #12
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av Reager Visa inlägg
Om inte SQL när man använder PHP skiljer sig från vanlig SQL så kan det vara värt att påpeka att det är felaktig SQL oxå.

$sql = "INSERT INTO tblIngrediens SET ingrediens='$xingrediens'";

Ser ut som en blandning mellan INSERT och UPDATE. Den korrekta bör väl vara

$sql = "INSERT INTO tblIngrediens VALUES('" . $xingrediens ."')";

Såg inte att någon påpekat detta tidigare och det kan ju vara bra att veta
Det går alldeles utmärkt att köra "update"-varianten också om man kör MySQL (PHP har inget med saken att göra) vilken jag själv rekommenderar då koden blir mer logisk och lättläst.
__________________
Full-stack developer, free for smaller assignments

Senast redigerad av tartareandesire den 2009-10-05 klockan 16:50
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-05, 18:52 #13
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Citat:
Ursprungligen postat av Reager Visa inlägg
Om inte SQL när man använder PHP skiljer sig från vanlig SQL så kan det vara värt att påpeka att det är felaktig SQL oxå.

$sql = "INSERT INTO tblIngrediens SET ingrediens='$xingrediens'";

Ser ut som en blandning mellan INSERT och UPDATE. Den korrekta bör väl vara

$sql = "INSERT INTO tblIngrediens VALUES('" . $xingrediens ."')";

Såg inte att någon påpekat detta tidigare och det kan ju vara bra att veta
Ska man vara petig ska du väll ha deklarerat vilke kolumner du sätte in värden i med

Kod:
$sql = "INSERT INTO tblIngrediens (ingridiens)VALUES('" . $xingrediens ."')";
Nerox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 08:47 #14
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Jag har använt denna vid formulär inlägg till DB, går inte det lika bra?

function addslashes_deep($value)
{
$value = is_array($value) ?
array_map('addslashes_deep', $value) :
addslashes($value);
return $value;
}

också strippar jag det med en liknande function när jag hämtar det.
Fia är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:05 #15
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
Som tartareandesire påpekar går det lika bra att använda INSERT...SET-syntaxen så länge man håller sig till MySQL. Ska du byta databas blir det jobbigare eftersom det inte följer SQL-standard(er). Men ärligt talat - hur ofta byter man databas? (Själv skulle jag iofs undvika just den syntaxen.)

Funktionen addslashes() är inte lika bra. Den har problem med multibyte-characters t ex. Till och med dokumentationen, http://se2.php.net/addslashes, säger att man bör använda mysql_real_escape_string() eller motsvarande för andra databaser istället för addslashes().

Jag har hört att addslashes() ska droppas från PHP6 men jag har inte kollat upp det själv.
dotvoid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:14 #16
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Synd det var så smidigt att bara lägga functionen på $POST nu måste man ju gå in på varje sträng som ska in och lägga till mysql_real_escape_string(). Då har jag syselsättnig idag i alla fall.......
Eller skulle man kunna byta ut addslashes() mot mysql_escape_string() i functionen, Bara spånar lite, det får jag prova. Tack för all lärorik information.

Senast redigerad av Fia den 2009-10-06 klockan 09:18
Fia är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:31 #17
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
Ja du skulle kunna byta ut addslashes() mot mysql_real_escape_string(). (Tänk bara på att databaskopplingen redan måste vara etablerad för att mysql_real_escape_string() ska fungera.)
dotvoid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:49 #18
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Så här blev det.
function addslashes_deep($value)
{
$value = is_array($value) ?
array_map('addslashes_deep', $value) :
mysql_real_escape_string(trim($value));
return $value;
}

Så kör jag den här
$_POST = addslashes_deep($_POST);

Och vill man bli av med html oxå så

mysql_real_escape_string(strip_tags(trim($value))) ;

Senast redigerad av Fia den 2009-10-06 klockan 13:52
Fia är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 14:42 #19
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
Tänk på att man man kanske vill använda $_POST variabler till annat än DB frågor efter att du kört addslashes_deep , tex skriva ut värden, maila eller liknande , så undvik helst denna princip framöver..
Som någon har sagt säkert redan i tråden, kör pdo prepared statements så slipper man alls bekymra sig om detta säkerhetshål
danjel är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 15:25 #20
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av danjel Visa inlägg
Tänk på att man man kanske vill använda $_POST variabler till annat än DB frågor efter att du kört addslashes_deep , tex skriva ut värden, maila eller liknande , så undvik helst denna princip framöver..
Som någon har sagt säkert redan i tråden, kör pdo prepared statements så slipper man alls bekymra sig om detta säkerhetshål
Det går ju att tilldela andra variabler för det som behövs skrivas ut i så fall.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 01:01.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017