Avatar billede jjdk Nybegynder
01. januar 2007 - 23:22 Der er 10 kommentarer og
1 løsning

Jeg vil undgå tegnene " og ' i mysql

Hej.
Jeg har nogle input felter, hvor jeg nogle gange oplever problemer, hvis der i input-felterne skrive noget med anførselstegn (") eller Apostrof (')
Derfor bruger jeg funktionen "str_replace". Men det driller. Jeg har skriver følgende lige inden jeg opdaterer MySql:

$navn = str_replace('"', '"', $navn);

Men der sker ingen ting. Nogen forslag?
Avatar billede amews_aj Nybegynder
01. januar 2007 - 23:41 #1
For at lave mange specialtegn om til html, så kan du med fordel bruge htmlentities()

$navn = htmlentities($navn);
Avatar billede amews_aj Nybegynder
01. januar 2007 - 23:42 #2
Hvis dit eget skulle virke skal du skrive således:

$navn = str_replace('\"', '"', $navn);

Ellers tolker php " som kode, og ikke et tegn som sådan, hvis du forstår.
Avatar billede jjdk Nybegynder
01. januar 2007 - 23:44 #3
Jeg forstår, men har også prøvet det.
Når jeg kigger i tabellen vi phpmyadmin, skal jeg så ikke kunne se at " er erstattet med "
Avatar billede amews_aj Nybegynder
01. januar 2007 - 23:47 #4
ikke nødvendigvis, for jeg mener også at phpmyadmin viser teksten som den tolkes ud fra html'en.
Hvis du kigger i kildekoden i phpmyadmin, så burde du kunne finde samme sted, men her vil du se html'en. "

Det vil du sikkert også hvis du trykker rediger på det felt i phpmyadmin
Avatar billede jjdk Nybegynder
01. januar 2007 - 23:59 #5
Sorry - det er mig der klumrer i det. Jeg havde byttet om på nogle filer.
Nu virker det, men giver et andet problem.
Jeg genererer nemlig en PDF-fil ud fra indholdet i tabellen. Her står der så:
"Søren"
Skulle have være "Søren" og endnu værre, hvis jeg anvender htmlentities.
Er løsningen så, at ved generering af PDF-filen, at jeg gør det medsatte:
$navn = str_replace('"','\"', $navn);
Avatar billede amews_aj Nybegynder
02. januar 2007 - 00:05 #6
hmm, ja
Jeg kender ikke anden vej, men har netop fundet dette, ved dog ikke om det virker.

http://dk2.php.net/manual/da/function.htmlentities.php
Er selve htmlentities
Som kommentar har en skrevet denne som skulle fjerne htmlentities() igen.

<?php

function unhtmlentities ($string) {
  $trans_tbl1 = get_html_translation_table (HTML_ENTITIES);
  foreach ( $trans_tbl1 as $ascii => $htmlentitie ) {
      $trans_tbl2[$ascii] = '&#'.ord($ascii).';';
  }
  $trans_tbl1 = array_flip ($trans_tbl1);
  $trans_tbl2 = array_flip ($trans_tbl2);
  return strtr (strtr ($string, $trans_tbl1), $trans_tbl2);
}

?>



Det du gør er så
$navn = unhtmlentities($navn);
Avatar billede jjdk Nybegynder
02. januar 2007 - 00:09 #7
OK Super - det skal prøves.
Lige en sidste ting: Jeg har vel 10 forskellige input-felter, jeg vil konvertere.
Er der en smart måde, at gøre det på?
Sender du et svar?
Avatar billede amews_aj Nybegynder
02. januar 2007 - 00:13 #8
Hmm, ved ikke lige helt hvordan det skulle laves.
Hvis felterne hedder noget logisk såsom felt1 felt2 felt3 osv, så kan man lave et loop

for ( $i = 0; $i < 10; $i++ ) {

$felt$i = htmlentities($felt$i);

}
Avatar billede jjdk Nybegynder
02. januar 2007 - 00:15 #9
Tak for hjælpen.
Avatar billede amews_aj Nybegynder
02. januar 2007 - 00:16 #10
Eller hvis det er direkte fra _POST du vil, så kan man i loopet skrive

$_POST['felt'.$i] = htmlentities($_POST['felt'.$i]);


Hvis de hedder noget forskelligt, så kan du fortælle den der sådan her:

$alle_felter = array("etfelt", "andetfelt", "nogettredje", "hvadsomhelst");

for ( $i = 0; $i < count($alle_felter); $i++ ) {

$_POST[$alle_felter[$i]] = htmlentities($_POST[$alle_felter[$i]]);

}
Avatar billede amews_aj Nybegynder
02. januar 2007 - 00:16 #11
Selv 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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging