Hallo allemaal,

Ik ben bezig geweest met een pagina om users te kunnen aanpassen. Alleen de administrator heeft toegang tot deze dienst nu is het geval dat als je een user aanpast en vervolgens op wijzigen drukt dat hij de gegevens van de user die je aanpast onthoud en je dus vervolgens ook ingelogt ben als die persoon me script is alsvolgt weet iemand hier een oplossing voor?

<?php

include("config.php");

if(isset($_SESSION['rank'])){
$rank = $_SESSION['rank'];
}
else {
$rank = 0;
}



if(($rank & 1) == 1 || ($rank & 4) == 4 )
{ $tijd = date("G"); //bepaal de tijd in uren

if($tijd < 6)
{
echo "<br /> <br />Goede nacht ".$user."<br /><br />";
}
elseif($tijd < 12)
{
echo "<br /> <br />Goedemorgen ".$user."<br /><br />";
}
elseif($tijd < 18)
{
echo "<br /> <br />Goedemiddag ".$user."<br /><br />";
}
else
{
echo "<br /> <br />Goede avond ".$user."<br /><br />";
}
echo "U kunt hier de pagina's beheren die gekoppeld zijn aan uw account. <br /><br />";
}

else{
echo "<br /> <br />U bent niet ingelogd. <br /> <br />";
echo "<a href=login.php class=wijzigen>Klik hier</a> om in te loggen<br /><br />";

}


if(($rank & 1) == 1)
{
// rank is akkoord
if(!isset($_GET['mode']))
{
echo "<br /> <br />Geen toegang!<br /> <br />";
}
}
elseif (($rank & 4) == 4)
{
// rank is akkoord
if(!isset($_GET['mode']))
{
$result = mysql_query("SELECT * FROM users order by id ASC");
}
}

if(isset($result))
{
while($r=mysql_fetch_assoc($result))
{
echo '
<table width="400" border="0" cellspacing="4" bgcolor="#FFFC00">
<tr>
<td width="52" valign="top" ><b>User</b></td>
<td width="332"><div class="edit_tekst">'.$r['user'].'</div></td>
</tr>
<tr>
<td valign="top"><b>E-Mail</b></td>
<td><div class="edit_tekst">'.$r['email'].'</div></td>
</tr>
<tr>
<td valign="top"><b>Rank</b></td>
<td><div class="edit_tekst">'.$r['rank'].'</div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><a href="gebruikers.php?mode=edit&id='.$r['id'].'" class="wijzigen">Wijzigen</a></td>
</tr>
</table><br/>';

}
}
else
{
echo '';

} ?>

<?php

if( isset( $_GET['mode'] ) && $_GET['mode'] == 'edit' || isset( $_POST['mode'] ) && $_POST['mode'] == 'edit' )
{
if (!isset($_POST["submit"]))
{
$id = $_GET["id"];
$sql = "SELECT * FROM users WHERE id=".$_GET['id'];
$result = mysql_query($sql) or die(mysql_error());
$users = mysql_fetch_array($result);

?>

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<span class="titel">Gebruikersbeheer </span><br>
<br>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="117" class="naam">User:<br />
<br /></td>
<td width="577"><input name="user" type="text" id="user" value="<?php echo $users["user"] ?>" size="30" /></td>
</tr>
</tr>
<td width="117" class="naam">Rank:</td>
<td width="577">

<INPUT NAME="rank" TYPE="TEXT" id="rank" VALUE="<?php echo $users["rank"] ?>" SIZE=30> </td>
</tr>
<tr> </tr>
<td width="117" class="naam">E-mail:</td>
<td width="577">
<input name="email" type="text" id="email" value="<?php echo $users["email"] ?>" size="30" />
<input type="hidden" name="mode" value="edit"> </td>
</tr>
<tr> </tr>

<input type="hidden" name="mode" value="edit"> </td>
</tr> <tr>
<td width="117" class="naam"></td>
<td><input type="submit" name="submit" value="Wijzigen" />
<input type="reset" name="submit" value="Wissen" /></td>
</tr>
</table>
</form>

<? } ?>

<?php
if(isset($_POST['submit']))
{
$user = $_POST["user"];
$email = $_POST["email"];
$rank = $_POST["rank"];

$sql = "UPDATE users SET user='".$user."',email='".$email."',rank='".$rank."' WHERE id=".$_GET['id'];


echo 'Uw aanpassingen zijn doorgevoerd!<br /><br /><meta http-equiv="refresh"
content="2;URL=gebruikers.php">';


}
}
?>
iemand een antwoord?
wat is het probleem precies dan?? ik snap het niet precies voegt hij het niet toe aan database of dat hij ingelogd blijft als administrator?? leg het probleem eens wat beter uit
Rembem schreef op 23.05.2006 09:32
wat is het probleem precies dan?? ik snap het niet precies voegt hij het niet toe aan database of dat hij ingelogd blijft als administrator?? leg het probleem eens wat beter uit



hij voegt de user toe ana de database alles werkt verder alleen hij denkt meteen ook dat je bent ingelogt als die user die ik heb aangemaakt/aangepast... dus de sessie waarin ik administrator ben wordt dan vervangen door een sessie als user die ik heb aangepast
De code ziet er niet al te fraai uit. Je hebt de logica (verwerking van data) lukraak door de output staan. Dat is vragen om problemen, je ziet dan door de bomen het bos niet meer. Dat blijkt hier ook weer eens.

Zorg er voor dat je eerst alle logica afhandelt en dan pas de output naar de browser stuurt. In de output kan best nog wel wat logica zitten, maar dat mag alleen betrekking hebben op de presentatie van de output. Queries e.d. zul je hier dus niet aantreffen.

Waar komt trouwens $_GET['id'] vandaan? Je vergeet tevens te controleren of deze bestaat en veilig is. Hiermee is je database dus vakkundig om zeep te helpen... Het id staat in de url (als die er al is) en kan dus zo worden aangepast.

En begin je scripts ALTIJD met de volgende regels:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest van je script
?>

Reageren