Avatar billede prodigy01 Nybegynder
16. april 2008 - 01:31 Der er 18 kommentarer og
1 løsning

Tilføje til gæstebogen.

Hej!
Har ikke lavet php i meget lang tid nu.
Jeg vil smide en af mine gamle tagwall's op, som jeg har lavet.
Problemet er, at jeg godt kan hente ud fra databasen. Men jeg kan ikke indsætte?
Jeg ved ikke hvad problemet er.



<?
session_start();
include "database.php";

$dato = date("d.m.Y h:i");
$time = time();
$ip = $_SERVER[REMOTE_ADDR];

    if($besked){
   
$besked = str_replace(':D','<img src="glad.gif">',$besked);
$besked = str_replace(':(','<img src="ked.gif">',$besked);
$besked = str_replace(':)','<img src="smiler.gif">',$besked);

    mysql_query("insert into gb set brugernavn = '$brugernavn', besked = '$besked', dato = '$dato', ip = '$ip'");
}
else{

}
?>
Avatar billede nielle Nybegynder
16. april 2008 - 06:55 #1
Sådan?

<?
session_start();
include "database.php";

$dato = date("d.m.Y h:i");
$time = time();
$ip = $_SERVER[REMOTE_ADDR];

$besked = $_POST['besked'];
$besked = mysql_real_escape_string($besked);

if (isset($besked) && $besked != '') {
    $besked = str_replace(':D','<img src="glad.gif">',$besked);
    $besked = str_replace(':(','<img src="ked.gif">',$besked);
    $besked = str_replace(':)','<img src="smiler.gif">',$besked);
    mysql_query("insert into gb set brugernavn = '$brugernavn', besked = '$besked', dato = '$dato', ip = '$ip'");
}
?>
Avatar billede jakobdo Ekspert
16. april 2008 - 07:12 #2
prodigy01: Det Nielle har rettet er:

Du bruger $besked, det virkede i "gamle" dage eller hvis globals er aktiveret.
Men da $besked garanteret er fra en form som POSTER, så skal det være:
$_POST['besked'] og ligeså med alle andre felter fra din form.
Avatar billede nielle Nybegynder
16. april 2008 - 07:18 #3
Nemlig, men ud over det, har jeg også tilpasset koden så den er beskyttet imod SQL injection.

(og fjernet en else-del som ikke havde nogen som helst funktion).
Avatar billede prodigy01 Nybegynder
16. april 2008 - 07:36 #4
Det virker godt nok nu.
Men den tilføjer kun beskeden, ikke navnet.
Skal jeg så gøre det samme som i har gjort med besked.
Avatar billede jakobdo Ekspert
16. april 2008 - 07:53 #5
Du skal gøre sådan her:
$besked = $_POST['besked'];
$besked = mysql_real_escape_string($besked);

med $brugernavn også...
Avatar billede rax Praktikant
16. april 2008 - 08:31 #6
Jeg er ikke bekendt med den syntaks, du bruger i din sql..

"insert into gb set brugernavn = '$brugernavn', besked = '$besked', dato = '$dato', ip = '$ip'"

kan man det? personligt ville jeg have skrevet

"insert into gb (brugernavn, besked, dato, ip) values ('$brugernavn', '$besked', '$dato', '$ip');"

skal ikke kunne sige, om begge syntakser virker :)
Avatar billede jakobdo Ekspert
16. april 2008 - 08:38 #7
Avatar billede michael_stim Ekspert
16. april 2008 - 08:47 #8
Ville nok foretrække at bruge mulighed 2, da du holder dig til SQL-standard. Er du 100% sikker på at det ikke skal bruges med andre baser end MySQL, er der ikke noget i vejen for at bruge "update"-syntaksen til en insert. Bare min mening.
Avatar billede prodigy01 Nybegynder
16. april 2008 - 10:07 #9
Den indsætter dato osv.
Men ikke Brugernavn.
Jeg prøver lige når jeg kommer hjem.
Avatar billede rax Praktikant
16. april 2008 - 10:11 #10
så lærte jeg også noget idag :)

- kristian
Avatar billede nielle Nybegynder
16. april 2008 - 11:58 #11
Begge syntakser er som sagt ok, men fakisk kun i MySQL. Man bør normalt anvende den siste af dem, da man så nemmere kan flyye til en anden database hvis man skal.
Avatar billede rax Praktikant
16. april 2008 - 12:42 #12
tja, egentlig bør man definere et interface, og så realisere det for hver database, man ønsker at kunne anvende.. det er den kønneste løsning.
Avatar billede prodigy01 Nybegynder
16. april 2008 - 15:06 #13
Hehe har ikke forstået.
Hvad siger i jeg skal gøre for at den også tilføjer brugernavnet?
Avatar billede jakobdo Ekspert
16. april 2008 - 15:19 #14
<?
session_start();
include "database.php";

$dato = date("d.m.Y h:i");
$time = time();
$ip = $_SERVER[REMOTE_ADDR];

$besked = $_POST['besked'];
$besked = mysql_real_escape_string($besked);
$brugernavn = $_POST['brugernavn'];
$brugernavn = mysql_real_escape_string($brugernavn);

if (isset($besked) && $besked != '') {
    $besked = str_replace(':D','<img src="glad.gif">',$besked);
    $besked = str_replace(':(','<img src="ked.gif">',$besked);
    $besked = str_replace(':)','<img src="smiler.gif">',$besked);
    mysql_query("insert into gb set brugernavn = '$brugernavn', besked = '$besked', dato = '$dato', ip = '$ip'");
}
?>
Avatar billede prodigy01 Nybegynder
16. april 2008 - 15:21 #15
Ja jakob, prøved også selv lige.
Men hvad gør den der?
$brugernavn = mysql_real_escape_string($brugernavn);
Avatar billede jakobdo Ekspert
16. april 2008 - 15:23 #16
Avatar billede prodigy01 Nybegynder
16. april 2008 - 15:26 #17
Ja okay.
Hvordan gør jeg så sådan, at man skal fylde felterne ud før man kan tilføje, nu kan man tilføje uden at skrive navn osv.
Avatar billede prodigy01 Nybegynder
22. april 2008 - 00:20 #18
smid svar nielle.
Avatar billede nielle Nybegynder
22. april 2008 - 06:53 #19
Skal jakobdo ikke også smide et 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