Hallo allemaal,

Ik heb een editscript gemaakt/getweaked waarmee je data in de de database kan aanpassen nu wil ik hier echter een login script bij zetten zodat je alleen met wachtwoord en gebruikersnaam kan editten. Ook is het de bedoeling dat er 2 users komen de ene user kan bv. alleen id 2 en 4 aanpassen de andere kan alles aanpassen. Hoe kan ik dit het beste aanpakken hier volgt het script dat ik tog nu toe heb.

<?php

include("config.php");

if(!isset($_GET['mode']))
{

$result = mysql_query("SELECT * FROM pagina_content order by id ASC");


while($r=mysql_fetch_assoc($result))
{

echo '
<table width="400" border="0" cellspacing="4" bgcolor="#FFFC00">
<tr>
<td width="52" valign="top" >ID</td>
<td width="332"><div class="edit_tekst">'.$r['id'].'</div></td>
</tr>
<tr>
<td valign="top">Page</td>
<td><div class="edit_tekst">'.$r['pagina'].'</div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><a href="editcontent.php?mode=edit&id='.$r['id'].'">Edit</a></td>
</tr>
</table><br/>';
}
}
?>





<?php

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

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<span class="titel">Edit content</span><br>
<br>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="117" class="naam">Pagina:</td>
<td width="577">
<input type=hidden name="id" value="<?php echo $menu["id"] ?>">
<INPUT NAME="pagina" TYPE="TEXT" id="pagina" VALUE="<?php echo $pagina_content["pagina"] ?>" SIZE=30> </td>
</tr>
</tr>
<td width="117" class="naam">Content vak 1:</td>
<td width="577">
<textarea name="content1" cols="50" rows="8" id="content1"><?php echo $pagina_content["content1"] ?></textarea>
<input type="hidden" name="mode" value="edit"> </td>
</tr>
<tr> </tr>
<td width="117" class="naam">Content vak 2:</td>
<td width="577">
<textarea name="content2" cols="50" rows="8" id="content2"><?php echo $pagina_content["content2"] ?></textarea>
<input type="hidden" name="mode" value="edit"> </td>
</tr>
<tr>
<tr>
<td width="117" class="naam">Plaatje:</td>
<td width="577">
<INPUT NAME="plaatje" TYPE="TEXT" id="plaatje" VALUE="<?php echo $pagina_content["plaatje"] ?>" SIZE=30>
<input type="hidden" name="mode" value="edit"> </td>
</tr>
<tr>
<td width="117" class="naam"></td>
<td><input type="submit" name="submit" value="Edit"></td>
</tr>
</table>
</form>

<? } ?>


<?php
if ($_POST["submit"])
{
$pagina = $_POST["pagina"];
$content1 = $_POST["content1"];
$content2 = $_POST["content2"];
$plaatje = $_POST["plaatje"];

$sql = "UPDATE pagina_content SET pagina='".$pagina."',content1='".$content1."',content2='".$content2."',plaatje='".$plaatje."' WHERE id=".$_GET['id'];

$result = mysql_query($sql) or die(mysql_error());
echo 'Content aangepast!.<META HTTP-EQUIV=Refresh CONTENT="2; URL=editcontent.php">';
}
}
?>

Alvast bedankt voor de hulp!
ik neem aan dat je niet ingelogt bent?
want hij weet niet van het bestaan van $rank.
terwijl als je legaal bent ingelogt wordt $rank aangemaakt.

zet dit
<?php
if(isset($_SESSION['rank']))
$rank = $_SESSION['rank'];
else
$rank = 0;
?>
ergens in je config.php

nu zeg je standaart dat de gebruiker helemaal geen rechten heeft. als deze zich inlogt (of al ingelogt heeft en dat staat nog in een sessie)
dan krijgt hij zijn rank.
ok we zijn verder het werkt nu alleen als ik de rank van de user 4 maak dan laat hij doei doei zien heeft de user met rank 4 geen toegang tot het gene wat user met rank 1 wel kan zien?
inderdaad

een user met rank 4 kan alleen hetgeen bij optie 4 zien. als je wilt dat de user optie 4 en 1 kan. moet je hem rank 5 (1+4) geven.

hieronder nogmaals me voorbeeldje
Members pagina bekijken:       2^0 = 1
Replies plaatsen:              2^1 = 2 
kan replies edite:             2^2 = 4
kan users deleten:             2^3 = 8
alle andere admin opties:      2^4 = 16

(een rank die alles kan zou dus 31 zijn (1+2+4+8+16)
rank 16 (16) kan alleen
'Alle andere admin opties'
terwijl iemand met rank 15 (1+2+4+8) deze dingen kan
'Replies plaatsen'
'kan replies edite'
'kan users deleten'
je kan natuurlijk helemaal zelf bepalen waar elke optie voor staat. dit is alleen een voorbeeldje.
je kan ook oneindig doorgaan.
ok bedankt dat deel begrijp ik nu. Na het veranderen van de tekst die zichtbaar is werkt het niet meer... het script is nu

if(($rank & 1) == 1)
{
// jeej je mag de pagina zien
echo "Welkom<br />";
}
else
{
// Niet de juiste rang
echo "U bent niet ingelogt!<br />";
}


en de user heeft rank 1 wat is het probleem?
- Wat is de waarde van rank
- Wat krijg je in beeld
- Wat is de fout

<?php

echo $rank."<br />"; // Waarde van rank laten zien

if(($rank & 1) == 1)
{
// jeej je mag de pagina zien
echo "Welkom<br />";
}
else
{
// Niet de juiste rang
echo "U bent niet ingelogt!<br />";
}
?>
Me school is uit. Ik moet nu naar huis dat kan je de komende 1 a 2 uur niet helpen.
Daarna zal ik je weer verder helpen.
misschien kom je er in de tussentijd zelf wel uit ;-)

