Vinnaren i pepparkakshustävlingen!
  • 3
  • 4
2010-07-28, 11:18
  #37
Moderator
Protons avatar
Citat:
Ursprungligen postat av paxan
Tyvärr, då blev det tvärknas.
Använder wampserver o kopierade bara din länk.

Så här står det då:
I sådana fall kopierade du inte tillräckligt mycket. Meningen var at du skulle klippa in innehållet i variabeln $mysql(som skrevs ut med echo-satsen på raden under), inte hela php-koden för att bygga upp din sql.

Det hela gick alltså ut på att du skulle få reda på hur sql-en som du skickar till din databas ser ut när alla variabler i den är satta.
Citera
2010-07-28, 11:44
  #38
Medlem
paxans avatar
En liten teori bara:

Om jag bara skriver:

$mysql="UPDATE members SET holurg = '".$holurg."' WHERE namn = ".$_SESSION["myusername"];

i mitt php script, utför den verkligen en "query" mot databasen då eller ger den bara variabeln $mysql något slags värde som man måste göra något med. Misstänker att jag inte riktigt gör något mot databasen o det är därför jag inte får något felmeddelanden o sidan flyter fint utan att uppdatera databasen.

Om jag lägger till en rad o skriver så här:

$mysql="UPDATE members SET holurg = '".$holurg."' WHERE namn = ".$_SESSION["myusername"];
mysql_query($mysql) or die ("Trasig sql:<br><b>".mysql_error()."</b>");

då känns det som den gör något mot databasen för då får jag ett felmeddelande som säger:

Trasig sql:
Unknown column 'john' in 'where clause'

Är jag helt ute o cyklar eller??
Citera
2010-07-28, 11:50
  #39
Moderator
Protons avatar
Citat:
Ursprungligen postat av paxan
En liten teori bara:

Om jag bara skriver:

$mysql="UPDATE members SET holurg = '".$holurg."' WHERE namn = ".$_SESSION["myusername"];

i mitt php script, utför den verkligen en "query" mot databasen då eller ger den bara variabeln $mysql något slags värde som man måste göra något med. Misstänker att jag inte riktigt gör något mot databasen o det är därför jag inte får något felmeddelanden o sidan flyter fint utan att uppdatera databasen.

Om jag lägger till en rad o skriver så här:

$mysql="UPDATE members SET holurg = '".$holurg."' WHERE namn = ".$_SESSION["myusername"];
mysql_query($mysql) or die ("Trasig sql:<br><b>".mysql_error()."</b>");

då känns det som den gör något mot databasen för då får jag ett felmeddelande som säger:

Trasig sql:
Unknown column 'john' in 'where clause'

Är jag helt ute o cyklar eller??
Nej du är inte ute och cyklar alls. $mysql är ju egentligen i ditt fall bara en sträng som innehåller en SQL. Det är först när du kör mysql_query som denna sträng skickas till databasen och det sker något med den.

Felmeddelandet säger att din databas tror att john är en kolumn och inte ett värde i en kolumn. Lösningen på detta problem är att stoppa in enkelfnuttar runt det som står efter = i where-villkoret. Hade du gjort som jag sa innan och skrivit ut den sql du försökte få databasen att köra hade du sett det med. Prova således den här:
Kod:
$mysql="UPDATE members SET holurg = '".$holurg."' WHERE namn = '".$_SESSION["myusername"]."'";
mysql_query($mysql) or die ("Trasig sql:<br><b>".mysql_error()."</b>"); 
så borde den kunna funka.
Citera
2010-07-28, 11:58
  #40
Medlem
paxans avatar


Fan va gott Proton, där satt den, äntligen!

Nu skall jag försköna sidan lite, lite mera matcher, lite mera användarnamn o så, bara leka.

Sedan är det två kaptiel kvar på historien, säkerhet och att få sidan att rätta sig o göra en poängsida, vilket tycker ni man skall börja med??

Simma lugnt nu ett tag.

