webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > PHP

PHP Här diskuteras allt som har med scriptspråket PHP att göra.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2012-05-10, 13:06   #1
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Jag kan inte uppdatera databasen

Hej,

jag försöker skapa ett script som uppdaterar antal timmar man arbetat på ett projekt. Tyvärr så funkar inte det jag har skrivit. Kan någon tala om vad jag gjort för fel?

Javascript-koden:

Kod:
function redigeraTimmar()
{
	a = xmlhttp.responseXML.documentElement.getElementsByTagName("projekt");
	for (i=0;i<a.length;i++)
	{
	namnet = a[i].getElementsByTagName("namn");
	kalle = namnet[0].firstChild.nodeValue;
	if(kalle == info)
		{
	tiden = a[i].getElementsByTagName("antaltimmar");
	hej = "<form name='form2' method='post' action='sparatimmar.php'>";
	hej += "<label>L&auml;gg till timmar:</label><br>";
	hej += "<input id='namn' type='text' value='" + info + "' size='30'/>";
	hej += "<input id='timmar' type='text' value='" + tiden[0].firstChild.nodeValue + "' size='30'/>";
	hej += "<input id='send' type='submit' value='L&auml;gg till timmar' /></form>";
    document.getElementById('rightcontainer').innerHTML=hej;
		}
	}
}
och så PHP-koden:

PHP-kod:
<?php
$namnet
$_POST['namn'];
$timmarna$_POST['timmar'];

$con mysql_connect("host","användarnamn","lösenord");
if (!
$con)
  {
  die(
'Could not connect: ' mysql_error());
  }

mysql_select_db("databasnamn"$con);

mysql_query("UPDATE projekt SET 'timmar' = $timmarna WHERE 'namn' = '$namnet'");

mysql_close($con);

?>
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 13:22   #2
The_Hulk
Medlem
 
Registrerad: 2003-06-25
Inlägg: 1 916
Lösningar: 71
du har inget name-attribut i dina input-taggar.
t.ex
HTML-kod:
<input id='namn' name='namn' type='text' value='" + info + "' size='30'/>";
The_Hulk besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 13:28   #3
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 817
Lösningar: 3146
Och:

1) Du ska inte ha apostrofer runt fältnamnen i SQL-frågan.
2) Du får inte in värdena i SQL-frågan som du har det nu. Jag hade gjort så här:
PHP-kod:
mysql_query("UPDATE projekt SET timmar = " $timmarna " WHERE namn = '" $namnet "'"); 
3) Du måste skydda dig mot SQL injection.

mvh
@nders besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 13:46   #4
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Tack, änglar! Nu funkar det!
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...

Senast redigerad av PollyJuice, 2012-05-10 klockan 13:53
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 13:49   #5
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 817
Lösningar: 3146
Får du något felmeddelande?

Skriv ut SQL-frågan så du kan se om det är något knas med värdena.

Senast redigerad av @nders, 2012-05-10 klockan 14:01
@nders besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 16:50   #6
drew
Medlem
 
drews avatar
 
Registrerad: 2007-03-12
Ort: Kokkola, Finland
Inlägg: 696
Lösningar: 34
Jag hade skrivit SQL-frågan så här.
PHP-kod:
mysql_query("UPDATE projekt SET timmar = $timmarna WHERE namn = '$namnet'"); 
Om du använder vanliga citationstecken (") runt strängen så tolkar php innehållet och du får dit innehållet i variablerna.
Om du använder enkla citationstecken ('), apostrofer, så tolkas strängen inte utan strängen skickas som den är, med variabelnamnen istället för innehållet.
__________________
http://tumba25.net
drew besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 18:39   #7
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 817
Lösningar: 3146
Bra där, drew. Jag kan inte php egentligen - jag bara fuskar.
@nders besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 18:55   #8
nitro2k01
Forumvärd
 
nitro2k01s avatar
 
Registrerad: 2003-08-26
Inlägg: 7 470
Lösningar: 646
PHP-kod:
$timmarna mysql_real_escape_string($timmarna);
$namnet mysql_real_escape_string($namnet);

mysql_query("UPDATE projekt SET timmar = '$timmarna' WHERE namn = '$namnet'"); 
Använd mysql_real_escape_string för att skydda dig mot SQL-injektioner, på alla fält, även sådana som du antar bara kommer innehålla nummer, såsom $timmarna i detta fall! Sätt enkel-fnuttar runt alla strängar i frågan, även sådana som du antar bara kommer innehålla nummer!

Kontrollera utöver det att $timmarna är ett nummer, och be användaren fylla i ett annat värde annars.
__________________
Gameboy Genius - Foto: Gatukonst och elektronikporr
Internklippning:
1) Snaggning av fångar.
2) Klippning frisörer emellan.
nitro2k01 besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 19:02   #9
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Kan man skriva

$namnet= mysql_real_escape_string($_POST['namn']);

?

Jag har inte tänkt på säkerhetsfrågorna överhuvudtaget, men det skulle definitivt kunna knuffa upp mitt betyg.
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-11, 11:48   #10
drew
Medlem
 
drews avatar
 
Registrerad: 2007-03-12
Ort: Kokkola, Finland
Inlägg: 696
Lösningar: 34
Man ska inte köra mysql_real_escape_string() på fält som ska innehålla nummer. Man ska använda intval() om det är ett heltal eller floatval() om den har decimaler.
Enkelfnuttar runt tal kan ge felmess från databasen eller hela frågan kan ignoreras. Sätt inte fnuttar runt tal, försäkra dig om att det verkigen är siffror istället.

Säkerheten är mycket viktig, frågan är inte om någon försöker hacka sig in utan när det händer.
__________________
http://tumba25.net
drew besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > PHP

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 21:50.


Powered by: vBulletin Version 3.8.6
Copyright © webForum