[PHP] Check voor pivilege werkt half

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
Ik wil graag het volgende opzetten:

Users die ingelogd zijn en privilege 4 hebben krijgen geen toegang tot link.php
Users die ingelogd zijn en privilege anders hebben dan 4 krijgen wel toegang.

Erg simpel tot nu toe :P :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<? 

mysql_connect("localhost","root",""); 
mysql_select_db("at"); 
$res = mysql_query("select * from user"); 
$USER = mysql_fetch_array($res); 
if($USER["privilege"] == '4'){   
die(test);  
}else{  
include "link.php";  
}  
?> 


Werkt ook prima :)

Nu alleen een stapje verder. Users die niet ingelogd zijn, moeten ook toegang krijgen tot link.php. Bij het bovenstaande script is dat niet het geval, want niet ingelogde users krijgen de die(test); voorgeschoteld.

Dus aanpassen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?   
mysql_connect("localhost","root","");   
mysql_select_db("at");   
$res = mysql_query("select * from user");   
$USER = mysql_fetch_array($res);   
if(!$SESSION["user"]){  
include "link.php"; 
}elseif($USER["privilege"] == '4'){   
echo "test."; die();   
}else{   
include "link.php";   
}   
?>  


Alleen nu gaat het script fout. De check wordt niet meer goed uitgevoerd en iedereen heeft toegang. Wat ga ik de fout in :) ?

Acties:
  • 0 Henk 'm!

  • Frank Timmer
  • Registratie: Maart 2000
  • Nu online
Volgens mij moet je van $SESSION["user"] $_SESSION["user"] maken!

Acties:
  • 0 Henk 'm!

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Erhm, volgens mij gaat dat eerste script al fout, omdat je daar geen user selecteerd, maar alleen die user die toevallig als eerste in de DB staat. Dus je zou je select-statement misschien wat moeten aanpassen. Daarnaast zou ik if($USER["privilege"]!= '4') doen :P.
Misschien dat je daarna ook wat meer met het tweede ding kan...

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
SWfreak: Ik ga dat nu ff testen, klinkt wel logisch wat je zegt, stand by :P

Em, ja, je hebt gelijk en zie ook nu dat dat een beetje domme nadenk fout van mij was |:(
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?    
mysql_connect("localhost","root","");    
mysql_select_db("at");    
$res = mysql_query("select * from user");    
$USER = mysql_fetch_array($res);    
if(!$_SESSION["user"]){   
include "link.php";  
}elseif($USER["privilege"] != '4'){    
include "link.php"; 
}else{    
echo "test."; die();    
}    
?> 


Ff verandering van jou en Frank Timmer doorgevoerd.

Ik snap nu ook waarom er nu steeds een 4tje komt te staan rechts boven aan elke pagina. Hij pakt steeds de eerste user.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
mysql_connect("localhost","root","");
mysql_select_db("at");

$query = "select * from user where name = '$_POST['username']' and password = (password($_POST['password']);"; 
$result = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_array($result))
{
$privilege = $row['privilege'];
}
if($privilege != "4")
{
include link.php
}
else
{
die(test);
}
?>


Nu is het zoiets geworden, maar klopt nog steeds niet helemaal
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in d:\program files\easyphp\www\main.php on line 4
Dit is de user.php waarmee wordt ingelogd:

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
49
50
51
<?
require("main.php");

