[php] rechten probleem *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Om berichten te kunnen editen moet de user de poster van het bericht of moderator zijn, daarvoor gebruik ik het volgene:

Functions.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<? 
  function getposter($post) { 
  include('config.php'); 
  mysql_connect("$host", "$user", "$pass"); 
  mysql_select_db("$db"); 
    $post = addslashes($post); 
    $sql3 = "SELECT * FROM posts WHERE post_id='$post'"; 
  $result = mysql_query($sql3) or die(mysql_error()); 
  return(mysql_fetch_array($result)); 
} 

  function getmod($post) { 
  $postinfo = getposter($user_id); 
  include('config.php'); 
  mysql_connect("$host", "$user", "$pass"); 
  mysql_select_db("$db"); 
  $sql2 = "SELECT p.forum_id, f.* FROM forums f, posts p 
  where p.post_id = '$post' and p.forum_id = f.forum_id"; 
  $result2 = mysql_query($sql2)  or die(mysql_error()); 
  return(mysql_fetch_array($result2)); 
} 

?> 

edit.php:
PHP:
1
2
3
4
5
6
7
8
9
10
<? include('functions.php'); 
  $access = 0; 
  $postinfo = getposter($post); 
  $posterid = $postinfo[$poster_id]; 
  $getmod =  getmod($post); 
  $moderator =  $getmod[mod_id]; 
  if($user_id == $poster_id) { $access = "1"; } 
  if($user_id == $moderator) { $access = "1"; } 
  if($access == "1") { // rest van code 
?> 

het vage is nu dat als ik bijv. met user no 5 ingelogd ben en die is moderator van een forum krijgt hij toegang (access = 1) maar als ik nou inlog met bijv. user nummer 1 die geen moderator is maar gewoon zijn eigen post wil editten krijgt hij geen access. Vaag is dat want als ik $user_id en $poster_id dan echo komt er voor allebei 1 te staan, dus dit zou moeten betekenen $access = 1

offtopic:
sorry voor de vage topic title maar ik wist geen andere

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

niet echt relevant, maar waarom zet je $host, $user, $pass en $db tussen quotes :?

.edit: de rest van je code is overigens ook een knoeiboel:

PHP:
1
$posterid = $postinfo[$poster_id];


wat is de variable $poster_id? bedoel je niet "poster_id"?
Dit werkt natuurlijk ook: $postinfo->poster_id

Hetzelfde geldt voor deze regel:
PHP:
1
$moderator =  $getmod[mod_id];


hier doe je geen $, en nu gaat het toevallig goed, omdat php van mod_id een string maakt. Maar voor hetzelfde geld is mod_id een constante, en gaat ie gigantisch de mist in dus
dus ook daar tussen quotes, of het pijltje gebruiken

[ Voor 153% gewijzigd door .oisyn op 04-01-2003 23:51 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 08:29

Tjark

DON'T PANIC

.oisyn schreef op 04 januari 2003 @ 23:46:
niet echt relevant, maar waarom zet je $host, $user, $pass en $db tussen quotes :?
Als je dan toch bezig bent: vraag 'm ook waarom ie
code:
1
$access = "1";

doet?

*insert signature here


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik die quotes weg haal is het probleem niet opgelost ;)
code ziet er nu zo uit:
functions.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
  function getposter($post) { 
  include('config.php'); 
  mysql_connect($host, $user, $pass); 
  mysql_select_db($db); 
    $post = addslashes($post); 
    $sql3 = "SELECT * FROM posts WHERE post_id='$post'"; 
  $result = mysql_query($sql3) or die(mysql_error()); 
  return(mysql_fetch_array($result)); 
} 

  function getmod($post) { 
  $postinfo = getposter($user_id);
  include('config.php'); 
  mysql_connect($host, $user, $pass); 
  mysql_select_db($db); 
  $sql2 = "SELECT p.forum_id, f.* FROM forums f, posts p 
 where p.post_id = '$post' and p.forum_id = f.forum_id"; 
  $result2 = mysql_query($sql2)  or die(mysql_error()); 
  return(mysql_fetch_array($result2)); 
} ?>


edit.php
PHP:
1
2
3
4
5
6
7
8
9
10
<? include('functions.php');
  $access = 0;
  $postinfo = getposter($post);
  $posterid = $postinfo->poster_id;
  $getmod =  getmod($post);
  $moderator =  $getmod->mod_id;
  if($user_id == $poster_id) { $access = 1; } 
  if($user_id == $moderator) { $access = 1; } 
  if($access == "1") {
?>

[ Voor 91% gewijzigd door Verwijderd op 04-01-2003 23:57 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

idd, en dan kan ie net zo goed gelijk dit doen:

PHP:
1
if ($user_id == $poster_id || $user_id == $moderator) {  // rest van code


heel die $access niet nodig ;)
maar misschien is het wel handig om die variabele ergens anders nog te gebruiken

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 04 januari 2003 @ 23:51:
Als ik die quotes weg haal is het probleem niet opgelost ;)


kijk even naar mijn edit in mijn eerste post in deze topic

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.oisyn schreef op 04 January 2003 @ 23:52:
idd, en dan kan ie net zo goed gelijk dit doen:

PHP:
1
if ($user_id == $poster_id || $user_id == $moderator) {  // rest van code


heel die $access niet nodig ;)
maar misschien is het wel handig om die variabele ergens anders nog te gebruiken
had ik ook geprobeerd en werkt ook niet

Acties:
  • 0 Henk 'm!

  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

Verwijderd schreef op 04 januari 2003 @ 23:59:
[...]

had ik ook geprobeerd en werkt ook niet
Die code is wel goed, dus dan zal er ergens anders in je code een foutje zitten als het niet werkt.

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

dan zal ik het maar opnieuw posten, schijnbaar leest iedereen eroverheen

.oisyn schreef op 04 January 2003 @ 23:46:
PHP:
1
$posterid = $postinfo[$poster_id];


wat is de variable $poster_id? bedoel je niet "poster_id"?
Dit werkt natuurlijk ook: $postinfo->poster_id

Hetzelfde geldt voor deze regel:
PHP:
1
$moderator =  $getmod[mod_id];


hier doe je geen $, en nu gaat het toevallig goed, omdat php van mod_id een string maakt. Maar voor hetzelfde geld is mod_id een constante, en gaat ie gigantisch de mist in dus
dus ook daar tussen quotes, of het pijltje gebruiken

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik had er niet overheen gelezen ;) [rml]UltraV in "[ php] rechten probleem *"[/rml]
daar schreef ik dat ik er dit van heb gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
<? include('functions.php'); 
  $access = 0; 
  $postinfo = getposter($post); 
  $posterid = $postinfo->poster_id; 
  $getmod =  getmod($post); 
  $moderator =  $getmod->mod_id; 
  if($user_id == $poster_id) { $access = 1; }  
  if($user_id == $moderator) { $access = 1; }  
  if($access == 1) { //rest
?> 

en als ik er dan dit van maak werkt het nog niet:
PHP:
1
2
3
4
5
6
7
8
<? include('functions.php');
  $access = 0;
  $postinfo = getposter($post);
  $posterid = $postinfo->poster_id;
  $getmod =  getmod($post);
  $moderator =  $getmod->mod_id;
  if ($user_id == $poster_id || $user_id == $moderator) { //rest
?>

maar..
ik mag naar de oogarts :P want als ik er dit van maak werkt het wel $poster_id ipv $posterid
*werkt toch niet, typefout
maar nu kan die user alle posts edditen, dus maak ik er dit van

PHP:
1
2
3
4
5
6
7
<?
  $postinfo = getposter($post);
  $poster_id = $postinfo->poster_id;
  $getmod =  getmod($post);
  $moderator =  $getmod->mod_id;
  if ($user_id == $poster_id || $user_id == $moderator) { 
 ?>

en dan werkt het weer niet :)

[ Voor 15% gewijzigd door Verwijderd op 05-01-2003 00:34 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker



|:(
sowwy, my bad :P

doe eens een paar echo'tjes van de variabelen net voor de if, dus net voor je bepaald of een user een post mag editten of niet... wat komt daar allemaal uit?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op deze manier werkt het:
PHP:
1
2
3
4
5
6
7
8
9
10
<? include('functions.php');  
  $access = 0;  
  $postinfo = getposter($post);  
  $posterid = $postinfo['poster_id'];  
  $getmod =  getmod($post);  
  $moderator =  $getmod['mod_id'];  
  if($user_id == $posterid) { $access = 1; }  
  if($user_id == $moderator) { $access = 1; }  
  if($access == 1) { // rest van code 
?> 

maar met -> werkt het weer niet

Acties:
  • 0 Henk 'm!

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 23-06 23:17
Klopt. Want een array is geen object. Als er dus staat mysql_fetch_array dan hebben we te maken met een functie die data uit een MySQL row in een array teruggeeft, en niet in een object.

PHP is natuurlijk loose-typed in vergelijking met C++. ;) Maar zo loose-typed nou ook weer niet .oisyn. :P

Dit topic duurde 3 keer langer dan zou moeten doordat de TS in de eerste plaats zijn code niet goed voor elkaar had. ($poster_id ipv $posterid) Maar ook omdat er verkeerde reacties werden gegeven.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

hmmm vreemd, ik was toch echt in de veronderstelling dat $a->blaat hetzelfde was als $a['blaat']. Hoewel ik wel moet zeggen dat ik gisteren begon te twijfelen toen ik de docs van mysql_fetch_assoc () en mysql_fetch_object () naast elkaar legde, en toch geen enkele referentie naar elkaar ontdekte, terwijl ik dus dacht dat ze in principe hetzelfde deden :)

oh well... :P

[ Voor 54% gewijzigd door .oisyn op 05-01-2003 15:32 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1