Avatar billede jensen19 Nybegynder
01. august 2012 - 22:16 Der er 1 kommentar

Php kode

Jeg har et system på min side, som gør at man kan få forskellige skilte på sin profil. men kan ikke få den til at overføre "grund" til bruger tabellen .. har nu prøvet følgende..

<?
session_start();
include "config.php";
if (session_is_registered("brugernavn") AND ("kodeord") AND ("logintid")) {
$tjek = mysql_query("SELECT * FROM daniel_brugere WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$tjek1 = mysql_fetch_array($tjek);
?>
<?
if($_GET[mode] == "") {
?>
<form action="" method="POST">
<input type="hidden" name="action" value="skift">
<?
$hent_skilte = mysql_query("SELECT * FROM daniel_skilte WHERE skilte_ejer = '$_SESSION[brugernavn]' ORDER BY ID DESC") or die(mysql_error());
while($vis_skilte = mysql_fetch_array($hent_skilte)) {

print "<input type='radio' name='skilte_id' value='$vis_skilte[skilte_id]'> <img src='../skilte/$vis_skilte[skilte_id]' title='$vis_skilte[grund]'>";
}
?>
<input type="submit" name="submit" value="Skift til denne">

<?
}
if($_POST[action] == "skift" AND $_POST[skilte_id] != "" ) {

$passerdetmon = mysql_query("SELECT * FROM daniel_skilte WHERE skilte_ejer = '$_SESSION[brugernavn]' AND skilte_id = '$_POST[skilte_id]'") or die(mysql_error());
if(mysql_num_rows($passerdetmon) == "1" OR $_POST[skilte_id] == "skilte/$tjek1[skilt].gif") {
   
       

mysql_query("UPDATE daniel_brugere SET skilt = '$_POST[skilte_id]'  WHERE brugernavn = '".$_SESSION['brugernavn']."'");
      mysql_query("UPDATE daniel_brugere SET grund = '$_POST[grund]'  WHERE brugernavn = '".$_SESSION['brugernavn']."'");

print "Du har nu skiftet dit skilt";
}else{
echo "Hov hov, det kan du ikke!";
}
}
?>

<?
}else{
print "Du er ikke logget ind!";
}
?>
Avatar billede kjeldsted Novice
01. august 2012 - 23:22 #1
For det første forstår jeg ikke helt det konkrete problem du har med ovenstående?

Derudover har du nogle seriøse sikkerhedsproblemer.
For det første benytter du mysql APIen. En API der er udvikleren bag PHP direkte frarådes at benytte fremover. Brug i stedet mysqli (http://www.eksperten.dk/guide/1480).
Derudover smider du data direkte fra session samt POST i en mysql query, hvilket betyder at de fleste der ønsker det hurtigt får fuld kontrol over din database.

Derudover benytter du bl.a. $_GET[mode] og $_POST[grund]. Det er rigtig dårlig kodeskik ikke at benytte quotes omkring disse (altså $_GET['mode'] er bedre kodeskik), da foruddefinerede konstanter vil blive valgt frem for den værdi du venter. Altså hvis der findes en konstant der hedder MODE og fx indeholder 'true' vil den ikke hente data fra $_GET['mode'] men i stedet $_GET[true]. Så benyt ALTID quotes til dette. Så undgår du problemer det dette.
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