Rank script beveiligen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marnix Peters

Marnix Peters

18/01/2011 17:20:24
Quote Anchor link
Hallo,

Momenteel ben ik bezig met een ledensysteem, en heb hiervoor een rank script gebouwd. Vanaf de adminstratie kan ik ranken toevoegen, verwijderen etc. En leden kunnen deze ranks zelf wijzigen. Dit werkt allemaal prima, maar helaas lukt het beveiligen mij niet. Je hebt namelijk <input value="rank">, en deze kan men makkelijk aanpassen. Het moet dus controleren of die rank wel echt van die persoon is. Ik begin maar met mijn tabellen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE IF NOT EXISTS `rank` (
  `rank_id` int(11) NOT NULL AUTO_INCREMENT,
  `naam` varchar(50) NOT NULL,
  PRIMARY KEY (`rank_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15;


Hierin worden dus de ranken toegevoegd met naam.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `user_rank` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_naam` varchar(50) NOT NULL,
  `rank_id` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11;


Hierin staat welke gebruikernaam welke ranks hebben.

Ik heb ook een tabel "User" met een rij "Rank", daar komt de rank naam in te staan.

Dit is mijn script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
    if(isset($_POST['bewerkrank'])) {
        mysql_query('UPDATE user SET rank="' . mysql_real_escape_string($_POST['rank']) . '" WHERE naam="' . mysql_real_escape_string($_SESSION['naam']) . '"');
        echo 'Your rank has been changed succesfully. Click <a href="myrank.php">here!</a>';
    }
else {
?>

        <strong>Change Rank:</strong><br />
<?php
    $sql
= mysql_query('SELECT rank FROM user WHERE naam="' . mysql_real_escape_string($_SESSION['naam']) . '"');
    $row = mysql_fetch_array($sql);
    echo "Your current rank: ";
    echo $row['rank'];
    echo "<br /><br />";
?>

            <form name="form" method="post">
            <table>
                <tr>
                    <td>    
                        <select name="rank">
                            <?php
                                $sql
= mysql_query("SELECT * FROM user_rank LEFT JOIN rank ON user_rank.rank_id = rank.rank_id WHERE user_naam='" . mysql_real_escape_string($_SESSION['naam']) . "'");
                                while($row = mysql_fetch_array($sql)) {
                                echo "<option value=\"".$row['naam']."\">".$row['naam']."</option>";
                                }

                            ?>

                        </select>
                    </td>
                </tr>
                <tr>
                    <td><input type="submit" name="bewerkrank" value="Change"></td>
                </tr>
            </table>
        </form>
<?php
    }
?>


Het combineert dus 2 tabellen met elkaar, iemand anders had mij ook geholpen met de SQL query (left join) omdat ik daar ook niet uit kwam. Ik hoop graag dat iemand mij kan helpen. Het gaat dus om een if - else bij het versturen boven aan, hoe je dat kan checken.

Alvast bedankt,

Marnix Peters
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.