Avatar billede kaspermb Nybegynder
09. februar 2011 - 13:11 Der er 8 kommentarer og
1 løsning

Database upload af tekst

Jeg har arbejdet på en kode som skal kunne uploade noget tekst til min database. Det virker også som det skal bare ikke når man kopiere tekst fra anden hjemmeside eller noget. Ville gerne høre om der er noget i mine koder som skulle gøre at det ikke virker eller noget jeg måske skulle lave på en anden måde.


-- edit.php --
<html>

<head>
<title>Kaspermb - Edit</title>
</head>

<body>
<form action="upload.php" method="post">

Navn p&aring; artikel: <input type="text" name="titel" size="50px"><br>

<textarea name="artikel" cols="80" rows="30"></textarea><br>

Skrevet af: <select name="forfatter">
<option>Bj&oslash;rn Ebbesen</option>
<option>Mads Petersen</option>
<option>Emil Poulsen</option>
<option>Kasper Bjerregaard</option>
</select><br/>

<input type="submit" name="submit" value="Gem">

</form>
</body>

</html>



-- upload.php --
<?php

//Forbinder til serveren
$connect = mysql_connect("XXXXXXXX","XXXXXXX","XXXXXXXX") or die("Kunne ikke forbinde til serveren");

//Forbinder til databasen
mysql_select_db("kaspermb_dk") or die("Kunne ikke finde databasen");

//Valg af tabeller
$titel=$_POST['titel'];
$artikel=$_POST['artikel'];
$forfatter=$_POST['forfatter'];

//Viser hvilken dato det er
$dato = date("20y-m-d");

//Uploader artikel til server
mysql_query("INSERT INTO artikler VALUES ('', '$titel', '$artikel', '$forfatter', '$dato')");
Print "Artiklen er nu online";

?>



-- MySql --

http://kaspermb.dk/Sk%C3%A6rmbillede.png
Avatar billede emfr08ab Nybegynder
09. februar 2011 - 13:33 #1
Er der ikke et komma for meget i din SQL?:

Kommaet før din $titel er vel ikke nødvendigt.


Derudover får du sikkert problemer med specielle tegn. Du kan lave dem op til deres koder.

F.eks. med apostrof:

$artikel = str_replace("'","&#39",$artikel);
Avatar billede michael_stim Ekspert
09. februar 2011 - 13:52 #2
Det er nok noget med specialtegn (', ", \, osv) at gøre. Tænk også på SQL injection.
Avatar billede kaspermb Nybegynder
09. februar 2011 - 14:13 #3
Kommaet før $titel er til min id i MySql. så den regner jeg med at skulle blive der
Avatar billede michael_stim Ekspert
09. februar 2011 - 14:39 #4
Er det auto increment skal den ikke være der.
Avatar billede kaspermb Nybegynder
09. februar 2011 - 14:55 #5
Ja, som du også kan se her. http://kaspermb.dk/Sk%C3%A6rmbillede.png
Avatar billede kaspermb Nybegynder
09. februar 2011 - 14:57 #6
Den virker slet ikke hvis der ikke er komma før $titel
Avatar billede michael_stim Ekspert
09. februar 2011 - 15:00 #7
mysql_query("INSERT INTO artikler VALUES ('$titel', '$artikel', '$forfatter', '$dato')");

addslashes: http://php.net/manual/en/function.addslashes.php
mysql_real_escape_string: http://php.net/manual/en/function.mysql-real-escape-string.php
Avatar billede michael_stim Ekspert
09. februar 2011 - 15:04 #8
Og personligt kan jeg godt lide at man siger hvor hvad skal være og separere html fra php ;o)

mysql_query("INSERT INTO artikler (titel, artikel, forfatter, dato) VALUES ('". $titel ."', '". $artikel ."', '". $forfatter ."', '". $dato ."')");
Avatar billede kaspermb Nybegynder
12. marts 2011 - 14:59 #9
..
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
Kurser inden for grundlæggende programmering

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