Mindstormer/Proton: Glömmer er inte i april när det hockeyvm startar.
Citera
2010-07-28, 12:42
  #41
Moderator
Protons avatar
Citat:
Ursprungligen postat av paxan


Fan va gott Proton, där satt den, äntligen!

Nu skall jag försköna sidan lite, lite mera matcher, lite mera användarnamn o så, bara leka.

Sedan är det två kaptiel kvar på historien, säkerhet och att få sidan att rätta sig o göra en poängsida, vilket tycker ni man skall börja med??

Simma lugnt nu ett tag.

Mindstormer/Proton: Glömmer er inte i april när det hockeyvm startar.
För din framtida skull när du ska börja fixa med saker har jag ett litet tips: Bygg sidan med säkerhet inlagd från början, det brukar oftast vara ganska tidsödande och innebära ganska omständiga och bökiga lösningar om man bygger sidan först och sedan ska försöka få in säkerheten i efterhand. Ett litet tips bara.

I viket fall som helst så är det bara att gratulera att du lyckades fixa till detta på egen hand mer eller mindre och ett stort lyft på plommonstopet för din ihärdighet att vilja få det att funka blir det med

Vore jag dej i det här läget skulle jag börja med att fixa till säkerheten i sidan. Det du ska kolla upp i mysql-manualen framförallt är hur du ska använda mysql_real_escape_string(), kolla gärna i fler php-trådar här på flashback för ytterligare inspiration.

Hur ser dina tabeller ut i databasen förresten och vilken relation till varandra har dessa? Det kunde ju till exempel vara praktiskt om exempelvis fler av dina kompisar kan rösta på en match, men att man samtidigt genom hur databasen är uppbyggd omöjliggör en och samma kompis att rösta på fler resultat i en och samma match?

Utbyggnadsförslag här framöver är att du gör nåt litet admin-gränssnitt med (om du inte redan har ett)så att du enkelt kan lägga in nya matcher framöver utan att behöva brotta in dessa i din databas manuellt. Du kan ju även göra iordnig ett admin-gränssnitt för att lägga i användare utan allt för mycket trassel, möjligheterna är ju rätt många om du grubblar lite på hur du vill använda ditt lilla system.
__________________
Senast redigerad av Proton 2010-07-28 kl. 12:45.
Citera
2010-07-28, 17:49
  #42
Medlem
Mindstormers avatar
Citat:
Ursprungligen postat av Proton
För din framtida skull när du ska börja fixa med saker har jag ett litet tips: Bygg sidan med säkerhet inlagd från början, det brukar oftast vara ganska tidsödande och innebära ganska omständiga och bökiga lösningar om man bygger sidan först och sedan ska försöka få in säkerheten i efterhand. Ett litet tips bara.

I viket fall som helst så är det bara att gratulera att du lyckades fixa till detta på egen hand mer eller mindre och ett stort lyft på plommonstopet för din ihärdighet att vilja få det att funka blir det med

Vore jag dej i det här läget skulle jag börja med att fixa till säkerheten i sidan. Det du ska kolla upp i mysql-manualen framförallt är hur du ska använda mysql_real_escape_string(), kolla gärna i fler php-trådar här på flashback för ytterligare inspiration.

Hur ser dina tabeller ut i databasen förresten och vilken relation till varandra har dessa? Det kunde ju till exempel vara praktiskt om exempelvis fler av dina kompisar kan rösta på en match, men att man samtidigt genom hur databasen är uppbyggd omöjliggör en och samma kompis att rösta på fler resultat i en och samma match?

Utbyggnadsförslag här framöver är att du gör nåt litet admin-gränssnitt med (om du inte redan har ett)så att du enkelt kan lägga in nya matcher framöver utan att behöva brotta in dessa i din databas manuellt. Du kan ju även göra iordnig ett admin-gränssnitt för att lägga i användare utan allt för mycket trassel, möjligheterna är ju rätt många om du grubblar lite på hur du vill använda ditt lilla system.

