Avatar billede binderup Nybegynder
24. juni 2003 - 17:52 Der er 10 kommentarer og
1 løsning

$_POST[foo] og $_POST['foo']

Jeg har læst mig frem til at man helst skal bruge den sidste af de to metoder i spørgsmålets titel (og jeg kan ved død og pine ikke huske hvor det var jeg fandt det). Da man ellers kan komme til at bruge nogle reserverede variabler.

Men jeg syntes ikke at jeg få til til at virke i en sql sætning. Ex. $stmt="INSERT INTO tabel (foo) VALUES ('$_POST['foo']')". Bruger jeg der imod den første variant så er der ikke nogen problemer i at indsætte data.

Enten er jeg ved at være træt eller også kan jeg ikke lige helt se hvordan jeg escaper $_POST['foo'] korrekt
Avatar billede ahv Nybegynder
24. juni 2003 - 17:54 #1
Der skal du ikke bruge det :o)
Avatar billede ahv Nybegynder
24. juni 2003 - 17:55 #2
Når POST eller GET eller de andre er omgrænset af " skal de ikke bruges.
Avatar billede ahv Nybegynder
24. juni 2003 - 17:55 #3
Så skal du først inde den og påbegynde den igen ->

$stmt="INSERT INTO tabel (foo) VALUES ('".$_POST['foo']."')"
Avatar billede binderup Nybegynder
24. juni 2003 - 17:57 #4
ikke fordi at jeg ikke tror på dig, men du skulle vel ikke have et link der kunne bakke det op?
Avatar billede ahv Nybegynder
24. juni 2003 - 17:59 #5
Ikke lige, men du kunne jo prøve en simpel sætning ->

<?php
$_POST['var'] = "eksperten";
echo "Uden: $_POST[var] <br>";
echo "Med: $_POST['var']";
?>
Avatar billede ahv Nybegynder
24. juni 2003 - 18:00 #6
Hvis du vil have den med til at virke skal den rettes til ->

echo "Med: ".$_POST['var'];
Avatar billede jakoba Nybegynder
24. juni 2003 - 18:03 #7
Problemet kommer sig af at php syntaks på mange måder er noget rod.
  $_POST['foo'] eller $_POST["foo"] er det strengt korrekte
de 3 bogstaver 'f', 'o' og 'o' danner tilsammen een streng der er indexværdien for den array-celle vil vil have fat i.

i:
$stmt="INSERT INTO tabel (foo) VALUES ('$_POST['foo']')";
prøver du at bruge en 'smart' udvidelse een eller anden idiot har lavet til php, at man kan indskrive en variabel direkte ind i en streng der hvor man vil have variabelens værdi til at stå. uden den udvidelse skulle der stå:
$stmt="INSERT INTO tabel (foo) VALUES ('" .$_POST['foo'] ."')";

og det er da vitterligt lidt nemmere at slippe for at skrive de ekstra punktummer, men det vil jeg anbefale at du gør.

For den udvidelse virker altså ikke med et arrayopslag hvor der er anførselstegn rundt om indexværdien (jeg kender ikke nogen god grud til at det skulle gøre det sværere).  Og uden de anførselstegn har vi så igen den situation hvor strengværdien 'foo' kan blive forvekslet med konstanten foo.

mvh JakobA
Avatar billede binderup Nybegynder
24. juni 2003 - 18:24 #8
jakob smider du et svar - din besvarelse minder nemlig meget om den forklaring jeg mener var på news et eller andet sted...

Det er nu ikke besværligt at lave det om - Slickedit kan nemt lave det om via Reg exp.
Avatar billede jakoba Nybegynder
24. juni 2003 - 18:38 #9
ok
Avatar billede schaefner Juniormester
24. juni 2003 - 18:46 #10
Avatar billede binderup Nybegynder
24. juni 2003 - 18:48 #11
schaefner: tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester