Edit script Beveiliging
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.
Code (php)
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
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
<?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> </td>
<td><a href="editcontent.php?mode=edit&id='.$r['id'].'">Edit</a></td>
</tr>
</table><br/>';
}
}
?>
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> </td>
<td><a href="editcontent.php?mode=edit&id='.$r['id'].'">Edit</a></td>
</tr>
</table><br/>';
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?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);
?>
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="" 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="">
<INPUT NAME="pagina" TYPE="TEXT" id="pagina" VALUE="" 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"></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"></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="" 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>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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">';
}
}
?>
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!
-die alles kunnen wijzigen
- die een paar dingen kunnen wijzigen
Donhertog:
maak een inlog script en ga werken met 2 soorten users
-die alles kunnen wijzigen
- die een paar dingen kunnen wijzigen
-die alles kunnen wijzigen
- die een paar dingen kunnen wijzigen
dat ik een inlogt scrpt moet gaan maken met verschillende users snap ik! Je geeft de conclusie van mijn vraag. Mijn vraag is ook hoe ik dit ga doen... tutorials, tips, voorbeelden...
en anders kun je er zelf een maken
je zorgt dat je gebruikers tabel ook een veld heeft waar de rank in staad
- administrator die kan alles wijzigen
- en de gene die niet alles kan wijzigen
en dat lees je uit en pas je toe in een IF / else statement
Hoe ik het zou doen:
Bij de tabel van je data zet je een extra veld met 'rang' oid. Ook in de tabel gebruikers zet je zo'n veld 'rang'.
Bij het editten van de pagina controleer je dan of hun rang groter of gelijk is aan de rang uit de data tabel. En uiteraard of ze ingelogd zijn.
Edit
Wauw, 2 berichten er nog tussen :) Ik wordt echt langzaam :P
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Willem-Jan:
Zover was hij zelf ook al...
Hoe ik het zou doen:
Bij de tabel van je data zet je een extra veld met 'rang' oid. Ook in de tabel gebruikers zet je zo'n veld 'rang'.
Bij het editten van de pagina controleer je dan of hun rang groter of gelijk is aan de rang uit de data tabel. En uiteraard of ze ingelogd zijn.
Edit
Wauw, 2 berichten er nog tussen :) Ik wordt echt langzaam :P
Hoe ik het zou doen:
Bij de tabel van je data zet je een extra veld met 'rang' oid. Ook in de tabel gebruikers zet je zo'n veld 'rang'.
Bij het editten van de pagina controleer je dan of hun rang groter of gelijk is aan de rang uit de data tabel. En uiteraard of ze ingelogd zijn.
Edit
Wauw, 2 berichten er nog tussen :) Ik wordt echt langzaam :P
dit is idd een goed idee! Ik ga het op deze manier maar eens proberen.. Hoe laat ik mijn edit script kijken of de rang groter of gelijk is uit de data van de tabel.... Het inlog script kan ik inderdaad wel van deze site afhalen... Heb je nog een tip?
door de rank in nummers weer tegeven kun je de groter dan gebruiken
ok maar jongens ik heb echt nog niet zoveel ervaring in php..... en welk type moet het veld hebben in de database... zodat je er nummers kan uithalen..
INT :S
Code (php)
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
37
38
39
40
41
42
43
44
45
46
47
48
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
37
38
39
40
41
42
43
44
45
46
47
48
<?php
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();
}
}
?>
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();
}
}
?>
ik had nu het volgende boven mijn beveiligde pagina staan hij laad de content echter al zien voordat je bent ingelogt. en als je dan alsnog inlogt zegt hij ingelogt en vernieuwt de pagina en kan je weer opnieuw inloggen...
$_SESSION['id'] = $id;
$_SESSION['rank'] = $rank;
include("login.php");
Willem-Jan:
Zover was hij zelf ook al...
Hoe ik het zou doen:
Bij de tabel van je data zet je een extra veld met 'rang' oid. Ook in de tabel gebruikers zet je zo'n veld 'rang'.
Bij het editten van de pagina controleer je dan of hun rang groter of gelijk is aan de rang uit de data tabel. En uiteraard of ze ingelogd zijn.
Edit
Wauw, 2 berichten er nog tussen :) Ik wordt echt langzaam :P
Hoe ik het zou doen:
Bij de tabel van je data zet je een extra veld met 'rang' oid. Ook in de tabel gebruikers zet je zo'n veld 'rang'.
Bij het editten van de pagina controleer je dan of hun rang groter of gelijk is aan de rang uit de data tabel. En uiteraard of ze ingelogd zijn.
Edit
Wauw, 2 berichten er nog tussen :) Ik wordt echt langzaam :P
Ik zou het als volgt doen (Voordeel is dat je meerdere user hebt die beplaade pagina's kan aanpassen
Tabel
id | user | email | ww | rank | pages
1 eris eris@ | ww| admin | 0
2 WJH WJ@ | ww | user | 1,2,3
3 Crazy crazy@ | ww| user | 2,3 5
enz...
En dan pages opslaan in een array en dan controleren met in_array()
jij zet bij iedere gebruiker welke pagina's hij mag editten, zou het niet makkelijker zijn om groepen pagina's te maken en dan een gebruiker aan een of meerdere groepen te koppelen? daar blijft je database overzichtelijk en makkelijk leesbaar van.
vinden jullie het erg als ik het niet helemaal begrijp... ook wil ik graag weten wat ik boven mijn beveiligde pagina moet zetten?? en maby wat meer uitleg..
Wat voor systeem je wilt toepassen is afhankelijk van de soort website...
Gewijzigd op 01/01/1970 01:00:00 door Crazyme
Code (php)
hij laat alleen geen admin of user zien... wat doe ik fout?
als sessie rank niet bestaat en groter is dan 1 echo user
als sessie rank niet bestaat en kleiner is dan 1 echo admin.
Oftewel, haal die !'s weg :D
welke moet ik precies weg halen :$
Allebei de uitroeptekens
Zoals:
if(!$lol == $fun){
// lol is niet het zelfde als fun
}
Nu heb ik erg vaak dat het weer anders is..
Als zeg maar $lol en $fun precies het zelfde zijn en ik doe:
if($lol == $fun){
echo "lol";
}else{
echo "fun";
}
dan krijg ik fun te zien....
Code (php)
werkt nogsteeds niet echt... laat de echo niet zien... laat wel de layout zien die om dit script heen staat...