Kolla även på PHP's md5()-funktion, säkerheten ökas ganska rejält då du saltar och hashar dina lösenord!
Citera
2010-08-05, 09:35
  #43
Medlem
paxans avatar
När det gäller säkerhet på en sida med php script o databaser, är det så att det är bara när man infångar extern data från användare som det är risk med, eller finns det andra risker?. Om man skulle tex ha ett helt "slutet" system utan någon som helst input, då är det helsäkert eller(inte för att jag har det men i teorin tänker jag)? Jag har läst lite om sql-injection och funderar om jag lägger säkerhet på själva login inputen och saltar lösen så borde det väll vara säkert. Resten av inputen på sidan kommer handla om radioknappar i massor men jag kan inte se någon risk med dessa eller? Det är ju jag som bestämmer vad knapparna skall ge för värde?

Använder wampserver på datorn o testar sidan, funkar klockrent. Men vad betyder "put online" längst ner i menyn? Kan man på något sätt visa upp sidan för en kompis eller? Hur hittar han den då?

Har även gjort en "hemlig" admin sida där jag kan lägga till användare o skall även lägga till så att man därifrån lägger in rätt tecken i matcherna(1,x eller 2). Tänkte lägga rätt tecken i en egen databas som jämnförs med den som användarna gjort. Nu till frågan: Kan man ha flera databaser på serverhotell när jag i vinter skall lägga upp sidan på ett hotell, något som man bör tänka på?

Och nu till sista frågan:
Om ni som nedan ser att jag har tex fyra matcher jag vill användarna skall tippa men jag vill bara att det skall vara två matcher tillgängliga för spel mellan två datum. Sedan de andra två matcherna har två andra datum som de skall vara tillgängliga för och då skall självklart de första två vara stängda. Någon som har någon bra ide om hur göra med "date" i detta fall. Misstänker att det blir en del if satser, men hur hade ni gjort det?

Kod:
<?php
session_start
();
?>

<html>
<body>
Login Successful<br>
<b>Välkommen <?php print $_SESSION["myusername"];?>!</b><br>
<form action="tipsraden.php" method="post">

<table cellpadding="1" border="2">
<tr>
<td>Matcher</td><td>1</td><td>X</td><td>2</td>
</tr>
<tr>
<td>1)Kanada-Slovakien</td><td><input type="radio"name="match1"value="1"></td><td><input type="radio"name="match1"value="X"></td><td><input type="radio"name="match1"value="2"></td>
</tr>
<tr>
<td>2)Finland-USA</td><td><input type="radio"name="match2"value="1"></td><td><input type="radio"name="match2"value="X"></td><td><input type="radio"name="match2"value="2"></td>
</tr>
<tr>
<td>3)Sverige-Danmark-</td><td><input type="radio"name="match3"value="1"></td><td><input type="radio"name="match3"value="X"></td><td><input type="radio"name="match3"value="2"></td>
</tr>
<tr>
<td>4)Tjeckien-Norge</td><td><input type="radio"name="match4"value="1"></td><td><input type="radio"name="match4"value="X"></td><td><input type="radio"name="match4"value="2"></td>

</tr>
</table>

<input type="submit" value="Sänd!"><input type="reset"><br>
<A HREF="loggaut.php">Logga ut o göra tipset senare!</A>

</body>
</html>
Citera
2010-08-05, 12:51
  #44
Medlem
Tvillingens avatar
Citat:
Ursprungligen postat av paxan
När det gäller säkerhet på en sida med php script o databaser, är det så att det är bara när man infångar extern data från användare som det är risk med, eller finns det andra risker?. Om man skulle tex ha ett helt "slutet" system utan någon som helst input, då är det helsäkert eller(inte för att jag har det men i teorin tänker jag)? Jag har läst lite om sql-injection och funderar om jag lägger säkerhet på själva login inputen och saltar lösen så borde det väll vara säkert. Resten av inputen på sidan kommer handla om radioknappar i massor men jag kan inte se någon risk med dessa eller? Det är ju jag som bestämmer vad knapparna skall ge för värde?


