Avatar billede bigtime Nybegynder
08. januar 2012 - 19:36 Der er 25 kommentarer og
1 løsning

æøå problem efter server skift

hejsa :D
hvad kan der være galt med at få æ ø å ind i databasen?
før jeg skiftede server havde jeg ingen problemer men nu der er det sku ligemegt hvad jeg gør så sætter den bare mærlekige tegn i databasen og når den skal skrive dem ud igen så er de stadig mærkelige
Avatar billede olebole Juniormester
08. januar 2012 - 19:41 #1
<ole>

Hvilket tegnsæt bruger du?

/mvh
</bole>
Avatar billede bigtime Nybegynder
08. januar 2012 - 19:47 #2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Avatar billede olebole Juniormester
08. januar 2012 - 20:04 #3
Så kunne noget tyde på, din database ikke er sat op til utf-8. Prøv at tjekke i phpMyAdmin - eller hvad du nu bruger til administrere den med
Avatar billede bigtime Nybegynder
08. januar 2012 - 20:15 #4
når jeg kikker på den er den sat til
utf8_danish_ci
det er den du mener ikke?
Avatar billede Torben4230 Nybegynder
08. januar 2012 - 20:23 #5
Prøv at kikke på htaccess filen på din nye server.
Avatar billede bigtime Nybegynder
08. januar 2012 - 20:27 #6
Torben4230
Så meget har jeg ikke adgang til serveren det er et "webhotel" hvor jeg kan have så mange domæner jeg vil have, det er på gigahost.dk
Avatar billede olebole Juniormester
08. januar 2012 - 20:34 #7
Kan du lægge et link til et eksempel?
Avatar billede bigtime Nybegynder
08. januar 2012 - 20:39 #8
det er den form jeg bruger til at sætte jokes ind med

if($_POST['add-joke']){
    $jokes = stripslashes($_POST['jokes']);
$adjoke = mysql_query("INSERT INTO jokes (time,cat,text,godkendt) VALUES (NOW(),'".$_POST['kat']."','$jokes','0')")or die(mysql_error());   
    echo "Joken er tilføjet";
    }
   
$s1 = "";
$s2 = "";
$s3 = "";
$s4 = "";
$s5 = "";

if($row["cat"]==1){ $s1 = " selected"; }
if($row["cat"]==2){ $s2 = " selected"; }
if($row["cat"]==3){ $s3 = " selected"; }
if($row["cat"]==4){ $s4 = " selected"; }
if($row["cat"]==5){ $s5 = " selected"; }

?>
    <form action='jokes.php?g=add' method='post'>
<?PHP echo "$fejl"; ?>
<table>
<tr><td class='newest1'>Kategori :</td>
<td><?PHP echo"
<select name='kat'>
<option value='1'$s1>Alle Børnene</option>
<option value='2'$s2>Blondine</option>
<option value='3'$s3>Frække</option>
<option value='4'$s4>Diverse</option>
</select>";
?>
</td>
</tr>
<tr><td class='newest1'>Joke :</td>
<td><textarea name='jokes' class='pursub' style='cursor: text; width: 300px; height: 100px;'></textarea></td>
</tr>
<tr>
  <td></td>
<td><input type='submit' name='add-joke' value='Send Mail'>
</td></tr></table></form>


eller er det til siden du mener ?
Avatar billede bigtime Nybegynder
08. januar 2012 - 20:48 #9
du kan se siden der www.jokeworld.dk
men må lukke ned for i aften kæresten kræver lidt opmærksomhed
Avatar billede Data82 Nybegynder
08. januar 2012 - 21:33 #10
prøv:
....

$jokes = stripslashes($_POST['jokes']);

<b>mysql_query("SET NAMES UTF8");</b>

$adjoke = mysql_query("INSERT INTO jokes (time,cat,text,godkendt) VALUES (NOW(),'".$_POST['kat']."','$jokes','0')")or die(mysql_error());   

...
Avatar billede welcor Nybegynder
08. januar 2012 - 22:45 #11
OBS: husk escape av input for at undgå evt. problemer med SQL injection.

$jokes = mysql_real_escape_string(stripslashes($_POST['jokes']));
$kat = mysql_real_escape_string($_POST['kat']);

(ellers kan nogen lave store problemer for dig..)
Avatar billede Data82 Nybegynder
08. januar 2012 - 22:53 #12
naturligvis:

...

$jokes = stripslashes($_POST['jokes']);

mysql_query("SET NAMES UTF8");

$adjoke = mysql_query("INSERT INTO jokes (time,cat,text,godkendt) VALUES (NOW(),'".$_POST['kat']."','$jokes','0')")or die(mysql_error());   

...
Avatar billede IreneB Nybegynder
08. januar 2012 - 22:56 #13
Jeg har haft samme problemstilling, selv om både filer og database var utf8. Problemet viste sig at være i forbindelsen mellem databasen og kaldet.

Løsningen var at sætte mysql_set_charset til utf8   

mysql_set_charset('utf8',$connection);
Avatar billede olebole Juniormester
09. januar 2012 - 15:42 #14
@IreneB: Hvis der er noget galt 'i forbindelsen mellem databsen og kaldet' (hvad det så end betyder?), og man er nødt til at redde situationen med 'hacks' som mysql_set_charset eller SET NAMES, tyder det på, der er dybere problemer, man bør få rettet - evt. i samarbejde udbyderen. Problemet består - selvom man ikke lægger så meget mærke til det (udover at skulle 'hacke' alle steder, man skal kalde DB'en).

Hvad beskyttelse mod SQL-injection angår, så er PHP's gamle mysqli API ved at være temmelig forældet. I dag bruger man PDO ellermysqli med prepared statements. Det performer langt bedre og er langt sikrere
Avatar billede tobrukDk Novice
09. januar 2012 - 17:32 #15
Bruge det her hvis du skal have database! :)
<system.web>
  <globalization responseEncoding="utf-8" requestEncoding="utf-8" fileEncoding="utf-8" />
</system.web>


<?php
define("DBNAME", "...");
define("DBUSER", "...");
define("DBPASS", "...");
define("DBHOST", "...");

$connection = mysql_connect(DBHOST, DBUSER, DBPASS);
  mysql_select_db(DBNAME, $connection) or die("Fejl i databasen: " . mysql_error());
 
  // Prøv med 'latin1' hvis dette ikke virker.
  mysql_set_charset('latin1');
?>
Avatar billede olebole Juniormester
09. januar 2012 - 17:38 #16
Jesper, det ser meget .NET-agtigt ud. Den tvivler jeg på i PHP  =)
Avatar billede bigtime Nybegynder
11. januar 2012 - 20:44 #17
så blev der lidt tid igen :D
jeg har brugt den her mysql_query("SET NAMES UTF8"); det lader til det virker men nu skal jeg bare huske at have den på når jeg sætter noget i dben og når jeg trækker det ud igen.

og welcor tak for rådet om mysql_real_escape_string det anede jeg intet om fandt den her side http://phptips.dk/brug_af_mysql_real_escape_string.tip der kunne jeg læse lidt om den
Avatar billede olebole Juniormester
11. januar 2012 - 20:58 #18
#14: "Hvad beskyttelse mod SQL-injection angår, så er PHP's gamle mysqli API ved at være temmelig forældet. I dag bruger man PDO ellermysqli med prepared statements. Det performer langt bedre og er langt sikrere".

mysql_real_escape_string beskytter delvist mod SQL-injection, men for det er og bliver noget 'hackeri'. Det er langt sikrere at bruge et MySQL-API fra dette årtusinde (og så får du endda væsentligt forbedret performance med som gratis 'gave')  *o)
Avatar billede bigtime Nybegynder
11. januar 2012 - 21:11 #19
som du nok har fundet ud af er jeg ikke den store it hej,
så tror den skal skæres lidt mere ud for mig.
MySQL-API er det noget der skal installeres på serveren ?
har lige fundet ud af jeg køre phpmyadmin 3,4,3,1 som jeg kan se er rimlig gammel:(
Avatar billede olebole Juniormester
11. januar 2012 - 22:06 #20
Det kommer bundled med PHP og er enabled på de fleste hoteller. Referencen ligger her. Du kan prøve at kikke på prepare, hvor der er nogle eksempler, som gør det overkommeligt at komme igang.

Det kan godt virke lidt uoverskueligt til en begyndelse, men er faktisk ikke kompliceret, når man først har leget lidt med det.

Jeg prøvede lige at Google lidt for at finde en god begynder tutorial til dig ... OMG ...!!!  =8-O

En ulykkelig bivirkning ved WWW er, at det er blevet så let at publicere, at alle kan gøre det. Det medfører tydeligvis, at alverdens mest uvidende, vacuumpakkede badehætter absolut og skal delagtiggøre verden i det, de - i deres grænseløse selvfedme - bilder sig ind, de ved noget om ... det vil sige fem minutter efter, de har lukket Pixi-bogen om emnet!

Således var dette det første hit, jeg fik på Google. Denne fladpandede klaphat har overhovedet ikke fattet, hvad forskellen er på mysql og mysqli. Han end ikke omtaler de to eneste begavede årsager til at benytte mysqli (performance og sikkerhed) - eller eksempler herpå! Det kan kun være et Misinformationssamfund værdigt!  :o|

Jeg orker ikke at trawle tonsvis af værdiløse sider igennem for at finde en brugbar, lødig og troværdig tutorial - men må opfordre dig til at lære det ved hjælp af php.net
Avatar billede welcor Nybegynder
11. januar 2012 - 22:55 #21
Her var et link du ikke fandt :) Tak for at du
bragte det på bane.

http://forum.codecall.net/php-tutorials/12442-php-5-mysqli-prepared-statements.html

disclaimer: jeg skriver ikke php-kode selv, men kan spotte en sql-injection på 20 sprog. Og så var mysql_real_escape_string første hit når jeg søgte på "php escape sql"
Avatar billede olebole Juniormester
12. januar 2012 - 00:03 #22
@welcor: Favorit gemt! Fin tutorial, som gør det let at komme igang med prepare og bind. Det er tilpas mere udpindet i forhold til php.net, og så er det fint, at få bind_param og bind_result forklaret sammen.

Det link kommer jeg klart til at anbefale i fremtiden  *o)
Avatar billede bigtime Nybegynder
19. januar 2012 - 16:31 #23
tak for det hele der er lidt at læse :D
Fik også lige set da jeg importeret min sql fil til databasen så alle de sætninger med æøå der stoppede den og ikke skrev resten af feltet.
nå ud over det så er det vel også snart lukke tid
Avatar billede olebole Juniormester
19. januar 2012 - 16:58 #24
Selvtak. Jeg samler som bekendt ikke point, så de må tilfalde andre  =)
Avatar billede bigtime Nybegynder
06. februar 2012 - 20:34 #25
så nupper jeg dem
Avatar billede olebole Juniormester
06. februar 2012 - 23:33 #26
Yups, gør endelig det - men husk at accepter 'nuppen'  =)
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