if($action == 'log'){

    if($SESSION["loggedin"] == 'Y'){
        $sql->query("UPDATE session SET loggedin='N', member='N', hide='N', user='0' WHERE sessid='{$HTTP_COOKIE_VARS["sessid"]}'");
        location("index.php");
        redirect(3);
    } else {
        if(isset($username) AND isset($password)){
            $fpassword = md5($password);
            $query = $sql->query("SELECT user, password FROM user WHERE name='$username'");
            print ($sql->num_rows($query) == 0) ? error(4) : NULL;
            extract($sql->fetch_assoc($query));
            if ($fpassword == $password){
                //$sql->query("DELETE FROM session WHERE user='$user'");
                //$sql->query("UPDATE session SET loggedin='N', member='N', hide='N', user='0' WHERE user='$user'");
                $sql->query("UPDATE session SET loggedin='Y', member='Y', hide='N', user='$user' WHERE sessid='{$HTTP_COOKIE_VARS["sessid"]}'");

                if(empty($location)){
                    location("index.php");
                }else{
                    if(eregi("-", $location)){
                        $location = explode("-", $location);
                        $quote = $location[1];
                        $location = $location[0];
                        location(base64_decode($location)."&quote=$quote");
                    } else {
                        location(base64_decode($location));
                    }

                }

                redirect(7);
            }else{
                error(47);
            }
        } else {
            //setcookie("sessid", NULL, time()-1);
            template("login");
            $hf->parseout("main.header1");
            if(!empty($location)) $xtpl->parse("main.required");
            $xtpl->parseout("main", array('location'=>$location));
            $hf->parseout("main.nav_post_off_reply_off");
            $hf->parseout("main.footer");
        }
    }
}

?>

[ Voor 158% gewijzigd door We Are Borg op 11-03-2003 12:57 ]


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
verander regel 5 in:
PHP:
1
2
3
4
$query = " SELECT * 
           FROM `user` 
           WHERE `name` = '".mysql_escape_string($_POST['username'])."' 
           AND `password` = (PASSWORD(".mysql_escape_string($_POST['password']).");";


ACM >> Deze keer wel helemaal goed ;)

[ Voor 107% gewijzigd door martinvw op 11-03-2003 16:23 . Reden: leesbaar gemaakt ]


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? 
mysql_connect("localhost","root",""); 
mysql_select_db("at"); 

$query = " SELECT * FROM `user` WHERE `name` = '".mysql_escape_string($_POST['username'])."'AND `password` = (PASSWORD(".mysql_escape_string($_POST['password']).");"
$result = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($result)) 
{ 
$privilege = $row['privilege']; 
} 
if($privilege != "4") 
{ 
include link.php 
} 
else 
{ 
die(test); 
} 
?> 


Zo dan toch :) ?
Parse error: parse error, unexpected T_VARIABLE in d:\program files\easyphp\www\activetopics-v1.4.7\main.php on line 6
Alvast bedankt voor het proberen :) Ga zelf ook nog ff aankloten. Zie jij wat er fout is :) ?

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
M4rt1nvW schreef op 11 maart 2003 @ 14:04:
verander regel 5 in:
PHP:
1
2
3
4
$query = " SELECT * 
           FROM `user` 
           WHERE `name` = '".mysql_escape_string($_POST['username'])."' 
           AND `password` = (PASSWORD(".mysql_escape_string($_POST['password']).");";


ACM >> Deze keer wel helemaal goed ;)
Oeps dat was een ; te weinig. nu staat het er goed

[ Voor 11% gewijzigd door martinvw op 11-03-2003 16:23 ]


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? 
mysql_connect("localhost","root",""); 
mysql_select_db("at"); 

$query = " SELECT * FROM `user` WHERE `name` = '".mysql_escape_string($_POST['username'])."'AND `password` = (PASSWORD(".mysql_escape_string($_POST['password']).");";
$result = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($result)) 
{ 
$privilege = $row['privilege']; 
} 
if($privilege != "4") 
{ 
include link.php 
} 
else 
{ 
die(test); 
} 
?> 


Zo dan dus

Dit geeft:

Parse error: parse error, unexpected '}' in d:\program files\easyphp\www\activetopics-v1.4.7\main.php on line 15

Wat toch echt nergens op slaat denk ik dan als php noob ;), want het ziet er goed uit zo en die haakjes horen zo naar mijn mening

[ Voor 12% gewijzigd door We Are Borg op 11-03-2003 17:06 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 16:51
na een include hoort een ";" verder hoort een include tussen quotes d8 ik.

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
djluc schreef op 11 March 2003 @ 17:10:
na een include hoort een ";" verder hoort een include tussen quotes d8 ik.
En volgens mij ook nog tussen haakjes dus
PHP:
1
include("bestand.inc.php");

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
Minder dom van mij:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
mysql_connect("localhost","root","");
mysql_select_db("at");

$query = " SELECT * FROM `user` WHERE `name` = '".mysql_escape_string($_POST['username'])."'AND `password` = (PASSWORD(".mysql_escape_string($_POST['password']).");";
$result = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($result))
{
$privilege = $row['privilege'];
}
if($privilege != "4") 
{
include("main2.php");
}
else
{
die(test);
}
?> 


You have an error in your SQL syntax near ')' at line 1

nog nooit zo'n error gezien

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

We Are Borg schreef op 11 March 2003 @ 17:41:
Minder dom van mij:

PHP:
1
2
<?
])."'AND 


You have an error in your SQL syntax near ')' at line 1

nog nooit zo'n error gezien
Tussen de ' en AND een spatie? :> en nog een haakje sluiten op het eind:
PHP:
1
(PASSWORD(".mysql_escape_string($_POST['password'])."));"; 
Drie haakjes openen, drie sluiten dan.

[ Voor 27% gewijzigd door RedRose op 11-03-2003 17:53 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
Een beetje precies zijn mag ik idd wel leren ;)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<? 
mysql_connect("localhost","root",""); 
mysql_select_db("at"); 

$query = " SELECT * FROM `user` WHERE `name` = '".mysql_escape_string($_POST['username'])."' AND `password` = (PASSWORD(".mysql_escape_string($_POST['password'])."));";

$result = mysql_query($query) or die(mysql_error());  

while ($row = mysql_fetch_array($result)) 
{ 
$privilege = $row['privilege']; 
} 
if($privilege != "4")  
{ 
include("main2.php"); 
} 
else 
{ 
die(test); 
} 
?> 
You have an error in your SQL syntax near '))' at line 1
Het extra haakje komt er gewoon bij :+

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

We Are Borg schreef op 11 March 2003 @ 18:29:
Een beetje precies zijn mag ik idd wel leren ;)
..
Het extra haakje komt er gewoon bij :+
PHP:
1
2
3
4
5
6
7
8
$query = ("
SELECT * FROM 
    `user` 
WHERE 
    `name` = '".mysql_escape_string($_POST['username'])."' 
AND 
    `password` = (PASSWORD('".mysql_escape_string($_POST['password'])."'))
");


Zoek de verschillen... :+ . En ff hier kijken: Misc. functions en Language Ref.

Sundown Circus


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
Thx voor de linkjes, ik zal eens lezen voordat ik nog meer domme fouten maak.

Maar het vage is, dat het script nu niet meer werkt :+

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
mysql_connect("localhost","root","");
mysql_select_db("at");

$query = (" SELECT * FROM `user` WHERE `name` = '".mysql_escape_string($_POST['username'])."' AND `password` = (PASSWORD('".mysql_escape_string($_POST['password'])."')) ");
$result = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_array($result))
{
$privilege = $row['privilege'];
}
if($privilege == "4")
{
die(test);
}
else
{
include("main2.php");
}
?> 


Ben ik nu echt zo'n lompe koe die de query weer verkloot hebt :P (niet meteen "ja" antwoorden :P )

Privilege maakt niet uit welke wordt gewoon toegelaten

Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Post dan ff _wat_ er niet werkt. En we willen je hier op GoT graag helpen, maar ga eerst eens even zelf wat proberen. We zijn er niet om _iedere_ parse-error te verhelpen. En als je echt stap voor stap wilt worden geholpen ga dan op irc oid, want een forum is hier niet echt voor bedoeld...

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
Sorry, daar heb je gelijk in :)

Wat ik bedoelde met het niet werken, is dat gewoon alles door de check heen komt (dus de check werkt niet). Je krijgt geen errors, maar iedereen met elke status (dus ook status 4) krijgt toegang tot het main2.php bestand.

En ja, die parse errors had ik zelf met een beetje nadenk werk wel kunnen verkomen / oplossen. Ik zal het voortaan eerst zelf langer proberen dan hier dumpen :)

Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
doe dan eens echo $query en print_r($row) en kijk eens wat er uit komt...
Pagina: 1