Bara för att det är du som har satt värdet på dina radioknappar så betyder det inte att någon inte kan ändra det värdet. Med exempelvis firebug(addon i firefox) så kan du ändra det på några sekunder. Fast å andra sidan så är det inte så svårt att kontrollera så att inputdatan endast innehåller 1 X 2.

Citat:
Ursprungligen postat av paxan
Använder wampserver på datorn o testar sidan, funkar klockrent. Men vad betyder "put online" längst ner i menyn? Kan man på något sätt visa upp sidan för en kompis eller? Hur hittar han den då?


Sätter du den online så kan folk inom ditt nätverk titta på din sida genom att besöka exempelvis http://192.168.0.123/. Du kan göra så att folk kommer åt din sida via din ip-adress, men då lär du öppna porten din server kör på i din router.

Citat:
Ursprungligen postat av paxan
Har även gjort en "hemlig" admin sida där jag kan lägga till användare o skall även lägga till så att man därifrån lägger in rätt tecken i matcherna(1,x eller 2). Tänkte lägga rätt tecken i en egen databas som jämnförs med den som användarna gjort. Nu till frågan: Kan man ha flera databaser på serverhotell när jag i vinter skall lägga upp sidan på ett hotell, något som man bör tänka på?


Det beror mest på vilket webhotell du har och om inte annat så borde en egen tabell räcka.
Citera
2010-08-05, 18:40
  #45
Moderator
Protons avatar
Enkel regel när det gäller säkerhet i webapplikationer är att ALDRIG lita på data som någon användare försett dej med.

Det innebär i praktiken att om du har ett formulär på en websida så kan du inte förutsätta att du får in giltig data, denna måste valideras innan du kan använda den vidare. Detsamma gäller värden du läser in från de eventuella cookies du har satt, det gäller naturligtvis även parametrar du skickar med i url-er.

Kort sagt: den data du inte har kontroll över var den kommer ifrån är ALLTID att betrakta som osäker eller felaktig och måste valideras och/eller filtreras innan du använder den. Konstanter och variabler som du explicit sätter i ett script däremot kan du använda utan vidare kontroll.
Citera
2010-08-07, 10:44
  #46
Medlem
paxans avatar
Ja just det, jag behöver ju inte en databas till för att lägga in rätt rad, bara en tabell till. Vet inte riktigt vad jag tänkte.

Okey, det gäller verkligen att validera all extern data alltså! Det skall göras.

Nu till ett litet problem som jag börjar bli gråhårig för.

I en tabell i mysql har jag kolumner som heter namn,match1,match2,match3 & match4. I en annan tabell har jag data i 4 st kolumner som heter rattmatch1, rattmatch2, rattmatch3 & rattmatch4. Nu vill ju jag jämföra data i dessa tabeller med varandra för att se om "namn" har tippat rätt tecken i dessa 4 matcher. Hur göra? Jag har börjat så här men känns som jag är helt ute o cyklar, någon som kan skicka mig i rätt riktning med lite tips?

Kod:
<?php
ob_start
();
$host="localhost"// Host name 
$username="root"// Mysql username 
$password=""// Mysql password 
$db_name="test"// Database name 
$tbl_name="rattresultat"// Table name

// Connect to server and select databse.
mysql_connect("localhost""root""")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$query "select namn,match1, match2, match3, match4 from members";
$result =mysql_query($query);
$query2"select rattmatch1, rattmatch2, rattmatch3, rattmatch4 from rattreslutat";
$result2mysql_query($query2)

if (??????) {
här vill jag att $peterpoäng skall ökas med +1 för varje rätt tecken han har;
}

if (??????) {
här vill jag att $magnuspoäng skall ökas med +1 för varje rätt tecken han har;
}


?>
<html>
<body>

<center>
<b>The Scoreboard</b></center>
<img src="scoreboardmindre.jpg">
Peter <?php echo $peterpoäng;
?>
Peter <?php echo $magnuspoäng;
?>


</body>
</html>
Citera
  • 3
  • 4

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback