Avatar billede -veile- Nybegynder
02. februar 2008 - 19:56 Der er 10 kommentarer og
1 løsning

Problemmer med ndskrivning

Hej

Jeg er stødt i et mindre problem med indsættelse af æ ø å og almindelige html tags som <br /> osv. i min MySql database.

Jeg har prøvet med

addslashes();
stripslashes();
htmlentities();
nl2br();
htmlspecialchars();


Men intet ser ud til at virke.

Her en del af min kode
Kode

if($_POST['ny'])
{
    $overskrift = mysql_real_escape_string(htmlentities($overskrift));
    $forfatter = mysql_real_escape_string(htmlentities($forfatter));
    $news_kat = mysql_real_escape_string(htmlentities($news_kat));
    $path = mysql_real_escape_string($path);
    $message = stripslashes($_POST['message']);
   

    $file = $_FILES['file']['tmp_name'];

    $name = $_FILES['file']['name'];
    $name = str_replace(" ", '_', $name);
   
    $ext = strrchr($_FILES['file']['name'],'.');
    $ext = strtolower($ext);
   
    //Fil typer som godkendes af serveren
   
    $types = array(".gif", ".jpg", ".jpeg", ".png");
   
   
    $path = "images/news" . time() . "_" . $name;
    if(in_array($ext, $types))
        {
            move_uploaded_file($file, $path);
       
        mysql_query("INSERT INTO news (overskrift, forfatter, path, news_kat, message, dato) VALUES ('$_POST[overskrift]', '$_POST[forfatter]', '$path', '$news_kat', '$_POST[message]', now())");
       
        echo "Billedet er nu oploadet";


        }
        else
        {
            echo "Dit billed er ikke godkendt, tjek venligst hvilken fil type det<br />";
            echo "Vi accepetere kun fil typerne .gif - .jpg - .jpeg - .png<br />";
            echo "Hvis du mener at filen er den type vi godkender, tjek da størrelsen på filen, vi accepter kun billeder på op til 1 MB";

}
}



Håber nogen kan hjælpe.

I min MySql database, er Kollation sat til Latin1_danish_ci
Avatar billede erikjacobsen Ekspert
02. februar 2008 - 20:30 #1
Du skal bruge samme tegnsæt på alle dine side, i det tilfælde bør iso-8859-1 være det første valg (selv om utf-8 bruges mere ude i den store verden).

Dernæst er det eneste du behøver at gøre ved indsættelse at sørge for en mysql_real_escape_string (vær dog opmærksom på om din PHP af sig selv har sat \-ere ind strategiske steder).

De 2 ting er de eneste nødvendige for at få tingene rigtigt i databasen.

Men når du har en linie:

    $overskrift = mysql_real_escape_string(htmlentities($overskrift));

hvor du efterfølgende ikke bruger $overskrift, og vi ikke ved om $overskrift overhovedet indeholder en værdi, så er det vel også noget du skal kigge på
Avatar billede -veile- Nybegynder
02. februar 2008 - 20:45 #2
jeg ved godt jeg ikk tjekker om værdierne er sat.. men ikke det der er mit problem,

det tegn sæt som du snakker om skal være en meta content tag ikke.. for synes heller ikke at virke
Avatar billede -veile- Nybegynder
02. februar 2008 - 20:49 #3
jah normalt ville jeg os sætte mysql_real_escape_string(); ind. men skulle lige tjekke om det være det som var galt. var det så ikk da jeg satte mig lidt mere ind i funktionen
Avatar billede erikjacobsen Ekspert
02. februar 2008 - 20:54 #4
Det der med sikkehed virker, er at sætte content-type i HTTP-headeren.
Avatar billede -veile- Nybegynder
02. februar 2008 - 20:56 #5
Så har jeg fundet problemet med æ ø å, os som du skriver brugte jeg utf-8, hvilket jeg ikke troede jeg gjorde, glemte at kigge i min maincore.php

Nyt problem, når jeg indsætter min kode, indsætter den ikke <br /> ved liniskift :S kan du udfra den kode se hvorfor den ikke gør det
Avatar billede erikjacobsen Ekspert
02. februar 2008 - 21:00 #6
Den indsætter ikke <br>?? Den indsætter vel den tekst du skriver - det ville da være et besynderligt, hvis den skulle springe <br> over ...?
Avatar billede -veile- Nybegynder
02. februar 2008 - 21:11 #7
jah  den indsætter skam den tekst jeg skriver. de andre ting jeg har lavet har ejg kunne undgå at skrive <br> i selve textareaen, da indsatte den selv linie skiftende
Avatar billede erikjacobsen Ekspert
02. februar 2008 - 21:17 #8
Nå, ok, men nej, den indsætter absolut intet af sig selv. Der er lige 2 ting:

1) Lad være med at at ændre teksten ved indsættelse i databasen (den mysql_real_escape_string ændrer ingenting, det er kun syntaktisk i SQL-sætningen)
2) Når du viser det på et sted, der kræver <br>, så gør du det (sådan ca.)

    print nl2br($row['overskrift']);
Avatar billede -veile- Nybegynder
03. februar 2008 - 08:43 #9
lig lige et svar erikjacobsen
Avatar billede erikjacobsen Ekspert
03. februar 2008 - 08:52 #10
Jeg samler slet ikke på point, tak.
Avatar billede -veile- Nybegynder
10. april 2008 - 18:18 #11
svar
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