succes!
waarde van de rank blijkt 1 te zijn dit wijst erop dat het login script dit niet doorgeeft??

huidige script:

error_reporting(E_ALL);
ini_set("display_errors", 1);

include("config.php");

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

echo $rank."<br />"; // Waarde van rank laten zien

if(($rank & 1) == 1)
{
// jeej je mag de pagina zien
echo "Welkom<br />";
}
else
{
// Niet de juiste rang
echo "U bent niet ingelogt!<br />";
}

login script:

include("config.php");

if(!isset($_POST['submit']))
{
echo ('<form action='.$_SERVER['PHP_SELF'].' method="post">
Gebruikersnaam:<br><input type="text" name="gebruikersnaam" size="25"><br>
Wachtwoord:<br><input type="password" name="wachtwoord" size="25"><br>
<br><input type="submit" value="submit" name="submit"><br>
</form>');
}
else
{
$user = $_REQUEST['gebruikersnaam'];
$pass = $_REQUEST['wachtwoord'];
$user = strip_tags($user);
$pass = strip_tags($pass);
$user = str_replace(" ","",$user);
$pass = str_replace(" ","",$pass);
$user = str_replace("%20","",$user);
$pass = str_replace("%20","",$pass);
$user = addslashes($user);
$pass = addslashes($pass);
$pass = md5($pass);
$request = "SELECT * FROM users_infraspecials WHERE wachtwoord='".$pass."' AND gebruikersnaam='".$user."'";
$results = mysql_query( $request ) or die ( mysql_error() );
if(mysql_num_rows($results))
{
$getid = "SELECT * FROM users_infraspecials WHERE gebruikersnaam='".$user."' LIMIT 1";
$getidexec = mysql_query($getid) or die (mysql_error() );
while($r=mysql_fetch_array($getidexec))
{
$id = $r['id'];
$rank = $r['rank'];
}
$_SESSION['id'] = $id;
$_SESSION['rank'] = $rank;
echo 'User Logged in.<META HTTP-EQUIV=Refresh CONTENT="2; URL=editcontent.php">';
}
else
{
echo 'Username and password do not match.
<META HTTP-EQUIV=Refresh CONTENT="2"; URL="'.$_SERVER['PHP_SELF'].'">';
exit();
}
}
Waarom ontbreken alle { en } ? Op die manier leer je nooit netjes scripten.
<?php
// Jouw versie
if(isset($_SESSION['rank']))
$rank = $_SESSION['rank'];
else
$rank = 0;

// of
if(isset($_SESSION['rank'])){
$rank = $_SESSION['rank'];
}
else {
$rank = 0;
}
?>
Verder is echo geen functie, daar horen dus geen ( en ) bij te staan. Het is tevens niet handig om de ene keer dubbele quotes in je php-code te gebruiken en de andere keer enkele. Er zit bij jou geen enkele logica in. Ik gebruik in php altijd enkele quotes, behalve om een query (die heb jij ook goed staan). In html moet je dubbele quotes gebruiken, daar heb je geen keuze in.
bedankt voor de tip!

het script werkt ondertussen en hij laat zien aan elke user wat hij moet laten zien.

er is echter nog 1 probleem er zitten natuurlijk nog andere functies in het script ik heb bijvoorbeeld de volgende link <a href="editcontent.php?mode=edit&id='.$r['id'].'">Edit</a> als je daarop drukt krijg je een edit gedeelte te zien je blijft in dezelfde pagina hij is echter de user vergeten en je moet weer opnieuw inloggen... het sluit de sessie ofzo.. hoe zorg ik ervoor dat de sessie open blijft?

@ Frank
Als je maar 1 ding hebt in een lus hoef je daar niet helemaal haakjes bij te zetten
Persoonlijk vind ik bij 1 optie het overzichtelijker om geen haakjes te plaatsen. als je goed met tabs werkt zie je alles in 1 opzicht. en het wordt daardoor niet rommelig met al die haakjes.

Voorbeeld:
<?php

// Met haakjes
if($getal == 1)
{
echo "1";
}
elseif($getal == 2)
{
echo "2";
}
elseif($getal == 3)
{
echo "3";
}
elseif($getal == 4)
{
echo "4";
}

// Of zonder haakjes
if($getal == 1)
echo "1";
elseif($getal == 2)
echo "2";
elseif($getal == 3)
echo "3";
elseif($getal == 4)
echo "4";

// In dit geval vind ik zonder haakjes overzichtelijker
// Let op: het is alleenmaar wat ik vind ;-)
?>

@ Crazyme
Goed dat het werkt (Y)

Zet
<?php
session_start();
?>
helemaal bovenin je config file.

Reageren